Timed Text Style Guide: General Requirements

Any timed text created specifically for Netflix – Originals or non-Originals – should follow the Netflix Timed Text Style Guide, unless otherwise advised.

1. Duration

Minimum duration: 5/6 second per subtitle event (e.g. 20 frames for 24fps)
Maximum duration: 7 seconds per subtitle event

2. File Format

Subtitle and SDH files for all languages must be delivered in a TTML (.dfxp or .xml) format, except for Japanese, which must be delivered in Videotron Lambda Cap format.

3. Frame Gap

2 frames minimum (regardless of frame rate)

4. Glyph List

Only text/characters included in the NETFLIX Glyph List (version 2) can be used. 

5. Line Treatment

2 lines maximum

Always keep the text on one line, unless it exceeds the character limitation. Follow these basic principles when the text has to be broken into 2 lines:

  • The line should be broken
    • after punctuation marks
    • before conjunctions
    • before prepositions
  • The line break should not separate
    • a noun from an article
    • a noun from an adjective
    • a first name from a last name
    • a verb from a subject pronoun
    • a prepositional verb from its preposition
    • a verb from an auxiliary, reflexive pronoun or negation

6. Positional Data

Should be expressed in generic terms (textAlign, displayAlign, etc.)

Do not use absolute values (percentage, pixels, etc.)

All subtitles should be center justified and placed at either the top or bottom of the screen, except for Japanese, where vertical positioning is allowed (see Japanese Timed Text Style Guide for details).

7. Timing

  • Timing to Audio: Subtitles should be timed to the audio or, if necessary, within 3 frames of the audio. If more time is required for better reading speed, the out-time can be extended up to 12 frames past the timecode at which the audio ends.
  • Timing to Shot Changes: It is good practice to avoid subtitles that cross the shot changes whenever possible, as this is disruptive to the viewing experience.
  • Dialogue that crosses shot changes: when dialogue crosses the shot change the timecodes should be adjusted to either be at the shot change or at least 12 frames from it.

If dialogue starts between 8-11 frames (green zone) before the shot change, the in-time should be moved up to 12 frames before the shot change.

If dialogue starts 7 frames or less (red zone) before the shot change, the in-time should be moved to the shot change.


If dialogue ends between 8-11 frames (green zone) after the shot change, the out-time should be moved out to 12 frames after the shot change.


If dialogue ends 7 frames or less (red zone) after the shot change, time code out should be moved to the shot change, respecting the two-frame gap.

If there is one subtitle before and one after the shot change, the second one should start on the shot change, and the first should end two frames before.

8. Consistency

Glossaries/consistency sheets/formality tables must be created and used for translation across episodes and seasons. They should be provided to Netflix upon delivery of timed texted material for QC purposes.

9. Netflix Credit Translations

Translations for Netflix Originals title cards must be included in full and forced subtitle streams. Please refer to the Originals Credit Translation document.

10. Title Cards/Dedications

Subtitle all plot pertinent and otherwise relevant on-screen text that is not covered in dialogue and/or redundant in the target language such as: “Based on True Events”, “In Loving Memory of Anna”, etc.

11. Currency

Currency should not be converted in the subtitle files. Any mention of money amounts in dialogue should remain in the original currency.

12. Translator Credits

Please include the translator credit as the last event of the subtitle file, using the approved translation provided in the Original Credits Translation Document.

  • Only one individual translator should be credited per asset; no company credits may be included.

  • The translator credit should occur after the end of the main program, and be entirely in the target language of the timed-text file.

  • The credit should be appropriately timed for reading speed, with duration between 1 and 5 seconds.

  • For SDH files, include translator credits only if translating from the original language. If transcribing the original or dubbed audio, do not include translator credits. 

  • Forced Narrative files should credit the subtitle translator, as long as there are original translations in the file.

  • Translator credits may be omitted only if the translator has submitted a formal waiver of rights to be credited.

13. TTML Sample of Subtitle and SDH

All TTML files created for subtitles or SDH must adhere to the following technical specifications:

  • Only use percentage values. Do not use pixel values.
  • Use tts:textAlign and tts:displayAlign for positioning along with static values for tts:extent and tts:origin.
  • tts:fontSize shall be defined as 100%. Do not use pixel values.

Sample TTML snippet for Subtitle and SDH below:

<?xml version="1.0" encoding="utf-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:ttp="http://www.w3.org/ns/ttml#parameter" xmlns:tts="http://www.w3.org/ns/ttml#styling" xmlns:ttm="http://www.w3.org/ns/ttml#metadata" xmlns:xml="http://www.w3.org/XML/1998/namespace" ttp:timeBase="media" ttp:frameRate="24" xml:lang="en">
<ttm:title>Sample TTML</ttm:title>
<style xml:id="s1" tts:textAlign="center" tts:fontFamily="Arial" tts:fontSize="100%"/>
<region xml:id="bottom" tts:displayAlign="after" tts:extent="80% 40%" tts:origin="10% 50%"/>
<region xml:id="top" tts:displayAlign="before" tts:extent="80% 40%" tts:origin="10% 10%"/>
<body region="bottom" style="s1">
<p xml:id="subtitle1" begin="00:00:01.375" end="00:00:05.750" style="s1" region="top" >TOP SAMPLE TEXT</p>
<p xml:id="subtitle2" begin="00:00:05.916" end="00:00:10.216" style="s1" >BOTTOM SAMPLE TEXT</p>
<p xml:id="subtitle3" begin="00:00:10.418" end="00:00:15.083" style="s1" region="top" >Top Hello</p>
<p xml:id="subtitle4" begin="00:00:15.391" end="00:00:20.558" style="s1" >Bottom Hello</p>
<p xml:id="subtitle5" begin="00:00:20.750" end="00:00:25.041" style="s1" >He had a great story.</p>
<p xml:id="subtitle6" begin="00:00:25.875" end="00:00:30.166" style="s1" >- Did he tell you what it was about?<br/>- He did.</p>
<p xml:id="subtitle7" begin="00:00:30.416" end="00:00:35.558" style="s1" >In 1992, a shipping container<br/>fell overboard</p>
<p xml:id="subtitle8" begin="00:00:35.858" end="00:00:40.091" style="s1" >on its way from China</p>
<p xml:id="subtitle9" begin="00:00:40.341" end="00:00:45.133" style="s1" >to the United States,<br/>releasing 29,000 rubber ducks</p>
<p xml:id="subtitle10" begin="00:00:45.325" end="00:00:50.041" style="s1" >into the Pacific Ocean.</p>


Change Log:


Timed Text Style Guide: General Requirements

Added section 12 Translator Credits
Revised section 12 TTML Sample of Subtitle and SDH - renumbered to 13


Timed Text Style Guide: General Requirements

Revised section 2 File Format – text edited to include Lambda Cap for Japanese
Revised section 6 Positional Data – text edited to include vertical positioning for Japanese
Revised section 7 Timing – text rewritten for clarity
Revised section 8 Consistency – formality table added
Added section 10 Title Cards/Dedications
Added section 11 Currency