Font Subsetter

Reduce web font file size by creating a font subset. Keep only the characters you need, with support for custom characters, Unicode ranges, and a live preview. Boost your site performance and Core Web Vitals.

Advertisement
Advertisement

A font subsetter reduces font file sizes by extracting only the characters (glyphs) you actually need. A full font file may contain thousands of glyphs for multiple languages, but a website typically uses only a few hundred. Subsetting a font from 500 KB to 50 KB dramatically improves page load speed. This tool processes fonts locally using opentype.js -- no font files are uploaded.

Shrink font files by 80-95% without uploading them

Keep only the characters your website actually uses. Supports TTF, OTF, WOFF, and WOFF2 with Unicode ranges and live preview — all in your browser.

Faster page loads
100% private
Free unlimited

How to use

  1. 1

    Upload Font

    Upload your .TTF, .OTF, .WOFF, or .WOFF2 font file using the drag-and-drop area.

  2. 2

    Specify Characters

    Enter all the characters that are actually used on your site into the text box. You can also add common Unicode ranges, such as U+4E00-9FFF for Chinese characters.

  3. 3

    Choose Output Format

    Select your desired output format, either OTF or TTF, from the export settings.

  4. 4

    Subset and Download

    Click 'Create Subset'. The tool will generate a new, smaller font file. Download the optimized font and use it in your project.

Why Subset Your Fonts?

Faster Page Loads

Smaller font files download faster, improving the LCP (Largest Contentful Paint) metric, which is crucial for site performance.

Better User Experience

Users see your text content quicker, reducing wait times, which can lower bounce rates and increase satisfaction.

Improved Web Vitals

Page speed is a key ranking factor for search engines like Google. Optimizing fonts is a powerful way to improve your Core Web Vitals score.

100% Private

Your font files are processed locally. Never uploaded, never stored, never sent to a server.

Advertisement

Understanding Font Subsetting

Why font files are so large

Modern font files (OTF, TTF, WOFF, WOFF2) contain much more than letter shapes. A typical Latin font includes uppercase and lowercase letters, digits, punctuation, accented characters, ligatures, alternate glyphs, kerning pairs, and OpenType features (small caps, old-style figures, contextual alternates). A comprehensive font family can include 1,000+ glyphs. When you use a font on a website that only displays English text, you're shipping 90% of the font's data unused -- wasting bandwidth and slowing page load.

Font subsetting solves this by extracting only the glyphs you need. For an English-only website, you might need just the 95 printable ASCII characters -- reducing the font from 500 KB to 20-50 KB. For a site that uses basic Latin + common accented characters, you might need 200 glyphs. The subsetting tool uses opentype.js to parse the font's binary structure, extract the specified glyphs and their associated metrics (kerning, advance widths), and rebuild a valid font file with only those glyphs.

The WOFF2 format provides additional compression on top of subsetting. WOFF2 uses Brotli compression, which achieves 20-40% smaller files than WOFF. Modern browsers (Chrome, Firefox, Safari, Edge) all support WOFF2. The optimal approach is to subset the font to the needed glyphs, then encode it as WOFF2 for maximum compression. A 500 KB TTF font can be reduced to a 15 KB WOFF2 subset -- a 97% reduction.

Advertisement

Practical subsetting strategies

For most websites, the simplest strategy is to subset to the Unicode Basic Latin range (U+0020 to U+007E), which covers all ASCII characters. This is sufficient for English content. For multilingual sites, subset to the specific Unicode ranges needed for each language and use the unicode-range CSS property to load only the relevant subset for each page. Google Fonts uses this technique -- it serves different subsets based on the page's content.

When subsetting, be careful not to remove glyphs that are referenced by OpenType features. For example, small caps feature (smcp) replaces lowercase letters with small capital versions -- if you remove the small caps glyphs, the feature will break. Our tool preserves the font's feature definitions but only includes the glyphs you specify. If you need OpenType features, include all glyphs that those features reference. For body text on the web, it's often best to disable complex OpenType features and subset to just the basic letterforms.

Advertisement

How does this compare to other font subsetting tools?

A side-by-side comparison of popular font subsetting tools.

FeatureNovaToolsFont SquirrelEverything Fonts
Privacy (no upload)100% browserUploads to serverUploads to server
TTF, OTF, WOFF inputAll formatsLimited
WOFF2 output
Custom character setsLimited
Preserves OpenType features
No registrationEmail required

Font Squirrel and other server-based subsetters require uploading your font files. Our tool uses opentype.js to parse and subset fonts entirely in your browser -- your custom or licensed fonts never leave your device.

FAQ

Is my font file secure? Is it uploaded?
Yes, it is 100% secure. All font processing happens locally in your browser using a client-side JavaScript font manipulation library. Your font file is never uploaded to our servers, stored in a database, or transmitted over the network. The tool reads your font file from local memory, parses the font tables (glyphs, kerning, metrics), creates a new font containing only the characters you specified, and generates the output file — all on your device. When you close the browser tab, all font data is cleared from memory. This makes the tool safe to use for proprietary fonts, licensed commercial fonts, or brand-specific typefaces where the font file should not be exposed to third parties.
Why did my font file get BIGGER after subsetting?
This can happen with very small or highly-optimized original fonts. The tool rebuilds the font file from scratch, and this new structure can sometimes be less compact than the original. If this occurs, it means your font is already very efficient, and you should continue using the original file. This is most common with fonts that contain fewer than 100 characters to begin with, or fonts that have already been subsetted. For most fonts (which contain 500+ glyphs for full language support), subsetting to 50-100 characters will reduce the file size by 80-95%. The live preview shows the expected file size before you download, so you can decide whether subsetting is worthwhile.
Which output format should I choose: OTF or TTF?
For modern web development, both are excellent starting points. After subsetting, it is best practice to convert the resulting font to the `.woff2` format for maximum compression. WOFF2 typically achieves 30-50% smaller file sizes than TTF/OTF while maintaining perfect visual quality, and is supported by all modern browsers (Chrome, Firefox, Safari, Edge). If you need maximum compatibility (e.g., for older browsers), generate both TTF and WOFF2 and use the `@font-face` format hint to serve the appropriate file. Our tool outputs TTF or OTF — use a dedicated WOFF2 converter (like our planned Web Font Converter) for the final web-optimized format.
Can I use the subsetted font in commercial projects?
You must adhere to the license of the original font you upload. Subsetting a font does not change its license — the resulting file is still governed by the same EULA (End User License Agreement) as the original. Many commercial fonts allow subsetting for web embedding (check for 'subset' or 'web embedding' in the license terms), but some prohibit modification of any kind. Free/open-source fonts (Google Fonts, SIL OFL, Apache License) generally allow subsetting without restrictions. If you are unsure, contact the font foundry or check the license file that came with the font. The tool does not add any additional licensing restrictions to the output.
How much can I reduce my font file size?
The amount of reduction depends on the original font size and the number of characters you keep. A typical Latin font contains 400-700 glyphs (including uppercase, lowercase, numbers, punctuation, accented characters, and symbols) and weighs 80-200 KB as TTF. If you subset to only the 50-80 characters used on a typical English website (A-Z, a-z, 0-9, basic punctuation), the file size drops to 15-40 KB — an 80% reduction. CJK fonts (Chinese, Japanese, Korean) can be dramatically larger (5-20 MB) because they contain thousands of characters. Subsetting a CJK font to the 2,000 most common characters can reduce the file size by 90%+.
What characters should I include in my subset?
At minimum, include all characters that appear on your website: uppercase A-Z, lowercase a-z, digits 0-9, and all punctuation marks used in your content (periods, commas, quotes, hyphens, etc.). Also include any special characters specific to your content (currency symbols, mathematical operators, arrows). For multi-language sites, include the accented characters for each language you support (e.g., à, é, ü, ñ for French, German, Spanish). For CJK sites, include the most common 1,000-3,500 characters for your language. A good approach is to scan your website's text content and extract the unique character set — this ensures you don't miss any characters while keeping the subset as small as possible.
What are Unicode ranges and how do I use them?
Unicode ranges (like U+0041-005A for uppercase A-Z) specify a contiguous block of characters in the Unicode standard. The tool accepts both individual characters and Unicode ranges in the input field. For example, 'A-Za-z0-9' specifies all ASCII letters and digits. 'U+4E00-9FFF' specifies the CJK Unified Ideographs block (common Chinese characters). 'U+3040-309F' specifies Hiragana (Japanese). You can combine characters and ranges: 'Hello World U+4E00-9FFF' would include the characters in 'Hello World' plus all common Chinese characters. This is useful for multi-language websites that need both Latin and CJK characters.
Will subsetting affect font rendering quality?
No. Subsetting preserves the exact same glyph outlines, hinting instructions, and kerning pairs as the original font — it simply removes the glyphs you don't need. The characters that remain in the subsetted font will render identically to the original font at all sizes. The only visible difference is that characters not included in the subset will not render (they will fall back to the browser's default font or appear as blank boxes). This is why it's important to include all characters your website uses — if you forget a character, it won't be available in the subsetted font. The live preview lets you verify that all your text renders correctly before downloading.

Your Privacy is Our Priority

This tool runs entirely in your browser using a client-side JavaScript font manipulation library.

  • We do not upload, store, or analyze your files.
  • Everything you process stays on your device.
  • The tool reads your font file from local memory, parses the font tables (glyphs, kerning, metrics, hinting), creates a new font containing only the specified characters, and generates the output file — all without any network requests.
  • There are no server-side logs capturing your font filenames or character selections, no analytics tracking your usage patterns, and no persistent storage of any kind.
  • When you close the browser tab, all font data and subset configurations are cleared from memory immediately.
  • This makes the tool safe to use for proprietary fonts, licensed commercial fonts, brand-specific typefaces, and any scenario where font files should not be exposed to third-party servers.
  • The tool also works offline after the initial page load.

You might also like

Helpful guides

Advertisement