What is a token, and why count one
A token is a sub-word unit of text. Models split writing with Byte Pair Encoding (BPE), an algorithm that merges frequent byte pairs into reusable pieces, so "encoding" can become "encod" and "ing". The split is reversible and lossless. Each token averages about four bytes of English, which is where the four-characters shortcut comes from.
Context windows are the first reason to count. Every model caps how much text it holds at once, and in 2026 the ceilings are large: Claude's Opus class and Sonnet 4.6 reach 1M tokens, GPT-5.5 and 5.4 take 1M input with 128K output, Gemini 3.1 Pro handles 1,048,576 input tokens, and Llama 4 Scout advertises 10M. A million tokens is roughly 750,000 words, or about 3,000 pages.
Advertised ceilings are not effective ceilings. Independent 2026 testing found recall slipping around 600K to 700K tokens, with GPT-5.5 near 74% and Claude near 76% accuracy at the 1M mark. A counter tells you whether the prompt fits. Whether it fits comfortably is your call.
Cost is the second reason. APIs bill per token on both input and output, so a 500-word reply costs about 670 output tokens on top of whatever you sent. A long system prompt or a pasted-in codebase runs the bill up quietly, and a count before you send is the cheapest check available.
Why the same text gets different counts
Klipto shows the same four counts under the paste preview on every copy, offline, using the same characters-divided-by-four estimate. It is not a BPE tokenizer either, and it does not pretend to be one. What it saves you is the round trip: the count is already on screen next to the text you are about to paste.
The counter shares the preview with the transforms, so a prompt can be cleaned and counted in one pass. Trimming invisible characters and duplicate blank lines out of pasted AI output usually moves the number more than rewording does.
Each model family ships its own tokenizer and vocabulary. GPT-3.5-Turbo and GPT-4 use cl100k_base, a roughly 100k-token vocabulary. GPT-4o and the o-series use o200k_base at about 200k, which packs English into fewer tokens and gains most on multilingual and technical text. Anthropic does not publish Claude's tokenizer at all, and there is no installable library for it, so the only exact source is the API's count_tokens endpoint.
The gaps are wide enough to matter. One Spanish passage cost 30% more tokens under o200k and 56% more under cl100k than its English baseline. A JavaScript snippet came to 140 tokens on cl100k and 149 on o200k, because the newer encoding is slightly worse for code. English prose runs about 0.75 words per token, code drops toward 0.5, and numbers or non-Latin scripts get denser still.
Read the number above with that in mind. Four characters per token is close for English prose and loose for code, JSON or Chinese. When money or a hard context limit depends on the exact figure, call the provider's own tokenizer or endpoint. For "will this fit" and "roughly what will this cost", the estimate answers in a second.
Using it
1. Paste or type text in the box above.
2. Read the four counts as they update. Characters and words are exact, lines counts your line breaks, tokens is the estimate.
3. Clear the box and paste the next chunk. Nothing was sent anywhere.
This free tool vs Klipto
| This free web tool | Klipto | |
|---|---|---|
| Token estimate, characters, words, lines | Yes, in a tab | Yes, in the paste preview |
| Estimation method | Characters ÷ 4 | Characters ÷ 4 |
| Appears without being asked | No, paste into the page each time | Yes, on every copy |
| Where it works | This page only | Any app you copy from |
| Needs a browser tab | Yes | No |
| Clipboard history, Stack, 20-plus transforms | No | Yes |
| Platform | Any browser | macOS 14+ |
| Price | Free | Free tier, $19.99 one-time |
Neither one replaces a real tokenizer, so the honest difference is where the number appears. On this page you go and fetch it. You can get it automatically on every paste with Klipto instead, which puts the count under the text you copied, in whatever app you are working in, without a network request.