Character, word, and subword tokenization each have a dominant failure mode. Match them.
Drag each answer to line up with its matching prompt
Character level tokenization
Latin script bias: non-Latin scripts often need many bytes per character, inflating token counts and costs
Word level tokenization
Sequence length explosion that blows up attention cost and shrinks effective context
Subword tokenization (BPE, WordPiece, Unigram LM)
No native failure mode at this resolution; this is the Pareto compromise modern LLMs use
Byte level subword tokenization (byte level BPE)
Closed vocabulary; any unseen word becomes [UNK] and information is lost
Character-level explodes sequence length. Word-level hits closed vocabulary, so unseen words become [UNK]. Subword is the Pareto winner modern LLMs use; byte-level still has a Latin-script bias.
Imagine three ways to pack a backpack for a trip. The first packer (character) puts each item in its own tiny zip-loc bag. Nothing is missing, but the backpack is now full of bags, and it takes forever to find anything. The second packer (word) only packs items from a fixed packing list. The list does not include the new pair of shoes you just bought, so the shoes get left at home. The third packer (subword) packs in medium chunks: a 'shoe' bag, a 'lace' bag, a 'sole' bag. Anything new can be assembled out of those chunks, and the backpack stays a reasonable size. Modern LLMs use packer three. Packer one is too slow and bulky; packer two cannot handle anything new. Even packer three has a quirk: when working with non-English scripts, each character can take several bytes, so the chunks for those languages end up costing more.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Three classic tokenization families (character-level, word-level, subword) each have a dominant failure mode that explains why the field converged on the third. By 2026 the family-level question is essentially settled in favor of byte-level subword tokenization, but understanding why each older family fell out of favor is the right way to internalize what tokenizer design is actually optimizing for.
This deep dive maps each family to its failure mode, names the historical pivot points, and explains why even modern subword tokenization still has measurable weaknesses worth knowing about.
Character-level: sequence length explosion
Character-level tokenization gives every character its own token. The vocabulary is tiny: a few hundred entries for the Latin alphabet plus punctuation and digits, or 256 entries if you go byte-level. There is never an unknown input under byte-level character tokenization (and even pure character-level handles unknown characters more gracefully than word-level handles unknown words).
The failure mode is sequence length. A paragraph that fits in 200 subword tokens under o200k_base might require 1200 character tokens. Attention cost is O(n^2) in sequence length per layer, so 4x tokens means 16x attention compute per layer per forward pass. KV cache memory scales linearly with sequence length, so memory is 4x. For a fixed compute and memory budget, the effective context window shrinks by the same multiplier.
This is the fundamental reason character-level lost. Attention's quadratic cost makes long sequences expensive, and character-level tokenization is the choice most aggressively at odds with attention's scaling behavior. Recent work like ByT5 (byte-level T5) has explored token-free models that operate directly on bytes, but they remain niche specifically because the compute cost is hard to justify against subword baselines.
Situations where this technique stops working.
2–4 min · Everything important, quickly.
Real products, models, and research that use this idea.
- GPT-5.5 with o200k_base tokenizes about four English characters per token on average, but Chinese text often uses one token per character (or even more), reflecting the Latin-script bias.
- Old character-level models like ByT5 (byte-level T5) exist but are niche; they trade compute for the ability to handle arbitrary bytes without subword vocabulary mismatches.
What an interviewer would ask next. Try answering before peeking at the approach.
QWhy exactly does sequence length explode under character-level tokenization, and what does it cost?
Each English character is roughly one byte, so character-level produces about four times the tokens of a 100K-200K subword vocabulary on English. Attention is O(n^2) in sequence length, so 4x tokens means 16x attention compute per layer. KV cache size also scales linearly with sequence length, so memory is 4x. The effective context window for a fixed compute budget shrinks by the same multiplier.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Claiming subword tokenization has no failure mode at all. Byte-level subword has a real, measurable Latin-script bias because non-Latin code points often encode to multiple bytes, inflating token counts for those languages.
60 second bullets to scan on the way to the call.
Name the dominant failure mode of character-level tokenization.
Name the dominant failure mode of word-level tokenization.
Primary sources. Browse if you want the original framing.
Same topic, related formats. Practice these next.