"Upload failed" on X is not a single error — X's own help pages list four separate things that can trigger it, and file size is only one of them. The sentence that matters most is on X's advertiser help page: "Even if your file is under our maximum size, we may still have issues ingesting the file."
That is the platform stating in writing that being under the cap is not sufficient. If you already checked your file size and the upload still dies, you are looking at the wrong variable.
What X says causes an upload to fail
X's Media Studio Library FAQ enumerates the causes. Verbatim:
"Error: 'Upload failed' — Video: This error can appear for a few different issues: file size, resolution, encoding settings, or a connection issue. First ensure that your video file is 8GB or smaller in size—reducing the video bitrate of the file is the easiest solution for making a smaller file size. Next, ensure the resolution and encoding settings of your video are within our recommended specifications. Finally, if there is any packet loss or connection failure at the time of upload, the entire process will fail and need to be restarted."
Read the scope before you act on it. That same page opens with: "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 the 8GB figure is a Media Studio figure. The four categories — size, resolution, encoding settings, connection — are still the checklist X hands you, and they are the ones worth working through in order.
Notice what X puts first inside the size bucket: not "use a shorter video," but "reducing the video bitrate of the file is the easiest solution."
The fastest fix: re-export smaller, even if you are already under the cap
X's advertiser upload page gives three fixes, and the third one is the whole reason this page exists. Verbatim:
"Re-export your video file in a smaller size. An easy way to do this is to reduce the bitrate. Even if your file is under our maximum size, we may still have issues ingesting the file. Reducing the size of the file reduces the time of the upload, maximizing your chances for success."
Two official statements now point at the same lever. The Media Studio page calls lowering bitrate "the easiest solution" for size; the Ads page says a smaller file raises your odds of success even when size was never the stated problem.
Try it right here
Runs in your browser. Your file is not uploaded anywhere.
Drop the bitrate a step, re-export, and retry before you go hunting for anything more exotic. If you want the knobs explained rather than a preset, how to compress a video without losing quality covers what bitrate and resolution actually cost you.
Other causes, in order of likelihood
MOV files, and uploads that sit at 5%
X calls this one out by name. On processing: "It 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."
And then the cause: "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 an official recommendation, not folklore. If your file came off a Mac or an iPhone, converting it with MOV to MP4 is a one-step test that costs you nothing. X also notes a related quirk: "If you are unable to select an .mov file via the file selection window, attempt to upload the file by dragging it into your Media Studio Library."
"Resolution and encoding settings" means two different spec sheets
X publishes two sets of numbers, and they do not agree. Both are official; which one applies depends on how you are uploading.
| Spec | Help Center, web upload | Developer docs, API |
|---|---|---|
| Minimum resolution | 32 x 32 | 32x32 |
| Maximum resolution | 1920 x 1200 (and 1200 x 1900) | 1280x1024 |
| Aspect ratio | 1:2.39 - 2.39:1 range (inclusive) | between 1:3 and 3:1 |
| Maximum frame rate | 40 fps | 60 FPS or less |
| Maximum bitrate | 25 Mbps | not stated |
The Help Center figures come from a FAQ explicitly about video "that can be uploaded on the web." The developer figures are the API's constraints. Do not average them, and do not treat either set as "X's video specs" — check the official documentation for the path you are actually using.
Encoding constraints that have nothing to do with size
X's developer docs list hard requirements that a perfectly small file can still miss. Verbatim, these must hold: pixel aspect ratio "must have 1:1"; "Only YUV 4:2:0 is supported"; "Audio must be AAC with Low Complexity profile. (High-Efficiency AAC is not supported)"; "Audio must be mono or stereo, not 5.1 or greater"; "Must not have open GOP"; "Must use progressive scan."
A 4:2:2 master, a 5.1 mix, an interlaced capture, or an HE-AAC audio track each violate one of these while the file size stays irrelevant. X states the requirements but does not document which error message a violation produces, so treat this as a list to check rather than a symptom to match.
The connection itself
Both pages point here. Media Studio: "if there is any packet loss or connection failure at the time of upload, the entire process will fail and need to be restarted." The Ads page is more practical: "Try uploading your video on a different wifi network. The faster the wifi speed, the greater chance the video will upload."
The error that lies about itself
One more from the same FAQ: "Error: 'Video too long' — This error usually appears when uploading media that isn't in a supported format."
If X tells you the video is too long and you know it is not, stop trimming and check the file's format and encoding instead.
The upload finished and the post still failed
X's developer docs describe this as two separate gates: "Upload limits and Post-create limits are separately enforced. A media_id that finalized successfully can still be rejected by POST /2/tweets." The rejection arrives as a 403 whose documented text is "This user is not allowed to post a video longer than N minutes." — and X spells out what N means: "N is the posting user's cap for that media (20 minutes by default, 125 minutes for Premium / verified Post video)." So the same message can quote a different number depending on the account. X also flags a common trigger: "Using the wrong category (for example a DM category on a Post) is a common reason an upload succeeds and Post create then fails."
If your progress bar reaches 100% and then everything collapses, this is the mechanism — the file uploaded fine and the post was refused.
How to tell it worked
Check the file on disk after re-exporting, not the original. A successful Media Studio upload moves through processing rather than stalling, and X gives that stage up to 30 minutes before it fails out. If the new file goes through and the old one did not, the difference was bitrate, container, or encoding — not the cap.
FAQ
Why does X say upload failed when my file is under the size limit? Because size is only one of four causes X lists. Its advertiser page states directly: "Even if your file is under our maximum size, we may still have issues ingesting the file." Resolution, encoding settings, and the connection are the others.
Does lowering the bitrate really help? It is X's own first suggestion twice over — "the easiest solution for making a smaller file size" in the Media Studio FAQ, and "An easy way to do this is to reduce the bitrate" on the Ads upload page.
Why do my MOV files fail more than MP4? X says processing stalls "most often with .mov files" and recommends you "re-export files as .mp4, which should allow for overall faster upload and processing time."
What video formats does X accept on the web? X does not publish a complete list for web or mobile uploads — its help page only says you will be prompted if the video is not in a supported format. Check the official documentation rather than a third-party list.
My upload hit 100% and then errored. What happened? Upload and post creation are, in X's words, "separately enforced." A file can finalize successfully and still be rejected when the post is created, which surfaces as a 403.
Start with the smallest change that could work: re-export at a lower bitrate, in an MP4 container, and retry. More upload and export fixes live in the fix guides, and every browser-side converter and compressor is listed under all Clapr tools.
Quotes above are from X's Media Studio Library FAQ, X's developer media documentation, and X's advertiser video upload help page, checked 16 September 2026. X's pages have carried conflicting figures before — verify against the official documentation before relying on any number.