Enter text and choose an action.
Result
Method and example
Characters use Intl.Segmenter grapheme boundaries when available. The fallback groups Unicode marks, variation selectors, skin-tone modifiers, regional-indicator flags, and zero-width-joiner sequences.
Worked example
The emoji 😀 counts as one character. A family emoji joined with zero-width joiners also counts as one in supported browsers. Empty input reports zero lines.
Behavior and limits
- Characters without spaces removes all Unicode whitespace before grapheme counting.
- Word count uses Intl.Segmenter word-like segments, with a Unicode letter/number fallback.
- LF, CRLF, and CR are normalized consistently for line counting.
- The fallback is intentionally lightweight and cannot promise perfect linguistic segmentation for every language.
Common mistakes
- Using UTF-16 string length as visible character count
- Removing only ASCII spaces
- Counting an empty field as one line
- Assuming every writing system defines words identically
Large-text handling
Character counting, case conversion, and reversal accept up to 5,000,000 UTF-16 code units and run only after an explicit action. Morse translation uses a lower 100,000-character text limit because encoded output can expand substantially.