i

Where text breaks

49 classes · 217,414 characters

The Unicode line-breaking classes, counted by character.

The finding. Every design system assumes a word is a run of letters between spaces. That describes one character in eight. Ideographic characters — which break almost anywhere — outnumber alphabetic ones 6.4 to 1, and an entire class cannot be broken at all without a dictionary.

breaks anywhere 84.7%
breaks spaces 12.9%
breaks attaches 1.2%
breaks other 0.6%
breaks locale 0.4%
breaks dictionary 0.3%
What an engine must know

The two-letter codes are the specification's, and they are not guessable. ID reads as identifier and means ideographic; NS is nonstarter, a character that may not begin a line; PR and PO are the symbols that sit before and after a number and must never be separated from it. Every class carries its name, an example you can look at, and what it forces a layout engine to know.

ClassNameLooks likeCharactersWhat it means
ID Ideographic 漢 字 仮 172,561 Breaks between almost any two characters. No spaces required, and none used.
XX Unknown — 137,468 Unassigned codepoints, taking the default behaviour. The largest class by count, and it is empty of actual characters.
AL Alphabetic A b C 26,954 Breaks at spaces — the Latin model, and the one every design system assumes.
H3 Hangul LVT Syllable 각 난 10,773 A Korean syllable block with a trailing consonant.
CM Combining Mark ◌́ ◌̈ 2,512 Takes the class of the character it attaches to. An accent has no line-breaking behaviour of its own.
SG Surrogate — 2,048 Half of a code unit pair. Not a character on its own, and never appears in well-formed text.
SA Complex Context Dependent ก ข ค 757 Cannot be broken without a dictionary or a trained model — Thai, Lao, Khmer, Myanmar. There is no space and no character that marks the word edge.
AI Ambiguous ± × ÷ 718 Resolved by locale, not by the character. The same codepoint breaks differently in two languages.
NU Numeric 0 1 2 705 Digits, which must not be split from their separators.
H2 Hangul LV Syllable 가 나 399 A Korean syllable block of lead consonant plus vowel.
AK Aksara क ख 329 A Brahmic orthographic syllable. Breaking inside one is wrong, and finding its edge takes cluster analysis rather than a lookup.
BA Break After – ⁄ 263 A break opportunity follows this character.
AS Aksara Start ক খ 214 The consonant that begins a Brahmic orthographic syllable.
JT Hangul T Jamo ᆨ ᆩ 137 A Korean trailing consonant, as a separate codepoint.
EB Emoji Base 👍 🙌 134 An emoji that a skin-tone modifier can attach to.
JL Hangul L Jamo ᄀ ᄁ 125 A Korean leading consonant, as a separate codepoint.
OP Open Punctuation ( [ 「 95 An opening bracket or quote. Nothing may break after it — it must stay with what it opens.
JV Hangul V Jamo ᅡ ᅢ 95 A Korean vowel, as a separate codepoint.
CL Close Punctuation ) ] 。 、 94 A closing bracket, or the CJK full stop and comma. Nothing may break before it.
HL Hebrew Letter א ב ג 75 Hebrew letters. Split from Alphabetic because a hyphen behaves differently after them — Hebrew does not break at a maqaf the way Latin breaks at a hyphen.
PR Prefix Numeric £ $ € + 67 A symbol that comes before a number and must not be separated from it — a currency sign, a plus, a minus.
CJ Conditional Japanese Starter ぁ ァ ー 60 May or may not start a line depending on Japanese typographic preference — strict or normal.
BB Break Before ´ ˈ 55 A break opportunity precedes this character.
GL Non-breaking Glue   41 Forbids a break on both sides — the non-breaking space, and what holds “10 km” together.
EX Exclamation / Interrogation ! ? ! 40 Nothing may break before it. The mark belongs to the sentence it ends.
QU Quotation " ' « 39 A quote mark that may open or close, so the engine cannot tell from the character which side needs protecting.
PO Postfix Numeric % ° ℃ 38 A symbol that comes after a number and must not be separated from it — a percent sign, a degree, a unit.
NS Nonstarter 々 ゝ ヽ 37 Cannot begin a line. Japanese small kana and iteration marks belong to the character before them, so a break in front of one is a typographic error.
RI Regional Indicator 🇬🇧 26 Letters that only mean anything in pairs — two of them make a flag, and a break between them makes two letters.
HH Unambiguous Hyphen ‐ 11 The real hyphen character, added because the ASCII one could not be read reliably.
IS Infix Numeric Separator . , : ; 10 Sits inside a number and must not be split from it — the decimal point in 3.14, the comma in 1,000.
VI Virama ◌् ◌্ 7 The mark that removes a Brahmic consonant's inherent vowel and joins it to the next.
CP Close Parenthesis ) ] 6 Split from Close Punctuation so that a letter may follow it — the case of (s) in “form(s)”.
IN Inseparable ‥ … 6 A run that must not be broken internally — the dots of an ellipsis or a table-of-contents leader.
AP Aksara Pre-Base ◌ெ ◌െ 6 A Brahmic vowel sign written before the consonant it is pronounced after.
EM Emoji Modifier ✋🏻 ✋🏿 5 A skin-tone modifier, which never separates from the emoji it follows.
BK Mandatory Break U+000C U+2028 4 Always breaks. The line ends here whatever else is true.
B2 Break Before and After — 3 A break may fall on either side, but not between two of them.
VF Virama Final ◌് 2 A virama at the end of a cluster, which does not join anything to it.
WJ Word Joiner U+2060 2 Invisible, and forbids a break. The inverse of the zero width space.
LF Line Feed U+000A 1 Always breaks.
CR Carriage Return U+000D 1 Always breaks, and pairs with a line feed as one break rather than two.
SP Space U+0020 1 The break opportunity itself, and the only one most software knows about.
HY Hyphen - 1 The ASCII hyphen-minus, which is a hyphen, a minus sign and a dash depending on context — so the engine has to guess.
SY Symbols Allowing Break After / 1 The solidus. A break may follow it, which is why a long URL can wrap after a slash.
NL Next Line U+0085 1 Always breaks. An EBCDIC inheritance that survives in Unicode.
ZW Zero Width Space U+200B 1 An invisible break opportunity. Nothing is drawn, and the line may end there.
ZWJ Zero Width Joiner U+200D 1 Invisible. Binds what is either side of it into one unit — how multi-person and profession emoji are built.
CB Contingent Break U+FFFC 1 The character stands in for an embedded object, and the object decides. An inline image, in other words.

Forty-nine classes, and one of them is the one every design system implements. “Breaks at spaces” covers 12.9% of assigned characters. The rest of the table is what a text layout engine has to do after the easy case runs out — and what a component library that measures a string by counting spaces silently gets wrong.

Source. Unicode Character Database, LineBreak.txt (UAX #14) · Unicode Licence · retrieved 2026-07-31. This collection is reproduced.

The documents. UAX #14 Line Breaking · Unicode Character Database