English has spaces between words, so line breaks naturally fall at word boundaries. Korean syllables within a word (어절 — a space-delimited unit) run together with no internal spaces, and the browser default (`word-break: normal`) breaks anywhere between them. In a narrow container, a single particle like "을" can get pushed to its own line, breaking the phrase "디자인 시스템을" into "디자인 시스템\n을" and disrupting the reading rhythm.
`word-break: keep-all` restricts line breaks in CJK text to points where a space exists — word boundaries — carrying an entire 어절 to the next line the way English carries whole words. Lines may end up somewhat longer or shorter as a result, but a lone trailing particle like "을" or "는" never gets stranded.
In the extreme case where a container is too narrow to fit even one 어절, `keep-all` alone can cause overflow, so pairing it with `overflow-wrap: break-word` is the safer combination. In documents mixing English and Korean — technical blogs, code documentation — `keep-all` also has the side benefit of not breaking English words mid-word.
When to use
A reasonable default for most Korean body text. For very narrow spaces — badges, tags — where a single 어절 might not fit, pair it with `overflow-wrap: break-word`.