
Key takeaways
- Removing unused glyphs is the fastest way to reduce font file size without losing quality - and it requires no design changes.
- FontForge is free, open-source, and works on Windows, macOS, and Linux.
- In this example, Inter Regular goes from 302 KB to ~10 KB (30× smaller) after removing non-Latin glyphs.
- Export as WOFF2 - the most compressed, widely-supported web font format available.
- Font optimization is one of the highest-impact fixes in a broader Webflow page speed audit.
FontForge is a free, open-source font editor that lets you remove unused glyphs from a font file, reduce its size by up to 97%, and export a lightweight WOFF2 file - without any visible change to how the font looks on screen. This guide walks through the full process step by step.
What is FontForge?
FontForge is a free, open-source font editor available for Windows, macOS, and Linux. It gives you full control over the glyphs inside a font file - letting you edit, remove, or reorder characters and export the result in any web font format including WOFF2.
Most web developers reach for FontForge specifically for one task: glyph subsetting - removing characters the website never uses. A standard font file often contains thousands of glyphs covering Latin, Cyrillic, Greek, Arabic, extended punctuation, and special symbols. If your site only uses English, you are forcing every visitor to download characters they will never see.
FontForge lets you keep only the characters you need and discard the rest. The font looks and behaves identically on screen - it is just dramatically smaller.
Why font file size matters for page speed
Fonts are one of the most overlooked sources of page weight. Because they load globally - on every page, for every visitor - even a small reduction compounds across the entire site. As part of a complete Webflow page speed optimization strategy, font subsetting consistently delivers one of the highest effort-to-impact ratios.
The most common reasons font files become unnecessarily large:
- The font includes character sets for dozens of languages the site never uses
- Multiple font weights (400, 500, 600, 700, 800) load on every page, each as a separate file
- Fonts are served in TTF or OTF format instead of the more compressed WOFF2
- External font APIs (Google Fonts, Adobe Fonts) load additional blocking requests
If your site loads multiple font families or weights, the cumulative weight can easily reach 500 KB–1 MB of fonts alone. Each of those kilobytes counts toward Webflow's bandwidth limits and increases Time to First Byte and First Contentful Paint on every page load.
Results: how much can you actually save?
Before walking through the steps, here is the concrete result from this example - optimizing Inter Regular using FontForge with a Latin-only subset:
| Metric | Before optimization | After optimization |
|---|---|---|
| Font file size | 302 KB (Inter Regular) | ~10 KB |
| Size reduction | - | ~30× smaller (96.7%) |
| Glyphs included | Full charset (all languages) | Latin only (A–Z, a–z, 0–9, punctuation) |
| Visual quality | - | Identical - no visible change |
| Export format | TTF / OTF | WOFF2 |
That is a 96.7% reduction in font file size with zero visual change. If your site loads 3–4 font weights, the same process applied to each can save 800 KB–1.2 MB of total page weight - a meaningful improvement to Lighthouse scores and Core Web Vitals across every page on the site.
QUICK WIN: Even reducing a font from 300 KB to 80 KB (a conservative subset) across 4 weights saves 880 KB per page load. At 10,000 monthly visits, that is 8.8 GB of bandwidth saved per month.
How to remove unused glyphs in FontForge: step by step
This tutorial uses Inter Regular (302 KB) as the example font. The same process applies to any TTF, OTF, or WOFF font file.
Step 1- Download and install FontForge
Download FontForge from the official FontForge website. It is available for Windows, macOS, and Linux - and completely free. Install and launch it.
Step 2- Open your font file
In FontForge, go to File → Open and select the font file you want to optimize. FontForge accepts TTF, OTF, WOFF, and WOFF2 files.
Once loaded, FontForge displays a glyph grid - a visual map of every character in the font. For Inter Regular, this includes several hundred glyphs spanning Latin, Cyrillic, Greek, extended punctuation, and special symbols.
Step 3 - Select the glyphs you want to keep
Click and drag to select the characters your site actually uses. For a standard English-language website, this typically means:
- Uppercase letters: A–Z
- Lowercase letters: a–z
- Numbers: 0–9
- Common punctuation: . , ! ? : ; ' " ( ) - - / @ # & % $ + = space
- Any accented characters your content uses (é, ü, ñ, etc.)
Hold Shift and click to extend the selection. Hold Ctrl (Windows/Linux) or Cmd (macOS) to add individual glyphs to the selection.
QUICK WIN: Not sure which characters your site uses? Copy all text from your site into a text editor and scan it. Or use Glyphhanger (a Node.js CLI tool) to automatically crawl your site and identify the exact glyph set needed.
Step 4 - Invert the selection
You have selected the glyphs you want to keep. Now invert the selection to select everything you want to remove:
Edit → Select → Invert Selection
FontForge will now highlight all the glyphs that are not in your keep list - all the Cyrillic characters, Greek alphabet, extended symbols, and any other characters your site does not use.

Step 5 - Remove the unused glyphs
With the unused glyphs selected, delete them:
Encoding → Detach & Remove Glyphs
This permanently removes the selected characters from the font file and keeps only the glyphs in your original selection. The glyph grid will now show a much smaller, cleaner character set.
Step 6 - Export as WOFF2
Generate the optimized font file:
File → Generate Fonts
In the format dropdown, select WOFF2. WOFF2 uses Brotli compression and is the most efficient web font format available - significantly smaller than TTF, OTF, or even WOFF. It has full support in all modern browsers.
During export, FontForge may show warnings about em-size or other metrics. In most cases these can safely be ignored for subsetting purposes.
Your exported WOFF2 file now contains only the glyphs your site needs. Upload it to Webflow via Project Settings → Fonts → Upload a font, then assign it to your elements as you would any custom font.
Naming tip: When uploading a subsetted font to Webflow, rename it slightly (e.g. 'Inter Web' instead of 'Inter') so Webflow does not attempt to reconnect to the Google Fonts API for the same family name. This ensures your custom file is always used.
When font subsetting is worth doing
Subsetting makes the most sense when:
- Your site loads multiple font weights (each weight is a separate file - all benefit from subsetting)
- The font file is over 100 KB and your site only uses a standard Latin character set
- You are targeting Core Web Vitals improvements, particularly LCP and FCP
- You want to reduce Webflow bandwidth usage across high-traffic pages
- You are self-hosting fonts rather than loading them from Google Fonts or Adobe Fonts
Subsetting is less necessary when:
- You are using Google Fonts or Adobe Fonts CDN - these services already handle subsetting automatically via unicode-range descriptors
- The font is a variable font - subsetting variable fonts is more complex and not covered by this guide
- The font already has a small file size (under 30 KB) - the effort may not be worth it
FontForge alternatives: other ways to reduce font file size
FontForge is the most powerful option, but it is not the only one. Here is how it compares to other tools:
| Tool | Best for | Interface | Free? |
|---|---|---|---|
| FontForge | Full glyph control, custom subsetting | Desktop app | Yes - open source |
| Transfonter | Quick format conversion + subsetting | Browser (online) | Yes (free tier) |
| Font Squirrel | Webfont kit generation | Browser (online) | Yes |
| Glyphhanger (CLI) | Automated subsetting from page crawl | CLI / Node.js | Yes - open source |
| Adobe Fonts / Google Fonts | Fast font delivery, no subsetting needed | CDN embed | Yes (with caveats) |
For most Webflow projects, FontForge or Transfonter will cover all subsetting needs. If you are working in a team that runs automated performance pipelines, Glyphhanger is worth exploring - it can crawl your live Webflow site and generate an exact subset based on characters that actually appear on-page, eliminating any guesswork.
Font optimization as part of a broader performance strategy
Font subsetting is one of several font-specific fixes in a complete performance workflow. If you are working through a full Webflow page speed optimization checklist, the full font optimization sequence looks like this:
- Subset fonts with FontForge (this guide) - remove unused glyphs from each weight
- Export as WOFF2 - always use WOFF2 over TTF, OTF, or WOFF
- Limit font families and weights - audit your project and remove any weight where the visual difference is negligible
- Remove external font API connections - upload fonts as custom files and rename them to prevent Webflow reconnecting to Google Fonts or Adobe Fonts
- Consider system fonts for body text - system fonts require zero download and can eliminate body font loading entirely
Together, these steps typically reduce total font weight from 400–800 KB to under 50 KB - enough to produce a measurable improvement in Lighthouse scores and Core Web Vitals on any page. If your site also handles high traffic, reducing font file size contributes directly to lower Webflow bandwidth costs since every font file download counts against your plan's bandwidth allocation.
Summary
Removing unused glyphs is the single most impactful way to reduce font file size without any visual change. For a standard English-language Webflow site:
- Open the font in FontForge
- Select the glyphs you need (A–Z, a–z, 0–9, punctuation)
- Invert the selection and use Detach & Remove Glyphs
- Export as WOFF2
- Upload to Webflow and rename to prevent API reconnection
Applied to every font weight your site loads, this process typically reduces total font weight by several hundred kilobytes - a meaningful, measurable improvement to page speed, Core Web Vitals, and Webflow hosting costs. It sits alongside image compression and script auditing as one of the three fastest wins in any Webflow performance optimization project.
.avif)

.avif)

