AN OPEN FOUNDATION

Small test.
Honest boundaries.

ArticleScript is an independent character recognition practice tool, inspired by the simple swipe experience of Hanzishan. Its interface and test code were written for this project; it does not use Hanzishan’s code, data, or scoring algorithm.

What the number means

The test starts with very common characters and climbs gradually through frequency levels, choosing six random characters per frequency level. Someone comfortable with the first thousand gets about twelve quick, familiar cards before moving further up. After that opening, at least 90% overall accuracy and strong recognition in the current level permit 1,000-rank steps; lower accuracy uses 500-rank steps. If a faster step reaches a difficult level, the skipped level just below it is checked to locate the transition. There are no early jumps to rare characters to probe the whole list. Characters do not repeat within a test. Across tests, fresh random draws favor characters you have not encountered, while allowing familiar ones to return.

Each test starts with a fresh estimate. It fits a decreasing recognition curve over frequency rank, allowing several curve widths and occasional inconsistent answers. The estimated number known is the area under that curve across this 6,000-character list. The displayed rough model range summarizes uncertainty among those curves. It depends on the curve assumptions and your subjective answers; it is not a calibrated proficiency interval, an HSK level, a word vocabulary size, or a reading fluency score.

The score stays hidden during the test. After at least 20 answers (30 for estimates of 2,500 or more), it stops when recognition is at most one third in two neighboring 500-rank levels. Very low recognition in the first level also establishes an edge. If that happens before the minimum, remaining checks stay near the transition. One isolated weak level does not end the test. If recognition stays uneven across the list, top-of-list sampling or a firm 60-answer limit ends it with the model’s wider range. The range does not need to become artificially narrow before you get a score. Earlier unfinished tests keep their answers and can finish under these rules when resumed. Scores and recent averages are rounded to the nearest hundred characters. Daily scores may vary; the recent average uses your last seven completed tests. Earlier fixed-sample scores remain labeled separately in history.

Tap the character or Reveal to turn the card over. The reading face shows all available pronunciation and meaning entries in large text. Long definitions scroll inside this reading panel while the test page stays fixed. Close the reading face to return to the character before swiping right or left. Revealing never records an answer, and answers and Back are disabled while reading. Arrow-key answers and screen-reader-accessible answer buttons remain available on the character face. Review answers never affect a character-count score. The score is a self-reported estimate within this list, with a ceiling of 6,000.

How frequency is calculated

The list is derived from FrequencyWords, by Hermit Dave, using the 2018 Simplified Chinese OpenSubtitles token list (zh_cn_full.txt). For each token, its count is added to each Han character it contains, including repeated characters. Characters are sorted by the resulting counts, and the first 6,000 with single-character dictionary entries are retained. These are corpus-derived character ranks, not official universal usage ranks. Movie and television dialogue has its own biases, and a simplified-script corpus may contain occasional variant forms.

FrequencyWords content and this derived character dataset are available under Creative Commons Attribution-ShareAlike 4.0. FrequencyWords code is MIT licensed. Its source corpus is OPUS OpenSubtitles.

Meanings & pronunciation

Pinyin, traditional forms, and English definitions are from CC-CEDICT, maintained by MDBG and contributors, downloaded October 17, 2026. CC-CEDICT is licensed under CC BY-SA 4.0. This project extracts single-character entries, filters classifier and variant-only definitions, combines glosses, orders ordinary readings before surname readings and uses token frequencies to prioritize common readings where possible, and renders numbered pinyin as tone marks. A character can have multiple readings; the revealed card includes the available entries.

Download the derived character dataset (JSON) and build manifest with input hashes. The derived data remains CC BY-SA 4.0. The separate application code is MIT licensed. No paid dictionary API or AI service is used during practice.

Character study pages

The reading library grows in batches, with notes on independent use, selected word and expression entries, and clearly labeled names. Its current page count is shown in the reading library. New pages are prepared on request for missed characters without an existing page. These are prepared, AI-assisted learning notes, checked against the downloaded CC-CEDICT entries, rather than live AI responses. Short English glosses are adapted for learners; the notes are not an exhaustive dictionary or a guarantee of every regional usage.

Each selected word has an entry in CC-CEDICT. Some less common characters have very few useful compounds, so short pages are intentional. A few pages explicitly explain that no compound was selected from the current dictionary extract; this is not a claim that none exists elsewhere. A word absent from the subtitle token list is included only as an explicitly selected dictionary example, marked on the page and placed after corpus-attested words; an absent token is not proof that a word is never used. Where the dictionary explicitly connects a character to another form, a page may show words written with that form, explained in its usage note. Pinyin and traditional forms come from that entry; variant-only cross-references are skipped where a full entry is available. Selected vocabulary is ordered by its exact token count in the same pinned FrequencyWords 2018 Simplified Chinese subtitle corpus. Most personal names, obscure specialist terms, and redundant variants are omitted. A few names are explicitly included where they explain a character’s everyday visibility. The order is among these useful selections, not a claim to be the universal top words. Tokenization and dialogue genre affect the counts.

A Study page tag appears only when a page is prepared. Reading or opening a page does not change any recognition answer or review schedule. Study pages scroll normally; the swipe test keeps its fixed screen. More pages can be added in batches without changing the 6,000 character identifiers or account data.

Download the study content and source hashes (JSON). Dictionary and frequency adaptations, including the usage notes, are shared under CC BY-SA 4.0, with attribution to CC-CEDICT contributors / MDBG and Hermit Dave / FrequencyWords / OpenSubtitles as described above. Prepared October 17, 2026.

Your saved characters

Characters marked unfamiliar enter your collection. An unfamiliar answer is due again in 10 minutes. Consecutive recognized answers increase the interval to 1, 3, 7, 14, and then 30 days; another unfamiliar answer resets it. The active study list keeps characters until you clear them with a right swipe in the study-list test. A later unfamiliar answer in the main test restores an entry, including one you previously cleared. A recognized main-test answer preserves the current membership. Historical misses and learning records remain stored.

The Study menu shows your active list in character frequency order. Its study-list test follows that order, using single characters rather than the compound-word examples on their reading pages. A right swipe clears an entry; a left swipe keeps it. Reveal only checks the pronunciation and meaning. Back restores the previous answer and membership. Exit saves your place in a separate study session, so an unfinished main test remains available. A pass covers its finite saved queue; entries added during a pass are available on a later pass. The separate reading library retains all prepared pages after clearing. This practice creates no character-count score and does not change main-test estimates. The main test continues its randomized frequency progression across the full list; study membership does not exclude or target a character.

Anonymous practice is saved in this browser only. David can sign in to save scores, character answers, unfinished tests, and review history privately on the server and use them across devices. Sign-in is remembered for 30 days, renewed when you return. Passwords are hashed, and the study database is outside the public website. There is no public account registration in this version. On sign-in you can include your existing browser practice; signing out returns to the anonymous browser profile.

Export and import remain available for backups. If you are offline, signed-in progress stays on the device and retries saving when you return. Newer character answers are retained when device histories merge. Standard server access logs exist; optional fonts load from Google Fonts.