Font Subsetter
Cuts a TrueType font down to the glyphs your text actually uses and can wrap the result as WOFF — the difference between a 4 MB and a 90 KB Korean webfont.
Cuts a TrueType font down to the characters a page actually uses and rebuilds a valid file from what is left. For Korean this is the difference between a multi-megabyte download and a couple of hundred kilobytes, because a complete Hangul font carries 11,172 syllables and a page uses a few hundred. It can emit WOFF alongside the TTF, and it re-parses its own output before offering it.
Drop a TTF file
TrueType outlines only (.ttf, or an .otf with a glyf table). Everything happens in this tab.
How it cuts
- · Keeps the glyphs for the characters you asked for and the component glyphs they reference (the closure of composite glyphs), then rewrites
glyf·loca·hmtx·hhea·maxp·cmap(formats 4 and 12) andpost. Table checksums andhead.checkSumAdjustmentare recomputed. - · The output is re-read with the same parser and only offered once it passes. The hinting programs (
fpgm·prep·cvt) are left alone. - · A character you leave out renders as an empty box. Paste the real text of the page, or for Korean turn on the 2,350-syllable KS X 1001 set.
To look at the font first, the font inspector; to change only the format, the format converter.
How to use it
Drop a TrueType file
A `.ttf`, or a `.otf` that has TrueType outlines inside. The panel says which kind the file is as soon as it opens, because a CFF font cannot be subset here.
Paste the text the page uses
Copy the real copy — headings, labels, button text, error messages. Duplicates are collapsed automatically. Anything you leave out will render as a blank box in the final page, so err towards including more.
Decide between your text and the standard set
This is the real decision. Pasting only your text gives the smallest file and breaks the moment someone types a name into a field. Turning on the KS X 1001 set of 2,350 syllables gives a larger file that survives arbitrary Korean input. Static marketing copy wants the first; anything with user content wants the second.
Build it and read the numbers
Glyphs before and after, bytes before and after, and the percentage saved. If any character you asked for is missing from the font, it is listed rather than silently dropped.
Take the file and the @font-face beside it
The declaration is generated with the weight and italic flag read from the font’s own OS/2 and post tables, so it matches the file rather than being a guess.
Common questions
It refuses my OTF. Why?
Because that file has CFF (PostScript) outlines, and subsetting those means rewriting charstrings in a different outline format — a separate program from cutting TrueType `glyf` records, which is what this does. The page says so rather than producing a broken file. Use pyftsubset from fonttools on a desktop. Inspecting the font still works.
Will kerning and ligatures survive?
No. `GPOS` and `GSUB` are dropped, and the page lists them when it does. For Latin text that means no kerning pairs and no ligatures in the subset; for Korean it rarely matters, since Hangul composition is in the glyphs themselves. If kerning is load-bearing for you, subset with fonttools instead, which can rewrite those tables.
What happens to a variable font?
It comes out as the default instance — the variation tables are not carried through. That is usually fine for a subset, since a subset is a shipping artefact rather than a working file, but if you were relying on an axis, subset the static instance you actually use.
Can it make WOFF2?
No. WOFF2 needs Brotli and the browser does not give a page one. WOFF is available and is produced with `CompressionStream("deflate")` — it typically takes another 40–50% off the TTF. WOFF2 would take roughly another 20–30% beyond that, which needs a desktop tool.
Some characters came out as empty boxes.
They were not in the character list when the subset was built. That is the whole trade of subsetting: the file only contains what you asked for. Rebuild with the missing characters added, or turn on the KS X 1001 set so arbitrary Korean input has somewhere to land.
Feed it from
Font Pairing
Suggests heading and body font pairs from system font stacks, previewed with your own Korean and English text, and hands you the CSS.
Font Inspector
Opens a font file to show its glyph coverage by block, Korean syllable count, weight, variable axes, embedding permission and licence name records.
Font Converter
Converts TTF and OTF to WOFF and back in the browser and emits the matching @font-face rule; WOFF2 needs Brotli and is refused with a pointer to desktop tools.
Colour Picker
Picks a colour on an OKLCH field, with a screen eyedropper or from an uploaded image, and copies it in any notation.
Next
These accept what this tool produces, so the result can go straight in.
CSS Beautifier & Minifier
Formats or minifies CSS without reordering anything, preserving the token stream exactly.
Font Converter
Converts TTF and OTF to WOFF and back in the browser and emits the matching @font-face rule; WOFF2 needs Brotli and is refused with a pointer to desktop tools.
Font Inspector
Opens a font file to show its glyph coverage by block, Korean syllable count, weight, variable axes, embedding permission and licence name records.
Korean Character Counter
Counts characters with and without spaces and in bytes, matching how application forms count them.
Audio Converter
Converts between MP3, WAV, FLAC, AAC, OGG and Opus with bitrate and sample-rate settings.
Extract Audio from Video
Pulls the audio track out of a video as MP3, WAV, M4A or FLAC, or copies it without re-encoding.