Free Tool · Chinese Websites · Page Speed

Chinese Font Subset Generator

A Chinese web font is about 6 MB. Your website uses a few thousand characters of it at most. Paste your text and get everything you need to cut the font down to a few hundred KB: character list, commands and ready-to-use CSS.

Build Your Font Subset

  • Try:

Include navigation, buttons, footer and form texts — every character the font should display. Up to 100,000 characters; for bigger sites, paste the most important templates and use the fallback file.

You paste text only — your font file stays on your computer. Results update as you type.

77Chinese characters
209characters in subset
≈ 55 KBsubset (WOFF2)
−99%vs. full font 5.8 MB

Size estimate for one weight of a sans-serif font like Noto Sans SC or Source Han Sans; serif and handwriting fonts are larger. Every extra weight (bold, light) is a separate file.

Chinese characters in your text (77)

中国数字营销专家首页关于我们服务百度推广社交媒体联系帮助欧洲企业在市场获得更多客户自年以来为提供搜索引擎优化付费告和微信小红书抖音立即咨询免取方案版权所有

1. Create the font files

Run on your computer, in the folder with your font file and the downloaded character list (Python required; works on Windows, Mac and Linux):

Commands
pip install fonttools brotli

pyftsubset NotoSansSC-Regular.otf --text-file=characters.txt "--layout-features=*" --flavor=woff2 --output-file=NotoSansSC-Regular.subset.woff2

pyftsubset NotoSansSC-Regular.otf --text-file=characters-gb2312-level1.txt "--layout-features=*" --flavor=woff2 --output-file=NotoSansSC-Regular.gb2312-level1.woff2

2. Add the CSS

Upload the WOFF2 files to /fonts/ on your own server or a CDN that works in China, then add:

CSS
/* Fallback: loaded only if a page uses a character that is not in the subset below */
@font-face {
  font-family: "Brand Sans SC";
  src: url("/fonts/NotoSansSC-Regular.gb2312-level1.woff2") format("woff2");
  font-display: swap;
  unicode-range: U+3000-303F, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FF00-FFEF;
}

/* Subset with the characters of your pages (declared last, so it is checked first) */
@font-face {
  font-family: "Brand Sans SC";
  src: url("/fonts/NotoSansSC-Regular.subset.woff2") format("woff2");
  font-display: swap;
  unicode-range: U+20-7E, U+A9, U+B7, U+2014, U+2018-2019, U+201C-201D, U+2026, U+3001-3002, U+3008-3011, U+4E13, U+4E1A, U+4E2D, U+4E3A, U+4E66, U+4E8E, U+4EA4, U+4ED8, U+4EE5, U+4EEC, U+4F01, U+4F18, U+4F53, U+4F9B, U+4FE1, U+514D, U+5173, U+52A1, U+52A9, U+5316, U+5373, U+53D6, U+544A, U+548C, U+54A8, U+56FD, U+5728, U+573A, U+591A, U+5A92, U+5B57, U+5BA2, U+5BB6, U+5C0F, U+5E02, U+5E2E, U+5E74, U+5E7F, U+5EA6, U+5F15, U+5F97, U+5FAE, U+6211, U+6237, U+6240, U+6296, U+63A8, U+63D0, U+641C, U+64CE, U+6570, U+65B9, U+66F4, U+6709, U+670D, U+6743, U+6765, U+6848, U+6B27, U+6D32, U+7248, U+767E, U+793E, U+7ACB, U+7CFB, U+7D22, U+7EA2, U+8054, U+81EA, U+83B7, U+8425, U+8BE2, U+8D39, U+9500, U+97F3, U+9875, U+9996, U+FF01, U+FF03, U+FF05-FF06, U+FF08-FF0D, U+FF1A-FF1B, U+FF1D, U+FF1F-FF20, U+FF5C, U+FF5E, U+FFE5;
}

body {
  font-family: "Brand Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;
}

3. Preload the subset

In the <head> of your pages, so the font starts loading right away:

HTML
<link rel="preload" href="/fonts/NotoSansSC-Regular.subset.woff2" as="font" type="font/woff2" crossorigin>

Estimated sizes: subset ≈ 55 KB, fallback ≈ 755 KB (only downloaded when needed). Check your font licence allows web use and subsetting.

Next Tools for Chinese Websites

All free China SEO and web tools →

How Much Subsetting Saves

We subset Noto Sans SC Regular (an open-source font with 30,890 characters) to different sizes with fontTools and compressed each file as WOFF2. Each file also includes Latin letters, digits and punctuation:

Chinese charactersWOFF2 sizeTypical use
10059 KBLogo, slogan or headlines only
500139 KBA landing page
1,000247 KBA small company website
3,755755 KBCommon characters (GB2312 level 1) — a good fallback
6,7631.3 MBAll of GB2312
30,8905.8 MBThe full font

The bold weight is about 3% larger. Every weight is a separate file — a site with regular and bold text loads two.

How the Subset and Fallback Work Together

The CSS from this tool declares the same font family twice. The small subset with your characters is listed with its exact unicode-range; the larger fallback file covers the whole Chinese character range. Browsers only download a font file when a page actually uses a character from its range — so on your current pages, only the small subset loads. When an editor later publishes a text with a new character, the fallback loads for that page and the text still appears in your brand font.

The subsetting itself runs on your computer with fontTools, the free Python library that also powers most font services. This tool never sees your font file — it only reads the text you paste.

Web Fonts and China

  • Google Fonts is not an option. Google services are not reliably reachable from mainland China. A stylesheet from fonts.googleapis.com can delay the whole page until it times out. Host fonts yourself, on a server or CDN that is fast in China.
  • Licences are enforced. Chinese type foundries are known for pursuing unlicensed commercial use. Open-source fonts like Noto Sans SC / Source Han Sans (SIL Open Font License) allow subsetting and web use.
  • System fonts are good. PingFang, Microsoft YaHei and Android's built-in fonts display Chinese well. Many leading Chinese websites use no web font for body text at all.
  • Simplified and Traditional need different fonts. Use an SC font for mainland China and a TC or HK font for Taiwan and Hong Kong — character shapes differ.
Before you launch

Chinese Web Fonts: Checklist

For developers and agencies building or relaunching a website for Chinese users.

  1. Decide if you need a web font

    A system font stack loads instantly. Use a web font for brand headlines, or where design consistency really matters. Build a font stack →

  2. Use a font licensed for the web

    Check the licence covers web embedding and subsetting — or use an open-source font.

  3. Subset every weight, serve WOFF2

    One subset per weight you use. Limit weights to two where possible.

  4. Self-host — no Google Fonts

    Fonts, scripts and stylesheets from Google domains slow down or break pages in mainland China.

  5. Use font-display: swap and preload the subset

    Text stays visible while the font loads, and the most important file starts loading first.

  6. Keep a fallback and re-subset after big content changes

    New products, blog posts and names bring new characters. Re-run the subset when you update templates or add many pages.

  7. Test from inside China

    Load the site on a Chinese mobile network, not only through a VPN, and watch for resources that never finish loading.

From building and optimising websites for Chinese users since 2012.

Get your Chinese website checked

Frequently Asked Questions

A Latin font needs a few hundred glyphs; a Chinese font needs thousands. Noto Sans SC contains more than 30,000 characters, and one weight is about 6 MB even as compressed WOFF2 — too much for a web page, especially on mobile. A typical company website uses only 1,000–2,500 different characters.
Subsetting creates a smaller copy of a font that only contains the characters you need. For a Chinese website that usually means the characters used on your pages plus Latin letters, digits and punctuation. The file shrinks from megabytes to a few hundred kilobytes.
This tool collects the characters and writes the commands. The subsetting itself runs on your computer with fontTools, a free Python tool: install it with pip install fonttools brotli, put your font file and the downloaded characters.txt in one folder, and run the pyftsubset command shown. Your font file never leaves your computer.
That is what the fallback file is for. The CSS loads it only when a page contains a character the subset doesn't have — for example after an editor publishes a new article. Without a fallback, the browser shows that character in a system font, which looks slightly different. Re-run the subset when your content changes a lot.
Google Fonts is not reliably reachable from mainland China, so fonts loaded from it often fail or block page rendering there. Host font files on your own server or on a CDN with nodes in China. The same applies to other resources from Google domains.
Open-source fonts under the SIL Open Font License, such as Noto Sans SC / Source Han Sans and Noto Serif SC / Source Han Serif, can be subset and used on websites. Several Chinese companies also publish free fonts with their own licence terms. Commercial Chinese fonts need a web licence — Chinese type foundries actively enforce their rights.
Not always. Every Chinese system has good Chinese fonts — PingFang on Apple devices, Microsoft YaHei on Windows, and vendor fonts on Android. A well-ordered font stack without a web font is the fastest option. Use a web font when your brand needs one consistent typeface, for headlines for example.
Yes, it is free and needs no sign-up. You paste text, not font files — nothing is uploaded, stored or logged.

Built by Jademond Digital, a Chinese digital marketing agency founded in Guangzhou in 2012. Size measurements: Noto Sans SC (SIL Open Font License), subset with fontTools. About us →