Most speed readers break on Japanese, Chinese and Thai

SamuraiLion1 pts0 comments

Speed Reading in Japanese, Chinese and Thai — ReadKinetic<br>Languages By Esat Turan July 29, 2026 8 min read<br>8m left

Speed Reading in Japanese, Chinese and Thai

Almost every speed reading tool ever built assumes something it never states: that you can find the words in a sentence by splitting it wherever there is a space.

For English that assumption is invisible because it is true. For Japanese, Chinese, Thai, Khmer, Lao and Burmese it is simply false, and the failure is not subtle. It is not that those languages read badly in a typical speed reader. It is that they do not read at all.

What actually happens

Take the opening line of Natsume Sōseki’s I Am a Cat:

吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。

There are no spaces in it. There is no space between 吾輩 (wagahai, “I”) and は, the particle that marks it as the subject. A program that splits on whitespace finds nothing to split on, so it concludes the entire passage is one enormous word — and a reader that shows one word at a time dutifully flashes all thirty-three characters at once, then stops.

Splitting on spaces turns a Japanese sentence into one long word; dictionary segmentation recovers nineteen real words ENGLISH — SPACES DO THE JOB The cat has no name 5 words — correct JAPANESE — SPLIT ON SPACES 吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。 1 “word” The whole sentence arrives as a single flash. There are no spaces to split on. JAPANESE — DICTIONARY SEGMENTATION 吾輩 は 猫 で ある。 名前 は まだ 無い。 … and ten more 19 words Each unit is a word a Japanese reader recognises — so pacing, progress and position all become meaningful.<br>The same sentence, split two ways. Without segmentation a paced reader has<br>nothing to pace: there is exactly one “word” to show.

This is worth sitting with, because it is not a cosmetic bug. In a paced reader, the list of words is the application. Everything downstream is built on it: your position in the book, the progress bar, how long the chapter will take, where a bookmark points, how the pace adapts. If the list has one item, every one of those features is meaningless at the same time.

Why the spaces are missing

They were never there. It is not an omission.

Japanese distinguishes word boundaries a different way — by alternating between three scripts. Content words tend to be written in kanji (猫, “cat”) while grammatical particles and inflections appear in hiragana (は, である). A fluent reader parses the boundary from the script change itself, the way an English reader parses a compound like “bookshelf” without needing a mark between the parts.

Chinese has no such alternation and manages without word spaces entirely; boundaries come from vocabulary and context. Thai runs words together and uses spaces the way English uses commas — to separate phrases and clauses, not words. If you split Thai on spaces you do not get words, you get clauses, which is arguably worse than getting one long string because it looks like it worked.

How you find words without spaces

You need a dictionary, and a way to choose between the readings it allows.

This is a genuinely hard problem in the general case — Japanese segmentation has been an active research area for decades, and ambiguous cases exist where even native readers need context to be sure. But the common cases are extremely well handled, and the important practical point for anyone building or choosing a reading tool is that you do not have to solve this yourself.

Every modern browser already ships with ICU, the same internationalisation library that sits underneath most operating systems, and it includes dictionary-based word breaking for exactly these scripts. It is available to any web page through the Intl.Segmenter API. It costs nothing to download, because it is already there.

Run the Sōseki line through it and you get nineteen units: 吾輩 / は / 猫 / で / ある / 名前 / は / まだ / 無い, and so on. Those are words a Japanese reader would recognise as words. Run an English sentence through the same API and you get exactly what splitting on spaces gave you — which means it can be the single path for every language rather than a special case bolted on the side.

ReadKinetic detects the script from the text itself and segments accordingly. You do not choose a language anywhere, and there is no setting for it.

The number on the screen is also wrong

Fixing the words is necessary but not sufficient, and this is the part most tools would still get wrong even after segmenting correctly.

Reading speed in English is measured in words per minute. Reading speed in Japanese conventionally is not — it is measured in 文字/分 , characters per minute, and typical adult reading sits somewhere around 400 to 600.

The reason is that the units are not comparable. A segmented Japanese “word” averages well under two characters, and a great many are single particles like は or で. If a Japanese reader sets a tool to 300 and it means 300 words per minute, the honest translation is roughly 500 characters per minute — a completely different...

words japanese spaces word reader speed

Related Articles