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].
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].
For the subword-based models considered in the tokenizer-tax study, input text is segmented using a fixed vocabulary; token count determines the context budget and token-based usage charges [4]. This scope matters: the alternative designs discussed later include byte- and character-based representations [3]. Formally, if a passage has word count W and token count T, the relevant budget constraint is T against the window size, not W. Any word-based estimate is therefore an indirect and potentially biased estimator of T.
Text splitters break large documents into smaller chunks that will be retrievable individually and fit within the model context window limit [1]. Chunking and tokenization are distinct operations. A splitter may choose boundaries from a token budget, a character budget or document structure; the documentation does not prescribe one universal ordering for all these methods [1]. Token-based splitting is useful when working with language models because it aligns chunk size with the unit the model actually consumes [1].
The consequence is that context capacity is tokenizer-relative. The same semantic content encoded by two tokenizers, or the same tokenizer applied to two languages, yields different T values and therefore different effective capacities. For planning, the implication is to report both the nominal token window and the amount of representative content that fits it, rather than treating one token limit as a fixed word allowance.
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].
Subword schemes such as WordPiece, Byte Pair Encoding, and Unigram are statistical methods for preprocessing a large unlabeled corpus to yield a fixed vocabulary, midway between characters or bytes at one end and whole words at the other [3]. The resulting trade-off is between sequence description length and coverage: larger units shorten sequences, while smaller units reduce the need for an unknown-word fallback for rare forms [3].
The word boundary itself is not universal. The concept of words is a fundamental feature of nearly all human languages, including those written in Chinese or Japanese scripts that do not explicitly delineate words by whitespaces [3]. A tokenizer that relies on whitespace therefore encodes an assumption about orthography that may not hold across languages, which is one reason token counts diverge for equivalent content [3].
Byte-level representations add another layer. Unicode characters frequently require two or more bytes, and some scripts may require four bytes to represent a single character, so a byte-based unit is not neutral across scripts [3]. Character count, byte count, word count, and token count are therefore four distinct measures, and only token count directly determines context consumption [4].
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].
The byte-level BPE tokenizers considered here learn a ranked set of merges over byte sequences from a training corpus. At encoding time, adjacent units are merged according to that ranking, producing a segmentation whose granularity depends on which merges were learned and how frequently the relevant sequences occurred in training [2]. The vocabulary is therefore a statistical artifact of corpus composition, not a linguistically neutral inventory of morphemes or syllables [4].
For English, this statistical fit is strong: the byte-level BPE tokenizers discussed in the WWHO paper are described as effective for simple Latin-script text such as English [2]. For complex Abugida scripts, the same byte-level merging can break multi-codepoint grapheme clusters into meaningless sub-character units, because the atomic byte does not correspond to a linguistic unit in those scripts [2]. The tokenizer is optimizing for byte-pair frequency, not for orthographic integrity [2].
This mismatch is measurable as fertility, the average number of tokens a tokenizer generates per word [2]. When merges succeed, fertility is low; when merges fail, fertility approaches the byte length of the text per word [4]. Fertility is thus a diagnostic of vocabulary coverage for a particular language under a particular tokenizer, not an intrinsic property of the language alone [4].
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].
Fertility can be expressed per word or per character. The headline tax multiplier is the ratio of a language's word fertility to English's under the same tokenizer, and for a fixed token budget B, usable characters are B divided by character fertility, whose ratio to English's is the context shrinkage [4]. These definitions make the comparison explicit: identical semantic content, measured by a parallel corpus, yields different token counts solely because of tokenizer-language interaction [4].
The reported magnitudes are tokenizer-specific. Under cl100k_base, Indian languages incur a mean tax of 8.0 times relative to English, rising to 13.0 times for Malayalam [4]. Separately, a study of Abugida scripts reports that Sinhala and other Abugida scripts often exceed a 3.0 token-to-word ratio while English typically achieves a ratio near 1.3 [2]. Both results support the same mechanism, but neither should be generalized to tokenizers with different vocabularies without remeasurement [2][4].
The tax is remediable by design rather than fixed by script. Multilingual tokenizers and a newer tokenizer reduce the mean Indic tax by 73 percent in the reported comparison [4]. This shows that vocabulary coverage and merge learning, not an inherent property of the writing system, drive most of the disparity [4].
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].
The WWHO authors describe how the byte-level BPE tokenizers they compare can fragment multi-codepoint grapheme clusters in complex Abugida scripts into sub-character units [2]. They motivate their design with the idea that preserving orthographic structure could make representation more efficient, because a byte is an encoding unit rather than a complete grapheme cluster [2]. That is their proposed explanation; the supplied excerpts primarily report token-count and compression evaluations. Those results do not independently establish a causal improvement in comprehension or mean that model weights are trained during ordinary inference. The separate tokenizer-tax study likewise cautions that its fertility–accuracy association is confounded by differences in language resources [4].
The WWHO architecture addresses this by ordering operations: a Router identifies script boundaries, a LinguisTrie groups Unicode characters into complete atomic syllables using a table-driven automaton, and Syllable-aware Grapheme Pair Encoding applies statistical merging only to those syllables [2]. A Unified Meta-Vocabulary combines this with standard BPE to support code-switching without identifier collisions [2]. The design principle is to enforce linguistic integrity before statistical compression [2].
Reported results include a token-to-word ratio of 1.274 for Sinhala and 1.181 for Hindi, with reductions of 61.7 percent and 27.0 percent respectively against o200k_base in that evaluation [2]. On a mixed-script dataset, the overall ratio was 1.240, with reductions of 36.7, 39.6, and 60.2 percent relative to three named comparators [2]. These figures are bounded by the training and test sets described in that study [2].
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].
The single-byte rate is defined as the fraction of emitted tokens that surface as a single raw byte or the Unicode replacement character rather than a multi-byte learned subword [4]. This is distinct from strict byte fallback, because the tokenizer in question is byte-level BPE for every language; the measured quantity is the rate at which merges failed to combine adjacent bytes into a larger learned subword [4]. It is therefore a direct operationalization of insufficient vocabulary coverage [4]. When a learned vocabulary contains no subword covering a span of text, BPE merges fail to combine that span's bytes into larger units, so it decomposes into individual single-byte tokens and fertility approaches the byte length of the text [4].
The correlation between single-byte rate and tax multiplier is r = 0.89 across languages with valid word boundaries [4]. English and European languages emit unmerged single-byte tokens for under 10 percent of their tokens, whereas the high-tax Indic languages do so for 27 to 43 percent [4]. The same study notes that 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].
The headline tax multiplier is the ratio of a language's word fertility to English's under the same tokenizer, and for a fixed token budget B, usable characters are B divided by character fertility, whose ratio to English's is the context shrinkage [4]. A high single-byte rate therefore raises both word fertility and character fertility, reducing usable characters for the same B [4]. This is a model-free harm reported in the study: at a fixed context budget, Indian languages retain a small fraction of real document content compared to English [4]. The effect is measured on a content-controlled parallel corpus, so it is not an artifact of comparing unrelated texts [4].
Downstream effects require careful interpretation. The raw correlation between fertility and reading-comprehension accuracy was moderate and negative, but the partial correlation controlling for resource level was small and positive, indicating that the apparent relationship is substantially explained by resource level [4]. Fertility should therefore be treated as a cost and capacity mechanism, not as a proven independent cause of comprehension differences in that dataset [4]. Reporting the raw and partial correlations together avoids overstating what the evidence shows [4].
The tax is remediable by design rather than fixed by script. Multilingual tokenizers and a newer tokenizer reduce the mean Indic tax by 73 percent in the reported comparison [4]. That result reinforces the mechanism: improving vocabulary coverage allows merges to succeed, lowers the single-byte rate, and reduces fertility [4]. Any claim about cost, capacity, or accuracy for a new tokenizer should therefore be remeasured for that tokenizer, language, and corpus, rather than imported from the cl100k_base results [4].
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].
RecursiveCharacterTextSplitter attempts to keep larger units intact and, if a unit exceeds the chunk size, moves to the next level, continuing down to the word level if necessary [1]. This hierarchical strategy leverages the natural organization of text into paragraphs, sentences, and words to maintain semantic coherence within splits [1]. The documentation presents it as a default balance between keeping context intact and managing chunk size, with the explicit limitation that it is not evidence that one strategy is best for every dataset [1].
Length-based splitting ensures each chunk does not exceed a specified size limit, with token-based and character-based variants [1]. Token-based splitting aligns directly with the model's consumption unit, while character-based splitting can be more consistent across text types [1]. An example implementation uses a tokenizer encoder with a specified encoding name and chunk size to split by tokens [1]. The two variants can produce different chunk boundaries for the same document because token density varies across languages and formats [1][4].
Splitting does not repair tokenization inefficiency. If a language has high fertility, a token-based chunk will contain fewer characters and less semantic content than a chunk of the same token size in a low-fertility language [4]. Chunk size in tokens therefore does not guarantee equal information across languages, which is why fertility must be considered alongside splitter settings [4].
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].
Structure-based splitting is useful when a document has inherent organisation, such as HTML, Markdown or JSON. The LangChain guidance describes that structure as a way to group semantically related text, and gives examples including Markdown headers and code functions, classes or logical blocks [1]. Its claimed benefit concerns downstream retrieval or summarisation. It does not provide a benchmark comparing the token overhead of these formats, so structure-preserving boundaries and token consumption should be evaluated separately.
Changing the exact submitted string is a reason to recompute its encoded sequence. This is an implementation precaution, not a quantitative result attributed to the tokenizer-tax paper. In particular, adding a bracket, label or separator does not justify assuming a one-token increase or a monotonic relationship between character length and token count. Use the selected tokenizer on the complete serialized input. A format comparison needs those measured outputs before it can claim either a saving or an overhead.
Make the measurement boundary explicit. Record whether the counted text is the original source, an extracted passage, or a prepared prompt that includes headings and other labels. Also record which transformation produced it. This is an editorial recommendation for reproducibility: the format name alone does not specify the exact string under evaluation. Without that record, a later change to extraction or prompt assembly could invalidate a previous count even if the source file retains the same extension.
For the hypothetical shopping example, compare the two final strings actually used by the application: a plain two-item list and a version that also includes its heading. The example assumes no token counts and asserts no ranking between them. It asks two independently answerable questions: how many tokens does each complete input produce, and does retaining the heading help preserve the intended grouping? The second question follows the documented motivation for structure-aware splitting [1]; the first requires counting with the actual tokenizer.
A useful evaluation record therefore includes the final input, tokenizer, splitting rule, chunk-size measure and resulting chunks. Token-based splitting uses the model-facing counting unit, while character-based splitting uses a different length measure [1]. Structural boundaries can preserve related material, but they should still be checked against the selected token budget. Repeat the measurements for representative languages instead of importing a word-based estimate, because the cross-lingual study reports tokenizer-specific fertility differences [4].
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].
The following is an original hypothetical example with explicitly assumed properties, not a measured result. Assume a shopping list with eight content words, plus quantity digits and punctuation, encoded by a tokenizer with a fixed vocabulary learned predominantly from English data [4]. Assume further that frequent short words are covered by single tokens, while longer or rarer words are split into multiple subword tokens [3]. Under those assumptions, a word may contribute one token or several, while the complete string also includes quantities and punctuation. The exact counts and the ratios T/W and T/C still need to be measured with the chosen tokenizer; the example supplies no measured totals.
Now consider an equal-meaning version of the hypothetical list in a script under-represented in tokenizer training. Its word count W and character count C may change; equal meaning does not make those counts identical. The merge-failure mechanism explains why the token cost per word or character can be higher, but the actual counts for this list still require measurement [4]. This is the same mechanism measured as a mean tax of 8.0 times for Indian languages under cl100k_base in one study, though that figure is specific to that tokenizer and corpus and is not a prediction for this hypothetical list [4].
The example also shows why character-based and token-based splitting diverge. A character-based splitter constrains chunks by a character limit, while a token-based splitter constrains them by a token limit [1]. These are maximum sizes, not a promise that all chunks have equal length: preserved structural boundaries and a final remainder can produce shorter chunks [1]. When fertility differs, chunks constrained by the same token limit can contain different amounts of character and semantic content [4]. Choose the limit according to the model’s token budget, then inspect whether the resulting boundaries preserve useful context [1].
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].
Word-pooled tokenization uses the word boundary to compress base tokens of bytes or characters into word representations, which are then fed into the underlying language model, before decoding individual characters or bytes per word in parallel [3]. The method uses a transformer encoder to pool base tokens into a fixed number of embeddings per word, analogous to pooling a sentence into a classification embedding [3]. The authors report outperforming subword and byte or character models by over 300 percent on next-word prediction across their datasets, with a factor of 30 on rare words [3]. These are intrinsic language-modeling results under controlled context sizes, not evidence of superiority for all downstream tasks [3].
Script-aware architectures take a different route. WWHO routes segments by script, groups Unicode characters into atomic syllables with a deterministic automaton, and applies statistical merging to predefined syllables as indivisible units, preserving the paper’s stated guarantee that no valid syllable is split across tokens [2]. This addresses the grapheme-cluster fragmentation that the byte-level BPE comparisons describe for Abugida scripts [2]. The trade-off is architectural complexity and dependence on script-specific linguistic rules, which must be defined for each script family [2].
For implementation, the checklist is: confirm the tokenizer and its vocabulary coverage for each target language; measure word fertility, character fertility, and unmerged single-byte rate on parallel or representative text; compute usable characters for the fixed token budget; select recursive or structure-based splitting to preserve paragraphs, headers, or code blocks where coherence matters; and validate that chunking does not assume features from different libraries can be combined in one supported configuration [1][4]. Report tokenizer, language, and corpus for every fertility figure, because tax multipliers are not portable across tokenizers [4].
Sources & further reading
Explore the references behind this guide. External pages may change after our review.
- Text splitter integrations - Docs by LangChainLangChain · Accessed 6 Nov 2026
- Separate Before You Compress: The WWHO Tokenization ArchitecturearXiv paper authors · Accessed 6 Nov 2026
- Learn Your Tokens: Word-Pooled Tokenization for Language ModelingarXiv paper authors · Accessed 6 Nov 2026
- The Tokenizer Tax: Quantifying and Explaining the Cross-Lingual Cost of Subword Tokenization for Indian LanguagesarXiv paper authors · Accessed 6 Nov 2026
Article updated 6 Nov 2026.
Found something we should revisit?
Good explanations get better with thoughtful feedback.