Summarized test results:
CSS3 Text, word-break

To run the test, or to see detailed, per character, results, click on the link in the left-most column. To see detailed results click on a row and look just above the table.

Key: pass fail partially successful

Updated

These tests check whether user agents correctly apply word-break to various writing systems per the CSS-text-3 spec. Since the CSS spec relies on the browser to implement fine details on a language-by-language basis, the tests listed here check only unarguable expectations of behaviour, in very simplistic arrangements. They focus on the interaction between letters and spaces, and do not tackle the impact of punctuation marks.

word-break: normal

For word-break:normal the CSS spec mostly just says that the 'customary rules' should be applied, without further detail. More detailed rules may be added to the spec as the information becomes available (initiatives such as the layout requirements and digital publishing work may provide such details, amongst others). For the time being, these tests check browser behavior for just the obvious characteristics pertaining to several major writing systems. As more information becomes available, additional tests may be added.

Some specific behaviors for CJK script, in particular, are covered by line break tests elsewhere. See the word-break: break-all section for tests related to typographic units that are only exposed when partial words are wrapped, such as indic conjuncts.

Scripts that wrap space-separated words

These scripts separate words with spaces and in simple scenarios wrap whole words to the next line when part of a word exceeds the length of a line.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
normal, latin
word-break-normal-en-000.html
Simple Latin text will break on spaces under customary rules for word-break: normal. passpasspasspass
normal, hindi
word-break-normal-hi-000.html
Simple Devanagari text will break on spaces under customary rules for word-break: normal. passpasspasspass
normal, arabic
word-break-normal-ar-000.html
Simple Arabic text will break on spaces under customary rules for word-break: normal. passpasspasspass

Scripts that wrap characters

These scripts don't separate words in text and in simple scenarios wrap characters one-by-one to the next line when part of a word exceeds the length of a line. Tests elsewhere examine less basic behaviour for Chinese and Japanese.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
normal, japanese
word-break-normal-ja-000.html
Simple Japanese kanji text will wrap single characters under customary rules for word-break: normal. passpasspasspass
normal, japanese hiragana
word-break-normal-ja-001.html
Simple Japanese hiragana text will wrap single characters under customary rules for word-break: normal. passpasspasspass
normal, japanese katakana
word-break-normal-ja-002.html
Simple Japanese katakana text will wrap single characters under customary rules for word-break: normal. passpasspasspass
normal, japanese
word-break-normal-ja-004.html
Japanese text where a line ends with ideographic full stop will wrap two characters under customary rules for word-break: normal. passpasspasspass
normal, chinese
word-break-normal-zh-000.html
Simple Chinese text will wrap single characters under customary rules for word-break: normal. passpasspasspass

Korean

This test is exploratory. Simple Korean text can wrap characters or words when part of a word exceeds the length of a line, according to preference. The more common approach is to wrap between any two consecutive Hangul/Hanja, so this test checks whether this is what a browser does.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
normal, korean
word-break-normal-ko-000.html
[exploratory] Simple Korean text can wrap characters or words. The more common approach is to wrap between any two consecutive Hangul/Hanja under customary rules for word-break: normal. passpassfailpass

Scripts that wrap words without spaces

These scripts don't separate words in text but nevertheless in simple scenarios wrap whole words to the next line when part of a word exceeds the length of a line.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
normal, khmer
word-break-normal-km-000.html
Simple Khmer text will break on invisible word boundaries under customary rules for word-break: normal. passpasspassfail
normal, lao
word-break-normal-lo-000.html
Simple Lao text will break on invisible word boundaries under customary rules for word-break: normal. passpasspassfail
normal, myanmar
word-break-normal-my-000.html
Simple Myanmar text will break on invisible word boundaries under customary rules for word-break: normal. failfailfailfail
normal, tai nüa
word-break-normal-tdd-000.html
Simple Tai Nüa text will break on invisible word boundaries under customary rules for word-break: normal. failfailfailfail
normal, thai
word-break-normal-th-000.html
Simple Thai text will break on invisible word boundaries under customary rules for word-break: normal. passpasspasspass

Scripts that wrap by syllable

These scripts don't separate words in text but typically wrap an orthographic syllable to the next line when part of a word exceeds the length of a line.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
normal, tibetan
word-break-normal-bo-000.html
Simple Tibetan text will break at tsek punctuation under customary rules for word-break: normal. passpasspasspass
normal, javanese
word-break-normal-jv-000.html
Simple Javanese text will break on orthographic syllable boundaries under customary rules for word-break: normal. failfailfailfail
normal, javanese
word-break-normal-jv-001.html
Simple Javanese text will break on orthographic syllable boundaries under customary rules for word-break: normal. failfailfailfail

word-break: break-all

When it exceeds the line length, word-break: break-all splits text between typographic letter units, regardless of word boundaries.

Simple cases

These tests deal with text where a typographic letter unit is equivalent to a single code point. Note that the expected behaviour for Korean is unambiguous here for text encoded using syllabic code points.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
break-all, japanese
word-break-break-all-000.html
word-break: break-all creates break opportunities between kanji characters in Japanese text. passpasspasspass
break-all, latin
word-break-break-all-001.html
word-break: break-all creates break opportunities between ordinary letters in Latin text. passpasspasspass
break-all, korean
word-break-break-all-002.html
word-break: break-all creates break opportunities between syllables in Korean text. passpasspasspass
break-all, thai
word-break-break-all-003.html
word-break: break-all creates break opportunities between ordinary letters in Thai text, including letters that are part of a complex vowel. passpasspassfail
break-all, hebrew
word-break-break-all-004.html
word-break: break-all creates break opportunities between ordinary letters in Hebrew text. passpasspasspass

Grapheme clusters

Where the line length is exceeded by a code point that is part of a grapheme cluster, break-all should wrap the whole grapheme cluster to the next line, since typographic letter units include grapheme clusters.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
break-all, subjoined tibetan
word-break-break-all-005.html
word-break: break-all doesn't create break opportunities inside simple Tibetan stacks. passpasspasspass
break-all, spacing vowel sign
word-break-break-all-006.html
word-break: break-all doesn't create break opportunities between a consonant and following spacing vowel sign. passfailfailpass
break-all, combining diacritic
word-break-break-all-007.html
word-break: break-all doesn't create break opportunities between a consonant and combining diacritic. passpasspassfail

Syllabic clusters

This test is exploratory. In some cases, a user-perceived character encompasses more than one grapheme cluster. Conjunct clusters in northern Indic scripts are a prime example.

This test is exploratory because indic conjuncts containing more than one consonant are not covered by the extended grapheme cluster definition, and therefore constitute more than one typographic unit, per the definition in the CSS spec. Nevertheless, people using relevant indic scripts expect the user agent to keep the orthographic syllable as a single unit. The test checks whether such a sequence is wrapped to the next line as a unit.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
break-all, syllabic cluster
word-break-break-all-008.html
[Exploratory test] word-break: break-all doesn't create break opportunities between the components of an Indic conjunct cluster. failfailfailfail

Cursive joining

The CSS spec says that when shaping scripts such as Arabic are allowed to break within words due to break-all, the characters must still be shaped as if the word were not broken.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
break-all, arabic
word-break-break-all-ar-001.html
When shaping scripts such as Arabic are allowed to break within words due to break-all, the characters must still be shaped as if the word were not broken. passfailfailfail

word-break: keep-all

When it exceeds the line length, word-break: keep-all splits text at 'word' boundaries, regardless of normal behaviour.

Basic tests

The basic use of keep-all is to prevent break opportunities within 'words' – which, when dealing with sequences of ordinary letters surrounded by spaces, means that breaks only occur after the spaces. This is particularly relevant for CJK scripts.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
keep-all, latin
word-break-keep-all-000.html
word-break: keep-all prevents break opportunities within 'words'. passpasspasspass
keep-all, japanese
word-break-keep-all-001.html
word-break: keep-all prevents break opportunities between sequences of Japanese characters, and treats intervening spaces as break opportunities. passpasspasspass
keep-all, japanese
word-break-keep-all-ja-001.html
word-break: keep-all prevents break opportunities between sequences of Japanese characters. A single word longer than the line will not be broken. passpasspasspass
keep-all, korean
word-break-keep-all-ko-001.html
word-break: keep-all causes Korean text to break between space-separated words. passpasspasspass

Dictionary-based breaking

keep-all prevents break opportunities within sequences of letters, except where opportunities exist due to dictionary-based breaking (such as in Khmer and Thai). These tests check whether an unbroken sequence of text in such languages are broken at word boundaries by the browser when keep-all is set.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
keep-all, khmer
word-break-keep-all-km-001.html
word-break: keep-all allows break opportunities after words in Khmer that are detected by dictionary-based algorithms. failpassfailfail
keep-all, thai
word-break-keep-all-th-001.html
word-break: keep-all allows break opportunities after words in Thai that are detected by dictionary-based algorithms. failpassfailpass