On X, "Video too long" is not a reliable description of what actually went wrong. X's own Media Studio help page attributes this error to the file format, not the runtime — which means trimming your clip may be the wrong first move.
That single sentence in X's documentation changes the whole troubleshooting order. Check the container and codec first, and only then start arguing with duration limits — which, as you will see below, X publishes in at least four mutually incompatible versions.
What this error actually means
Here is the line, verbatim, from X's Media Studio FAQ:
"Error: 'Video too long' — This error usually appears when uploading media that isn't in a supported format."
Read it twice. The error is named after duration, and the official explanation is about format. X does not say the duration check never fires — it says this message usually appears for unsupported media.
One scope caveat you should keep, because X states it on the same page:
"These instructions are only valid for Media Studio, and should not be followed for usage of the X developer API, Pro Media API, desktop upload, or mobile upload."
So strictly speaking, this explanation is documented for Media Studio. It is also the only place in X's public documentation where this error string is explained at all — for ordinary web and mobile uploads, X documents no error text beyond a generic note that "You'll be prompted if the video isn't in a supported format." If you are hunting for an official list of supported formats for web uploads, there isn't one published.
The fastest fix: re-export as a plain MP4
Since the official cause is format, the highest-percentage move is to hand X a boring, conventional file rather than to cut your video shorter.
What X actually publishes as accepted in Media Studio:
| Media Studio spec | Official value |
|---|---|
| File type | .MP4, .MOV |
| Maximum file size | 8 GB |
| Video specification | "AVC encoding (H264)" |
| Recommended video bitrate | "5-8 mbps" |
| Maximum video framerate | "60 FPS" |
| Audio specification | "stereo/mono AAC (LC)" |
X also singles out one container by name. On processing failures it writes: "This happens most often with .mov files. If possible, re-export files as .mp4, which should allow for overall faster upload and processing time." That is X recommending the MP4 container over MOV in its own words.
There is a second official nudge in the same direction, from X's Ads upload guidance: "Even if your file is under our maximum size, we may still have issues ingesting the file." X's suggested remedy there is blunt — "Re-export your video file in a smaller size. An easy way to do this is to reduce the bitrate."
A browser-side re-encode does both jobs at once: it rewrites the file as H.264 in an MP4 container and lowers the bitrate, without uploading your footage anywhere.
Try it right here
Runs in your browser. Your file is not uploaded anywhere.
If your source is a QuickTime file straight from a Mac or an iPhone, MOV to MP4 is the narrower tool for the same job. Everything else Clapr runs in-browser is listed under all Clapr tools.
Then check duration — but against which number?
Only after the format is boring should you look at length. This is where X gets genuinely confusing, because several official pages disagree, and every one of these numbers is quoted verbatim from an X-owned page:
| Where it is published | Duration | File size |
|---|---|---|
| Help center, non-Premium ("up to 140 seconds long with a maximum file size of 512MB") | 140 seconds | 512MB |
Developer docs, tweet_video and amplify_video, default accounts | 0.5 seconds–20 minutes | 8 GB |
| Help center, video page and longer-videos page, Premium | shorter than 4 hours (1080p) | 16GB |
| About X Premium and Media Studio pages, Premium | "up to ~3 hours long" | 8GB |
| Developer docs, Premium / verified, Post video | 0.5 seconds–125 minutes | 16 GB |
125 minutes is neither three hours nor four. 140 seconds is not 20 minutes. X publishes no page that reconciles them, so do not treat any single figure as the rule — check the current limit in the official documentation for the surface you are actually uploading from.
Two qualifiers that people routinely drop:
- Android is different, but only for Premium subscribers. X writes: "Subscribers can upload videos up to 4 hours long (1080p) on x.com and X for iOS. Subscribers can upload videos up to 10 minutes long on Android." For non-subscribers the same page says 140 seconds "on any platform" — no platform split.
- Direct messages are a separate ceiling. X's
dm_videocategory is listed at 140 s / 512 MB by default and 10 min / 1 GB for Premium. Post limits do not carry over to DMs.
For more of this kind of number-versus-number comparison, the limits hub collects platform caps, and the fix hub covers upload errors on other platforms — Instagram's "video too long" fails for a different reason entirely.
Other causes, in order of likelihood
1. An encoding property X refuses. X's developer documentation lists hard constraints that have nothing to do with size or length: pixel aspect ratio "must have 1:1", "Only YUV 4:2:0 is supported", audio "must be AAC with Low Complexity profile" with "High-Efficiency AAC is not supported", audio "must be mono or stereo, not 5.1 or greater", "Must not have open GOP", and "Must use progressive scan". These are stated for the API. X does not say which error message each violation produces, so treat them as a checklist for a suspect file, not as a decoder ring for error text.
2. It is stuck, not rejected. X says processing "could take up to 30 minutes for your media file to complete processing. If the system cannot process the file within that timeframe, the upload will fail and the 'Upload failed' error message will appear." A file sitting at 5% is not necessarily a failure yet.
3. It is a different error wearing similar clothes. For "Upload failed", X lists "file size, resolution, encoding settings, or a connection issue", and tells you to get the file to 8GB or smaller first — "reducing the video bitrate of the file is the easiest solution for making a smaller file size."
4. The upload succeeded and the post failed. On the API side, X states that "Upload limits and Post-create limits are separately enforced" and that a media ID that finalized successfully can still be rejected afterwards, with this response:
{
"title": "Forbidden",
"detail": "This user is not allowed to post a video longer than 20 minutes.",
"type": "about:blank",
"status": 403
}X adds that these limits "follow the authenticated user (X Premium / verified status), not your developer API plan." That is the mechanism behind "the progress bar completed and then it broke."
How to tell it worked
Confirm three things before you retry, in this order: the file ends in .mp4, the video track is H.264 with AAC LC audio in stereo or mono, and the file is comfortably under the size ceiling for the surface you are uploading from. If a re-exported MP4 with the same runtime goes through, the original message was about format — exactly as X documents.
If it still fails at the same runtime after a clean MP4 re-export, then duration is genuinely in play, and the limit you are hitting depends on which of X's published figures applies to your account and client.
FAQ
Does "Video too long" on X always mean my video is too long? No. X's Media Studio FAQ says this error "usually appears when uploading media that isn't in a supported format." Check container and codec before you trim.
What video format should I upload to X?
X does not publish a supported-format list for web or mobile uploads. For Media Studio it lists .MP4, .MOV with H264 video and stereo or mono AAC (LC) audio, and elsewhere recommends re-exporting MOV files as MP4.
Is the free limit 140 seconds or 20 minutes?
Both numbers are official. X's help center says 140 seconds with a 512MB maximum; X's developer documentation lists 0.5 seconds–20 minutes and 8 GB for tweet_video and amplify_video. X has no page that reconciles the two, so check the official documentation.
Why did my upload finish and then fail? X states that upload limits and post-creation limits are "separately enforced", and that a successfully finalized media ID can still be rejected when the post is created, returning a 403 that names the user's duration cap.
Will compressing help if my file is already under the limit? X says yes for ingestion problems: "Even if your file is under our maximum size, we may still have issues ingesting the file", with reducing the bitrate given as the recommended fix.
All limits and error text quoted from X's help center, developer documentation and business help pages, checked 16 September 2026. X's own pages disagree on several of these numbers — verify against the official page for your upload surface before relying on any single figure.