LLM Token Counter — Browser-Local OpenAI & Claude

Count tokens for GPT-4o, Claude, and Gemini in your browser. Exact tiktoken for OpenAI models; honest estimates for others — zero provider API calls. Also useful: word counter, JSON formatter, and character counter.

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 — use the format toggle to force messages mode and surface parse errors. Tip: 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, validate message JSON with the JSON formatter, or check character totals via the character counter.

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. Click 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.

AI & LLM

Token counting, pricing estimates, and context-window fit — 100% browser-local.

Explore other tool categories

Minify

Shrink code and assets for production — minify JavaScript, CSS, HTML, JSON and XML before gzip or CDN deploy.

Beautify

Make code readable with consistent indentation — beautify JavaScript, CSS, TypeScript, SCSS, LESS, Markdown, GraphQL, SQL, YAML and more in your browser.

Unminify

Expand minified or compressed code — unminify JavaScript, CSS, TypeScript, SCSS, LESS, SQL, YAML and other formats when debugging or reviewing.

Conversion

Transform data between JSON, YAML, XML and CSV locally — no server uploads.

CSS preprocessors

Compile SCSS or LESS to standard CSS in the browser — pair with beautify or minify for a full stylesheet workflow.

JSON Tools

Validate, format, diff and explore JSON payloads — complementary to minifiers and converters.

SVG Tools

Preview, optimize with SVGO, export Data URI, resize, beautify, convert to JSX and validate SVG — all in your browser.

DevOps & Infra

Terraform HCL format/validate/minify, Dockerfile format & lint, Docker Compose and .env validation.

CI/CD

GitHub Actions and GitLab CI — format YAML and check workflow/job structure in your browser.

Logs & observability

Line-oriented JSON/NDJSON and Nginx/Apache access logs — format, filter, validate, and CSV/TSV.

Kubernetes

Multi-doc manifests, structural validate, Ingress/Deployment starters, and Helm values formatting.

Networking / IP

CIDR, subnets, and IPv4/IPv6 helpers — in your browser.

Security & tokens

JWKS, X.509 certificates, and secrets scan — browser-local.

API & schemas

OpenAPI tools to format, validate, and lint your specs.

Encoding

Encode or decode Base64, URL components and HTML entities — client-side only.

Developer utilities

Timestamps, UUID, ULID, Nanoid, cron, passwords, regex, slugify, number bases, case, text diff, and chmod — all client-side.

Text & Markdown

Count words, build Markdown TOCs, and clean line lists — all in your browser.

Serialization

Serialize and deserialize PHP data structures beside JSON workflows.