Blog
Wild & Free Tools

How to Subset Google Fonts and Self-Host Them Without a CDN

Last updated: February 2026 5 min read
Quick Answer

Table of Contents

  1. Step 1: Download the TTF from Google Fonts
  2. Step 2: Subset the downloaded TTF
  3. Step 3: Add to your project and write the @font-face
  4. When self-hosting is worth it
  5. Multiple weights and variable fonts
  6. Frequently Asked Questions

Google Fonts are free, but serving them from Google's CDN adds a DNS lookup, a TCP connection, and sometimes a TLS handshake to your page load — a cost that adds up on mobile connections. Self-hosting eliminates that external dependency by serving the font file from the same domain as your site. The fastest version of this approach: download the TTF from Google Fonts, subset it to the characters you actually use, and point your CSS at the smaller local file. Here is how to do it without any command-line tools.

Step 1 — Download the Font File from Google Fonts

Go to fonts.google.com and find the font you want to self-host. Click the download icon (the cloud with a down arrow) in the top right corner of the font page. Google will download a zip file containing the font family in TTF format. Extract the zip and locate the specific weight and style you need — for example, Roboto-Regular.ttf or Inter-SemiBold.ttf.

If you need multiple weights, download each one separately or grab the full family zip and subset each file individually. Each weight is a separate font file and should be subsetted and served independently.

Step 2 — Subset the TTF to Remove Unused Glyphs

Open the Font Subsetter tool and upload the TTF file you just downloaded. The tool will show you the current glyph count and file size. For an English-language site, choose Basic Latin — this covers all uppercase and lowercase letters, digits, and common punctuation in about 95 characters and removes everything else.

If your content includes accented characters (café, résumé, Müller), choose Extended Latin instead. Click to generate the subset and download the smaller file. Rename it to something clear — for example, roboto-regular-subset.woff — so it is obvious this is not the full font file.

Sell Custom Apparel — We Handle Printing & Free Shipping

Step 3 — Host the File and Write the @font-face Rule

Place the subsetted file in your project's font directory. Then add a @font-face declaration to your global CSS:

@font-face {
  font-family: 'Roboto';
  src: url('/fonts/roboto-regular-subset.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

Then use the font in your styles exactly as you would with the Google CDN version: font-family: 'Roboto', sans-serif;. Remove the Google Fonts link tag from your HTML entirely — you no longer need it.

When Self-Hosting Actually Improves Performance

Self-hosting is most beneficial for sites where the visitor is unlikely to have the Google Font cached from another site (which has become less common since browsers moved to partitioned caches in 2020). Today, self-hosting is almost always beneficial because the Google CDN cache sharing advantage no longer applies.

The combination of self-hosting and subsetting gives you the smallest possible font payload served from your own domain with no external dependencies. For static sites and JAMstack apps especially, this is the optimal setup.

Handling Multiple Weights and Variable Google Fonts

For sites that use multiple weights (400 and 700, for example), repeat the download and subset process for each weight file. Each subsetted weight is a separate @font-face declaration pointing to a separate file.

Many Google Fonts now offer a variable font version (a single TTF file that contains all weights). You can subset the variable TTF for character coverage. The subsetter removes unused glyphs from the variable font the same way it does for a static-weight file — the axis information (weight range, width range) remains intact for the retained characters.

Subset Your Google Font Right Now

Upload a TTF downloaded from Google Fonts and get a 50–90% smaller file back in seconds. Free, no account required.

Open Font Subsetter Free

Frequently Asked Questions

Is it legal to self-host Google Fonts?

Yes. All fonts on Google Fonts are distributed under open licenses (OFL, Apache, or Ubuntu) that explicitly permit self-hosting, subsetting, and modification.

Does self-hosting Google Fonts affect GDPR compliance?

Yes, in a positive way. Serving fonts from your own domain means no request goes to Google servers, eliminating the IP address transfer that has caused GDPR concerns in some European courts for the CDN version.

Should I convert the TTF to WOFF2 before self-hosting?

WOFF2 gives better compression than WOFF. If you have a way to convert (the Font Converter on this site handles TTF-to-WOFF), the extra step is worth it for high-traffic sites. For low-traffic sites, the TTF or WOFF subset is already good enough.

Jessica Rivera
Jessica Rivera Color & Design Writer

Jessica worked as a UX designer at two product companies before writing about color theory and design tools.

More articles by Jessica →
Launch Your Own Clothing Brand — No Inventory, No Risk