Character / Byte Counter
Count characters, bytes, words, and lines of text live in the browser, including emoji-aware counts.
This tool handles input and primary processing in your browser and is designed not to send the input to QuickKit’s server.
Live counts
| Characters (UTF-16 units) | — |
|---|---|
| Characters without whitespace | — |
| Graphemes (visible characters) | — |
| Unicode code points | — |
| Bytes (UTF-8) | — |
| Bytes (UTF-16) | — |
| Words (whitespace-separated) | — |
| Words (Unicode segmentation) | — |
| Lines | — |
| Non-empty lines | — |
| Whitespace characters | — |
How it works
Characters counts UTF-16 code units, the value JavaScript's string length returns. Graphemes counts what a reader sees as one character, so a family emoji counts as one. UTF-8 bytes is the size when saved or sent as UTF-8. Two word counts are shown because they answer different questions: the whitespace-separated count splits on spaces only, so Japanese, Chinese, Thai, and other text written without spaces reports as a single word; the Unicode word count uses the browser's Intl.Segmenter (UAX #29 word boundaries) and does segment those scripts. Counting updates as you type.