Bluesky video format not supported: the accepted MIME types

Bluesky's app accepts video/mp4, video/mpeg, video/webm, video/quicktime and image/gif. For anything else, re-encode to MP4 with Sume video trim.

4 min readSume
All posts

The Bluesky app's SUPPORTED_MIME_TYPES list is video/mp4, video/mpeg, video/webm, video/quicktime and image/gif. A "format not supported" message usually means the file's MIME type is outside that list. Re-encoding to MP4 is the safest fix.

The list is from the social-app constants file, read 2026-09-30. The re-encode step is Sume's Video trim.

Which formats does the Bluesky app accept?

Five MIME types, one of which is an image.

SUPPORTED_MIME_TYPES in bluesky-social/social-app, read 2026-09-30
MIME typeUsual file
video/mp4.mp4
video/mpeg.mpeg, .mpg
video/webm.webm
video/quicktime.mov
image/gif.gif

Why might a file still fail?

The file extension is not the check; the MIME type is. A video exported with an unusual container, or one that your browser reports with a different type, falls outside the list. Duration and size are separate caps: see the length limit and the 300 MB post. The snapshot does not say which codec inside a container is accepted, so this post does not claim that.

How do I convert a clip to MP4 with Sume?

Import the file with POST /v1/media-imports (trim has no open-internet fetch), then call video trim with start and either end or duration. The docs say it cuts a range into a new MP4. The default exact precision re-encodes with libx264 and yuv420p, so the output is a plain H.264 MP4. Set start to 0 and end past the source to keep the whole clip; the docs say an out-point past the source clamps and the result warns trim_clamped_to_source.

The audio field is keep by default or drop; kept audio is remuxed as AAC. Use output to conform width, height and fps if the file is also too large.

What should I avoid?

Do not choose precision: "keyframe" just to convert: it is a stream copy, so the container and codec stay as they were, and the cut may start a GOP early. Use the default when the goal is a different format.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume