{"id":2414,"date":"2022-09-05T02:12:55","date_gmt":"2022-09-04T18:12:55","guid":{"rendered":"http:\/\/tiffanysmandarin.com\/?page_id=2414"},"modified":"2026-10-23T19:52:11","modified_gmt":"2026-10-23T11:52:11","slug":"tools","status":"publish","type":"page","link":"https:\/\/tiffanysmandarin.com\/index.php\/tools\/","title":{"rendered":"Tools for Chinese Learners"},"content":{"rendered":"\n<div style=\"height:9px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>Tools for Chinese Learners &#8211; OneDotDot Chinese<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,wght@0,400;0,600;0,700;1,500&amp;family=Noto+Serif+TC:wght@400;600;700&amp;family=IBM+Plex+Mono:wght@400;500;600&amp;display=swap\" rel=\"stylesheet\">\n<style>\n  :root{\n    --paper:#FFFFFF;\n    --ink:#211E1B;\n    --ink-soft:#5B564F;\n    --seal:#B23A2E;\n    --seal-deep:#8E2C22;\n    --seal-tint:#F6E4E1;\n    --line:#E7E1D6;\n  }\n  *{box-sizing:border-box;}\n  body{\n    margin:0;\n    background:var(--paper);\n    color:var(--ink);\n    font-family:'IBM Plex Mono', monospace;\n    -webkit-font-smoothing:antialiased;\n  }\n  a{color:inherit;}\n\n  \/* ---------- post header ---------- *\/\n  article{max-width:900px; margin:0 auto;}\n  .post-head{\n    padding:clamp(40px,7vw,72px) clamp(20px,5vw,0px) 30px;\n  }\n  .eyebrow{\n    font-size:11px;\n    letter-spacing:.14em;\n    text-transform:uppercase;\n    color:var(--seal);\n    display:flex;\n    align-items:center;\n    gap:8px;\n    margin-bottom:18px;\n  }\n  .eyebrow .rule{width:28px; height:1px; background:var(--seal);}\n  h1{\n    font-family:'Fraunces', serif;\n    font-weight:700;\n    font-size:clamp(32px,5vw,52px);\n    line-height:1.05;\n    margin:0 0 6px;\n    letter-spacing:-.01em;\n  }\n  .zh-sub{\n    font-family:'Noto Serif TC', serif;\n    font-size:clamp(18px,2.2vw,22px);\n    color:var(--ink-soft);\n    margin:0 0 22px;\n    font-weight:600;\n  }\n  .intro{\n    font-size:14.5px;\n    line-height:1.7;\n    color:var(--ink-soft);\n    max-width:60ch;\n    margin:0;\n  }\n\n  .lang-switch{\n    display:inline-flex;\n    border:1px solid var(--ink);\n    border-radius:999px;\n    overflow:hidden;\n    margin:22px 0 0;\n  }\n  .lang-switch button{\n    appearance:none;\n    border:none;\n    background:transparent;\n    font-family:'IBM Plex Mono', monospace;\n    font-size:12px;\n    letter-spacing:.03em;\n    padding:8px 16px;\n    cursor:pointer;\n    color:var(--ink);\n    transition:background .15s ease, color .15s ease;\n  }\n  .lang-switch button + button{border-left:1px solid var(--ink);}\n  .lang-switch button.active{background:var(--seal); color:var(--paper); border-color:var(--seal);}\n  .lang-switch button:hover:not(.active){background:var(--line);}\n\n  hr.divider{\n    border:none;\n    border-top:1px solid var(--line);\n    margin:8px 0 0;\n  }\n\n  \/* ---------- section label ---------- *\/\n  .section-label{\n    font-size:11px;\n    letter-spacing:.12em;\n    text-transform:uppercase;\n    color:var(--ink-soft);\n    margin:34px 0 16px;\n  }\n\n  \/* ---------- grid ---------- *\/\n  .grid{\n    display:grid;\n    grid-template-columns:repeat(auto-fill, minmax(300px,1fr));\n    gap:20px;\n    padding:0 0 20px;\n  }\n  .card{\n    background:var(--paper);\n    border:1px solid var(--line);\n    border-radius:18px;\n    padding:22px 22px 20px;\n    display:flex;\n    flex-direction:column;\n    gap:14px;\n    transition:border-color .18s ease, transform .18s ease, box-shadow .18s ease;\n  }\n  .card:hover{\n    border-color:var(--seal);\n    transform:translateY(-2px);\n    box-shadow:0 10px 24px -16px rgba(178,58,46,.35);\n  }\n  .card-top{\n    display:flex;\n    align-items:center;\n    gap:14px;\n  }\n  .badge{\n    width:52px;height:52px;\n    border-radius:50%;\n    background:var(--seal-tint);\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    font-size:24px;\n    flex-shrink:0;\n    border:1px solid var(--line);\n  }\n  .card-title{\n    font-family:'Fraunces', serif;\n    font-weight:700;\n    font-size:20px;\n    line-height:1.15;\n    color:var(--ink);\n  }\n  .tags{\n    display:flex;\n    gap:6px;\n    margin-top:8px;\n  }\n  .tag{\n    font-size:10px;\n    letter-spacing:.05em;\n    text-transform:uppercase;\n    padding:4px 9px;\n    border-radius:999px;\n    border:1px solid var(--line);\n    color:var(--ink-soft);\n    font-family:'Noto Serif TC', serif;\n  }\n  .tag .mark{color:var(--seal); margin-right:3px;}\n  .desc{\n    font-size:13px;\n    line-height:1.6;\n    color:var(--ink-soft);\n    margin:0;\n  }\n  .visit{\n    margin-top:auto;\n    display:block;\n    text-align:center;\n    text-decoration:none;\n    font-size:11.5px;\n    letter-spacing:.03em;\n    padding:11px 8px;\n    border-radius:999px;\n    border:1px solid var(--ink);\n    color:var(--ink);\n    transition:all .15s ease;\n  }\n  .visit:hover{background:var(--ink); color:var(--paper);}\n\n  .foot-note{\n    padding:24px 0 60px;\n    font-size:12.5px;\n    line-height:1.7;\n    color:var(--ink-soft);\n  }\n  .foot-note strong{color:var(--ink);}\n\n  @media (max-width:520px){\n    .post-head{padding-left:20px; padding-right:20px;}\n    .grid, .foot-note, .section-label{padding-left:20px; padding-right:20px;}\n  }\n  @media (min-width:521px){\n    .grid, .foot-note, .section-label{padding-left:0; padding-right:0;}\n  }\n<\/style>\n<\/head>\n<body>\n\n<article>\n\n  <div class=\"post-head\">\n    <div class=\"eyebrow\"><span class=\"rule\"><\/span> <span id=\"eyebrow\">Resources \u00b7 Tools<\/span><\/div>\n    <h1 id=\"h1\">Tools for Chinese Learners<\/h1>\n    <p class=\"intro\" id=\"intro\"><\/p>\n    <div class=\"lang-switch\" id=\"langSwitch\">\n      <button data-lang=\"en\" class=\"active\">EN<\/button>\n      <button data-lang=\"ja\">\u65e5\u672c\u8a9e<\/button>\n      <button data-lang=\"ko\">\ud55c\uad6d\uc5b4<\/button>\n    <\/div>\n  <\/div>\n\n  <hr class=\"divider\">\n\n  <p class=\"section-label\" id=\"label-own\">Free Tools by OneDotDot<\/p>\n  <div class=\"grid\" id=\"grid-own\"><\/div>\n\n  <p class=\"section-label\" id=\"label-all\">All Level Learners<\/p>\n  <div class=\"grid\" id=\"grid-all\"><\/div>\n\n  <p class=\"section-label\" id=\"label-advanced\">Advanced Learners<\/p>\n  <div class=\"grid\" id=\"grid-advanced\"><\/div>\n\n  <p class=\"foot-note\" id=\"footnote\"><\/p>\n\n<\/article>\n\n<script>\n  const i18n = {\n    en: {\n      eyebrow: \"Resources \u00b7 Tools\",\n      h1: \"Tools for Chinese Learners\",\n      intro: \"A short, honest list of the tools I actually recommend to my students \u2014 free tools I built for this site, a dictionary, a way to learn from shows you already watch, and this site itself. No fluff, no affiliate spam, just what works.\",\n      labelOwn: \"Free Tools by OneDotDot\",\n      labelAll: \"All Level Learners\",\n      labelAdvanced: \"Advanced Learners\",\n      visit: \"Visit \u2197\",\n      open: \"Try it \u2192\",\n      footnote: \"<strong>A note on the checkmarks \u2014<\/strong> \u7e41\u9ad4 \/ \u7b80\u4f53 next to a tool means it works well for both Traditional and Simplified learners, no separate setup needed.\",\n      tools: {\n        checker: \"Paste any Chinese text and see the HSK 3.0 level of every word. You can also look up characters, words and grammar points by level.\",\n        leveltest: \"A free 10-minute placement test. Fill in the blanks in Chinese sentences from HSK 1 to 7\u20139 and get your estimated level.\",\n        tocflchecker: \"Paste any Chinese text and see the TOCFL level of every word. You can also look up characters and words by band.\",\n        tocfltest: \"A free placement test for TOCFL learners. Fill in the blanks in Chinese sentences from Band A to Band C and get your estimated level.\",\n        tiffanysmandarin: \"This site. I'm working on making it actually live up to that description \u2014 one page at a time.\",\n        pleco: \"The dictionary app I point every student to first. Fast lookups, real example sentences, works offline.\",\n        reactor: \"Turns anything you're already watching into a listening lesson, with dual subtitles and instant word lookups.\"\n      }\n    },\n    ja: {\n      eyebrow: \"\u30ea\u30bd\u30fc\u30b9\u30fb\u30c4\u30fc\u30eb\",\n      h1: \"\u4e2d\u56fd\u8a9e\u5b66\u7fd2\u8005\u306e\u305f\u3081\u306e\u30c4\u30fc\u30eb\",\n      intro: \"\u751f\u5f92\u306b\u5b9f\u969b\u306b\u304a\u3059\u3059\u3081\u3057\u3066\u3044\u308b\u30c4\u30fc\u30eb\u3092\u3001\u6b63\u76f4\u306b\u77ed\u304f\u307e\u3068\u3081\u307e\u3057\u305f\u2014\u2014\u3053\u306e\u30b5\u30a4\u30c8\u306e\u305f\u3081\u306b\u4f5c\u3063\u305f\u7121\u6599\u30c4\u30fc\u30eb\u3001\u8f9e\u66f8\u3001\u3059\u3067\u306b\u898b\u3066\u3044\u308b\u756a\u7d44\u304b\u3089\u5b66\u3076\u65b9\u6cd5\u3001\u305d\u3057\u3066\u3053\u306e\u30b5\u30a4\u30c8\u81ea\u4f53\u3002\u4f59\u8a08\u306a\u5ba3\u4f1d\u306f\u306a\u3057\u3001\u52b9\u679c\u304c\u3042\u308b\u3082\u306e\u3060\u3051\u3002\",\n      labelOwn: \"OneDotDot\u306e\u7121\u6599\u30c4\u30fc\u30eb\",\n      labelAll: \"\u5168\u30ec\u30d9\u30eb\u5bfe\u8c61\",\n      labelAdvanced: \"\u4e0a\u7d1a\u8005\u5411\u3051\",\n      visit: \"\u8a2a\u554f\u3059\u308b \u2197\",\n      open: \"\u4f7f\u3063\u3066\u307f\u308b \u2192\",\n      footnote: \"<strong>\u30c1\u30a7\u30c3\u30af\u30de\u30fc\u30af\u306b\u3064\u3044\u3066 \u2014<\/strong> \u30c4\u30fc\u30eb\u540d\u306e\u6a2a\u306e \u7e41\u9ad4 \/ \u7b80\u4f53 \u306f\u3001\u7e41\u4f53\u5b57\u30fb\u7c21\u4f53\u5b57\u3069\u3061\u3089\u306e\u5b66\u7fd2\u8005\u306b\u3082\u554f\u984c\u306a\u304f\u4f7f\u3048\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u5225\u9014\u8a2d\u5b9a\u306f\u4e0d\u8981\u3067\u3059\u3002\",\n      tools: {\n        checker: \"\u4e2d\u56fd\u8a9e\u306e\u6587\u7ae0\u3092\u8cbc\u308a\u4ed8\u3051\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u5358\u8a9e\u306eHSK 3.0\u30ec\u30d9\u30eb\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u6f22\u5b57\u30fb\u5358\u8a9e\u30fb\u6587\u6cd5\u9805\u76ee\u3082\u30ec\u30d9\u30eb\u5225\u306b\u8abf\u3079\u3089\u308c\u307e\u3059\u3002\",\n        leveltest: \"\u7d0410\u5206\u3067\u3067\u304d\u308b\u7121\u6599\u306e\u30ec\u30d9\u30eb\u30c6\u30b9\u30c8\u3002HSK 1\u304b\u30897\u20139\u307e\u3067\u306e\u4e2d\u56fd\u8a9e\u306e\u6587\u306e\u7a74\u57cb\u3081\u306b\u7b54\u3048\u308b\u3068\u3001\u3060\u3044\u305f\u3044\u306e\u30ec\u30d9\u30eb\u304c\u308f\u304b\u308a\u307e\u3059\u3002\",\n        tocflchecker: \"\u4e2d\u56fd\u8a9e\u306e\u6587\u7ae0\u3092\u8cbc\u308a\u4ed8\u3051\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u5358\u8a9e\u306eTOCFL\u30ec\u30d9\u30eb\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u6f22\u5b57\u3084\u5358\u8a9e\u3092\u30d0\u30f3\u30c9\u5225\u306b\u8abf\u3079\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\",\n        tocfltest: \"TOCFL\u5b66\u7fd2\u8005\u306e\u305f\u3081\u306e\u7121\u6599\u30ec\u30d9\u30eb\u30c6\u30b9\u30c8\u3002\u30d0\u30f3\u30c9A\u304b\u3089\u30d0\u30f3\u30c9C\u307e\u3067\u306e\u4e2d\u56fd\u8a9e\u306e\u6587\u306e\u7a74\u57cb\u3081\u306b\u7b54\u3048\u308b\u3068\u3001\u3060\u3044\u305f\u3044\u306e\u30ec\u30d9\u30eb\u304c\u308f\u304b\u308a\u307e\u3059\u3002\",\n        tiffanysmandarin: \"\u3053\u306e\u30b5\u30a4\u30c8\u3067\u3059\u3002\u305d\u306e\u8aac\u660e\u306b\u3075\u3055\u308f\u3057\u3044\u30b5\u30a4\u30c8\u306b\u306a\u308b\u3088\u3046\u3001\u5c11\u3057\u305a\u3064\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002\",\n        pleco: \"\u751f\u5f92\u306b\u307e\u305a\u52e7\u3081\u308b\u8f9e\u66f8\u30a2\u30d7\u30ea\u3002\u7d20\u65e9\u3044\u691c\u7d22\u3001\u5b9f\u7528\u7684\u306a\u4f8b\u6587\u3001\u30aa\u30d5\u30e9\u30a4\u30f3\u3067\u3082\u4f7f\u3048\u307e\u3059\u3002\",\n        reactor: \"\u3059\u3067\u306b\u898b\u3066\u3044\u308b\u756a\u7d44\u3092\u30ea\u30b9\u30cb\u30f3\u30b0\u6559\u6750\u306b\u5909\u3048\u3066\u304f\u308c\u307e\u3059\u3002\u4e8c\u91cd\u5b57\u5e55\u3068\u5373\u5ea7\u306e\u5358\u8a9e\u691c\u7d22\u4ed8\u304d\u3002\"\n      }\n    },\n    ko: {\n      eyebrow: \"\ub9ac\uc18c\uc2a4 \u00b7 \ub3c4\uad6c\",\n      h1: \"\uc911\uad6d\uc5b4 \ud559\uc2b5\uc790\ub97c \uc704\ud55c \ub3c4\uad6c\",\n      intro: \"\uc81c\uac00 \ud559\uc0dd\ub4e4\uc5d0\uac8c \uc2e4\uc81c\ub85c \ucd94\ucc9c\ud558\ub294 \ub3c4\uad6c\ub4e4\uc744 \uc9e7\uace0 \uc194\uc9c1\ud558\uac8c \uc815\ub9ac\ud588\uc2b5\ub2c8\ub2e4 \u2014 \uc774 \uc0ac\uc774\ud2b8\ub97c \uc704\ud574 \uc9c1\uc811 \ub9cc\ub4e0 \ubb34\ub8cc \ub3c4\uad6c\ub4e4, \uc0ac\uc804, \uc774\ubbf8 \ubcf4\uace0 \uc788\ub294 \ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \ubc30\uc6b0\ub294 \ubc29\ubc95, \uadf8\ub9ac\uace0 \uc774 \uc0ac\uc774\ud2b8 \uc790\uccb4. \ubd88\ud544\uc694\ud55c \uad11\uace0 \uc5c6\uc774, \uc2e4\uc81c\ub85c \ud6a8\uacfc \uc788\ub294 \uac83\ub9cc.\",\n      labelOwn: \"OneDotDot \ubb34\ub8cc \ub3c4\uad6c\",\n      labelAll: \"\ubaa8\ub4e0 \ub808\ubca8\",\n      labelAdvanced: \"\uace0\uae09 \ud559\uc2b5\uc790\",\n      visit: \"\ubc29\ubb38\ud558\uae30 \u2197\",\n      open: \"\uc0ac\uc6a9\ud574 \ubcf4\uae30 \u2192\",\n      footnote: \"<strong>\uccb4\ud06c \ud45c\uc2dc \uc548\ub0b4 \u2014<\/strong> \ub3c4\uad6c \uc774\ub984 \uc606\uc758 \u7e41\u9ad4 \/ \u7b80\u4f53 \ub294 \ubc88\uccb4\uc790\uc640 \uac04\uccb4\uc790 \ud559\uc2b5\uc790 \ubaa8\ub450 \ubcc4\ub3c4 \uc124\uc815 \uc5c6\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4\ub294 \uc758\ubbf8\uc785\ub2c8\ub2e4.\",\n      tools: {\n        checker: \"\uc911\uad6d\uc5b4 \uae00\uc744 \ubd99\uc5ec \ub123\uc73c\uba74 \ubaa8\ub4e0 \ub2e8\uc5b4\uc758 HSK 3.0 \uae09\uc218\ub97c \ubcf4\uc5ec \uc90d\ub2c8\ub2e4. \ud55c\uc790, \ub2e8\uc5b4, \ubb38\ubc95 \ud56d\ubaa9\ub3c4 \uae09\uc218\ubcc4\ub85c \ucc3e\uc544\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.\",\n        leveltest: \"\uc57d 10\ubd84\uc774\uba74 \ub05d\ub098\ub294 \ubb34\ub8cc \ub808\ubca8 \ud14c\uc2a4\ud2b8\uc785\ub2c8\ub2e4. HSK 1\uae09\ubd80\ud130 7\u20139\uae09\uae4c\uc9c0 \uc911\uad6d\uc5b4 \ubb38\uc7a5\uc758 \ube48\uce78\uc744 \ucc44\uc6b0\uba74 \ub300\ub7b5\uc801\uc778 \uae09\uc218\ub97c \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.\",\n        tocflchecker: \"\uc911\uad6d\uc5b4 \uae00\uc744 \ubd99\uc5ec \ub123\uc73c\uba74 \ubaa8\ub4e0 \ub2e8\uc5b4\uc758 TOCFL \uae09\uc218\ub97c \ubcf4\uc5ec \uc90d\ub2c8\ub2e4. \ud55c\uc790\uc640 \ub2e8\uc5b4\ub97c \uae09\uc218\ubcc4\ub85c \ucc3e\uc544\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.\",\n        tocfltest: \"TOCFL \ud559\uc2b5\uc790\ub97c \uc704\ud55c \ubb34\ub8cc \ub808\ubca8 \ud14c\uc2a4\ud2b8\uc785\ub2c8\ub2e4. Band A\ubd80\ud130 Band C\uae4c\uc9c0 \uc911\uad6d\uc5b4 \ubb38\uc7a5\uc758 \ube48\uce78\uc744 \ucc44\uc6b0\uba74 \ub300\ub7b5\uc801\uc778 \uae09\uc218\ub97c \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.\",\n        tiffanysmandarin: \"\ubc14\ub85c \uc774 \uc0ac\uc774\ud2b8\uc785\ub2c8\ub2e4. \uc774 \uc124\uba85\uc5d0 \uac78\ub9de\uc740 \uc0ac\uc774\ud2b8\uac00 \ub418\ub3c4\ub85d \uc870\uae08\uc529 \ub178\ub825\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.\",\n        pleco: \"\uc81c\uac00 \ud559\uc0dd\ub4e4\uc5d0\uac8c \uac00\uc7a5 \uba3c\uc800 \ucd94\ucc9c\ud558\ub294 \uc0ac\uc804 \uc571\uc785\ub2c8\ub2e4. \ube60\ub978 \uac80\uc0c9, \uc2e4\uc81c \uc608\ubb38, \uc624\ud504\ub77c\uc778 \uc0ac\uc6a9 \uac00\ub2a5.\",\n        reactor: \"\uc774\ubbf8 \ubcf4\uace0 \uc788\ub294 \ucf58\ud150\uce20\ub97c \ub9ac\uc2a4\ub2dd \ud559\uc2b5\uc73c\ub85c \ubc14\uafd4\uc90d\ub2c8\ub2e4. \uc774\uc911 \uc790\ub9c9\uacfc \uc989\uc2dc \ub2e8\uc5b4 \uac80\uc0c9 \uae30\ub2a5 \ud3ec\ud568.\"\n      }\n    }\n  };\n\n  const ownTools = [\n    { emoji:\"\ud83d\udd0d\", title:\"HSK Level Checker\", key:\"checker\", href:\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/08\/hsk-level-checker\/\", own:true, tags:[\"\u7e41\u9ad4\", \"\u7b80\u4f53\"] },\n    { emoji:\"\ud83d\udcdd\", title:\"HSK Level Test\", key:\"leveltest\", href:\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/09\/free-chinese-level-test\/\", own:true, tags:[\"\u7e41\u9ad4\", \"\u7b80\u4f53\"] },\n    { emoji:\"\ud83d\udd0e\", title:\"TOCFL Level Checker\", key:\"tocflchecker\", href:\"https:\/\/tiffanysmandarin.com\/index.php\/tocfl-level-checker\/\", own:true, tags:[\"\u7e41\u9ad4\", \"\u7b80\u4f53\"] },\n    { emoji:\"\ud83d\udcca\", title:\"TOCFL Level Test\", key:\"tocfltest\", href:\"https:\/\/tiffanysmandarin.com\/index.php\/free-tocfl-level-test\/\", own:true, tags:[\"\u7e41\u9ad4\"] },\n  ];\n\n  const allLevel = [\n    { emoji:\"\ud83c\udf31\", title:\"Tiffanysmandarin\", key:\"tiffanysmandarin\", href:\"https:\/\/tiffanysmandarin.com\" },\n    { emoji:\"\ud83d\udcd6\", title:\"Pleco\", key:\"pleco\", href:\"https:\/\/tiffanysmandarin.com\/index.php\/2022\/09\/12\/placo\/\" },\n  ];\n\n  const advanced = [\n    { emoji:\"\ud83c\udfac\", title:\"Language Reactor\", key:\"reactor\", href:\"https:\/\/tiffanysmandarin.com\/index.php\/2022\/09\/09\/language-reactor\/\" },\n  ];\n\n  function cardHTML(t, dict){\n    const tagsHTML = (t.tags || [\"\u7e41\u9ad4\", \"\u7b80\u4f53\"]).map(tag => `<span class=\"tag\"><span class=\"mark\">\u2713<\/span>${tag}<\/span>`).join(\"\");\n    return `\n      <div class=\"card\">\n        <div class=\"card-top\">\n          <div class=\"badge\">${t.emoji}<\/div>\n          <div>\n            <div class=\"card-title\">${t.title}<\/div>\n            <div class=\"tags\">\n              ${tagsHTML}\n            <\/div>\n          <\/div>\n        <\/div>\n        <p class=\"desc\">${dict.tools[t.key]}<\/p>\n        ${t.own\n          ? `<a class=\"visit\" href=\"${t.href}\">${dict.open}<\/a>`\n          : `<a class=\"visit\" href=\"${t.href}\" target=\"_blank\" rel=\"noopener\">${dict.visit}<\/a>`}\n      <\/div>\n    `;\n  }\n\n  function render(lang){\n    const dict = i18n[lang];\n    document.getElementById(\"eyebrow\").textContent = dict.eyebrow;\n    document.getElementById(\"h1\").textContent = dict.h1;\n    document.getElementById(\"intro\").textContent = dict.intro;\n    document.getElementById(\"label-own\").textContent = dict.labelOwn;\n    document.getElementById(\"label-all\").textContent = dict.labelAll;\n    document.getElementById(\"label-advanced\").textContent = dict.labelAdvanced;\n    document.getElementById(\"footnote\").innerHTML = dict.footnote;\n    document.getElementById(\"grid-own\").innerHTML = ownTools.map(t => cardHTML(t, dict)).join(\"\");\n    document.getElementById(\"grid-all\").innerHTML = allLevel.map(t => cardHTML(t, dict)).join(\"\");\n    document.getElementById(\"grid-advanced\").innerHTML = advanced.map(t => cardHTML(t, dict)).join(\"\");\n    document.documentElement.lang = lang;\n  }\n\n  document.getElementById(\"langSwitch\").addEventListener(\"click\", (e) => {\n    const btn = e.target.closest(\"button\");\n    if(!btn) return;\n    document.querySelectorAll(\"#langSwitch button\").forEach(b => b.classList.remove(\"active\"));\n    btn.classList.add(\"active\");\n    render(btn.dataset.lang);\n  });\n\n  render(\"en\");\n<\/script>\n\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Tools for Chinese Learners &#8211; OneDotDot Chinese Resources \u00b7 Tools Tools for Chinese Learners EN \u65e5\u672c\u8a9e \ud55c\uad6d\uc5b4 Free Tools by OneDotDot All Level Learners Advanced Learners<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_wp_convertkit_post_meta":{"form":"-1","landing_page":"0","tag":"0","restrict_content":"0"},"footnotes":""},"class_list":["post-2414","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tools for Chinese Learners - OneDotDot Chinese<\/title>\n<meta name=\"description\" content=\"Advanced LearnersLanguage Reactor (watch Netflix and Youtube) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53All Level Learners Place (Dictionary) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tiffanysmandarin.com\/index.php\/tools\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tools for Chinese Learners - OneDotDot Chinese\" \/>\n<meta property=\"og:description\" content=\"Advanced LearnersLanguage Reactor (watch Netflix and Youtube) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53All Level Learners Place (Dictionary) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tiffanysmandarin.com\/index.php\/tools\/\" \/>\n<meta property=\"og:site_name\" content=\"OneDotDot Chinese\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T11:52:11+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/tools\\\/\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/tools\\\/\",\"name\":\"Tools for Chinese Learners - OneDotDot Chinese\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\"},\"datePublished\":\"2022-09-04T18:12:55+00:00\",\"dateModified\":\"2026-10-23T11:52:11+00:00\",\"description\":\"Advanced LearnersLanguage Reactor (watch Netflix and Youtube) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53All Level Learners Place (Dictionary) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/tools\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/tools\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/tools\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tools for Chinese Learners\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\",\"name\":\"OneDotDot Chinese\",\"description\":\"Learn a little Chinese every day\",\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tiffanysmandarin.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\",\"name\":\"tiffany\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"url\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"contentUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"width\":214,\"height\":214,\"caption\":\"tiffany\"},\"logo\":{\"@id\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/tiffanys_talk\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/tiffany-huang-mandarin\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tools for Chinese Learners - OneDotDot Chinese","description":"Advanced LearnersLanguage Reactor (watch Netflix and Youtube) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53All Level Learners Place (Dictionary) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tiffanysmandarin.com\/index.php\/tools\/","og_locale":"en_US","og_type":"article","og_title":"Tools for Chinese Learners - OneDotDot Chinese","og_description":"Advanced LearnersLanguage Reactor (watch Netflix and Youtube) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53All Level Learners Place (Dictionary) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53","og_url":"https:\/\/tiffanysmandarin.com\/index.php\/tools\/","og_site_name":"OneDotDot Chinese","article_modified_time":"2026-10-23T11:52:11+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/tiffanysmandarin.com\/index.php\/tools\/","url":"https:\/\/tiffanysmandarin.com\/index.php\/tools\/","name":"Tools for Chinese Learners - OneDotDot Chinese","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/#website"},"datePublished":"2022-09-04T18:12:55+00:00","dateModified":"2026-10-23T11:52:11+00:00","description":"Advanced LearnersLanguage Reactor (watch Netflix and Youtube) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53All Level Learners Place (Dictionary) \u2705\u7e41\u9ad4 \u2705\u7b80\u4f53","breadcrumb":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tiffanysmandarin.com\/index.php\/tools\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/tiffanysmandarin.com\/index.php\/tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/tiffanysmandarin.com\/"},{"@type":"ListItem","position":2,"name":"Tools for Chinese Learners"}]},{"@type":"WebSite","@id":"https:\/\/tiffanysmandarin.com\/#website","url":"https:\/\/tiffanysmandarin.com\/","name":"OneDotDot Chinese","description":"Learn a little Chinese every day","publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tiffanysmandarin.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99","name":"tiffany","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","url":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","contentUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","width":214,"height":214,"caption":"tiffany"},"logo":{"@id":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png"},"sameAs":["https:\/\/www.instagram.com\/tiffanys_talk\/","https:\/\/www.linkedin.com\/in\/tiffany-huang-mandarin\/"]}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/pages\/2414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/comments?post=2414"}],"version-history":[{"count":13,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/pages\/2414\/revisions"}],"predecessor-version":[{"id":18460,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/pages\/2414\/revisions\/18460"}],"wp:attachment":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/media?parent=2414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}