LLM Token Counter — Browser-Local OpenAI & Claude

Count tokens for GPT-4o, Claude, and Gemini in your browser. Exact tiktoken for OpenAI models and clear estimates for others, with no provider API calls. See also: word counter and JSON formatter.

…
Privacy-first token counting
Your prompts are processed entirely in the browser. FastMinify never sends text to OpenAI, Anthropic, Google, or any other provider.

How counting works

Exact (OpenAI-family models): we lazy-load js-tiktoken with the model encoding (o200k_base or cl100k_base) and count in your browser. Estimate (Claude, Gemini): a characters-per-token heuristic (±5–15% typical variance). Results are labeled Estimate so you are not misled. In API messages mode, valid [{"role","content"}] arrays add ChatML per-message overhead (+3 tokens per message, +1 per name, +3 reply priming) following the OpenAI cookbook.

API messages mode

Paste a JSON array of objects with role (system, user, assistant, or tool) and string content. Optional name is supported. Invalid shapes fall back to raw text in Auto mode, so use the format toggle to force messages mode and surface parse errors. Format JSON first with our JSON formatter.

Privacy

All tokenization runs locally. Unlike many online counters that upload your prompt to a provider tokenizer page, FastMinify keeps text on your device. No provider token-count APIs are called.

Limitations

Estimate tier is not billing-grade. Pricing on this cluster is maintained manually; see the verified date on the pricing calculator. Image, audio, and tool-call token rules are out of scope for v1.

When to use OpenAI's official tokenizer

For OpenAI-only byte-exact disputes, compare against platform.openai.com/tokenizer. Our Exact tier targets the same encodings via js-tiktoken.

Related text & JSON tools

Pair token counts with our word counter or validate message JSON with the JSON formatter.

Options that change the count

Model
Switches tokenizer (exact OpenAI encodings vs estimate heuristics) and the context window shown in stats.
Input format
Auto-detect treats a valid [{role, content}] array as Chat API messages with per-message overhead. Raw text counts the editor string literally.
Encoding override
For OpenAI models only. Force o200k_base or cl100k_base when testing legacy prompts against older GPT encodings.
Compare all models
Lists every registry model with a live token count and Exact/Estimate badge for the same input. Select a row to switch back to single-model view.

FAQ

Token counting, privacy, and accuracy

Is my prompt sent to OpenAI or Anthropic?

No. All counting runs in your browser. FastMinify does not call provider token APIs or log your text.

Why is Claude labeled Estimate?

Anthropic does not publish a browser-side tokenizer. We use a conservative characters-per-token heuristic and label results Estimate so you are not misled.

What is message overhead?

Chat API messages add fixed template tokens per message (role, content, separators) plus reply priming. Exact OpenAI counts follow the public tiktoken cookbook; estimates use a flat +3 per message approximation.

What is the maximum input size?

About 512 KiB of UTF-8 text. Larger inputs show an error card and are not tokenized.

How often is pricing updated?

Model prices are reviewed manually at least monthly. The verified date appears on the pricing calculator tool only.

Why is there no token breakdown for Claude?

Token pills use js-tiktoken BPE decoding, which is exact for OpenAI encodings only. Estimate-tier models show an inline notice instead of fabricated pills.

Does compare-all include pricing?

No. Compare view shows token counts and accuracy tier only. Use the LLM pricing calculator for cost estimates.

Count tokens, estimate API costs, check context-window fit, convert JSON to TOON and analyze prompts, all in your browser.