Tokenizers by Model Intermediate

Each model family uses its own tokenizer with different vocabulary sizes, algorithms, and efficiency characteristics. Understanding these differences helps you estimate costs and choose the right model for your use case.

OpenAI Tokenizers

OpenAI has released several tokenizer versions, each improving on the last:

Tokenizer Vocab Size Models Algorithm
r50k_base 50,257 GPT-2, early GPT-3 Byte-level BPE
p50k_base 50,281 Codex, text-davinci-002/003 Byte-level BPE
cl100k_base 100,256 GPT-4, GPT-3.5-turbo, text-embedding-3 Byte-level BPE
o200k_base 200,019 GPT-4o, GPT-4o-mini Byte-level BPE
Key Improvement: The jump from cl100k_base to o200k_base doubled the vocabulary, making GPT-4o significantly more efficient - especially for non-English languages and code. The same text uses roughly 10-20% fewer tokens with o200k_base.

Anthropic (Claude) Tokenizer

Anthropic uses a custom tokenizer for Claude models. While the exact details are not fully public, key characteristics include:

  • Algorithm: Byte-level BPE variant
  • Vocabulary size: Approximately 100,000+ tokens
  • Strong multilingual support with good efficiency across languages
  • Optimized for code with common programming patterns as tokens
  • Consistent across Claude 3, 3.5, and 4 families
Python
# Counting tokens for Claude using the Anthropic SDK
from anthropic import Anthropic

client = Anthropic()
# Token counting is available via the API
# The exact tokenizer is handled server-side
response = client.messages.count_tokens(
    model="claude-sonnet-4-20250514",
    messages=[{"role": "user", "content": "Hello, how are you?"}]
)
print(f"Input tokens: {response.input_tokens}")

Google (Gemini) Tokenizer

Google's Gemini models use a SentencePiece-based tokenizer with a large vocabulary optimized for multilingual performance:

  • Algorithm: SentencePiece (Unigram + BPE hybrid)
  • Vocabulary size: 256,000 tokens (Gemini 1.5+)
  • Excellent multilingual efficiency - the largest vocabulary among major models
  • Language-agnostic preprocessing - no language-specific rules
Note: Google provides a countTokens API endpoint for Gemini models. You can also use the google-generativeai Python SDK to count tokens before sending requests.

Meta (LLaMA) Tokenizer

Meta's LLaMA family has evolved its tokenizer significantly across versions:

Model Vocab Size Algorithm Notes
LLaMA 1 32,000 SentencePiece BPE Limited multilingual support
LLaMA 2 32,000 SentencePiece BPE Same tokenizer as LLaMA 1
LLaMA 3 128,256 tiktoken (BPE) 4x larger vocab, much better multilingual

Tokenizer Comparison

Feature OpenAI (o200k) Claude Gemini LLaMA 3
Vocab Size 200,019 ~100,000+ 256,000 128,256
Algorithm Byte BPE Byte BPE variant SentencePiece BPE (tiktoken)
Avg Tokens/Word (English) ~1.1 ~1.2 ~1.1 ~1.15
Multilingual Efficiency Very Good Good Excellent Good
Code Efficiency Very Good Very Good Good Very Good
Open Source Yes (tiktoken) Partial No Yes

How to Check the Tokenizer for Any Model

Python
# For OpenAI models
import tiktoken

# Get the tokenizer for a specific model
enc = tiktoken.encoding_for_model("gpt-4o")
print(f"Encoding: {enc.name}")  # o200k_base

enc = tiktoken.encoding_for_model("gpt-4")
print(f"Encoding: {enc.name}")  # cl100k_base

# For Hugging Face models (LLaMA, Mistral, etc.)
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B")
print(f"Vocab size: {tokenizer.vocab_size}")

# Tokenize and inspect
tokens = tokenizer.tokenize("Hello, how are you?")
print(f"Tokens: {tokens}")

Ready to Go Deeper?

Live instructor-led courses from our partners. Affiliate disclosure.