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.

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?
| Field | Value in the lexicon |
|---|---|
video blob | video/mp4 only; maxSize 300000000 bytes |
captions | Up to 20 files, each text/vtt, up to 20000 bytes |
alt | Alt text for accessibility |
presentation | Hint: 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.
| Control | Behavior |
|---|---|
duration or end | Cut length; duration is 0.2 to 900 seconds |
output | Optional { 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 limit | Up 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
- Cut one product video into feed cutdowns with the video-trim API
- FFmpeg trim video: cut by time, with or without re-encoding
- TikTok 3-minute videos: cut a longer clip to 180 seconds via API
- Instagram Stories API video: 60 seconds max, trim with Sume
- Does an AI video API add a C2PA record or watermark to output?
More in Developers
- catalog_list shows a capability that tools_list does not
On Sume's hosted MCP, catalog_list lists public API capabilities and can name ones with no MCP tool. tools_list is the session's real tool contract.
- Reframe a video around the speaker by API: what a crop can do
Descript's Center Active Speaker (Beta) follows whoever talks. Sume's video filter crop is one fixed rectangle per clip, so cut per speaker and crop each part.
- Claude Code --bare and MCP: name the Sume server with a key
Claude Code --bare connects only MCP servers named on the command line. To use Sume there, name the server with an API-key header; no browser sign-in needed.
- MCP server instructions field: the new /context row, and Sume's
Claude Code 2.1.283 counts MCP server instructions as their own /context row. Sume returns instructions at initialize and keeps long guidance out of tool text.
Written by Sume