The useful part, up front

What you’ll take away

  • Context windows are denominated in tokens, so word count alone cannot predict how much text fits [4].
  • Fertility and merge failures explain why the same content consumes different token budgets across languages and scripts [4].
  • Tokenization, document splitting, and formatting are separate decisions that interact; measure token count with the actual tokenizer and format [1].
  • Script-aware and word-pooled designs can reduce fragmentation in reported evaluations, but results are specific to the languages, tokenizers, and datasets tested [2][3].
01

The budget is tokens, not words

A context window is often described as how much text a model can consider at once, but the limit is not measured in ordinary words. In the subword-based models discussed here, input text is segmented into units drawn from a fixed tokenizer vocabulary. The context budget and token-based API charges use that token count, and longer token sequences can also affect generation time [4]. That means two passages with the same number of words can use very different shares of the window before the model sees either one.

When a document is too large, tools break it into smaller chunks that can be retrieved individually and fit within the model context window limit [1]. The practical question is therefore not only how long a passage looks on the page, but how many token units the tokenizer produces from it. A short-looking passage in one language or format may consume more of the budget than a longer-looking passage in another.

This distinction matters for everyday planning. If you count words to decide whether a message, note, or document will fit, you are using a proxy that the system does not use. The system counts tokens, so a reliable estimate must account for how the tokenizer splits the actual text, including spaces, punctuation, numbers, and repeated formatting characters [4].

Token budget flow from text to context window. For the subword-based models discussed here, encoded tokens are counted against the context budget [4].
For the subword-based models discussed here, encoded tokens are counted against the context budget [4]. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
02

Characters, words, and tokens are different units

Characters are text units such as letters, digits, spaces, and punctuation marks. A displayed symbol can contain more than one Unicode character, so visible-symbol counts and character counts need not be the same [2][3]. Words are groups of characters separated by spaces in many languages, although some writing systems do not mark word boundaries with spaces [3]. Tokens are neither characters nor words; they are pieces chosen by a tokenizer from a fixed vocabulary, and a token can be part of a word, a whole word, or occasionally span a boundary depending on the tokenizer design [3].

Subword tokenization sits midway between characters and whole words. It combines characters into longer surface-level strings, such as common endings or whole frequent words, while still allowing rarer words to be represented as smaller pieces [3]. This middle position is a trade-off: it keeps sequences shorter than a purely character-by-character representation, while avoiding a fallback problem for words not seen as whole units [3].

A shopping list makes the difference visible without needing technical vocabulary. The list has a certain number of characters including spaces, a certain number of words, and a tokenizer will produce a third number of tokens. Those three numbers need not move together, because a long word may become several tokens while a short frequent word may become one token [3].

03

How byte pair encoding builds tokens

Byte Pair Encoding, or BPE, is a common way to build a tokenizer vocabulary. It starts from small units and learns merges that combine frequently occurring adjacent pieces into larger units [2]. If a pair of pieces occurs often in the training data, the tokenizer can learn to represent that pair as a single token, which reduces the number of tokens needed for text containing that pair [2].

The learned merges explain why familiar English text can be compact. The WWHO paper describes byte-level BPE as effective for simple Latin-script text such as English [2]. The separate tokenizer-tax study attributes compact English encoding to vocabulary learned from predominantly English training material [4]. A frequent English word or ending may therefore be covered by one or a few tokens, while a less represented sequence may be split into many smaller pieces [4].

The same mechanism also explains the failure mode. When a tokenizer's learned vocabulary contains no subword covering a span of text, its BPE merges fail to combine that span's bytes into larger units, so it decomposes into individual single-byte tokens [4]. The text has not changed; the tokenizer simply lacks a learned merge that would compress it [4].

Merge failure mechanism. When learned merges fail, bytes remain unmerged and fertility approaches byte length [4].
When learned merges fail, bytes remain unmerged and fertility approaches byte length [4]. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
04

Why equal word counts use unequal space

The number of tokens a tokenizer needs to encode a fixed unit of text is its fertility, and when fertility is high the same paragraph consumes more of a fixed context window [4]. A user in a high-fertility language therefore effectively receives a smaller window than a user in a low-fertility language for identical content [4]. This disparity is called the tokenizer tax [4].

Measurements on a content-controlled parallel corpus illustrate the scale. Under cl100k_base, Indian languages incurred a mean word-fertility tax of 8.0 times relative to English, rising to 13.0 times for Malayalam [4]. The study also measures usable characters within a fixed token budget. That is a separate character-based comparison: a word-fertility multiplier should not be substituted directly for a character-capacity percentage [4]. Those figures come from a specific study and tokenizer, so they should not be treated as universal constants for every system [4].

Other research reports a similar pattern with different numbers. Sinhala and other Abugida scripts often exceed a 3.0 token-to-word ratio, whereas English typically achieves a ratio near 1.3, which can reduce the usable context window by up to 4.38 times for those languages under the tokenizers examined [2]. The exact multiplier depends on the tokenizer and language pair, but the direction of the effect is consistent across these studies [2][4].

05

Scripts, bytes, and broken clusters

Complex Abugida scripts are structured into grapheme clusters composed of elements such as conjuncts, diacritics, and joiners, all represented in Unicode [2]. Because Unicode characters in these scripts frequently require two or more bytes, a byte-based tokenizer can fragment them into pieces that do not correspond to meaningful linguistic units [2]. The model then receives many small fragments instead of a coherent syllable or cluster [2].

One proposed architecture tries to separate linguistic rules from statistical compression. Its first layer identifies script boundaries, its second layer groups raw Unicode characters into complete atomic syllables, and its third layer applies statistical merging to those pre-defined syllables [2]. The goal is to guarantee that complex clusters are never broken into meaningless parts before compression begins [2].

In the reported evaluation, that syllable-aware approach achieved a token-to-word ratio of 1.274 for Sinhala with 4.83 characters per token, representing a 61.7 percent reduction in tokens compared with a specified English-oriented tokenizer [2]. For Hindi it achieved a ratio of 1.181, a 27.0 percent reduction against the same comparator [2]. These are results for a specific proposed system and test set, not guarantees for other languages or tokenizers [2].

06

When merges fail: single bytes and cost

A concrete symptom of poor vocabulary coverage is the unmerged single-byte token. English and European languages emit such tokens for under 10 percent of their tokens in one measurement, whereas high-tax Indic languages do so for 27 to 43 percent [4]. Across languages with valid word boundaries, this single-byte rate alone correlates with the tax multiplier at r = 0.89 [4]. In other words, when many tokens are left as single bytes, the same content tends to need many more tokens overall [4].

The mechanism is straightforward. When merges fail, fertility approaches the byte length of the text, so each character can cost several tokens instead of sharing a token with its neighbors [4]. At a fixed context budget, that means a small fraction of real document content is retained compared with English [4]. The user sees the same meaning, but the budget is spent on encoding overhead [4]. A passage that looks short on the page can therefore fill the window quickly, because the tokenizer is spending tokens on individual bytes rather than on larger learned pieces [4].

Cost follows token count. Commercial APIs price per token, so the same meaning costs more to send and receive when fertility is high, and generation cost scales with token count, so responses are slower [4]. This is not a claim that every provider prices or performs identically; it is the mechanism reported in the study, where cost and speed are denominated in tokens [4]. The practical implication is to measure token count for the actual language and format, rather than assuming that equal word counts will cost the same [4].

Over-fragmentation may also destroy morphological structure in ways that harm comprehension, although one study found that the apparent fertility-accuracy relationship was substantially explained by resource level rather than fertility independently [4]. That caution matters: a high single-byte rate is strong evidence of encoding overhead and higher token cost, but it is not by itself proof that fertility independently causes lower comprehension in that dataset [4]. Readers should separate the well-supported cost and capacity effect from the more uncertain downstream accuracy claim [4].

A useful check is to compare languages that share a script but differ in representation. Urdu and Arabic, despite sharing the Perso-Arabic script, sit at a comparatively low tax of about 3.4 times because that script is sufficiently represented that merges succeed and the single-byte rate stays low [4]. Script identity alone does not predict the tax; training representation does [4]. If a tokenizer has learned merges for a script, single-byte tokens remain rare; if it has not, they become common and the budget shrinks [4].

Tokenizer-specific fertility and byte rates. The cl100k_base study reports language-specific fertility and unmerged-byte rates; these are not universal constants [4].
The cl100k_base study reports language-specific fertility and unmerged-byte rates; these are not universal constants [4]. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
07

Splitting documents is not the same as tokenizing

Tokenization and document splitting solve related but different problems. Tokenization converts text into tokens for the model, while a text splitter breaks large documents into smaller chunks that fit within the context window limit [1]. A splitter can use token count, character count, or document structure as its basis, and each choice produces different chunks [1].

A common starting point is a recursive splitter that tries to keep larger units such as paragraphs intact, then moves to sentences, and continues down to the word level if necessary [1]. This approach preserves natural language flow and semantic coherence better than cutting at an arbitrary character position [1]. It is presented as a solid default, not as evidence that one split size is best for every dataset [1].

Length-based splitting is simpler. Token-based splitting divides text by number of tokens, which is useful when working with language models, while character-based splitting divides by number of characters, which can be more consistent across different types of text [1]. The choice depends on whether the constraint that matters is the model's token budget or a more stable character measure [1].

08

Format, structure and the text you actually measure

A document can carry structure as well as ordinary sentences. HTML, Markdown and JSON have conventions that group information, while code has functions, classes and logical blocks [1]. The splitter guidance recommends using those structures when they help keep related text together. For example, a Markdown heading can provide a useful boundary for a section. This is guidance about where to split; it does not establish a fixed token cost for every document format [1].

For planning, treat different representations as separate inputs to measure. A plain list and a formatted version may contain the same useful items, yet the exact strings sent to the tokenizer can differ. That is a reason to count the final text again, not a claim that every added punctuation mark increases the count by one. No universal markup penalty or measured plain-text-versus-JSON saving is claimed here. The result depends on the actual input and tokenizer.

The processing steps also matter. Decide which headings, labels and formatting characters will actually be included in the text submitted to the model. A file being stored as Markdown does not, by itself, describe the final string that your application sends. This is a practical record-keeping recommendation: keep one sample of the final input alongside its token count so you can repeat the measurement after changing the format or preparation steps.

Consider an original hypothetical example: the two entries milk and eggs could appear as a plain list, or below a Markdown heading called Shopping. If that heading is included in the submitted text, it is part of the input that must be measured. If an application extracts just the two entries, measure that extracted text instead. No exact token total is assumed in this example. Its purpose is to distinguish the source document from the actual text being counted.

Then compare splitting choices on that final input. The documented options include token-based length limits, character-based length limits and structure-based boundaries [1]. A useful chunk should preserve the relationships the reader needs and fit the selected model budget. Recheck the count after a change of format or language, and inspect the resulting chunks for lost headings or separated ideas. The language study shows why a word-count shortcut is especially unreliable across the tokenizers and languages it examines [4].

Document structure offers useful boundaries. The splitter guidance names Markdown headers and code blocks as structural cues; actual token fit still needs checking [1].
The splitter guidance names Markdown headers and code blocks as structural cues; actual token fit still needs checking [1]. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
09

A shopping list worked example

Consider a purely hypothetical shopping list used only to illustrate counting. Suppose the list contains the words milk, eggs, bread, cheese, apples, rice, beans, and spinach, plus numbers and punctuation. The exact token count depends on the tokenizer, so no specific number is claimed here; the point is that characters, words, and tokens will be three different totals [3].

In this hypothetical example, characters include every letter, space, digit, and punctuation mark. Words are the eight food items plus any quantity words. Tokens are whatever pieces the tokenizer produces, which may split a longer or rarer word into several pieces while keeping a short frequent word as one piece [3]. If the list is written in a language or script with high fertility under the chosen tokenizer, the same eight items could require many more tokens than in English [4].

The lesson is practical. Before pasting a list, note, or document into a model, estimate its token count with the tokenizer that will actually be used, rather than counting words [4]. If the list must be shortened, removing formatting, redundant punctuation, or repeated labels can save tokens without removing items, because those characters are tokenized too [1].

10

Alternatives, limits, and a practical checklist

Alternative tokenization designs try to reduce the tax. One approach pools bytes or characters into word representations using the word boundary, then feeds those representations to the language model before decoding individual characters or bytes per word [3]. The authors report that this end-to-end approach outperformed subword and byte or character models on next-word prediction in their experiments, particularly on rare words [3]. Those results are specific to the models and datasets studied and do not establish a universal replacement for subword tokenization [3].

Other approaches focus on script-aware preprocessing. The syllable-aware design described earlier separates script identification and syllable grouping from statistical merging, aiming to avoid breaking grapheme clusters [2]. Its reported token reductions are substantial for the languages and comparators tested, but they depend on the specific training data and evaluation sets [2]. No single design has been shown in these sources to eliminate fertility differences for all languages [2][4].

A practical checklist follows from the evidence. First, identify the tokenizer the model actually uses. Second, measure token count for representative text in each language and format you will send. Third, check fertility and single-byte rates if available. Fourth, choose token-based splitting when the model budget is binding and structure-based splitting when semantic coherence matters. Fifth, remeasure after any change of language, format, or tokenizer, because the tax is tokenizer-specific [1][4].

Measure the input before choosing a split. A practical checklist combining the splitter guidance with tokenizer-specific fertility findings [1][4].
A practical checklist combining the splitter guidance with tokenizer-specific fertility findings [1][4]. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
Follow the evidence

Sources & further reading

Explore the references behind this guide. External pages may change after our review.

  1. Text splitter integrations - Docs by LangChain
    LangChain · Accessed 6 Nov 2026
  2. Separate Before You Compress: The WWHO Tokenization Architecture
    arXiv paper authors · Accessed 6 Nov 2026
  3. Learn Your Tokens: Word-Pooled Tokenization for Language Modeling
    arXiv paper authors · Accessed 6 Nov 2026
  4. The Tokenizer Tax: Quantifying and Explaining the Cross-Lingual Cost of Subword Tokenization for Indian Languages
    arXiv paper authors · Accessed 6 Nov 2026

Article updated 6 Nov 2026.

Found something we should revisit?

Good explanations get better with thoughtful feedback.

Suggest a correction