A client emailed me last spring with one line: “Our compliance review flagged the site for sending data to Google.” Nothing was broken. No tracker, no ad pixel. The culprit was the fonts. Every page load was quietly calling Google’s servers to fetch the typeface, and in the process it was handing each visitor’s IP address to Google. The fix was not a redesign. It was hosting the Google Fonts locally, on the same server as the rest of the site.
If you are reading this, you probably hit the same wall: a PageSpeed warning about render-blocking font requests, a privacy review, or a slow first paint you traced back to fonts.googleapis.com. The good news is that self-hosting Google Fonts in WordPress is easier in 2026 than it has ever been, and one of the three methods below needs no plugin at all.
The 30-second answer
Pick the method that matches how your site is built:
- On a block theme? Use the built-in WordPress Font Library. No plugin, no code.
- On a classic theme, Elementor, or another page builder? Install OMGF. It finds your Google Fonts and self-hosts them automatically.
- Comfortable with code? Download the files with google-webfonts-helper and drop in the @font-face CSS yourself.

Why host Google Fonts locally?
By default, when WordPress loads a Google Font it links to Google’s CDN. The visitor’s browser then requests the font files straight from Google. That convenience comes with three costs worth fixing.
1. Privacy and GDPR
When a browser fetches a font from Google, it sends the visitor’s IP address along with the request. In February 2022, a German court ruled that a website using the Google Fonts API this way violated the EU’s GDPR by passing a visitor’s IP address to Google without consent. The ruling did not ban Google Fonts. It said you should not leak visitor data to a third party to load them. Self-hosting removes the third party entirely: the fonts come from your server, so no visitor IP ever reaches Google.
2. Speed and Core Web Vitals
Every external font request is a separate DNS lookup and connection to a domain your visitor has not contacted yet. That adds latency before any text can render, and swapping fonts mid-load contributes to Cumulative Layout Shift. Hosting the files locally cuts the extra DNS lookups and lets the font load on the same connection as the rest of your page. If speed is your main reason for being here, it is worth reading our deeper guide on Core Web Vitals on a block theme alongside this one.
Also Read: What Is a WordPress Block Theme? The Font Library method below only works on block themes, so it helps to know what counts as one.
3. Reliability and control
If Google’s CDN is slow, blocked in a visitor’s region, or changes how it serves a font, your typography is at the mercy of someone else’s infrastructure. Local files always load with your site and never disappear on you.
Method 1: The built-in WordPress Font Library (no plugin)
This is the method most older guides miss. WordPress 6.5, released on April 2, 2024, shipped a native Font Library. In WordPress’s own words, it lets you “effortlessly install, remove, and activate local and Google Fonts across your site for any Block theme.” When you install a Google Font through it, WordPress downloads the font files to your server and serves them locally. There is no CDN call and no plugin involved.

Here is how to use it:
- Make sure you are on WordPress 6.5 or newer and running a block theme.
- Go to Appearance > Editor > Styles, then open the Styles menu and choose Typography.
- Click the Manage fonts icon, then the Install Fonts tab.
- Search the Google Fonts collection, tick the weights and styles you actually use, and click Install. WordPress downloads the files to your
wp-content/uploads/fontsfolder. - Activate the font in your typography settings and save.
The one limit: the Font Library is a block-theme feature. If you are on a classic theme or build with a page builder, use Method 2 instead.
Method 2: The OMGF plugin (best for classic themes and page builders)
OMGF is the set-and-forget option. The plugin (full name “OMGF | GDPR/DSGVO Compliant, Faster Google Fonts. Easy.”) has more than 300,000 active installations and a 4.7-star rating on WordPress.org, and is tested up to WordPress 7.0. It automatically detects the Google Fonts your theme and plugins are loading, downloads them, hosts them locally, and removes the original requests to Google’s CDN.

- Install and activate OMGF from Plugins > Add New.
- Open Settings > Optimize Google Fonts. Let the plugin scan your site so it can see which fonts are in use.
- Save and optimize. OMGF downloads the detected fonts to your server and generates a local stylesheet.
- Turn on the option to remove the original Google Fonts requests so nothing still calls the CDN.
Because OMGF works at the request level rather than inside the editor, it is the right pick for classic themes, Elementor, and any setup where fonts are pulled in by several plugins at once.
Also Read: Gutenberg vs Elementor if you are weighing a block-based build against a page builder, which decides whether Method 1 or Method 2 fits you.
Method 3: Download and host the fonts yourself with CSS
If you want full control and do not mind editing CSS, you can host the files by hand. The easiest way to get them is google-webfonts-helper, a free tool that lets you pick a Google Font, choose the weights and character sets you need, download the font files, and copy a ready-made @font-face stylesheet.

- On google-webfonts-helper, search for your font and select the styles and weights you use.
- Download the zip of font files and upload them to a folder on your server, for example
wp-content/themes/your-child-theme/fonts/. - Copy the generated @font-face CSS, fix the file paths to match where you uploaded the fonts, and add it to your theme’s stylesheet.
- Remove any existing enqueue or link tag that still loads the font from Google so the local copy is the only one in play.

Use a child theme so a theme update never wipes your custom CSS or font files.
A shortcut: start with a lightweight, font-friendly theme
If you are building or rebuilding a site, the cleanest fix is to start on a theme that does not force a CDN font call in the first place. Nexter is a lightweight block theme built for performance, and because it is a block theme it works directly with the Font Library from Method 1. Pair it with Nexter Blocks (90-plus Gutenberg blocks) and you get full design control without piling on render-blocking requests. There is a free version on WordPress.org, and paid plans start at $39 per year, with lifetime plans from $139.

How to confirm your fonts are actually loading locally
Do not assume it worked. Verify it:
- Browser DevTools: open your page, press F12, go to the Network tab, filter by Font, and reload. Every font file should come from your own domain, not
fonts.gstatic.comorfonts.googleapis.com. - PageSpeed Insights: run your URL and check that the “reduce DNS lookups” or third-party Google Fonts warnings are gone.
- View source: search the page HTML for
fonts.googleapis.com. If there are no matches, nothing is still calling Google.
Frequently asked questions
Is it legal to self-host Google Fonts?
Yes. Google Fonts are open source and licensed for free use, including downloading and hosting them on your own server. Self-hosting is the approach privacy regulators in the EU effectively pushed sites toward after the 2022 GDPR ruling.
Isn’t Google’s CDN faster than my own server?
Not in practice for fonts. Modern browsers no longer share a cached Google font across different sites, so the old CDN caching benefit is gone. A local file avoids a separate DNS lookup and connection, which is usually the faster path to first paint.
Which method should I use?
Block theme on WordPress 6.5 or newer: use the Font Library (Method 1). Classic theme or page builder: use OMGF (Method 2). Developer who wants full control: download and host with CSS (Method 3).
Will self-hosting break my fonts?
No, as long as you load the same weights and styles you were using before and remove the old Google CDN request. The Network-tab check above confirms nothing is missing.
Wrapping up
Hosting Google Fonts locally is one of the rare changes that improves privacy and speed at the same time, and it takes minutes. If you run a block theme, the Font Library makes it a no-plugin job. If you do not, OMGF handles it automatically. And if you build on a lightweight block theme to begin with, you sidestep the CDN font call entirely. Whichever route you pick, run the Network-tab check at the end so you know the fonts are truly coming from your own server.
Suggested reading
- Gutenberg Core Web Vitals: How to Speed Up a Block-Theme WordPress Site
- What Is a WordPress Block Theme? The Build-and-Choose Guide
- Gutenberg vs Elementor: An Honest Block-Builder Comparison
- Headless CMS and WordPress: What It Means in 2026
- What Is Topical Authority and How WordPress Sites Build It










