Privacy
Text you paste into Token Counter never leaves your device. Not to us, not to a model provider, not to anyone. There is no server route in this application that could receive it.
How the counting works
Every tokenizer runs inside a Web Worker in your browser. The counting itself involves no network activity at all. Close your network connection after the page has loaded and the tool keeps working for every model whose tokenizer is already in memory or cached.
The one network request
Some models need a tokenizer file that is too large to bundle with the page. When you select one of those models for the first time, the file is downloaded from the Hugging Face Hub. Its size is shown before the download begins, and it is stored in your browser's Cache API so the next visit costs nothing.
That request sends only what any browser sends when fetching a public file. Your pasted text is not part of it and is not involved in any way. The files come from these repositories:
- huggingface.co/onnx-community/gemma-3-1b-it-ONNX
- huggingface.co/Xenova/Meta-Llama-3.1-Tokenizer
- huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct
- huggingface.co/Xenova/mistral-tokenizer-v3
- huggingface.co/Xenova/Mistral-Nemo-Instruct-Tokenizer
- huggingface.co/onnx-community/Qwen3-0.6B-ONNX
- huggingface.co/deepseek-ai/DeepSeek-V3
OpenAI encodings are bundled with the page and need no download at all.
What is stored on your device
Two things, both local, both clearable by clearing site data: the downloaded tokenizer files in the Cache API, and your light or dark theme preference in local storage. Your text is not among them. It is held in memory while the tab is open and is gone when you close it.
Analytics and cookies
There are none. No analytics script, no advertising, no tracking cookies, no third-party embeds. The fonts are self-hosted at build time, so viewing this page does not contact a font CDN either.
A tool whose entire premise is that nothing leaves your device would not be worth much if it shipped a script that watched you use it.
Anthropic and the estimator
Claude counts are produced by an estimator running locally. This application does not call Anthropic's count_tokens endpoint, does not hold an API key, and has no way to send your text to Anthropic. That is precisely why Claude is an estimate here rather than an exact count.