There are other questions about this subject, for instance this one with many excellent answers, but that amount of info may distract from the basic question, what do the different values to word-break
do. So here's an answer to that question and that question only.
If you take this snippet
body {
max-width: 15em;
box-shadow: green 0 0 8px;
word-break: normal;
}
Some short words, somewhatlongerwords and extremelylongwordsthatarereallylong for testing purposes.
With the default value of normal
, words are not broken; ordinary word wrap is used and the longest word overflows out of the box. Screenshot:

break-all
breaks all words at the end of the line, no matter if they would fit in their entirety on the next line or not.

keep-all
is meant for CJK (Chinese, Japanese and Korean) words, which ordinarily don't have spaces between them.
With pure English text, there's no difference to normal
.

(If you're interested, this MDN article features an example with Japanese text, where you can see the difference.)
And break-word
breaks up those words that don't fit in the box. This is not the same as break-all
, which breaks all words regardless.

Now this last one is non-standard, and it doesn't work in all browsers, so if you want this, you should also write overflow-wrap: break-word;
in your stylesheet, and for compatibility with older browsers word-wrap: break-word;
as well.
There is more to it, but I'll refer you to this question for the reasoning, the history, etc.