diff --git a/api/funkwhale_api/music/models.py b/api/funkwhale_api/music/models.py
index 43371d5d8c461c6f367fe527096b2e454693a9b1..b058f2e8021212ffd2becbb3a7d5bad302ac4464 100644
--- a/api/funkwhale_api/music/models.py
+++ b/api/funkwhale_api/music/models.py
@@ -874,7 +874,7 @@ class Upload(models.Model):
             if self.audio_file:
                 self.mimetype = utils.guess_mimetype(self.audio_file)
             elif self.source and self.source.startswith("file://"):
-                self.mimetype = mimetypes.guess_type(self.source)[0]
+                self.mimetype = utils.guess_mimetype_from_name(self.source)
         if not self.size and self.audio_file:
             self.size = self.audio_file.size
         if not self.checksum:
diff --git a/api/funkwhale_api/music/utils.py b/api/funkwhale_api/music/utils.py
index 64a7c24f85b4d1910e77a8279f4b9df4bc97aee6..b61c8223bfbb72a74923d7f48b2bb6fde0e303f5 100644
--- a/api/funkwhale_api/music/utils.py
+++ b/api/funkwhale_api/music/utils.py
@@ -18,12 +18,18 @@ def guess_mimetype(f):
     b = min(1000000, f.size)
     t = magic.from_buffer(f.read(b), mime=True)
     if not t.startswith("audio/"):
-        # failure, we try guessing by extension
-        mt, _ = mimetypes.guess_type(f.name)
-        if mt:
-            t = mt
-        else:
-            t = EXTENSION_TO_MIMETYPE.get(f.name.split(".")[-1])
+        t = guess_mimetype_from_name(f.name)
+
+    return t
+
+
+def guess_mimetype_from_name(name):
+    # failure, we try guessing by extension
+    mt, _ = mimetypes.guess_type(name)
+    if mt:
+        t = mt
+    else:
+        t = EXTENSION_TO_MIMETYPE.get(name.split(".")[-1])
     return t
 
 
diff --git a/changes/changelog.d/1165.bugfix b/changes/changelog.d/1165.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..e1b1b10e2720bdbd8c3ac1c9be4644cdf2cafca2
--- /dev/null
+++ b/changes/changelog.d/1165.bugfix
@@ -0,0 +1 @@
+Fixed broken mimetype detection during import (#1165)