汉字 quiz — varie.lol/h ====================== A character or word is shown; pick (or type) what it means. Every answer is saved in this browser, and a character you get wrong often comes back as a higher level. THE HIDDEN MODES ---------------- All four are opened from the title, "汉字 quiz". Nothing on the page says so. Tap 汉 Tournament. The 2,500 most frequent Chinese characters in 50 levels of 50; level 1 is the most common ones. Pick the level in the list under "Level / theme / local". Tap THEME there (it turns blue) and the same list offers themes instead: words on one topic (numbers, colours, courtesy, in the city, directions, family, food, time, weather, body, animals, shopping), played like a level. LOCAL (only once there is one) offers the lists saved on this device: the shared lists you played with Quiz. "Remove it from this device" drops one. Tap LEVEL to go back to the levels. Tap 汉 again, or "Back to my list", to leave. Tap 字 Multiplayer match. Write a name, choose what to play as in the tournament (LEVEL / THEME / LOCAL: a level, a theme or a list saved on this device; the others read that list from paste.varie.lol), how many characters or words (10) and how many choices (4), then "Create match". Friends join with the 6-letter code, the invite link or the QR code. A match needs at least two players. Everyone gets the same questions; each player's row of characters turns green or red as they answer. Tap 字 again, or "Close" / "Leave", to go back to the quiz. Tap the z Radicals (the z of "quiz"). The 204 dictionary radicals of quiz (部首) in 10 levels, the ones most characters are filed under first. Where a radical changes shape inside characters both shapes are shown, like 水 氵. The examples are characters that carry the radical. "Back to my list", or a tap on the s of "radicals", leaves. Tap the q Teacher (the q of "quiz"; varie.lol/h/teacher/ opens it of quiz straight away). A card to make a list of words to share: paste Chinese text or load a file, either a text or a table with one word per line (meanings written next to the words are kept). "Words as written" keeps each word as it is; "Each character" splits them. Words in red are not in the dictionary and have no meaning, so quizzes leave them out. "Make the list" saves it on paste.varie.lol and gives a link, already copied (tap it to open it): whoever opens it sees the words all ticked, then quizzes them or saves them to their own list. "Lists made here" keeps the lists made on this device: Edit puts the words back in the box, and "Save changes" updates them behind the same link; Delete makes the link stop working (the file itself is removed a day later). These lists are also under LOCAL in the tournament and in matches. Tap the q again, or Close, to hide the card. Each mode keeps its own results: your list, the tournament and the radicals never mix. Match answers count as tournament results. THE NORMAL QUIZ --------------- Choices The slider goes from 3 choices up to all of them. All the way right is ∞: no choices, you type the meaning. Capitals, a leading "to" or "the" and one typo in a long word are forgiven; "Count as correct" fixes an answer it judged wrongly. Wrong answer The bar shows the character whose meaning you picked. Levels New = not answered yet. L1 to L5 come from how often you got a character wrong in its last 10 answers: L1 under 20%, then 20% steps up to L5 at 80% or more. Tap the chips to choose which levels are tested. Examples The panel under the character. Before you answer it shows only the Chinese; pinyin and meanings appear after. - A word shows every one of its characters with its meaning. - Piānpáng 偏旁: the parts of a character, with the dictionary radical tagged. Left out for characters written in one piece. - "split" (a small button in the panel's heading) splits each example word and explains its other characters: under 家, the example 回家 gets "回 huí to return". - "radicals" (next to it) shows the parts and the radical of those other characters: 回家 gets "回 = 囗 enclosure + 口 mouth · radical 囗". In a meaning + sound character the parts are marked (meaning) and (sound). - Tap any row (after answering) to look it up: it takes the place of the question on the card, fully explained, and its own rows can be tapped in turn. With an online list, the + left of its pinyin adds it to your words. Next goes on with the quiz. There is always somewhere to go: a part or radical lists the characters built with it, and a character with no examples lists the words it appears in. The panel remembers whether it is open, and both buttons whether they are on. All The table at the bottom. Tap a column heading to sort by it, characters again to reverse. On your own list, "Added" is when each word went in (newest first; tap again for oldest first); the tournament and radicals have no such column. "Reset progress" erases the results of the mode you are in, and only those. Search The magnifying glass after "quiz" searches everything the page knows: your list, the tournament characters and their example words, the radicals and the character parts. Type characters (家), pinyin with or without tones (jia, jiā, huijia) or an English word (home); the × at the right of the box clears it. Tap a result to look it up on the card; if you had not answered the question yet, it is skipped without counting. Next goes on with the quiz. With the box empty it shows your search history: every search with what you opened and when, newest first (the last 50, or "Show all"). It is kept long-term in this browser, up to 5,000 searches; "Clear history" (two taps) erases it. "Save words" (next to the history heading) opens a page with every character you searched, its meaning and when: tick the ones you like and Confirm to get them as a JSON list (copy or download), ready to send back to be added to default_list.txt (with an online list, Confirm adds them to it instead). Characters already in your list cannot be ticked. Each time you save is kept, and the history and the page draw a line at the last one. Listening After you answer, the round speaker button next to the pinyin reads the character or word aloud. In the Examples panel, tap the pinyin of a row (dotted underline) to hear that row. The page has no sound files: it uses the Chinese voice of your phone or computer. A character with two readings (长, 行) is read the way the phone chooses. If you hear nothing, the device has no Chinese voice yet. Android (Samsung shown; names differ a little by version): Settings > General management > Text-to-speech > Preferred engine: tap the gear next to the engine in use > Install voice data > Chinese (China) / 中文 > download. Other Android phones: Settings > System > Languages & input > Text-to-speech output, then the same gear. iPhone / iPad: Chinese voices are built in. Better ones are in Settings > Accessibility > Spoken Content > Voices > Chinese. Then close the tab and open the page again. Keyboard 1-9 pick a choice, Enter goes to the next question. Score Top right, like 日:7✓ 1✗: the right and wrong answers of the list in play. Tap it to go from 永 (all of them) to 周 (the last 7 days) to 日 (today) and back. Stats The person icon > Stats. Every answer is saved in this browser with its time (the latest 60,000), and the page draws from it: - how many answers and how many wrong, in the last 7, 30 or 90 days or all of them; - "Wrong answers per day": the share of wrong answers each day (the line, scale on the left) and how many answers you gave that day (the bars, scale on the right); tap a level (L1 to L5) to see only the answers given to characters at that level, against all of them; - "Your words by level": how many words you study each day and at which level they are (a word counts from when it was added, or from its first answer if that came earlier). My words, the tournament and the radicals each have their own. Touch or hover a chart for the numbers of that day, or "Show as a table" for all of them. Answers given before the log existed (before mid-October 2026) only count towards the levels. "Reset progress" also erases the history of that mode. The page updates itself: when you come back to the tab it checks for a new version of the page or of the list and reloads if there is one. YOUR WORDS ONLINE ----------------- Sign in with your fingerprint: the person icon next to the magnifying glass. "Make a passkey" the first time, "Sign in" afterwards. The passkey lives in your password manager (Google Password Manager on Android, iCloud Keychain on iPhone), so every phone where it is saved gets the same list after a fingerprint, with no link to copy. How: the passkey gives the page a secret (WebAuthn's PRF extension) that is the same on every device it is synced to and never leaves the phone. The list's file name on paste.varie.lol and the key that edits it are both derived from that secret. The first sign-in makes the file with the words you study then; a device that already had a list brings its extra words along. If the passkey is deleted, the list can't be found from it any more (the words stay on each device and in the file). The older ways below still work. Signed in, the person icon is also where your list is kept: - "Edit my words" shows every word you study, newest first: untick the ones to drop, type new ones in the box at the top (several at once, separated by spaces), then Confirm. A word needs a meaning in chars.txt or parts.txt to be added. Results of a dropped word are kept. - three share buttons; a tap copies that link and shows it with what it is for: Raw text the list file itself (paste.varie.lol/.txt), read-only Word list the share link below (#pick=), to pick words from Edit list the link for another device (below): keep it private Sharing your words: send the share link, varie.lol/h/#pick=. Whoever opens it sees every word of your list, all ticked (the ones they already have are greyed out). They untick what they don't want ("Select none" / "Select all" flips them all), then: Quiz plays the ticked words right away, without adding them to any list. A shared list is also kept on the device, under LOCAL in the tournament, to play again later; its results count with the tournament ones. "Back to my list" ends it. Save puts the ticked words they don't have yet in their own list in one go. If their device has no online list yet, saving makes one, with the words they study now plus these. The share link only reads your list: nobody can change it with it. Every list has such a link at the bottom of "All characters": your own list, default_list.txt (#pick=default), and the level you are on in the tournament (#pick=T12), the theme (#pick=theme-colours) or the radicals (#pick=R3). Tap it to pick from that list yourself, or send it to someone. Without signing in, the words you study are those of default_list.txt. To keep them in an online list instead, open varie.lol/h/?=newuser once. That makes a list on paste.varie.lol with the words you study now, and keeps its secret key in this browser. From then on: - the page reads the list when it opens and when you come back to the tab; - the small + in front of an example, a character of a word or a search result adds that word to it straight away (a tick: already there); - "Save words" (next to "Search history") lists everything you searched with its meaning: tick what you want and Confirm adds them all; - if the list can't be reached, "offline" shows in the header and the quiz uses the words saved on this device; additions made offline are sent the next time it can connect; - the list itself is a small text file at paste.varie.lol/.txt, one word per line with when it was added and its meaning: 2026-10-16 18:20 | 家 | home the person icon shows its address; - to use the same list on another device, open the link shown there too: varie.lol/h/#sync=.. The code (8 capital letters and digits; lists made before October 16 have 10 letters and digits) is the file's name on paste.varie.lol; the key (64 hex characters, 32 random bytes made on your phone) is what allows editing it. The server keeps only a fingerprint (SHA-256) of the key, so it can check edits but cannot make them. Keep that link private. Only the list of words is online. Your results, levels and search history stay in each browser. Every word's meaning, pinyin and examples come from chars.txt (or, for a word that isn't in it, from the meaning written in the list). The list is plain text, not encrypted. Opening ?=newuser again on a browser that already has a list does not replace it. THE FILES --------- chars.txt Every character and word the page knows, with pinyin, meaning and examples: character | pinyin | meaning | other accepted answers word | pinyin | meaning (an example) [level 1] to [level 50]: the 2,500 most frequent characters, which the tournament plays; [extra]: the studied words outside them. Built by build_chars.py from the hanzi page's frequency data, Unihan readings and CC-CEDICT meanings; do not edit it by hand, put corrections and your own examples in chars_overrides.txt and run the script again. themes.txt The tournament themes, edited by hand: a [theme Name] line, then its words in the chars.txt format. Keep the meanings within a theme distinct, since the quiz shows them side by side as choices. default_list.txt The words studied without signing in, in the same format as an online list. radicals.txt Built by build_radicals.py; the table of radicals and their meanings is inside that script. parts.txt Parts and radical of about 3,000 characters (the piānpáng). Built by build_parts.py from Make Me a Hanzi (github.com/skishore/makemeahanzi), LGPL 3 or later. Hand corrections, and the meanings of parts that are not characters, go in parts_overrides.txt. server/ The room server for matches. It runs on root@lin (pm2 app "hanzi") behind server.varie.lol/hanzi/. How to update it is written at the top of server.js.