Oct 9 edition/Reporting & analysis
CodingModelsInfrastructure

CodingSoftware & developer tools

Simon Willison releases ttok 1.0, making o200k_base the default tokenizer and applying it to GPT-6

Version 1.0 of the ttok command-line token counter makes OpenAI's o200k_base encoding the default, which is a breaking change. Its author applies it to GPT-6 based on one community test with matching input token counts. OpenAI's tiktoken still has no GPT-6 mappings.

THE CORE IDEAS3 TAKEAWAYS
01

ttok 1.0 replaces the old GPT-3.5/GPT-4 default (cl100k_base) with o200k_base. Because this is a breaking change, it was released as 1.0 rather than 0.5. Scripts that rely on the default will now return different counts unless they pass -m gpt-3.5-turbo or pin the version. [2] [6] [7]

02

The claim that GPT-6 uses the GPT-5 tokenizer comes from one community experiment. In a single run, seven GPT-5.x and GPT-6 models returned an identical 44,794 input tokens across 31 fixture files, counted through the providers' own counting endpoints. Token IDs were never compared, and the experiment itself says the result doesn't prove the tokenizers are identical. [1] [3]

03

tiktoken maps model names to encodings by prefix, and it has no gpt-6 entry, so a lookup by a GPT-6 model name won't resolve. An issue reporting the gap had no maintainer reply in the thread, so tools built on tiktoken need their own fallbacks. [4] [9]

WHY IT MATTERS

seven models gave identical input counts on 31 files. Implication: ttok's GPT-6 cost and context estimates rest on inference, not OpenAI confirmation.

Read the full assessment

Billing-critical work should check counts against provider counting endpoints, and pipelines should pin versions or pass -m.

Executive brief

OpenAI has not said which tokenizer GPT-6 uses, and its official tiktoken library still has no entry for GPT-6. On 9 October 2026 Simon Willison shipped ttok 1.0 anyway, making o200k_base (the GPT-5 tokenizer) the default and saying it covers GPT-6 too (Willison). His evidence is one community experiment. In it, seven GPT-5.x and GPT-6 models returned identical input token counts on 31 test files (Liu commit). The experiment's own write-up says this does not prove the tokenizers are the same. Teams estimating GPT-6 costs or context limits are relying on that inference.

What changed and event timeline

  1. Tiktoken issue flags missing GPT-6 support

    A user opened an issue saying tiktoken 0.14.0 doesn't support GPT-6, about 20 days after gpt-6-astra shipped. The thread shows no reply from OpenAI maintainers ().

  2. Community token-count comparison

    William Liu counted tokens for 14 models using the providers' own counting endpoints. All seven GPT models returned 44,794 tokens on 31 fixtures, with no provider errors ().

  3. Ttok 0.4 ships

    This was the first release in several years. It fixed a Click warning, updated CI and added --list-models ().

  4. Default-tokenizer issue filed and closed

    Willison opened an issue noting the default was still the GPT-4 tokenizer. Because switching it was a breaking change, he called for 1.0 rather than 0.5 ().

  5. Ttok 1.0 released

    The default is now o200k_base, and --list-models shows how prefixes like gpt-5* resolve (;).

Capabilities and access

  • Tool: ttok 1.0, a Python command-line tool built on OpenAI's tiktoken. Install with pip, uv, Homebrew or uvx (README; PyPI).
  • Functions: count tokens, truncate to N tokens (-t), and print token IDs or convert them back to text (--encode / --decode) (README).
  • Default: o200k_base. To get the old GPT-3.5/GPT-4 tokenizer (cl100k_base), pass -m gpt-3.5-turbo (README).
Read the full section
  • Tool: ttok 1.0, a Python command-line tool built on OpenAI's tiktoken. Install with pip, uv, Homebrew or uvx (README; PyPI).
  • Functions: count tokens, truncate to N tokens (-t), and print token IDs or convert them back to text (--encode / --decode) (README).
  • Default: o200k_base. To get the old GPT-3.5/GPT-4 tokenizer (cl100k_base), pass -m gpt-3.5-turbo (README).
  • Models covered by the evidence: GPT-5.5, GPT-5.6 Sol/Terra/Luna and GPT-6 Astra/Sol/Luna (Liu commit).

Technical analysis for researchers and developers

  • How tiktoken picks a tokenizer: it matches model names against prefixes. There is no gpt-6 entry (tiktoken model.py).
  • How Liu measured: he called OpenAI's and Anthropic's official count endpoints directly rather than tokenizing locally.
  • What this means in practice: matching counts are consistent with a shared tokenizer, but token IDs were never compared.
Read the full section
  • How tiktoken picks a tokenizer: it matches model names against prefixes. gpt-5 maps to o200k_base, gpt-4o- to o200k_base and gpt-4- to cl100k_base. There is no gpt-6 entry (tiktoken model.py). A lookup by a GPT-6 model name therefore won't resolve, so callers need a fallback.
  • How Liu measured: he called OpenAI's and Anthropic's official count endpoints directly rather than tokenizing locally. The 31 fixture files had the same hashes across runs, and ten models measured earlier reproduced their previous totals exactly. The study covers input tokens only, with no check against generation or billed usage (Liu commit).
  • What this means in practice: matching counts are consistent with a shared tokenizer, but token IDs were never compared.

Claims and evidence

  • "GPT-6 uses the GPT-5 tokenizer." This is Willison's inference (post). OpenAI has not confirmed it (tiktoken #608). No second independent replication was found.
  • "Seven models, 44,794 tokens, all 31 fixtures match." This comes from a single run on 2026-09-26 (Liu commit).
  • "1.0 changes the default to o200k_base." The release notes and the closing commit for issue #25 document this (release; ttok #25).
Read the full section
  • "GPT-6 uses the GPT-5 tokenizer." This is Willison's inference (post). It rests on one community experiment, and that experiment explicitly says it does not establish that the tokenizers are identical (Liu commit). OpenAI has not confirmed it (tiktoken #608). No second independent replication was found.
  • "Seven models, 44,794 tokens, all 31 fixtures match." This comes from a single run on 2026-09-26 (Liu commit).
  • "1.0 changes the default to o200k_base." The release notes and the closing commit for issue #25 document this (release; ttok #25).

Context and prior work

ttok dates from Willison's 2023 set of command-line tools for working with LLMs (2023 post). He also wrote an earlier explainer on how GPT tokenizers work (2023 explainer). OpenAI's cookbook recommends tiktoken for counting tokens (OpenAI cookbook). o200k_base already served the GPT-4o and GPT-5 lines (tiktoken model.py).

Limitations, safety and contested findings

  • Liu's write-up warns that the totals don't imply a universal multiplier for other content (Liu commit).
  • The person who opened the tiktoken issue pushed back: functional equivalence doesn't fix delayed official updates, which they called a recurring pattern (tiktoken #608).
  • Willison acknowledged that 0.4 shipped what amounted to a breaking change (ttok #25). Any scripts that rely on the default will now return different counts.
Read the full section
  • Liu's write-up warns that the totals don't imply a universal multiplier for other content (Liu commit).
  • The person who opened the tiktoken issue pushed back: functional equivalence doesn't fix delayed official updates, which they called a recurring pattern (tiktoken #608).
  • Willison acknowledged that 0.4 shipped what amounted to a breaking change (ttok #25). Any scripts that rely on the default will now return different counts.

Business and practitioner implications

  • Budget and context limits: counts for GPT-6 inputs from 1.0 rest on inferred tokenizer equivalence, not vendor confirmation (tiktoken #608).
  • Pipelines: pin ttok versions, or pass -m explicitly, so counts don't change silently between releases (README).
  • Dependency risk: tiktoken still lacked GPT-6 mappings 20+ days after release, so tools built on it need their own fallbacks (tiktoken model.py).
Read the full section
  • Budget and context limits: counts for GPT-6 inputs from 1.0 rest on inferred tokenizer equivalence, not vendor confirmation (tiktoken #608). For billing-critical work, check counts against the provider's counting endpoint, as Liu's method does (Liu commit).
  • Pipelines: pin ttok versions, or pass -m explicitly, so counts don't change silently between releases (README).
  • Dependency risk: tiktoken still lacked GPT-6 mappings 20+ days after release, so tools built on it need their own fallbacks (tiktoken model.py).
FOLLOW THE EVIDENCE

The source trail.

Sources (12)
A LITTLE LESS NOISE. A LOT MORE CONTEXT.

Stay curious.
Follow the evidence.

Independent perspectives, the original sources, and room for the questions that don't have easy answers.

How we build the brief
Connect with us

Find us where you already read.