When X refuses your caption file, it is telling you the file's formatting is wrong — not that the upload itself failed. X publishes the error text, a one-line diagnosis, four named checks, and a matching pair of correct and incorrect examples. That is unusually specific for a platform error, and it means you can usually find the offending line by eye.
This page quotes those official checks verbatim and shows what each one is pointing at.
What this error actually means
The error appears in X's Media Studio Library help page, listed verbatim as:
"Error: 'There was a problem uploading your subtitle (.srt) file'"
X's own diagnosis of it is a single sentence:
"This means that there is likely an issue with the formatting of the file."
Two scope notes before you act on any of this. First, that page opens its upload specifications with a limitation X wrote itself: "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." Second, Media Studio is not open to every account — X states that "Access to Media Studio will be given to verified subscribers only," and its Premium page adds that the feature "is not available to Basic tier subscribers."
For the separate web route, X's caption help page ends with: "Note: Currently this feature is available on web only."
The four checks X publishes
These are X's four items, quoted word for word:
- Chronology — "Any end time needs to be before the next start time. All subtitle headers need to be in chronological order."
- Spaces — "Remove any unnecessary spaces that appear before a time code. Ensure there is one space before and one space after the
-->in each time code." - Timestamp — "A colon ":" is required between the hours, minutes, and seconds. A comma "," is required between seconds and milliseconds."
- Digits — "Time codes must have double digits in all values for hours, minutes, and seconds. Milliseconds need to have three digits."
Three of the four are about characters you would never notice reading the file: a stray space, a period where a comma belongs, a missing leading zero. The fourth, chronology, is about ordering — and it is the one most likely to come from a subtitle editor rather than from you.
X's correct and incorrect examples, side by side
X publishes a correctly formatted sample:
1
00:00:06,000 --> 00:00:08,000
Hey, how's it going?
2
00:00:08,001 --> 00:00:10,000
What's up, how are you?
3
00:00:10,001 --> 00:00:11,000
Doing well, thanks!And an incorrectly formatted one:
22
0:00:36.801--> 0:00:42.239
Hey, how's it going?
21
00:00:40,161 --> 00:00:42,239
What's up, how are you?Read the second block against the four checks and every failure is visible. The hour value is written as a single digit, 0, where the Digits rule asks for double digits. The milliseconds are separated by a period rather than the comma the Timestamp rule requires. There is no space before the arrow, which the Spaces rule asks for on both sides. And the headers run 22 then 21, which is not chronological order.
Note also what the correct example does with adjacent cues: each one starts one millisecond after the previous cue ends — 00:00:08,000 then 00:00:08,001. That is what "any end time needs to be before the next start time" looks like in practice, and it is a common failure when two cues are meant to be back to back and a tool writes the same timestamp twice.
The fastest fix
If the file you are trying to upload started life as a WebVTT file — a Zoom transcript, a browser-based editor export, a caption track pulled out of a player — hand-editing it into shape is the slow way. Convert it first, then run the four checks against the result.
Try it right here
Runs in your browser. Your file is not uploaded anywhere.
This runs inside your browser tab: the file is read from disk, converted locally, and handed back. Nothing is uploaded, which matters for anything unpublished. The same converter has its own page at VTT to SRT.
One caveat on formats. X's help pages for captions discuss .srt and nothing else — the Media Studio encoding spec lists "Subtitles: CEA 608/708 embedded, .SRT sidecar." The developer documentation's list of accepted upload MIME types does include text/vtt alongside text/srt, but that is an API parameter enum, not a statement about what the web uploader accepts. If you are uploading through the browser, supply an SRT.
What the official checklist does not cover
This is where most advice about this error goes off the map.
Character encoding is not one of X's four checks. Neither the checklist nor the surrounding caption pages mention UTF-8, byte order marks, or line endings anywhere. The "save it as UTF-8 without a BOM" instruction that circulates widely for this error has no counterpart in X's published guidance, so treat it as unverified rather than as a rule — and check the official documentation before assuming a requirement exists.
One file per video. X states: "Currently we only support one subtitle file uploaded per video." If you were trying to attach a second language track, that is the ceiling, at least for Media Studio.
Size. The developer documentation's media category table lists the subtitles category with a 1 MB maximum. That is the API-side figure; X's help pages do not publish a size limit for the web caption uploader. For the video file itself, the numbers are a separate and messier story — see X's video file size limits, where four official pages disagree.
How to tell it worked
A clean upload does not give you an immediate visual confirmation, and this trips people up. X answers it directly: "Subtitle files will only be shown once posted." The Media Studio preview player is not where you check.
After posting, two published behaviours decide whether anyone sees the captions:
- Language matching. Per X: "the subtitles will appear as an overlay atop the video when the subtitles language matches the language set on the viewing user's device... If the subtitles language is not the same as the language of the user, subtitles will not appear."
- Sound state. "By default, subtitles appear when the video's sound is not playing, and will be hidden when sound is playing." X adds that users with subtitles enabled in their device accessibility settings will always see them.
So a video that plays with audio on, for a viewer whose device language differs from the track's, shows no captions — with nothing wrong at all.
FAQ
What does "There was a problem uploading your subtitle (.srt) file" mean? X's own answer: "This means that there is likely an issue with the formatting of the file." It is a validation failure on the file's contents, and X lists four things to check — chronology, spaces, timestamp punctuation, and digit counts.
Does my SRT need to be UTF-8 without a BOM? X's four checks do not mention character encoding at all, and neither do its caption help pages. That widely repeated instruction has no official source on X's side, so it is unverified. Check the official documentation rather than assuming it.
Can I upload more than one subtitle file per video? No, per X: "Currently we only support one subtitle file uploaded per video." That statement is on the Media Studio page.
Can I upload a VTT file to X instead?
X's caption help pages only describe .srt. text/vtt does appear in the developer documentation's accepted MIME type list, but X does not state that the web uploader takes VTT. Convert to SRT first — the differences between the two formats are covered in subtitle formats compared.
The file uploaded fine, so why are there no captions on my post? Two documented reasons. Subtitles are only shown once the post is live, not in the Media Studio preview. And they only appear when the track's language matches the viewer's device language setting.
More upload errors picked apart the same way in the fix guides, and the browser-side converters live in all Clapr tools.
Quoted from X's Media Studio Library and caption help pages plus the X API media documentation, checked 16 September 2026. Verify against the official pages before relying on them.