Free · runs in your browser
(0.74)characters per token: Tamil on cl100k_base
A study of 200 samples · 4 tokenizers · 50 real requests
(4.68)characters per token: English on o200k_base
5.35×

How far “four characters per token” undercounts Tamil.

Estimate 627 tokens · real 3,352 on cl100k_base (GPT-4, GPT-3.5) · 15 NTREX-128 sentences, 2,478 characters

(+71)hidden input tokens per request: gpt-oss-20b on Groq, measured
(100%)of the estimate gap explained on 25 held-out requests

New to AI? Start here →

02 · The calculator

Estimate it. Then print the truth.

The estimate is labelled as one. The receipt counts with real tokenizers, adds the hidden per-request overhead we measured, and prices it with a dated rate card.

Try a corpus sample
Model
Characters
2,478
Estimate · ÷4
627
Est. cost / 1k req
$0.047025
More options: system prompt, output, ratio, rates

System prompt, output tokens and ratio apply to your own text, not to corpus samples.

Checked on 27 Oct 2026 from console.groq.com. Prices may have changed since.

Nothing leaves your browser.
Overrun · TP-01
OVERRUN
token receipt
Tamilstudy · 15 samples
characters2,478
ESTIMATE (chars ÷ 4)627
an estimate, not a count
REAL COUNT · tokens · real÷est
o200k_base ← model884×1.41
cl100k_base3,352×5.35
Llama 3.13,352×5.35
Gemma 3688×1.10
hidden overhead+71
gpt-oss-20b, median of 12 measured requests, no system prompt
BILLED INPUT (projected)955
rate, input / 1M$0.075
cost · estimate$0.000047025
cost · projected$0.000071625
per 1,000 requests$0.047025 → $0.071625
groq rate card for openai/gpt-oss-20b, dated 27 Oct 2026 · console.groq.com
gpt-oss-20b vs estimateunder by 1.52×
UNDER BY 5.35×
worst of 4 tokenizers · cl100k_base
Rate card · groq · dated 27 Oct 2026openai/gpt-oss-20b · $0.075 in · $0.30 out / 1M tokensconsole.groq.com/docs/model/openai/gpt-oss-20b
Rate card · gemini · dated 27 Oct 2026gemini-3.1-flash-lite · $0.25 in · $1.50 out / 1M tokensai.google.dev/gemini-api/docs/pricing
NoteGemini's tokenizer isn't public; Gemma 3, its closest open relative, stands in for the count. Rate cards are dated fixtures, not current prices.
03 · How it works

Five steps, before and after you send.

  1. 01
    Estimate

    Characters ÷ 4, instantly, and always shown as an estimate.

  2. 02
    Count

    Real tokenizers run locally: o200k, cl100k, Llama 3.1, Gemma 3.

  3. 03
    Validate

    After the call, read the provider’s reported usage and explain the gap.

  4. 04
    Price

    Integer nano-dollars and a rate card with its date and source on show.

  5. 05
    Admit

    Replay against a budget ledger. Requests that would overrun it are blocked.

04 · Findings

Characters per token, by what you write.

All four tokenizers →
o200k_basecl100k_base┆ the 4.0 rule
Text012345 chars/tokeno200k_base · cl100k_base
English
4.68 · 4.62
Spanish
4.42 · 3.73
French
4.16 · 3.54
German
4.27 · 3.58
Russian
3.52 · 2.05
Arabic
3.23 · 1.45
Hindi
3.06 · 1.03
Tamil
2.80 · 0.74
Chinese
1.25 · 0.83
Japanese
1.25 · 0.93
Code
4.05 · 4.07
Markdown
4.60 · 4.58
JSON
3.10 · 3.11
Emoji
2.36 · 2.02

Corpus built 26 Oct 2026 · 200 samples · NTREX-128 (CC BY-SA 4.0), Rust and Python sample code and technical documentation (MIT), synthetic samples (MIT). Counts exclude special tokens. Sources & licences.