Skip to content
CueNorm Public Validator

Text layout

MAX_CHARACTERS_PER_LINE

Limits the number of visible characters on each line of a subtitle.

What it checks

Every line of every subtitle is measured on its own. A line longer than the profile's maximum produces one issue, reported with its subtitle number and line number.

How it is measured

CueNorm counts visible characters as grapheme clusters: what a viewer perceives as one character counts as one.

  • Spaces and punctuation are counted.
  • Line breaks are not counted.
  • Accented letters count as one character, whatever their encoding. The Polish ą is one character, even though EBU-STL stores it on two bytes.
  • Styling (italic, underline, colour) does not change the count.

Bytes are never counted. Physical teletext constraints (40-cell rows, text field size) are a different concern from this editorial rule.

Parameters

Parameter Type Meaning
max positive integer Maximum visible characters per line

Example

With max: 36:

Nie wiem, czy to jest dobry pomysł, naprawdę.

This line has 45 characters, so the report shows Line 1: 45 characters (max 36).

The profiles shipped with CueNorm declare this rule as a warning, whatever the output format: players are often more permissive than the destination's style guide, and some broadcasters accept longer lines. A profile requiring strict compliance declares the rule again with severity: error.

How to fix

  • Split the line at a natural phrase boundary, within the profile's maximum number of lines.
  • Shorten the wording (condense the translation).
  • If the text fits on the allowed lines but is badly distributed, a layout-only reflow (REFLOW transformation, when the profile allows it) can rebalance the lines without rewriting them.

Profiles using this rule

ProfileSeverityParameters
ARTE SME German arte-sme-de warning max=37
ARTE SME French arte-sme-fr warning max=37
ARTE VOST German arte-vost-de warning max=37
ARTE VOST French arte-vost-fr warning max=37
BBC Subtitles English (UK), EBU-STL bbc-subtitle-en-gb-ebustl warning max=37
BBC Subtitles English (UK), EBU-TT Part 1 bbc-subtitle-en-gb-ebutt warning max=37
BBC Subtitles English (UK), EBU-TT-D bbc-subtitle-en-gb-ebuttd warning max=37
Channel 5 SDH English (UK), EBU-STL channel5-sdh-en-gb-ebustl warning max=35
Disney+ SDH English (US) disney-plus-sdh-en-us warning max=42
Disney+ Subtitles English (US) disney-plus-subtitle-en-us warning max=42
Disney+ Subtitles French (France) disney-plus-subtitle-fr-fr warning max=42
French broadcasters SME (RT-040) fr-broadcast-sme-fr warning max=37
French broadcasters VOST (RT-040) fr-broadcast-vost-fr warning max=37
France Télévisions SME French francetv-sme-fr warning max=37
France Télévisions VOST French francetv-vost-fr warning max=37
Max Subtitles (SMPTE-TT) max-subtitle-smptett warning max=42
Netflix SDH English netflix-sdh-en warning max=42
Netflix SDH French (France) netflix-sdh-fr-fr warning max=42
Netflix Subtitles English — Children netflix-subtitle-children-en warning max=42
Netflix Subtitles French (France) — Children netflix-subtitle-children-fr-fr warning max=42
Netflix Subtitles English netflix-subtitle-en warning max=42
Netflix Subtitles French (Canada) netflix-subtitle-fr-ca warning max=42
Netflix Subtitles French (France) netflix-subtitle-fr-fr warning max=42
Prime Video SDH French (France) prime-video-sdh-fr-fr warning max=42
Prime Video Subtitles English prime-video-subtitle-en warning max=42
Prime Video Subtitles French (France) prime-video-subtitle-fr-fr warning max=42
TF1 SME French tf1-sme-fr warning max=36
TF1 VM French tf1-vost-fr warning max=36
UK broadcasters SDH (DPP-EBU-TT) uk-dpp-sdh-en-gb-ebutt warning max=37