Why character counters disagree
A character limit is incomplete without a counting rule. A family emoji looks like one symbol but contains multiple code points and UTF-16 units. The examples distinguish visible grapheme clusters, JavaScript string length and UTF-8 bytes.
Input and result
| Intl.Segmenter | UTF-16 | UTF-8 (bytes) |
Hello world | 11 | 11 | 11 |
é (U+00E9) | 1 | 1 | 2 |
é (U+0065 U+0301) | 1 | 2 | 3 |
👨👩👧👦 | 1 | 11 | 25 |
A↵B (LF) | 3 | 3 | 3 |
What the result means
Apps24 uses Intl.Segmenter for visible characters. Spaces and line breaks count; the count without spaces removes whitespace, not punctuation. The two versions of é below look alike but have different byte counts. A database byte limit or a JavaScript maxlength can therefore reject text even when the visible count is small.
What to do next
Try each example separately, including the actual line break in A↵B. Before submitting a form, check whether its limit means characters, bytes or words. Follow that destination's rule, and leave room for line endings or normalization it might apply. Do not delete accents merely to make counts agree.
Use the toolLimits and test conditions
The examples are checked by automated tests with Intl.Segmenter. Older browsers use a code-point fallback and say so; that fallback counts combined emoji differently. Word segmentation is language-aware and is not a universal editorial word-count rule.
References
Apps24 checks examples against the implementation and regression tests. Browser experiments state their conditions; they do not certify every device. Report an error with the page URL, input, expected result and browser. Never send passwords, private documents or personal data.