Filery

Font Subsetter

Strip a font to only the characters your page actually uses.

Choose font file or drop it anywhere on this page TTF · OTF · WOFF · WOFF2 · EOT · SVG Processed on your device — never uploaded

How to font subsetter

  1. Load the font file.
  2. Paste the text your page will display, or define a Unicode range.
  3. Download the subset — check the before/after sizes in the result.

About this tool

Web performance advice consistently points at fonts as a significant drag on first render time, and the advice is correct. A typical web project loads three or four font weights, each covering the full Latin Extended character set — maybe 1,000 glyphs — when most pages use fewer than 200 distinct characters. Even Google Fonts applies unicode-range subsetting automatically; you are already getting a form of this with hosted fonts.

The difference is most dramatic with CJK typefaces. A Pan-CJK font covering Chinese, Japanese and Korean contains glyphs for upwards of 65,000 code points and can weigh 10 to 20 MB. A landing page written in Japanese that actually uses 400 distinct characters in a single headline can be served with a 40 KB WOFF2 subset. That is not an optimisation — it is the difference between a page that loads and one that visibly hangs.

Subsetting by pasting the actual text of your page is the most precise approach and takes thirty seconds. Unicode range mode is useful when you know the character blocks needed but not the exact glyphs — for instance, serving a font to an interface where users type in Basic Latin only.

Questions

How much smaller will the result be?
It depends entirely on the source font. A comprehensive Latin font with 500 glyphs, subsetted to the 95 printable ASCII characters, shrinks proportionally. The real wins are with CJK fonts: a full Pan-CJK font can be 15 MB because it contains glyphs for tens of thousands of Chinese, Japanese and Korean characters. A page using only 300 of them in a headline becomes a 50–80 KB subset instead — a 99% reduction.
Will the subset work if my content changes?
Only if the new content uses characters you included. That is the inherent trade-off: a subset is a snapshot of the characters you expect to need. For fully dynamic content — user-generated text, CMS-driven pages where the author can type anything — a subset is inappropriate and you should serve the complete font.
What does "keep OpenType features" do?
Features like ligatures (fi → fi), small capitals, stylistic alternates, and contextual substitutions are stored in OpenType layout tables. Keeping them increases the file size slightly but preserves the typographic behaviour the designer intended. For a heading font used purely for its letterforms, disabling them saves a bit more.