Netflix Branded Delivery, what indie distributors get wrong about the subtitle spec
Most rejected subtitle deliveries don't fail on translation. They fail on a number.
Reading speed above 20 characters per second. A cue that runs across a shot change. A line longer than 42 characters. A gap under two frames. A non-compliant character in a TTML attribute. The QC tool catches it, the file bounces, and the distributor loses a slot in the platform's release calendar, a window that may not open again for a quarter.
This piece is the working guide for indie distributors and sales agents who need their localized masters to pass Netflix Branded Delivery on the first submission. Not the Originals spec (a separate, stricter regime that very few indies will need to hit). The Branded spec, the one that governs everything Netflix acquires, and the five places we routinely see AI-captioned files fail it.
What "Branded" means
Netflix runs two parallel delivery specs.
Netflix Originals is the spec for content Netflix produces or co-produces. It enforces a deeper set of constraints, including the notorious dialog stem identity rule, which requires the 5.1 dialogue stem summed with M&E to bit-reconstruct the full 5.1 mix. That's a constraint AI-separation pipelines can't meet; separation is lossy by definition.
Netflix Branded Delivery is the spec for content Netflix acquires , what indie distributors are licensing. It's lighter on the audio side, but the subtitle requirements are still strict. The text in the file has to read; the timing has to track the cut; the formats have to parse. Branded is where most indie deliveries live.
Netflix's Localization, Accessibility and Dubbing Branded Delivery Specifications is the public reference. Every claim in this piece is grounded in it.
The five places AI-captioned files fail
1. Reading speed (CPS).
The Branded spec caps reading speed at 20 characters per second for adult content. A line that reads at 22 CPS fails QC, even if every word is correctly translated.
The AI failure mode: a model that translates faithfully will often produce a French or German cue 30% longer than the English source, because the target languages re-distribute the same meaning across more words. If the cue duration doesn't move with it, the CPS spikes. The Whisper-large-v3 + ad-hoc translation stacks we see in the field don't optimise CPS at all, they emit whatever the model produced and let the QC tool reject it.
The fix: time can be extended (into idle space before the next cue) to lower CPS, but the cue start always has to track the speech onset. You can't fabricate timing; you can only recover it from the silence either side of speech. Our pipeline does this as a post-translation optimisation, and tracks it as a hard QC gate before the file leaves the building. On the Kumite reference run, this kept 1,212 cues across French and Dutch within the 20 CPS ceiling.
2. Shot-change misalignment.
The Branded spec doesn't name a frame tolerance, but the platform's QC vendors increasingly catch subtitles that flash in and out across a cut. A cue that ends 3 frames after a shot change reads as a flash to the eye; a cue that starts 5 frames before reads as late. Editors notice both.
The AI failure mode: a model that segments on linguistic pauses will land cue boundaries exactly at shot changes (because dialogue often pauses around cuts). It's the worst possible alignment.
The fix is to detect the shot list before authoring cues, and apply a 7-frame red zone around each cut: a cue either lands entirely within a shot or extends cleanly across one. Idle space around speech onsets is the budget; the cuts are constraints. Our pipeline does shot detection on the picture and treats it as authoritative.
3. Character-count and line-count overrun.
The Branded spec caps lines at 42 characters and cues at 2 lines. A 3-line cue is an automatic reject. A 43-character line is too.
This is a translation problem, not a timing problem. A French re-ordering of an English sentence will sometimes produce a line that fits the cue but overflows the screen width. The model doesn't know.
The fix: enforce line-length as part of the translation pass, not as a post-hoc reformatter. The model should be told the character budget per cue, and re-roll lines that overflow. Re-splitting a long line into two short cues changes timing, better to constrain the line at generation time.
4. Format conformance. TTML attributes and EBU-TT-D structure.
A correctly translated, correctly timed SRT can still bounce in TTML. Netflix's IMSC 1.1 profile is strict on namespace declarations, element ordering, and the handful of style attributes that aren't universally supported. EBU-TT-D (Tech 3350) is the European broadcaster equivalent and has its own quirks (region declarations, metadata blocks, line-height defaults).
The AI failure mode: an SRT-first pipeline that converts to TTML at the end will often emit a TTML file that parses but doesn't conform to the platform's stricter sub-profile. Conformant TTML is not "an SRT with angle brackets."
The fix: author in a structured intermediate that's broadcast-spec from the start, and let the deliverable formats render from it deterministically. Our pipeline emits SRT, TTML, IMSC 1.1, EBU-TT-D and CEA-608/708 from the same internal cue representation, and runs each through a per-format conformance validator before it ships.
5. Glossary drift across episodes.
The Branded spec doesn't enforce glossary lock, but every distributor who has shipped a multi-episode series knows what happens when episode 3 spells a character name Shauna and episode 5 spells her Shana. The platform's editorial QC will flag it; the consumer will mock it on social.
The AI failure mode: an episode-by-episode translation pass with no shared glossary. Even with the same model, sampling will drift.
The fix: extract the glossary from the source CCSL (or, if no CCSL, from the first episode's source SRT) and lock it across the whole deliverable set. Every name, place, term, and capitalisation is canonical; the translation pass is constrained to those exact strings. On our pipeline, that glossary is also the input to the dub side's voice-cast roster, so the name in the subtitle and the name on the casting list are bit-identical.
What we keep that AI captioners drop
Two more things, less visible to the platform QC but obvious to the buyer the first time they spot-check the file:
Register. Tu or vous. Du or Sie. The model defaults to the neutral, polite form. The drama requires the casual one. A faithful translation that misses the register is a failure of meaning, not of text. Our pipeline runs a cross-model verification pass after the first translation specifically to catch register regressions.
Idiom. "On the way to losing it" doesn't translate as "en allant le perdre" by accident. It does so because the translator was constrained to fit the cue budget and preserve the philosophical shape of the line. Most AI captioners optimise neither.
What this looks like on the Kumite reference
The Last Kumite (2024), 101 minutes, English source, delivered in French and Dutch:
- 1,212 cues per language
- Every cue ≤ 20 CPS
- Every cue ≤ 42 chars/line, ≤ 2 lines
- Every cue ≥ 5/6 second minimum duration, ≥ 2-frame gap
- Zero shot-change overlaps
- Glossary-locked: 47 cast/place/term entries across both languages
- Zero errors against Netflix Branded Delivery spec, verified by automated conformance check before the file left the building
That's not a quality target. That's the floor. Every Fonti Studio delivery ships against it.
When you can't afford a rejection
The platform calendar doesn't have many slots. A re-do that lands two weeks after the original window misses the window. The cost isn't the new file, it's the audience the platform was going to put in front of the film, and didn't.
If you have a feature heading into a platform delivery and you'd rather not roll the dice on the spec, email us a brief. Film master, trailer, CCSL or original-language SRT. We'll send you the first five minutes in your target languages for free, and tell you up front whether the master will pass.
Fonti Studio is an AI-native subtitle and dubbing service for film distributors and sales agents. Broadcast-grade output validated on feature-length deliveries. €400 per language for subtitles. €3,500 per language for dubs. Flat. EUR.
Heading into a delivery window?
Send a film master, trailer, and CCSL or original-language SRT. We send back a free preview in your target languages and tell you up front whether the master will pass.
Email us a brief