Custom web fonts are now used on 81.5% of the top million sites, and the average site in that cohort loads 238 KB of fonts as of January 2024, which is why font subsetting has moved from niche tweak to standard web hygiene (source analysis). Teams that ship custom type at scale aren't just fighting page weight. They're also managing licensing, reuse, and the risk that a font file says more than the license allows.

A practical example makes the trade-off obvious. A design system team can spend weeks polishing a custom family, then ship the full file to every visitor even when the page only uses a small fraction of the glyphs. That's why subsetting matters now, not as a nice-to-have but as a direct way to reduce transfer size, improve text rendering, and keep typography governance visible to the people who sign off on it.
For performance context, the connection to rendering metrics is straightforward. A cleaner font payload helps with the same delivery chain that affects Largest Contentful Paint, and a good starting point for that wider picture is this LCP optimization guide. On the compliance side, teams that treat typography as an asset class often pair performance work with a risk review, and that's where an internal resource like this font risk overview becomes useful in day-to-day planning.
Why Font Subsetting Matters Now
Custom web fonts are no longer a specialty choice. They're mainstream enough that the average site in the top-million cohort is carrying a 238 KB font payload, and that makes unused glyphs, alternate scripts, and decorative features a very real performance cost. If your page only needs a narrow character set, shipping a full family is like delivering a warehouse pallet when you only needed one labeled box.
That shift matters because the operational question has changed. Ten years ago, custom web fonts were used by only about 10% of websites in that same analysis, so the problem was easy to ignore. Now it's a default part of front-end work, which means typography decisions need the same discipline as images, JavaScript, and layout stability.
One key reason teams reach for subsetting
Subsetting is the shortest path from “we need this typeface” to “we're only sending what the page can use.” That keeps the visual identity intact for design teams and trims transfer cost for developers without forcing a page redesign. It also gives compliance teams a cleaner asset trail, because every extra font file is another place where licensing assumptions can drift.
Practical rule: if a font is custom, self-hosted, and used on a public site, it needs both a performance review and a license review before it ships.
The governance angle is often the one people miss. A subset can be technically correct and still be legally messy if the source license doesn't cover web use, desktop redistribution, or reuse in documents. That's why the topic belongs in the same conversation as asset inventory, not just page speed, and why a font risk overview belongs in the review stack alongside front-end checks.

A team that understands that dual purpose can make better decisions early. Subsetting is not only about saving bytes, it is about controlling what gets delivered, what gets reused, and what gets documented. That control matters for both runtime performance and the audit trail legal and compliance teams expect.
What Font Subsetting Does
A full font file carries every glyph, fallback shape, and layout rule the type designer included. A subset is a trimmed asset that contains only the code points or glyph IDs a page or document needs. That is the basic mechanism, and it is simpler than many teams expect.
Two ways to decide what stays
There are two common approaches. Glyph-based subsetting keeps specific glyph IDs, which is useful when you already know the exact shapes you need. Unicode-range subsetting keeps a code point range, like U+0000–00FF for Latin-1, which is usually easier to reason about in web workflows. The boundary matters more than the label.
Font subsetting is not just dropping letters you do not want. Tools such as FontTools' subset preserve the selected glyph set and the related OpenType layout features needed for correct shaping, and they can emit optimized OTF, TTF, or WOFF output (FontTools subset docs). That matters because ligatures, kerning, and script-specific shaping can break if you trim the wrong thing. For a fuller view of how file format choices affect delivery and licensing, see font file formats, licensing, and performance.
A subset should be built from the actual Unicode code points or explicit glyph IDs a page needs. If you guess, the file can still load while the text looks wrong.
For web delivery, WOFF2 is usually the most practical output flavor because it is designed for compressed delivery. For PDF workflows, subset fonts often show up with a visible six-character prefix and a plus sign in the embedded font name, which signals that the document contains only the used glyphs, not the whole family (PDF subset naming convention). That naming pattern is one of the easiest ways to tell a real subset from a full embed.
The clean mental model is this. A subset is not a watered-down font. It is a new asset with a narrower job, a smaller footprint, and a more explicit contract.
How Much Weight Subsetting Actually Saves
The size savings are not hypothetical, and the numbers are useful because they show what happens across different families. In a 2026 comparison of five popular web fonts, converting full WOFF2 files to Latin-1 subsets reduced file sizes by 63% to 64% across every tested font, including Inter Regular from 97 KB to 35 KB, Roboto Regular from 82 KB to 30 KB, Open Sans Regular from 91 KB to 33 KB, Noto Sans from 197 KB to 71 KB, and Source Sans Pro from 78 KB to 29 KB.
Latin-1 subset savings across five popular web fonts
| Font (Regular) | Full WOFF2 | Latin-1 Subset | Reduction |
|---|---|---|---|
| Inter Regular | 97 KB | 35 KB | 63% |
| Roboto Regular | 82 KB | 30 KB | 63% |
| Open Sans Regular | 91 KB | 33 KB | 64% |
| Noto Sans | 197 KB | 71 KB | 64% |
| Source Sans Pro | 78 KB | 29 KB | 63% |
Those results are a good baseline, but they don't describe every production case. Some performance guidance says subsetting can cut font sizes by up to 90% (performance guidance), and another guide notes that subsetting often has an almost 1:1 impact on file size because unused glyphs are removed directly (performance glossary). In practice, that spread comes from how much of the font you were using to begin with.
Why the savings vary
A Latin-only marketing page with one family and minimal features gives you a very different outcome from a multilingual product surface with bold, italic, and script-specific shaping. That's why subsetting feels so effective in one team's audit and only modest in another's. The baseline matters, the language coverage matters, and the feature set matters.
For a hands-on way to sanity-check those differences before you commit, a quick internal review with a font file analyzer can make the waste visible. When the unused portion is obvious, the decision gets easier.
The takeaway is simple. If a font ships a lot of characters you never render, that extra weight is mostly dead cargo.
Implementation Workflows for Web, Mobile, and PDF
The cleanest workflow starts at build time, before launch pressure turns font handling into a last-minute patch. For web delivery, the practical pattern is to generate a subset with explicit Unicode coverage and WOFF2 output, then expose that subset in CSS with @font-face and a matching unicode-range. The browser then requests only the file that fits the characters on the page, which keeps fetches aligned with actual content and avoids shipping unused glyphs.

Web workflow
Build the subset first, then wire it into CSS. The file and the declaration have to agree on coverage. If the font file only contains Latin-1 but the stylesheet advertises a wider range, the browser may fetch the wrong asset or fall back in ways that are hard to spot until you test with real page content.
Checklist: subset during build, emit WOFF2, declare
unicode-range, and test a page with real text, not just lorem ipsum.
That setup also gives front-end teams a cleaner audit trail. You can point to the build step, the CSS declaration, and the shipped asset as separate pieces of evidence when someone asks why a particular font file exists and what it is allowed to cover.
Mobile workflow
Mobile packaging is different because the font often lives inside asset catalogs, resource qualifiers, or deferred downloads. The practical pattern is to ship a base Latin subset, then add optional extensions for scripts or markets that need them. That keeps the install footprint reasonable while still leaving room for localization when a user's language requires more coverage.
The trade-off is operational. A smaller default bundle is easier to ship, but the team has to decide which languages get first-class coverage and which ones are pulled in later. That decision should be documented, because mobile teams eventually get asked why a font is present in one app build and absent in another.
PDF workflow
PDFs embed subsets with a visible marker in the font name, the six-character prefix plus a plus sign. That convention helps legal and production teams see that the document contains an embedded subset, not a full redistributed font. It also makes file audits easier when you need to confirm that a generated PDF matches the approved asset policy.
The same workflow matters for compliance records. A subset can reduce document size and can also make later extraction and reuse more complicated, which is useful in some publishing and protection workflows and inconvenient in others. If your output pipeline produces PDFs regularly, the font file format and license terms need to be reviewed alongside the rendering settings, not after the fact, as noted in the font file formats and licensing guide.
Trade-offs, Licensing, and Accessibility Risks
Subsetting helps, but it is not a free lunch. The most common failure mode is trimming too aggressively and then finding that a ligature, a kerning pair, or a script-specific shaping rule no longer works. Font subsetting only behaves well when the glyph set still supports the layout behavior your text needs.
Coverage is the other place teams get caught. A tight Latin subset can look fine on a predictable marketing page, then break as soon as a user types an accent, a brand name from another language, or an uploaded comment with unexpected characters. That is why a subset that looks correct in staging can still fail in a real product flow, especially when content is user-driven or localized.
Licensing and reuse are separate problems
A smaller file does not make the underlying license more permissive. Web and desktop licenses are different, and a font that is allowed in one channel may be restricted in another. Trial copies, self-hosted files, and reused assets can violate terms even when the technical setup looks clean. Governance matters as much as performance, because a compliant-looking subset can still be built from the wrong rights.
That same caution applies to PDFs. A subset can reduce file size and also make extraction and relicensing harder later, which helps in some publishing and protection workflows and creates friction in others (publishing guidance on subsetting). If your team ships customer-facing documents, check how the embedded font treatment lines up with your document policy and retention rules, and make sure the legal review is tied to the font inventory, not just the rendering settings. For teams that need a practical companion on document accessibility, this guide to make PDFs accessible is a useful reference point. For the license side of the audit trail, the web font license compliance guide helps frame the questions legal and engineering should be answering before a subset ships.
Important: this article is informational, not legal advice. A font being subsetted does not mean it is licensed for every intended use.
If you work across legal, design, and engineering, that distinction is the whole issue. Font subsetting lowers risk only when the upstream rights, the delivery channel, and the content model all line up.
Subset by Content or by Alphabet
This choice gets hand-waved a lot, and it shouldn't. Content-based subsetting ships only the glyphs that appear on a specific page. Alphabet-based subsetting ships a predefined set, like Latin-1 or Cyrillic, whether or not every character is used on that page. The best choice depends on whether your content is stable or unpredictable.
When content-based wins
Static landing pages are the cleanest fit. The copy is known, the characters are predictable, and the page won't suddenly grow user-generated text. In that setting, content-based subsetting can squeeze out every avoidable byte, and the result is easy to justify in a performance review.
When alphabet-based wins
Dynamic sites are different. A search box, comment field, localized campaign page, or product surface with user-entered text can introduce characters the page template never showed in testing. In those cases, alphabet-based subsetting is usually the safer default because it keeps the character set broad enough to avoid broken text or surprise fallbacks.
| Strategy | Best fit | Main risk |
|---|---|---|
| Content-based | Fixed marketing pages, editorial pages, predictable templates | Missing characters in dynamic or localized text |
| Alphabet-based | Multilingual apps, UGC, personalized content | Slightly larger files than a tight page-specific subset |
If the page can change after deployment, don't optimize for the copy you saw today. Optimize for the text your users will create tomorrow.
The judgment call is blunt. Content-based is more aggressive and more fragile. Alphabet-based is less surgical and more durable. For most dynamic sites, alphabet-based subsetting wins because reliability matters more than shaving a few extra glyphs off a file that's already small enough.
Auditing Subsetting Decisions in CI and Production
A subset that isn't audited can drift fast. The simplest CI checks are mechanical. Assert that every @font-face block has a unicode-range, confirm that shipped WOFF2 assets stay inside your agreed budget, and fail the build if a subset reintroduces glyphs that sit outside its declared coverage.
That's the sort of control teams already expect from modern release pipelines. If your organization uses a continuous deployment workflow, typography should fit into it the same way images and bundles do. A font asset is just another release artifact until legal or rendering problems make it special.
What to monitor after launch
Recurring scans matter because fonts change. A new page template, a translated headline, or a CMS edit can invalidate yesterday's subset. That's where a live audit trail helps, especially when it records the source file, the subset rule, and the current license status together.
This is also where a typography audit report becomes more than a performance document. A tool like Font Checker Pro can scan a live URL, PDF, image, or zipped font set and surface unused glyph ranges, self-hosted files, and license issues in one report. If you want a deeper operational checklist for that kind of review, the 2026 website font checker audit guide is the right companion piece.
Operational rule: treat subset verification like any other release gate. If it isn't checked in CI or in recurring scans, it will eventually drift out of policy.
That mindset turns font subsetting into a defensible process, not a one-off optimization. It gives developers a clear release rule, and it gives legal and compliance teams the evidence trail they usually want before they approve reuse.
A Practical Font Subsetting Checklist
- Subset during build: Generate the font file before deployment, not as a manual afterthought.
- Prefer WOFF2 for web delivery: It keeps the subset aligned with modern browser expectations.
- Declare
unicode-range: Make the browser fetch only the characters it needs. - Use alphabet-based subsets for dynamic content: It's the safer default when pages accept user input or localization.
- Log the source license beside every subset: Technical correctness doesn't replace rights review.
- Add a CI check for unused glyphs: Catch drift before it ships.
- Schedule recurring scans: Fonts change, templates change, and compliance needs a live audit trail.
This article is informational, not legal advice. A subsetted font can be fast and still be mislicensed, so the source rights need to travel with the asset.
Font Checker Pro helps teams audit live sites, PDFs, and font files so subsetting decisions don't turn into blind spots. If you need a defensible view of payload, unused glyphs, and licensing status together, visit Font Checker Pro and fold it into your next typography review.



