All articles
August 6, 202610 min readMichael
Chinese readabilityHSKgraded readersL2 readabilitydata pipelineChinese learning

How Chinese Reading Difficulty Is Calculated

Why character distribution, word complexity, and sentence length matter more than English-style readability formulas -- and how to combine them into a single grade.

Reading difficulty in Chinese is harder to measure than in English. Average sentence length and vocabulary size still matter, but Chinese has features that change the math: no spaces between words, characters that vary in difficulty independently of the words they form, function words that carry grammatical load, and a writing system where one rare character can derail an otherwise-easy passage.

The standard English formulas -- Flesch-Kincaid, Dale-Chall, SMOG -- don't translate cleanly. They lean on syllable counts, spaces between words, and word-frequency lists that have no direct Chinese equivalent. A useful Chinese readability metric has to be built differently.

Why English Formulas Don't Work for Chinese

Flesch-Kincaid, the most familiar English readability score, uses two inputs: average sentence length and average syllables per word. Both rely on visible word boundaries -- spaces -- which Chinese doesn't have. Determining where one word ends and the next begins is itself a non-trivial NLP problem (called segmentation), and segmentation choices change the score before any difficulty calculation begins.

Character complexity is another input English doesn't have. The character 一 (, one) and the character 餐 (cān, meal) are both single tokens, but they share almost nothing in difficulty for a learner. Vocabulary frequency lists handle this for words, but not for the underlying script -- and in Chinese, the script is where most of the difficulty actually lives.

L1 vs L2 Readability: Two Different Problems

Chinese readability research splits into two camps. L1 (first-language) systems target native readers and predict things like grade level for school texts. L2 (second-language) systems target learners and predict how hard a text is given a known proficiency level, typically expressed in HSK bands.

The two camps measure different things. L1 readability assumes the reader has full vocabulary access and asks how cognitively demanding the syntax is -- clause embedding, semantic abstraction, rare-word density. L2 readability mostly asks: what fraction of this passage will the reader actually be able to decode?

L1 vs L2 readability features
FeatureL1 readability (native)L2 readability (learner)
Primary signalSyntactic complexityVocabulary coverage
Vocabulary handlingRare-word density among nativesKnown vs unknown HSK levels
Typical methodLinear regression / ML on labeled corporaLinear regression on HSK lexical features
Common tool styleAlphaReadability-style native scoringHSK-Analyzer-style HSK lookups
What it measures wellWhether a 12-year-old native can follow itWhether an HSK 3 learner can read it

A score from one camp doesn't translate to the other. An L1 tool can call a passage easy because its sentences are short and its vocabulary is high-frequency among natives -- but if a third of the characters are off the HSK list, an L2 learner is stuck. The reverse also happens: a passage with simple HSK 1 vocabulary but heavy clause embedding can read easily for an HSK 4 learner and still rate as L1-difficult.

The Inputs That Actually Predict L2 Difficulty

For learner-facing readability, the inputs that carry the most signal are well-established in the L2 readability literature. Linear regression with these features hits roughly 85-95% of the predictive accuracy of small neural models, with the practical advantage of being inspectable -- you can debug a misclassified passage by looking at the inputs.

  1. Character HSK distribution -- the spread of characters across HSK levels 1-9, weighted by how many appear in the passage.
  2. Variance in character difficulty -- a passage that averages HSK 3 but spikes to HSK 7 for a third of its characters is harder than a flat HSK 3 passage with the same mean.
  3. Word-level complexity -- multi-character compound words can be much harder than the characters they're made from.
  4. Average sentence length -- a proxy for embedded-clause density, chained noun phrases, and conditional frameworks.
  5. Known-character coverage -- the percentage of the text the learner can actually decode at their target HSK level. Below roughly 40%, comprehension collapses regardless of other signals.

How HanziFeed Calculates It

HanziFeed grades the news passages in its reading feed using a hybrid lexical-syntactic score, computed at pipeline time and stored alongside each passage. The full formula is published below in case other tools want to reproduce it.

Step 1: Character HSK Distribution

For every unique CJK character in the passage, look up its HSK 3.0 (2026) level (1-9). Characters not in the HSK list -- usually rare or technical -- default to level 9. Take the weighted mean across the unique characters: each level is weighted by how many distinct characters at that level appear in the passage.

Step 2: The Variance Penalty

Add a small penalty for variance in the distribution. A passage with a flat HSK 2 vocabulary is genuinely easier than one that averages HSK 2 but spikes to HSK 7 in places -- the mean alone hides this. The penalty is computed as 0.3 × the standard deviation of the HSK distribution.

Step 3: Word-Level Complexity Bonus

Run a longest-match-greedy scan against the HSK 3.0 multi-character vocabulary list. For every match, record the word's HSK level. If at least 5 unique words are found, take the mean of the word-level distribution and apply a bounded bonus.

This bonus only fires upward. It catches compound words that are harder than their characters suggest -- 新能源 (xīn néngyuán, new energy) is HSK 6, but the individual characters are HSK 1-3. Without a word-level pass, character-only scoring would underrate passages that are heavy on technical compounds.

Step 4: Sentence-Length Bonus

Split the passage on Chinese sentence-ending punctuation (。 ! ?) and compute the average CJK character count per sentence. For passages with average sentence length above 20 characters, add a small bonus capped at 0.15.

The cap is deliberate. Sentence length is a real signal but a noisy one -- news writing in particular can stack noun phrases without genuinely raising difficulty. Letting it dominate the score would over-penalize informational text that's actually quite readable.

Step 5: Bucketing the Final Score

The final score is the sum of the three components: final = charScore + wordBonus + sentenceBonus. The score is then bucketed into one of five tiers using fixed thresholds.

HanziFeed difficulty thresholds
Final ScoreTierApproximate HSK Range
< 3.30BeginnerHSK 1-2
3.30 -- 3.65ElementaryHSK 2-3
3.65 -- 4.00IntermediateHSK 3-4
4.00 -- 4.40AdvancedHSK 4-5
≥ 4.40ExpertHSK 5-6+

Passages must also pass a separate quality gate: at least 40% of unique characters must be at or below the learner's target HSK level. A passage with the right average difficulty but bad coverage -- lots of unknown characters concentrated in the unfamiliar 60% -- is rejected before it reaches a learner, even if its tier looks correct.

Character-Level

Weighted mean of HSK levels across unique characters, with a stddev penalty for distributions that spike toward harder levels.

Type

Word-Level

Longest-match scan against HSK vocabulary catches compound words that are harder than their constituent characters.

AlignLeft

Sentence-Level

Average sentence length above 20 characters adds a small bonus -- a proxy for syntactic complexity.

Why We Don't Use Machine Learning

Small neural models with the same input features hit roughly 95% of the predictive accuracy of the linear formula above. The remaining 5% wasn't worth the cost of an opaque model that's hard to debug.

When a passage gets miscategorized, a linear formula tells you exactly why -- one input was higher or lower than expected. With ML, the same diagnostic takes feature-attribution work and rarely points to a clean fix. For a pipeline that grades a few hundred passages a day, transparency wins.

This matches the broader L2 readability literature. L1 research has moved toward deep models because the syntactic signal is genuinely complex; L2 research mostly stays with linear regression because the dominant signal -- vocabulary coverage -- is already well-modeled by linear features.

How Commercial Graded Readers Compare

The big graded reader brands -- Mandarin Companion, Imagin8Press, DuChinese, The Chairman's Bao -- all publish leveled content but rarely explain how the levels are set. From what's publicly visible, most use a vocabulary list per level and rely on editorial judgment to write or select content that fits.

That approach has a real strength: human editors catch things a formula misses, like a familiar word used in an unusual sense, or a passage that's lexically simple but culturally opaque. The weakness is that the bucket boundaries are not formalized, which makes it hard to compare Level 2 across two publishers, or to know exactly what a reader needs to know to attempt a given level.

Algorithmic grading and editorial grading aren't really competing methods -- they answer slightly different questions. An algorithm answers "how hard is this passage given the inputs?" An editor answers "is this passage actually appropriate for this audience?" Production-grade reading apps tend to combine both: an algorithm for scale, editorial review for the cases the algorithm gets wrong.


Frequently Asked Questions

How does this differ from HSK-Analyzer?
HSK-Analyzer reports the HSK distribution of a text -- what percentage of characters or words fall at each level -- and lets you eyeball coverage. The HanziFeed formula goes further: it adds a variance penalty, a word-level bonus, and a sentence-length signal, then buckets the result into a single tier. The two tools are complementary -- HSK-Analyzer is great for inspecting a text, the HanziFeed formula is built for grading a corpus at scale.
What if a passage has characters not on any HSK list?
Unmapped characters are treated as HSK level 9 -- the highest tier. This catches rare or technical characters without needing a separate out-of-vocabulary category. It does mean very specialized texts (legal, classical, scientific) tend to score as expert-tier, which is usually the right answer for L2 readers.
Why bucket the score into five tiers instead of using the raw number?
Five tiers map naturally to learner self-identification (beginner through expert) and to the way most graded reader catalogs are structured. The raw score is still computed and stored -- the tier is just the user-facing summary. If you wanted finer granularity, the same raw score could feed a 9-tier classification aligned to HSK bands.
How accurate is this for very short passages?
Less accurate. With fewer than ~20 unique characters, the variance penalty and word-level bonus both lose signal. The HanziFeed pipeline targets passages of 150-300 CJK characters, which is the range where these inputs stabilize. For headlines or single-sentence text, character coverage alone is a more reliable signal.
Does this account for traditional vs simplified characters?
The HSK list is simplified. Traditional-only characters that don't have a simplified mapping fall into the unmapped (level 9) bucket -- which is the right behavior, since they're harder for learners on a simplified-character path. For learners studying [traditional characters](/blog/simplified-vs-traditional-chinese-characters/), a parallel mapping against a traditional-character frequency list would be a cleaner approach.
Are L1 and L2 scores ever directly comparable?
Not really. They're modeling different reader profiles. You can compute both for the same passage and learn something from the difference -- a large gap usually means a passage is syntactically simple but lexically dense, or vice versa -- but mapping a single L1 number to a single L2 number doesn't work in general.

Read leveled Chinese passages in HanziFeed

HanziFeed's news reader grades every passage with the algorithm above and serves a daily mix of beginner through expert content -- updated automatically from current Chinese-language news.