How to Fix Google Fonts GDPR Warnings in Kadence
If your Kadence site loads Google Fonts the default way, every page view sends your visitors’ IP addresses to Google’s servers. A German court ruled that a breach of GDPR back in 2022, and ordered the website owner to pay the visitor 100 euros in damages. A wave of copycat demand letters followed.
The good news? Kadence has a built-in fix that takes about 30 seconds. One toggle in the Customizer, and the theme stops sending font requests to Google. No plugin needed, no code, and it works in the free version.
But there are 2 catches most tutorials skip. The toggle only covers fonts that Kadence loads, and if Kadence can’t save the font files to your server, it quietly goes back to loading them from Google while the toggle still says ON. I re-tested everything here on Kadence 1.4.5 for this update, including breaking it on purpose, so you’ll know how to check you’re actually clean.
What’s the Actual GDPR Problem With Google Fonts?
Here’s what happens when someone visits your site. Their browser needs to download the fonts your site uses. If you’re using Google Fonts the standard way, the browser sends a request to fonts.googleapis.com to fetch them, and that request includes your visitor’s IP address.
Under GDPR, an IP address counts as personal data. Sending it to a third party (Google, in the US) without the visitor’s consent is the problem.
This isn’t theoretical. On 20 January 2022, the Regional Court of Munich (case 3 O 17493/20) ruled against a website operator for loading Google Fonts from Google’s servers. It wasn’t a government fine – the court ordered the site owner to pay the visitor who sued 100 euros in damages and to stop, with up to 250,000 euros threatened for repeat violations. In the months after, lawyers and “complaint services” sent mass letters to site owners demanding 100 to 170 euros each.
And here’s the part that surprises people: you don’t have to be in Europe for this to matter. If your visitors are in the EU, GDPR protects them. The fix is the same either way – stop loading fonts from Google’s servers and serve them from your own. Same fonts, same look, no visitor IPs sent to Google.
How Do I Fix This in Kadence?
Kadence has a built-in local fonts feature that downloads the Google Font files to your server and serves them from your domain.
- Go to Appearance > Customize > General > Performance.
- Find the Load Google Fonts Locally toggle and switch it on.
- Leave Preload Local Fonts on. It appears right below once local loading is on, and it’s already switched on by default.
- Click Publish.

That’s it. The next time any page loads, Kadence downloads the font files into a wp-content/fonts/ folder on your server, one subfolder per font family. On my test site the homepage went from 1 request to fonts.googleapis.com to 0. I walk through the whole process (and the preload setting) in my guide on loading Google Fonts locally in Kadence.
Heads up – this toggle lives in the Performance section of the General panel, not with the fonts. The Colors & Fonts > Typography section is where you pick which Google Font to use. I tripped over this myself the first time. My Kadence General settings reference covers every other switch in that Performance section.
One more thing to do straight away: if you run a caching plugin or your host caches pages, clear the cache. Cached pages still contain the old Google Fonts link until they refresh. If you’re not sure how many cache layers you have, my guide on why WordPress changes don’t show on the live site walks through each one. And if the toggle won’t stay on after you click Publish, see fixing Kadence Customizer not saving changes.
Does This Work in the Free Version?
Yes. This isn’t a Kadence Pro feature. The local fonts downloader is built into the free Kadence theme – I tested on Kadence 1.4.5 with no Pro license, and the toggle is right there in the Customizer.
You don’t need to buy anything or install an extra plugin.
How Do I Verify the Fix Is Actually Working?
Don’t just trust the toggle. Verify it. Here are 2 ways, and the first one matters more than you’d think.
Method 1: View Page Source
- Open your site in an incognito/private window (this avoids your own cached copy).
- Right-click anywhere on the page and select View Page Source.
- Press Ctrl+F (or Cmd+F on Mac) and search for
fonts.googleapis.com. - Then search for
fonts.gstatic.com.
If both searches return zero results, you’re clean. If you do find a match, look at the line. A tag with id='kadence-fonts-gfonts-css' means Kadence itself is still loading from Google.
That happens when Kadence can’t write the font files to your server. I tested it by locking the wp-content/fonts/ folder so WordPress couldn’t write to it. The toggle still showed ON, but every page went straight back to loading the fonts from fonts.googleapis.com. There’s no warning in the dashboard – the page source is the only place you’ll see it.

If that’s you, the folder isn’t writable. Kadence needs to create wp-content/fonts/ inside your wp-content folder, so ask your host to make wp-content writable by the web server (folders are usually 755). Then press Flush Local Font Files in the same Performance section and reload a page so Kadence downloads everything again.
If the match is a different tag, something besides Kadence is loading Google Fonts – skip to the plugins section below.
Method 2: Chrome DevTools Network Tab
This method catches fonts that a script loads after the page renders.
- Open your site in Chrome.
- Press F12 to open DevTools.
- Click the Network tab.
- Reload the page.
- Click the Font filter button to show only font files.
- Click each file and check its Request URL.
Every font file should come from your own domain. If you see fonts.gstatic.com, something is still loading fonts from Google.

What if Other Plugins Are Still Loading Google Fonts?
This is the gotcha that trips people up. You flip Kadence’s toggle, run the check, and still find Google Font URLs in your source. The Kadence setting only controls fonts that Kadence loads. Other plugins load their own fonts independently.
One thing you don’t need to worry about: Kadence Blocks. When you use the Kadence theme, Kadence Blocks hands its fonts to the theme, so the theme toggle covers them too. I tested it with an Advanced Heading set to a Google Font (Lobster) – with the theme toggle on, Lobster downloaded to wp-content/fonts/lobster/ along with the theme fonts. Kadence Blocks has its own Load Google Fonts Locally setting, but it only matters if you run Kadence Blocks on a different theme.
The usual culprits:
- Elementor – go to Elementor > Settings > Performance and switch on Load Google Fonts Locally. Elementor turned this off by default on every site in an update, so even if you enabled it once, check again. If you don’t use Google Fonts in Elementor at all, the Advanced tab has a Google Fonts option you can set to Disable.
- Slider Revolution – loads fonts for slide text. Check its global settings for a local fonts option.
- Contact form and page builder addons – some load Google Fonts for their own styling.
If a plugin has no local option, there are 2 fallback approaches.
Option A: OMGF plugin. “OMGF (Optimize My Google Fonts)” is a free plugin that finds Google Fonts stylesheets other plugins add the standard WordPress way and replaces them with local copies. It won’t catch everything for free – fonts pulled in through @import rules, inline @font-face code or Google’s WebFont Loader script need the paid OMGF Pro.
Option B: Switch to system fonts. This is the simplest fix. Go to Appearance > Customize > Colors & Fonts > Typography and pick a system font for your body and headings instead of a Google Font. No font files to download at all, so nothing to send anywhere.
Does Loading Fonts Locally Change How My Site Looks?
No. The font files are the exact same .woff2 files Google serves – same glyphs, same weights, same rendering. The only difference is where they come from.
Kadence also downloads every language subset the font has, not only the one you use. My test font, Merriweather, came down as 5 files: Latin, Latin Extended, Cyrillic, Cyrillic Extended and Vietnamese. The browser picks only the file it needs for the characters on the page, so Cyrillic or Vietnamese text keeps working after the switch.
You’ll also find a Google Font Subsets checklist in Colors & Fonts > Typography. I tested it: Google ignores that setting for modern browsers and sends every subset the font has whatever you tick, so you can leave it alone.

Do I Still Need a Cookie Consent Banner?
Hosting fonts locally fixes one specific GDPR issue – sending visitor IP addresses to Google. It doesn’t make your whole site GDPR compliant on its own.
If you’re using any of these, you still need a consent mechanism:
- Google Analytics or any analytics tool
- Facebook Pixel or other tracking pixels
- YouTube embeds (these also send IP data to Google)
- Advertising scripts
- Marketing automation tools
A cookie consent plugin like Complianz or CookieYes handles the broader picture. But getting Google Fonts off Google’s servers removes the exact issue the Munich ruling was about.
Quick Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
Toggle is on but page source shows kadence-fonts-gfonts-css loading from fonts.googleapis.com | Kadence couldn’t write to wp-content/fonts/ | Make wp-content writable, press Flush Local Font Files, reload a page |
| GDPR scanner still flags Google Fonts | Another plugin loads its own fonts | Check that plugin’s font settings, or try OMGF |
| Toggle is on but source still shows Google URLs everywhere | Cached pages with the old HTML | Clear every cache layer (plugin, host, CDN) and check in incognito |
| You changed fonts and old files are still in the folder | Kadence keeps old files until the folder is cleared | Press Flush Local Font Files – Kadence re-downloads what you use on the next page load |
Frequently Asked Questions
Does loading Google Fonts locally in Kadence affect my SEO?
Not in any way you’d notice. Search engines don’t care where your fonts are hosted. Locally hosted fonts skip the browser’s trip to Google’s font servers, which can help page speed slightly, so the change is neutral to positive.
Do I need to re-download fonts after every Kadence update?
No. The files live in wp-content/fonts/, outside the theme folder, so theme updates don’t touch them. Kadence also runs a cleanup once a month that empties that folder, and the next page load downloads the fonts again on its own. Your server does that download, not your visitor’s browser, so no visitor IP goes to Google.
Can I use the Kadence GDPR fonts fix with a CDN like Cloudflare?
Yes. Your CDN caches the local font files like any other file on your site. The fonts get served from your CDN instead of Google’s servers. Just purge the CDN cache after you switch the toggle on, or the old pages with the Google link stay live.
Is the 100 euro Google Fonts GDPR ruling a real risk for small blogs?
It’s a real court ruling, not a scare tactic. The Munich court ordered 100 euros in damages in 2022, and a wave of letters demanding 100 to 170 euros followed. Even when the amount is small, dealing with a letter costs time and possibly legal fees. The 30-second fix removes the issue, so there’s no reason not to do it.
Wrapping Up
Fixing the Google Fonts GDPR issue in Kadence takes about 30 seconds – flip Load Google Fonts Locally in General > Performance, leave preload on, and clear your cache. It works in the free version, the fonts look exactly the same, and it covers your Kadence Blocks fonts too.
But don’t stop at the toggle. Check your page source for fonts.googleapis.com, because a locked fonts folder sends Kadence back to Google without telling you. And if another plugin loads its own Google Fonts, deal with that one separately.