Descrição
LocalFonts automatically detects, downloads, and serves Google Fonts from your own server instead of loading them from Google’s external CDN. No manual configuration needed — just activate and your site’s fonts are instantly self-hosted.
Why Self-Host Google Fonts?
Loading web fonts from Google’s servers (fonts.googleapis.com and fonts.gstatic.com) sends your visitors’ IP addresses to Google with every page load. This raises serious privacy concerns and has legal implications under data protection regulations worldwide.
- GDPR & DSGVO Compliance — European courts have ruled that loading Google Fonts from Google’s servers without consent violates GDPR (General Data Protection Regulation) / DSGVO (Datenschutz-Grundverordnung). A German court fined a website operator for transmitting visitor IP addresses to Google via externally loaded fonts. Self-hosting fonts eliminates this risk entirely.
- Privacy Protection — When fonts are served locally, zero connections are made to Google’s servers. No visitor IP addresses are transmitted, no tracking occurs, and no third-party requests are made. Your visitors’ data stays on your server.
- Faster Page Load Times — Eliminate extra DNS lookups, TCP connections, and TLS handshakes to fonts.googleapis.com and fonts.gstatic.com. Local fonts load from the same server as your site, reducing latency and improving Core Web Vitals metrics including Largest Contentful Paint (LCP), First Contentful Paint (FCP), and Cumulative Layout Shift (CLS).
- Better PageSpeed & Performance Scores — Google PageSpeed Insights, GTmetrix, and Lighthouse often flag external font loading as a performance bottleneck. Self-hosting fonts eliminates “Reduce the impact of third-party code” and “Preconnect to required origins” warnings.
- Reliability & Uptime — No dependency on Google’s CDN availability. Your fonts work even if Google’s servers are slow, blocked, or unreachable in certain regions or corporate networks.
- Simplified Cookie Consent — By eliminating third-party connections to Google, you reduce the scope of your cookie consent and privacy policy requirements, as there are fewer external services to disclose.
What Google Font References Does It Catch?
This plugin intercepts Google Fonts loaded through every common method used by WordPress themes, plugins, and page builders:
- Enqueued stylesheets — Fonts registered and enqueued via
wp_enqueue_style()using the Google Fonts CSS API v1 (/css?family=) and CSS API v2 (/css2?family=) - Hardcoded
<link>tags — Font references hardcoded directly in theme templates, header.php, footer.php, or plugin output - CSS
@import url(...)rules — Import statements in inline<style>blocks and external stylesheets - CSS
@import "..."rules — Import statements without theurl()wrapper (valid CSS syntax) - Google Material Icons — References to the
/iconendpoint at fonts.googleapis.com for Material Design icon fonts and Material Symbols - Protocol-relative URLs — URLs starting with
//fonts.googleapis.com(without https:) - HTML-encoded URLs — URLs containing
&and other HTML entities commonly output by themes and page builders
It also removes dns-prefetch and preconnect resource hints for fonts.googleapis.com and fonts.gstatic.com, ensuring your site makes absolutely zero connections to Google’s font servers.
How It Works
- Detect — On the first page load after activation, the plugin automatically identifies all Google Font URLs across your entire site.
- Download — Font files are downloaded in the background via WP-Cron so visitors experience no delay. The plugin requests WOFF2 format — the smallest and fastest web font format supported by all modern browsers.
- Rewrite — All Google Font references in your page HTML are rewritten to point to the locally hosted copies on your server.
- Serve — Subsequent page loads serve the cached local font files instantly from your own server with no external requests.
Font files are stored in wp-content/uploads/lgfl-fonts/ with each unique font URL getting its own subdirectory.
Compatibility
LocalFonts works with virtually any WordPress setup:
- Any WordPress theme — flavor starter themes, starter themes, commercial themes, custom themes, classic themes, and block themes (Full Site Editing)
- Page builders — Elementor, Beaver Builder, Divi, WPBakery, Brizy, Oxygen, Bricks, Breakdance, Kadence, GeneratePress, Avada, and more
- WooCommerce — Catches fonts loaded by WooCommerce and its extensions
- Block Editor (Gutenberg) — Works with the native WordPress block editor and block-based themes
- Multilingual plugins — Compatible with WPML, Polylang, TranslatePress, and other translation solutions
- Caching plugins — Works alongside WP Super Cache, W3 Total Cache, LiteSpeed Cache, WP Rocket, and other caching solutions
- Any plugin that loads Google Fonts — If it loads fonts from fonts.googleapis.com, LocalFonts will catch and self-host them
Features
- Zero configuration — Works automatically on activation with no settings to configure
- Enable/disable toggle — Easily turn local font hosting on and off from Settings
- Manual download button — Pre-download all detected Google Fonts with one click
- System status dashboard — Check write permissions, filesystem method, and font storage directory status at a glance
- Async background downloads — Fonts are downloaded via WP-Cron in the background so the first visitor is never delayed
- Clean uninstall — All downloaded font files and plugin settings are removed when you uninstall the plugin, following WordPress best practices
External services
This plugin connects to the Google Fonts API (fonts.googleapis.com) and the Google Fonts CDN (fonts.gstatic.com) to download font files for local hosting. These connections happen only when a Google Font URL is first detected on your site and is not yet cached locally.
What is sent: the Google Font family name and variant parameters as they appear in the requesting CSS URL (e.g., family=Roboto:wght@400;700). No site data, user data, or personal information is transmitted.
When it is sent: once per unique Google Font URL, during an asynchronous WP-Cron job triggered the first time the font is seen. All subsequent page loads serve font files from your own server with zero external requests.
Service provider: Google LLC
Terms of Service: https://developers.google.com/fonts/faq#what_does_using_the_google_fonts_api_mean_for_the_privacy_of_my_users
Privacy Policy: https://policies.google.com/privacy
Instalação
- Upload the
localfontsfolder to/wp-content/plugins/. - Activate the plugin through the Plugins menu in WordPress.
- That’s it. Google Fonts are automatically downloaded and served from your server.
Optional: Visit Settings > LocalFonts to check system status or manually trigger font downloads.
Perguntas frequentes
-
Does this plugin work with any WordPress theme?
-
Yes. LocalFonts works at two levels: it filters WordPress-enqueued stylesheets (via the style_loader_src hook) and also processes the full HTML output to catch hardcoded Google Font references from any theme or plugin. Whether your theme uses wp_enqueue_style, hardcoded link tags, or CSS @import rules to load fonts from fonts.googleapis.com, LocalFonts will intercept and self-host the font files.
-
Is this plugin GDPR / DSGVO compliant?
-
When active and working correctly, LocalFonts ensures zero connections are made to Google’s servers — no font file loading from fonts.gstatic.com, no DNS prefetch, and no preconnect hints to fonts.googleapis.com. This directly addresses the core GDPR (General Data Protection Regulation) and DSGVO (Datenschutz-Grundverordnung) concern of transmitting visitor IP addresses to third-party servers without consent.
-
Does it work with Google Material Icons and Material Symbols?
-
Yes, fully supported. The plugin intercepts both
fonts.googleapis.com/css(regular Google Fonts) andfonts.googleapis.com/icon(Google Material Design Icons and Material Symbols) endpoints, downloading and serving all icon font files locally. -
Does it work with page builders like Elementor, Divi, or Beaver Builder?
-
Yes. Any Google Fonts that appear in the page HTML — whether added by Elementor, Beaver Builder, Divi Builder, WPBakery Page Builder, Brizy, Oxygen Builder, Bricks Builder, or any other page builder — will be intercepted and served from your local server.
-
What font formats are downloaded?
-
The plugin requests fonts as a modern browser (Chrome user agent), so Google serves WOFF2 files — the smallest and fastest web font format with broad browser support including Chrome, Firefox, Safari, Edge, and Opera.
-
Where are the font files stored?
-
In
wp-content/uploads/lgfl-fonts/. Each unique Google Font URL gets its own subdirectory containing the rewritten CSS file and the individual WOFF2 font files. -
Will it slow down my site?
-
No — it makes your site faster. By eliminating external DNS lookups and connections to fonts.googleapis.com and fonts.gstatic.com, page load times decrease. The very first page load after activation may be marginally slower as fonts are downloaded in the background via WP-Cron, but all subsequent page loads serve fonts from your local server cache instantly.
-
What happens if a font download fails?
-
The plugin gracefully falls back to the original Google Font URL so fonts still load for your visitors. Failed downloads are recorded in the plugin log (stored in the
lgfl_logsoption) for diagnostics. -
What happens when I deactivate the plugin?
-
All plugin settings and downloaded font files remain in place when you deactivate, so you can re-enable without re-downloading. Everything is cleaned up automatically when you uninstall the plugin, per WordPress best practices.
-
Does it work with WordPress caching plugins?
-
Yes. LocalFonts is compatible with all major caching plugins including WP Super Cache, W3 Total Cache, LiteSpeed Cache, WP Rocket, WP Fastest Cache, and others. After fonts are downloaded locally, clear your page cache so the updated local font URLs are reflected in cached pages.
-
Does it improve my Google PageSpeed Insights score?
-
Yes. Self-hosting Google Fonts eliminates third-party font requests, which can improve your PageSpeed Insights, GTmetrix, and Lighthouse performance scores. It resolves common audit warnings including “Reduce the impact of third-party code,” “Eliminate render-blocking resources” (from external font CSS), and “Preconnect to required origins.”
-
Can I use this alongside other font optimization plugins?
-
LocalFonts is designed to be the only plugin managing your Google Fonts hosting. Using it alongside other Google Fonts optimization or local font plugins may cause conflicts. If you are switching from another solution, deactivate the previous plugin first before activating LocalFonts.
-
Does it work with WooCommerce?
-
Yes. LocalFonts catches Google Fonts loaded by WooCommerce, WooCommerce themes, and WooCommerce extensions. Any font request to fonts.googleapis.com — regardless of which plugin or theme triggers it — will be intercepted and served locally.
Avaliações
Este plugin não tem avaliações.
Contribuidores e programadores
“LocalFonts” é software de código aberto. As seguintes pessoas contribuíram para este plugin:
ContribuidoresTraduza o “LocalFonts” para o seu idioma.
Interessado no desenvolvimento?
Consulte o código, consulte o repositório SVN, ou subscreva o registo de alterações por RSS.
Registo de alterações
2.0.1
- Fixed: Fatal error on activation caused by broken regex escape sequences in the output-buffer rewriter.
- Fixed: “503 Service Unavailable” errors on large pages caused by unguarded full-page output buffering.
- Changed: Consolidated output buffering into a single hardened class (
LGFL_Output_Buffer) with try/finally cleanup, a 5 MB length cap, buffer-conflict detection, and a string-level short-circuit so pages with no Google Fonts skip regex entirely. - Changed: Font file cleanup moved from deactivation to uninstall, per WordPress.org guidelines.
- Changed: Constants now declared with
if ( ! defined() )guards to prevent redefinition warnings. - Changed: Admin settings page slimmed down to system status and action buttons.
- Added:
== External services ==disclosure section per WordPress.org guidelines. - Added: Inline
phpcs:ignorecomments documenting the read-only$_GETreads and the single raw-echo of already-rendered page HTML.
2.0
- Added output buffering to catch hardcoded
<link>tags,@importrules, and inline styles - Added support for Google Material Icons (
/iconendpoint) - Added
dns-prefetchandpreconnectremoval for complete disconnection from external font servers - Added HTML entity decoding for URLs with
& - Added support for
@importwithouturl()wrapper - Improved activity logging
1.0
- Initial release
- Automatic font interception via
style_loader_srcfilter - Manual download button
- Admin settings page with system status

