Me
Install the app
Put Hanzi Path on your home screen so it opens like an app.
Credits & licenses
Hanzi Path is free and open source. It is not affiliated with any other language app or with the HSK test organisers.
Hanzi Path is built from openly licensed data. npm run data (scripts/build-data.mjs) downloads each source below into data/raw/ (gitignored cache), then writes src/data/{words,sentences,grammar,course,pinyin}.json. GitHub sources are pinned to a commit so the build is reproducible; CC-CEDICT and the Tatoeba export are dated snapshots.
Each section lists: URL, License, Attribution (the exact text to show on the credits page) and Used for. The in-app credits (Me → Credits & licenses) render this file. docs/LICENSES.md has the full audit: every third-party input, its obligations and where each one is met.
Share-alike files
- Because they contain glosses derived from CC-CEDICT (CC BY-SA 4.0),
src/data/words.json,src/data/stories/*.json(glossaries) andsrc/data/stories/search.jsonare shared under CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/). - The Wikivoyage excerpts (
src/data/stories/wv-*.json) are adaptations of CC BY-SA 4.0 text and are shared under CC BY-SA 4.0 too. - The recordings in
public/audio/cmn/(audio-cmn) and the clips inpublic/audio/tts/that are stitched from audio-cmn syllables are CC BY-SA; seepublic/audio/LICENSE.txtand the NOTICE file in the repository root.
HSK 2.0 vocabulary (2012 official lists) — hskhsk.com
- URL: https://github.com/glxxyz/hskhsk.com (files
cidian/data/HSK Official With Definitions 2012 L1.txt…L6.txt, commit8a6f229c) - License: MIT
- Attribution: HSK 2012 word lists from hskhsk.com by Alan Davies, © 2020 Alan Davies, MIT License.
- Used for: which words belong to HSK 2.0 levels 1–6, their traditional forms, numbered pinyin and short English glosses (
words.json,hskfield). A few rows that merge several readings or repeat a word across levels were resolved by hand (seeREADINGSinscripts/words.mjs); garbled pinyin in a few rows was corrected against CC-CEDICT. The word lists themselves are published by Chinese Testing International (Hanban).
Complete HSK Vocabulary
- URL: https://github.com/drkameleon/complete-hsk-vocabulary (
complete.json, commit7ac65bf1) - License: MIT (its glosses come from CC-CEDICT, see below)
- Attribution: Complete HSK Vocabulary by Yanis Zafirópulos (Dr.Kameleon), © 2026 Yanis Zafirópulos, MIT License.
- Used for: HSK 3.0 levels (
hsk3), word frequency rank (freq), parts of speech (pos), and the HSK 3.0 levels 1–6 words that are not in HSK 2.0 (included withhsk: 0; their pinyin and glosses come from this file). HSK 3.0 band 7–9-only words (~4,000) are left out to keepwords.jsonsmall.
CC-CEDICT
- URL: https://www.mdbg.net/chinese/dictionary?page=cc-cedict (export
https://www.mdbg.net/chinese/export/cedict/cedict_1_0_ts_utf-8_mdbg.txt.gz) - License: Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0), https://creativecommons.org/licenses/by-sa/4.0/
- Attribution: CC-CEDICT, published by MDBG, © the CC-CEDICT contributors; based on CEDICT © 1997, 1998 Paul Andrew Denisowski. Licensed under CC BY-SA 4.0.
- Used for: traditional forms per reading, glosses where a list had none, pinyin fixes, the segmentation dictionary for example sentences, detecting traditional-only characters (to keep only simplified sentences), example characters in the pinyin chart, and a few extra non-HSK words (汤姆, 玛丽, 男孩, 女孩). Because glosses derive from CC-CEDICT, `src/data/words.json` is shared under CC BY-SA 4.0.
Tatoeba example sentences (via ManyThings.org)
- URL: https://tatoeba.org (sentence pairs file
https://www.manythings.org/anki/cmn-eng.zip, built from Tatoeba'ssentences_detailed.csv, native-speaker and proofread sentences only) - License: Creative Commons Attribution 2.0 France (CC BY 2.0 FR), https://creativecommons.org/licenses/by/2.0/fr/ — Tatoeba terms: https://tatoeba.org/en/terms_of_use
- Attribution: Example sentences from the Tatoeba Project (https://tatoeba.org), CC BY 2.0 FR, sentence pairs selected by ManyThings.org (https://www.manythings.org/anki). Each sentence credits its authors: Chinese sentence author / English translation author.
- Used for:
sentences.jsonentries withsource: "tatoeba".sourceIdis the Tatoeba id of the Chinese sentence (https://tatoeba.org/en/sentences/show/<sourceId>),authoris"<Chinese author> / <English author>". Sentences were filtered (simplified only, ≤ 14 hanzi, every word in the HSK vocabulary), segmented and given pinyin by our pipeline; the text itself is unchanged apart from removed spaces.
Native audio — audio-cmn
- URL: https://github.com/hugolpz/audio-cmn (served from jsDelivr at a pinned commit:
https://cdn.jsdelivr.net/gh/hugolpz/audio-cmn@59dbafbda8b172ffc3b8b295cd5938ae1b3de803/64k/…) - License: CC BY-SA. Word recordings: Creative Commons Attribution-ShareAlike 3.0 United States (CC BY-SA 3.0 US), https://creativecommons.org/licenses/by-sa/3.0/us/. Syllable recordings: CC BY-SA.
- Attribution: Mandarin recordings from audio-cmn by Hugo Lopez (PLIDAM, INALCO). Word recordings © 2009 Yue Tan, recorded at the Université de Caen with Shtooka Recorder (SWAC collections), CC BY-SA 3.0 US. Syllable recordings by Chen Wang, CC BY-SA.
- Used for:
Word.audio(only for words whose hanzi has a single reading) andPinyinSyllable.tones[t].audio. The app serves 24 kbps copies of the recordings it uses frompublic/audio/cmn/{hsk,syllabs}/(jsDelivr refuses this repository as too large); the CDN URL is kept only where a copy is missing. The copies are unchanged apart from the bitrate.public/audio/LICENSE.txtcarries the license notice with the files.
Generated voice audio — Kokoro
- URL: https://github.com/hexgrad/kokoro, model https://huggingface.co/hexgrad/Kokoro-82M-v1.1-zh (voices
zm_014,zf_032), G2P https://github.com/hexgrad/misaki - License: Apache License 2.0 (model weights, voices,
kokoroandmisakipackages), https://www.apache.org/licenses/LICENSE-2.0 - Attribution: Generated voice clips made with Kokoro-82M-v1.1-zh by hexgrad, Apache License 2.0.
- Used for:
public/audio/tts/*.mp3andsrc/data/audio-tts.json(npm run audio,scripts/build-audio.mjs+scripts/kokoro-synth.py), for words and sounds without a native recording. Run offline at build time; the model is not shipped. Clips that failed our tone check were instead stitched from audio-cmn syllable recordings, so those clips are CC BY-SA adaptations of audio-cmn.
Stroke order data — Make Me a Hanzi / Hanzi Writer
- URL: https://github.com/skishore/makemeahanzi, https://github.com/chanind/hanzi-writer-data (loaded at runtime from
https://cdn.jsdelivr.net/npm/hanzi-writer-data@2.0.1/<char>.json), https://github.com/chanind/hanzi-writer - License: stroke data: Arphic Public License (https://raw.githubusercontent.com/chanind/hanzi-writer-data/master/ARPHICPL.TXT); Hanzi Writer library: MIT
- Attribution: Stroke order data from Make Me a Hanzi by Shaunak Kishore, derived from fonts by Arphic Technology Co., Ltd., used under the Arphic Public License. Hanzi Writer by David Chanin, MIT License.
- Used for: character writing practice and stroke animations (fetched by the
hanzi-writerpackage in the browser; not part ofsrc/data).
pinyin-pro
- URL: https://github.com/zh-lx/pinyin-pro
- License: MIT
- Attribution: pinyin-pro by zh-lx, © 2022-present zh-lx, MIT License.
- Used for: context-aware pinyin of example sentences (with 一/不 tone changes) and the syllable inventory of the pinyin chart.
Graded stories — Storybooks Canada (Mandarin)
- URL: https://storybookscanada.ca/stories/zh/ (text from https://github.com/global-asp/sbc-source, files
zh/NNNN_*.mdanden/NNNN_*.md, commitbe28dab3; each story pagehttps://storybookscanada.ca/stories/zh/NNNN/is fetched to confirm its license) - License: Creative Commons Attribution (CC BY 3.0 for 15 stories, CC BY 4.0 for 3), https://creativecommons.org/licenses/by/3.0/ and https://creativecommons.org/licenses/by/4.0/, as stated on each story page. Stories marked CC BY-NC in the source are not used (the pipeline refuses any page whose license is not CC BY). Most stories come from the African Storybook (https://africanstorybook.org).
- Attribution: per story, shown at the bottom of its page in the app (
/stories/sbc-NNNN) and stored insrc/data/stories/index.json(attribution): title, author, illustrator, Chinese translator, source URL, original African Storybook URL, license and what we changed. Example: "What are you doing?" by Nina Orange, illustrated by Wiehan de Jager, Chinese translation by dohliam, from Storybooks Canada, CC BY 3.0. - Used for: 18 open stories in
src/data/stories/(npm run stories,scripts/build-stories.mjs). The text is unchanged apart from joining each page into one line (illustrations are left out); the English pages are the parallel translations. We add word segmentation, pinyin and glosses (CC-CEDICT / words.json). - Not used (no text copied): Mandarin Corner, Du Chinese, The Chairman's Bao, Mandarin Bean, Mandarin Companion, Chinese Reading Practice, HSK Online and StoryWeaver appear only as outbound links in "Read more online" on
/stories. StoryWeaver's Simplified Chinese books are CC BY 4.0, but their text can only be read when signed in, so none were imported.
News excerpts — Chinese Wikinews (维基新闻)
- URL: https://zh.wikinews.org (each excerpt is taken from a pinned revision,
https://zh.wikinews.org/w/index.php?oldid=<id>&variant=zh-cn, listed inscripts/stories-wiki.mjs) - License: Creative Commons Attribution 4.0 (CC BY 4.0), https://creativecommons.org/licenses/by/4.0/, as stated in the footer of each article page; the pipeline checks the page's license link. Per Wikinews:版权, text published before 30 January 2025 was released under CC BY 2.5 and may be reused under either version; we use CC BY 4.0.
- Attribution: per article, at the bottom of its page in the app (
/stories/wn-…): the article title, "Wikinews contributors" (linked to the page history), publication date, the revision used, the license and what we changed. Example: “嫦娥五號成功著陸月球表面” on Wikinews, 2020-12-02, by Wikinews contributors, CC BY 4.0. - Used for: 5 short news excerpts (6-11 sentences each) for HSK 5-6 readers: Chang'e 5 landing, Tianwen-1 reaching Mars orbit, the Yilan impact crater, the panda Xinxing's 38th birthday, Singapore's hawker culture on the UNESCO list. Changes: selected sentences only, converted to simplified characters (著陆 → 着陆); English translation, comprehension questions, segmentation, pinyin and glosses added by us. News reports are dated and reflect what was known then.
Travel-guide excerpts — Chinese Wikivoyage (维基导游)
- URL: https://zh.wikivoyage.org (pinned revisions of the 北京, 成都, 西安 and 上海 guides, listed in
scripts/stories-wiki.mjs) - License: Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0), https://creativecommons.org/licenses/by-sa/4.0/, as stated in each page footer (checked by the pipeline).
- Attribution: per excerpt, at the bottom of its page in the app (
/stories/wv-…): the page title, "Wikivoyage contributors" (linked to the page history), the revision used, the license, what we changed, and that the adaptation is shared under CC BY-SA 4.0. - Used for: 4 travel excerpts (10-13 sentences): Beijing's weather and what to pack, eating in Chengdu, Xi'an's noodles and snacks, Shanghai at a glance. Changes: selected sentences only (paragraphs naming brands and businesses left out), converted to simplified characters; English translation, questions, segmentation, pinyin and glosses added by us. Share-alike: these adaptations (
src/data/stories/wv-*.json) are licensed CC BY-SA 4.0.
Pictures — Fluent Emoji (Microsoft)
- URL: https://github.com/microsoft/fluentui-emoji (the "3D" style PNGs, commit
1ffb34c7) - License: MIT License, https://github.com/microsoft/fluentui-emoji/blob/main/LICENSE
- Attribution: Fluent Emoji by Microsoft, © Microsoft Corporation, MIT License.
- Used for: the pictures in picture quizzes and picture scenes.
npm run pictures(scripts/build-pictures.mjs) downloads only the 162 images we use at the pinned commit, resizes them to 160 px WebP intopublic/images/fluent/and writes the word → picture mappingsrc/data/pictures.json. The images are unchanged apart from the size and format;public/images/fluent/LICENSE.txtcarries the copyright and MIT license text with the files. The scene backgrounds (room, table) are drawn with CSS by us.
Fonts
- Nunito by Vernon Adams, Cyreal and Jacques Le Bailly, SIL Open Font License 1.1 (https://openfontlicense.org), self-hosted through
next/font/google. Chinese text uses the reader's system fonts; no CJK font is shipped.
Software libraries
- Next.js (© Vercel), React (© Meta Platforms), Tailwind CSS (© Tailwind Labs), ts-fsrs (the FSRS scheduling algorithm, © open-spaced-repetition), Hanzi Writer (© David Chanin), pinyin-pro (© zh-lx), Clerk's Next.js SDK (© Clerk) and node-redis (© Redis) are used under the MIT License (https://opensource.org/license/mit); each package's full license text ships with it in
node_modules/<package>/LICENSE.
HSK exam format
- Source: facts only (question counts, timing, total and pass scores) from the official HSK pages at https://www.chinesetest.cn and test-centre format pages; no exam items are copied and all instructions are reworded (see docs/FEATURES.md). HSK is a trademark of its owners; Hanzi Path is not affiliated with them.
Original content
- License: same as the Hanzi Path code.
- Used for: the 64 original graded stories and articles (24 in
scripts/stories-original.mjs, 40 themed pieces inscripts/stories-themed-hsk12.mjs,-hsk34.mjs,-hsk56.mjs→src/data/stories/), written from general knowledge without paraphrasing any particular source; all grammar explanations and grammar examples (grammar.json), sentences withsource: "original"(o1,o2, …), the HSK 1–2 unit/lesson plan (scripts/course-plan.mjs), beginner-friendly glosses for a few HSK 1–2 words, the automatic grouping of HSK 3–6 lessons, the drills and problem sets, the 340 "answer the question" / "change the sentence" build pairs (scripts/build-pairs.mjs→src/data/build-pairs.json), the picture-scene templates, the icons and the logo.
External links
- Sites listed in "Read more online" (
/stories) are run by others and are only linked, never copied or embedded.