Character Counter

Grapheme-accurate character, word, sentence, line, byte, and LLM token counts for any text.

Input
What it does

Counts characters, words, sentences, lines, paragraphs, bytes, and LLM tokens for any pasted text. Characters are counted as grapheme clusters, the way a person actually reads them, along with raw UTF-16 code units, Unicode codepoints, and UTF-8 byte length for cases where those differ.

How to use it

Paste or type text into the input. Every count updates immediately: characters, characters without spaces, code units, codepoints, words, sentences, lines, paragraphs, UTF-8 bytes, and GPT tokens. Switch the token encoding option to match the model you are budgeting for.

Why this one

Most character counters only report JavaScript string length, which splits emoji and accented text into the wrong number of characters and cannot tell you the token count a model will actually see. This one counts grapheme clusters correctly and runs the real GPT tokenizer locally, with no ads and no length cap, and your files and inputs never leave your device.

FAQ
Why does an emoji count as one character here but more elsewhere?
This tool counts grapheme clusters (what a person sees as one character) using Intl.Segmenter, so a family emoji or a flag built from multiple codepoints counts as one character. Tools that use plain string length count each underlying UTF-16 code unit instead, which can report five or more for a single emoji.
What is a token, and why is the count different from the word count?
A token is the unit an LLM actually processes, roughly three to four characters of English text on average, and it rarely lines up with word boundaries. The token count here uses the real GPT tokenizer (o200k_base or cl100k_base, matching the model you pick) so it matches what the model bills and limits, not an approximation.
Does my text get uploaded anywhere?
No. Every count, including the token count, is computed locally in your browser, and your files and inputs never leave your device.