Bluesky video upload limit: 300 MB MP4, and fitting a clip

Bluesky raised its video upload limit from 100 MB to 300 MB in June 2026, MP4 only. Fit a clip under it by trimming length and conforming size with Sume.

4 min readSume
All posts

Bluesky's video upload limit is 300 MB, raised from 100 MB in a post from @bsky.app on 2026-06-04, and the file must be video/mp4. Sume's trim output is an MP4, but Sume sets no byte-size target, so you fit a clip by shortening it, conforming its size, and then checking the file.

The Bluesky facts are from the account's post and the app.bsky.embed.video lexicon, both read 2026-09-30. The Sume facts are from Video trim.

What does Bluesky accept?

atproto lexicon app.bsky.embed.video, read 2026-09-30: https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/embed/video.json
FieldValue in the lexicon
video blobvideo/mp4 only; maxSize 300000000 bytes
captionsUp to 20 files, each text/vtt, up to 20000 bytes
altAlt text for accessibility
presentationHint: default or gif

Which Sume controls shrink a file?

Video trim is a single ffmpeg pass on a Sume-hosted clip. Size follows from what you ask for.

Sume Video trim docs, read 2026-09-30: https://docs.sume.com/models/video-trim
ControlBehavior
duration or endCut length; duration is 0.2 to 900 seconds
outputOptional { width, height, fps } conform; exact precision only; width and height 256-2160
precision: "exact"Default; frame-accurate re-encode (libx264, yuv420p)
audio: "drop"Removes the audio track
Source limitUp to 1800 seconds

Can I ask for a target file size?

No. The docs list no byte target, and codec, crf and similar fields are refused with ffmpeg_fields_rejected. A shorter cut and a lower output size are your levers. A clip over 300 MB is usually long or high resolution, so cut it, conform it, and measure the result.

const url = "https://media.sume.com/artifacts/example/trimmed.mp4";
const head = await fetch(url, { method: "HEAD" });
const bytes = Number(head.headers.get("content-length"));
console.log(bytes, bytes <= 300_000_000 ? "fits Bluesky" : "too large");

What about other platforms' limits?

Each platform has its own caps; see TikTok's default length limit and Instagram Stories' 60-second limit for the same trim approach.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume