Found me on Upwork? If you found me through Upwork and want to work together, please contact me through Upwork. Messages from Upwork clients sent outside Upwork will not be answered.
Localization notes🎬 Captioning & Subtitles

Vietnamese subtitles over CPS: the fix order and compression toolkit

Vietnamese subtitles overflow 17 CPS because VI text is 15-35% longer. The fix order: extend timing, split events, compress with Sino-Vietnamese.

Dao Huy (Lucas)6 min read8 sections
Vietnamese subtitles over CPS: the fix order and compression toolkit

💡 A Vietnamese subtitle event overflows the 17 CPS adult limit when its total character count (including spaces and punctuation) divided by the event duration in seconds exceeds 17. Fix in this order: extend the out-time if the shot window allows, split into two events, then compress vocabulary using Sino-Vietnamese alternatives or by dropping redundant pronouns. Set Subtitle Edit to 17 CPS max / 42 CPL before opening any EN-to-VI translation project.

Key takeaways

  • CPS formula: CPS = total characters / duration in seconds. Spaces and punctuation count. At 17 CPS, a 2-second window holds exactly 34 characters.
  • Vietnamese analytical structure - standalone tense markers like "đã", "sẽ" and aspect particles like "rồi" - adds characters that English encodes inside a single inflected verb form. Typical EN-to-VI expansion: 15-35% more characters.
  • Subtitle Edit highlights overflow events in red as you type: Options > Settings > General > Maximum characters per second: 17.
  • Fix order: (1) extend out-time if the shot allows; (2) split into two events; (3) compress vocabulary. Never compress meaning unless splitting genuinely fails.
  • Sino-Vietnamese vocabulary is often 3-8 characters shorter than its pure-Vietnamese equivalent for the same meaning, making it the sharpest vocabulary compression tool available.

What is CPS and how do I calculate it for a Vietnamese subtitle?

The characters-per-second (CPS) formula is: divide the total character count of the subtitle event by the event duration in seconds. Every character counts in the Vietnamese subtitle CPS limit calculation - including spaces, commas, question marks, and all punctuation. Vietnamese precomposed characters like ộ, ề, and ấ are single Unicode code points (NFC normalization) and each counts as exactly one character, not one base letter plus separate diacritic modifiers.

Here is how the 17 CPS adult limit translates into maximum character counts at common event durations:

DurationMax chars (17 CPS, adult)Max chars (13 CPS, children)
1.0 s1713
1.5 s2519
2.0 s3426
2.5 s4232
3.0 s5139
5.0 s8565

Notice the 2.5-second row: the 42-character-per-line limit and the 17 CPS limit converge exactly here. A 1-line event of 42 characters at 2.5 seconds hits both ceilings simultaneously. This is the most common hard-reject pattern I encounter in Vietnamese subtitle QC.

Configure Subtitle Edit before you open your translation file:

Subtitle Edit: Options > Settings > General
  Maximum characters per second:   17
  Maximum characters per line:     42
  Minimum display time (ms):      833   (5/6 second - Netflix TTSG minimum)
  Maximum display time (ms):    7 000
  • Maximum characters per second: 17 - the Netflix Vietnamese TTSG adult limit; events that exceed it turn red immediately as you type.
  • Maximum characters per line: 42 - the per-line cap; Subtitle Edit highlights this separately in orange.
  • Minimum display time: 833 ms - 5/6 second, the Netflix TTSG floor; a shorter event is a QC reject regardless of CPS.
  • Maximum display time: 7000 ms - 7 seconds; events beyond this must be split.

After saving these values, any CPS overflow turns red in the list view the moment you type past the limit. I never submit a file with a red CPS event.

Why does Vietnamese text overflow the CPS limit more than other languages?

Vietnamese is an analytic language. Tense, aspect, and modality are marked by separate standalone particles, not by changing the verb form. Where English packs tense into "had decided" with a single modified word, Vietnamese uses "đã quyết định rồi" - the tense marker "đã" and the perfective particle "rồi" each occupy their own space before and after the main verb. More particles mean more characters at the same event duration, which means the CPS number climbs faster than with English or other inflected languages.

Subject pronouns compound the problem. English rapid dialogue drops them constantly: "Call me" and "Tell me what happened" leave the subject implicit. In Vietnamese subtitles, dropping a pronoun is a deliberate register choice, and in many scenes it can sound abrupt or unclear, so translators often keep "tôi" or "bạn" explicitly. That adds 3-5 characters per event.

Negation is a third source of expansion. English "You can't do it" is 18 characters. Vietnamese "Anh không thể làm được điều đó" is 30 - nearly 67% longer - because the grammatical structure needs "không thể" (cannot) and "được" (ability marker) as separate particles framing the verb.

How do I find all CPS overflows in a subtitle file before they fail QC?

With the 17 CPS limit configured in Subtitle Edit, overflow events turn red in the list view as you type. Before submitting, I run a final sweep: Tools > Fix Common Errors and review the CPS column in the main grid. Any red row is a blocker. I work top to bottom through the list until none remain.

For a quick manual check on a single event: count the characters (including spaces and punctuation) and divide by the duration in seconds. Example: "Tại sao bạn không nói với tôi sớm hơn?" is 38 characters. If this event runs 1.8 seconds, CPS = 38 / 1.8 = 21.1 - well over 17. To meet the limit at 1.8 seconds you need 17 x 1.8 = 30.6, meaning 30 characters or fewer.

The specific events most likely to overflow are:

  • Mid-length compound sentences that looked fine in the English source at 14-16 CPS - the buffer disappears in Vietnamese.
  • English sentences with phrasal verbs ("find out", "come back to", "deal with") that expand to compound phrases in Vietnamese.
  • Negations with "không ... được" that are grammatically required in Vietnamese but absent from the English surface form.

Compression techniques: the Vietnamese-specific toolkit

When extending or splitting is not possible (hard shot cut, overlapping dialogue), vocabulary compression is the tool. Here are the techniques I use with real examples and character counts. The goal is always to preserve meaning and register, not just to cut characters.

TechniqueBefore compressionAfter compressionChars saved
Drop subject pronoun (context clear)Tôi không biết chuyện đó. (25)Không biết chuyện đó. (20)5
"Tại sao" to "Sao"Tại sao anh không nói? (21)Sao anh không nói? (17)4
Drop perfective "rồi" (tense already set)Tôi đã hiểu rồi. (16)Tôi đã hiểu. (12)4
Drop "với [pronoun]" (recipient clear)không nói với tôi (17)không nói (9)8
"phải không?" to "không?"Anh đồng ý phải không? (21)Anh đồng ý không? (16)5
Sino-Vietnamese compound nounmáy bay (7)phi cơ (6)1-2 per phrase

Some notes on the table. The Sino-Vietnamese row shows modest savings per phrase; the value accumulates when I replace 2-3 such phrases per event. The "drop với [pronoun]" technique saves the most in a single move but requires the recipient to be genuinely unambiguous from the preceding context. The pronoun-drop and particle-drop techniques need register judgment: if removing a particle changes the truthfulness of the subtitle, or if a pronoun drop makes the speaker ambiguous, I leave it and look for a different fix.

What order should I try fixes: extend, split, or compress?

Fix order matters because each option has a different cost to the viewer's experience. I always try the least disruptive fix first.

  • 1. Extend the out-time: check whether the event ends before a hard shot cut or overlapping audio. If there is genuine room, extending the out-time by even 0.3-0.5 seconds can drop CPS below the limit without touching the text at all. This is the cleanest fix.
  • 2. Split into two events: find the most natural clause boundary in the Vietnamese sentence - after a comma, or after a clause connector like "vì", "nên", or "nhưng". Create two events spanning the original timing window. Each event now has fewer characters per second. This changes reading rhythm slightly but not meaning.
  • 3. Compress vocabulary: apply the minimum compression needed to reach the limit using the techniques above. If I need to remove meaning to get below 17 CPS, that is a signal to revisit options 1 or 2.

The order I see violated most often in drafts I review: compression is applied first because it feels faster than restructuring timing. The result is subtitle text that is grammatically thin and registers poorly with native Vietnamese viewers. Extend and split first; compress as a last resort and only when meaning survives intact.

When does a native Vietnamese subtitler make the real difference?

The configuration and fix order above handle the mechanical part of the CPS overflow problem. Subtitle Edit's red highlight and the compression table give anyone the tools to reach 17 CPS compliance. What those tools do not provide is the register judgment needed to make compressed lines feel natural.

Dropping "với tôi" is a character-count decision. Whether to drop it in a scene where a character is making a vulnerable admission - where that small phrase carries emotional weight - is a register decision. A native subtitler catches these cases because they watch the scene and hear the tone, not just count the characters. A compressed line may be CPS-compliant but land flat for Vietnamese viewers.

For EN-to-VI subtitle translation for streaming, documentary, or drama, my Vietnamese subtitle translation service delivers CPS-compliant files where the compression decisions are made by a native speaker watching the scene.

FAQ

Does a space count toward CPS for Vietnamese subtitles?

Yes. Netflix specifies that spaces and punctuation are included in the character count for reading speed, and Subtitle Edit follows the same convention. "Tại sao anh không nói?" is 21 characters, not 16 without spaces. Always count the full string including all whitespace.

Are Vietnamese diacritics counted as one character each?

Yes. Vietnamese uses precomposed Unicode characters under NFC normalization: ộ, ề, and ấ each occupy a single code point and count as one character. The word "không" is 5 characters; no separate diacritic counting applies.

What CPS limit should I use if the platform is not Netflix?

17 CPS for adult content is a safe working default for most streaming and web delivery when no platform-specific guidance is given. It aligns with the Netflix Vietnamese TTSG and the general subtitle craft consensus for adult reading speed. For children's content, 13 CPS is the Netflix standard and a reasonable default elsewhere.

Can I split a Vietnamese negation across two subtitle events?

No. A Vietnamese negation such as "không thể làm được" must stay in one event. Splitting "không thể" to one cue and "làm được" to the next disrupts the reading rhythm and can cause a viewer to momentarily misread the first cue as the complete statement. Find a different clause boundary for the split point.

What is the minimum event duration in the Netflix Vietnamese TTSG?

The Netflix TTSG General Requirements set a minimum subtitle duration of 5/6 of a second, approximately 833 milliseconds. An event shorter than this is a QC reject regardless of CPS. If you are extending an event out-time to fix a CPS problem, also verify the result does not overshoot the 7-second maximum duration.

Official sources

Dao Huy (Lucas)
Dao Huy (Lucas)
Graduate, University of Foreign Language Studies, University of Da Nang. Signs a certificate of accuracy on every certified translation (USCIS, IRCC).

Written by Dao Huy (Lucas), Vietnamese translator and localization specialist (English, Chinese and French into Vietnamese). See translation services →

Get QuoteWhatsApp