Timecode, frame rate, and caption sync
Your cues look perfect in the NLE — then on YouTube the last line finishes early, or on a web player every third cue hiccups. Often the root cause is not the words; it is a mismatch between the timeline you authored against and the timeline the published video actually uses.
Drop-frame vs non-drop NTSC
At 23.976 / 29.97 / 59.94 fractional rates, broadcast timecode uses drop-frame (DF) notation to keep clock time aligned with wall clocks over long programs. If your captions were authored as non-drop (NDF) but the program is treated as DF downstream (or vice versa), cumulative drift shows up late in the file — not on cue one.
XML and TTML timing
TTML and some broadcast exports embed a frame rate or tick rate inside the document. If that metadata does not match the rendered video frame rate, players map media milliseconds incorrectly. See TTML and DFXP for when XML timing metadata matters more than a simple SRT block list.
Export checklist before upload
- Confirm sequence frame rate matches the file you will upload (re-wrap vs transcode).
- Re-export captions after a conform pass that changes duration or adds handles at head/tail.
- Avoid mixing time-of-day timecode with program-relative cues unless the receiver expects it.
- If a host re-encodes to a constant frame rate, re-verify first and last cues after processing.
Reading speed still matters
Drift is one failure mode; another is correct timestamps with unreadable density. Pair this note with reading speed and line length so you are not chasing a frame-rate bug when the issue is CPS.
Run timing diagnostics through CaptionPass to catch overlapping cues and impossible durations before they become player glitches.
More guides
- SRT vs VTT — when each format silently failsComma vs dot timestamps, WEBVTT headers, and where YouTube, TikTok, and HTML5 bite.
- Caption file encoding — UTF-8, BOM, and garbled textWhy uploads show mojibake or blank cues: UTF-8 vs legacy encodings and quick fixes.
- Burned-in vs soft subtitles — what to deliver whenOpen captions burned into the picture vs separate SRT/VTT tracks — tradeoffs for editors and clients.
- Reading speed for captions — CPS, line length, and platformsCharacters per second, lines per cue, and where YouTube, TikTok, and HTML5 push back.
- Why your captions are not showing — a triage guideHTML5, YouTube, and TikTok checks when subtitles vanish after upload.
- Fix overlapping subtitlesWhat overlap means and why some players drop overlapping cues.
- TTML and DFXP — broadcast-style timed text on the webNamespaces, timing, styling stripped in practice, and when TTML is the right interchange vs SRT or WebVTT.
- CaptionPass JSON IR and the developer-json presetLossless-ish cue interchange for tooling: when to use JSON IR, version tag, and how it pairs with the HTTP API.
- WCAG-minded captions — reading speed, sound tags, and burned-in contrastHow WCAG 1.2.x thinking maps to real files: CPS, line length, SDH-style cues, and contrast for open captions.