{"id":169196,"date":"2023-01-25T12:53:43","date_gmt":"2023-01-25T12:53:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/easyfonts\/"},"modified":"2026-04-12T08:55:28","modified_gmt":"2026-04-12T08:55:28","slug":"easyfonts","status":"publish","type":"plugin","link":"https:\/\/es.wordpress.org\/plugins\/easyfonts\/","author":20532876,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.3.0","stable_tag":"1.3","tested":"7.0","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"EasyFonts","header_author":"Uzair","header_description":"Host existing google fonts locally on your server","assets_banners_color":"","last_updated":"2026-04-12 08:55:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/easywpstuff.com","header_author_uri":"https:\/\/easywpstuff.com","rating":5,"author_block_rating":0,"active_installs":1000,"downloads":10355,"num_ratings":6,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"easywpstuff","date":"2023-01-25 16:00:34"},"1.0.1":{"tag":"1.0.1","author":"easywpstuff","date":"2023-01-26 12:34:44"},"1.0.2":{"tag":"1.0.2","author":"easywpstuff","date":"2023-01-28 07:23:13"},"1.0.3":{"tag":"1.0.3","author":"easywpstuff","date":"2023-01-29 15:44:34"},"1.0.4":{"tag":"1.0.4","author":"easywpstuff","date":"2023-02-26 12:13:00"},"1.1.0":{"tag":"1.1.0","author":"easywpstuff","date":"2023-05-24 07:17:15"},"1.1.1":{"tag":"1.1.1","author":"easywpstuff","date":"2023-09-01 12:18:05"},"1.1.2":{"tag":"1.1.2","author":"easywpstuff","date":"2023-12-31 14:12:58"},"1.1.3":{"tag":"1.1.3","author":"easywpstuff","date":"2025-04-08 11:57:45"},"1.1.4":{"tag":"1.1.4","author":"easywpstuff","date":"2025-04-08 11:57:45"},"1.2":{"tag":"1.2","author":"easywpstuff","date":"2025-10-05 17:22:49"},"1.3":{"tag":"1.3","author":"easywpstuff","date":"2026-04-12 08:55:28"}},"upgrade_notice":{"1.3.0":"<p>New features: Combine font stylesheets into one file, font-display control, and auto cache clear on settings change. Recommended update for better performance and Core Web Vitals scores.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2854348,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2854348,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.2","1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":2854405,"resolution":"1","location":"assets","locale":""}},"screenshots":{"1":"EasyFonts settings page showing all configuration options","2":"Hosted fonts table showing locally cached font families and variants","3":"Server speed test integration with PageSpeed Insights results"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[187460,53344,131785,3778,170185],"plugin_category":[54],"plugin_contributors":[216909],"plugin_business_model":[],"class_list":["post-169196","plugin","type-plugin","status-publish","hentry","plugin_tags-core-web-vitals","plugin_tags-disable-google-fonts","plugin_tags-gdpr","plugin_tags-google-fonts","plugin_tags-local-google-fonts","plugin_category-security-and-spam-protection","plugin_contributors-easywpstuff","plugin_committers-easywpstuff"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/easyfonts\/assets\/icon-128x128.png?rev=2854348","icon_2x":"https:\/\/ps.w.org\/easyfonts\/assets\/icon-256x256.png?rev=2854348","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/easyfonts\/assets\/screenshot-1.png?rev=2854405","caption":"EasyFonts settings page showing all configuration options"}],"raw_content":"<!--section=description-->\n<p><strong>EasyFonts<\/strong> is the lightest, fastest WordPress plugin to <strong>host Google Fonts locally<\/strong> on your own server. Just activate the plugin, and your Google Fonts are automatically downloaded, cached, and served directly from your domain. No manual uploads, no complex settings, and no external requests.<\/p>\n\n<p>At only <strong>35KB<\/strong>, EasyFonts is built for absolute performance. Unlike bloated alternatives that take up 2MB of space and require endless configuration, EasyFonts does one job perfectly: it <strong>disables external Google Fonts<\/strong> and self-hosts them so your site loads faster, passes Core Web Vitals, and stays strictly compliant with European privacy laws.<\/p>\n\n<h4>Why Host Google Fonts Locally?<\/h4>\n\n<p>When your WordPress site loads fonts from Google's servers, you face two massive issues:<\/p>\n\n<ol>\n<li><strong>GDPR (DSGVO) Violations:<\/strong> A German court ruled that sending visitor IP addresses to Google without consent violates GDPR. Sites are actively being fined for this.<\/li>\n<li><strong>Slow Core Web Vitals:<\/strong> Every external connection to <code>fonts.googleapis.com<\/code> and <code>fonts.gstatic.com<\/code> adds latency, destroying your Time to First Byte (TTFB) and Largest Contentful Paint (LCP) scores.<\/li>\n<\/ol>\n\n<p>EasyFonts eliminates both problems instantly. It rewrites your CSS to serve fonts locally\u2014stopping Google from tracking your users and drastically speeding up your site.<\/p>\n\n<h4>Key Features &amp; Performance Benefits<\/h4>\n\n<ul>\n<li><strong>Modern Variable Font Support (NEW)<\/strong> \u2014 Unlike older plugins that download 10+ separate font files for different weights, EasyFonts uses modern browser detection to download a <strong>single, highly-optimized Variable Font file<\/strong>. This saves massive amounts of bandwidth.<\/li>\n<li><strong>Combine Font Stylesheets<\/strong> \u2014 Merges all locally hosted font CSS into a single, optimized file placed right after <code>&lt;body&gt;<\/code>. Exact duplicate font faces are automatically removed to reduce HTTP requests.<\/li>\n<li><strong>Fix FOIT with Font Display Control<\/strong> \u2014 Force a <code>font-display: swap<\/code> value on every <code>@font-face<\/code> declaration to eliminate the \"Flash of Invisible Text\" and pass Google Lighthouse audits.<\/li>\n<li><strong>Disable Google Fonts<\/strong> \u2014 Completely severs all connections to Google's servers, ensuring 100% GDPR compliance.<\/li>\n<li><strong>Automatic Local Hosting<\/strong> \u2014 Detects Google Fonts loaded via <code>&lt;link&gt;<\/code> stylesheets, <code>@import<\/code> rules, and inline <code>@font-face<\/code> declarations.<\/li>\n<li><strong>Clean Resource Hints<\/strong> \u2014 Strips unnecessary <code>preconnect<\/code>, <code>dns-prefetch<\/code>, and <code>preload<\/code> tags pointing to external font servers to clean up your <code>&lt;head&gt;<\/code>.<\/li>\n<li><strong>Bunny Fonts Support<\/strong> \u2014 Also processes and locally hosts fonts from <code>fonts.bunny.net<\/code>.<\/li>\n<li><strong>Auto Cache Clear<\/strong> \u2014 Whenever you save settings, the font cache is instantly cleared and regenerated fresh to prevent broken layouts.<\/li>\n<li><strong>Page Builder Compatible<\/strong> \u2014 Works flawlessly with Elementor, Divi, WPBakery, GeneratePress, Astra, Kadence, and WooCommerce.<\/li>\n<\/ul>\n\n<h4>What Makes EasyFonts Beat the Competition?<\/h4>\n\n<ul>\n<li><strong>35KB Size:<\/strong> Competitors weigh between 500KB and 2MB. EasyFonts is 60x smaller.<\/li>\n<li><strong>Zero Database Bloat:<\/strong> Stores only one single option row. No custom tables, no transient spam.<\/li>\n<li><strong>Zero Config Required:<\/strong> Just enable and save. No scanning, no waiting, no manual font selection.<\/li>\n<li><strong>No Premium Upsells:<\/strong> Every pro-level feature (combining CSS, variable fonts, font-display control, deduplication) is 100% free. <\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Install and activate EasyFonts.<\/li>\n<li>Go to <strong>Settings \u2192 Easy Fonts<\/strong>.<\/li>\n<li>Enable the options you need (most users: enable all checkboxes and set Font Display to <code>swap<\/code>).<\/li>\n<li>Click <strong>Save Changes<\/strong> \u2014 the cache clears automatically.<\/li>\n<li>Visit your homepage (or click <strong>Preload Fonts<\/strong>) \u2014 fonts are downloaded and cached.<\/li>\n<li>Done. All Google Fonts are now served from your domain.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>easyfonts<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install via <strong>Plugins \u2192 Add New<\/strong> in your WordPress dashboard.<\/li>\n<li>Activate the plugin through <strong>Plugins \u2192 Installed Plugins<\/strong>.<\/li>\n<li>Go to <strong>Settings \u2192 Easy Fonts<\/strong> to configure.<\/li>\n<li>Enable the options you want and click <strong>Save Changes<\/strong>.<\/li>\n<li>Click <strong>Preload Fonts<\/strong> or simply visit your homepage \u2014 fonts will be downloaded and cached automatically.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20easyfonts%20work%20with%20my%20theme%3F\"><h3>Does EasyFonts work with my theme?<\/h3><\/dt>\n<dd><p>Yes. EasyFonts works with any WordPress theme that loads Google Fonts \u2014 including Astra, GeneratePress, OceanWP, Kadence, Blocksy, Hello Elementor, Divi, TwentyTwentyFive, and any theme or child theme. It processes the final HTML output, so it catches fonts loaded by themes, plugins, and page builders alike.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20make%20my%20site%20gdpr%20compliant%20for%20google%20fonts%3F\"><h3>Does this plugin make my site GDPR compliant for Google Fonts?<\/h3><\/dt>\n<dd><p>Yes. Once EasyFonts is active and configured, all Google Fonts are served from your own server. No requests are made to fonts.googleapis.com or fonts.gstatic.com, so no visitor data is sent to Google.<\/p><\/dd>\n<dt id=\"will%20this%20improve%20my%20page%20speed%20score%3F\"><h3>Will this improve my page speed score?<\/h3><\/dt>\n<dd><p>Yes. Hosting fonts locally eliminates external DNS lookups and HTTP requests to Google's servers. Combined with the stylesheet merging and resource hint removal features, most sites see a measurable improvement in PageSpeed Insights, GTmetrix, and Lighthouse scores.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%2C%20wpbakery%2C%20and%20divi%3F\"><h3>Does it work with Elementor, WPBakery, and Divi?<\/h3><\/dt>\n<dd><p>Yes. EasyFonts processes the entire HTML output using output buffering, so it catches Google Fonts loaded by any page builder including Elementor, WPBakery, Divi, Beaver Builder, Bricks, and Breakdance.<\/p><\/dd>\n<dt id=\"what%20is%20the%20font-display%20option%3F\"><h3>What is the font-display option?<\/h3><\/dt>\n<dd><p>The <code>font-display<\/code> CSS property controls browser behavior while web fonts load. Setting it to <code>swap<\/code> ensures your text is always visible using a fallback font while custom fonts download \u2014 this fixes the \"Ensure text remains visible during webfont load\" warning in Lighthouse.<\/p><\/dd>\n<dt id=\"does%20easyfonts%20support%20bunny%20fonts%3F\"><h3>Does EasyFonts support Bunny Fonts?<\/h3><\/dt>\n<dd><p>Yes. EasyFonts automatically processes fonts from fonts.bunny.net in addition to Google Fonts.<\/p><\/dd>\n<dt id=\"how%20do%20i%20clear%20the%20font%20cache%3F\"><h3>How do I clear the font cache?<\/h3><\/dt>\n<dd><p>Go to <strong>Settings \u2192 Easy Fonts<\/strong> and click <strong>Remove All Stored Fonts<\/strong>. The cache also clears automatically whenever you save settings.<\/p><\/dd>\n<dt id=\"will%20it%20work%20with%20caching%20plugins%3F\"><h3>Will it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. EasyFonts works with WP Rocket, W3 Total Cache, LiteSpeed Cache, WP Super Cache, and all other caching plugins. After configuring EasyFonts, clear your page cache so the updated HTML is served to visitors.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20with%20a%20cdn%3F\"><h3>Can I use this with a CDN?<\/h3><\/dt>\n<dd><p>Yes. The locally hosted font files will be served through your CDN just like any other file in your uploads directory.<\/p><\/dd>\n<dt id=\"does%20it%20handle%20multiple%20google%20fonts%20stylesheets%20from%20different%20plugins%3F\"><h3>Does it handle multiple Google Fonts stylesheets from different plugins?<\/h3><\/dt>\n<dd><p>Yes. The Combine Font Stylesheets feature specifically addresses this \u2014 it finds all font stylesheets across your entire page (from themes, plugins, and page builders), merges them into one file, and removes duplicates.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: Combine Font Stylesheets \u2014 merges all locally hosted font CSS into a single file with deduplication<\/li>\n<li>New: Font Display control \u2014 set font-display (swap, block, fallback, optional, auto) on all @font-face declarations<\/li>\n<li>New: Auto cache clear when settings are saved<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: Process @font-face from inline style blocks (gstatic fonts)<\/li>\n<li>New: Built-in server speed test via Google PageSpeed Insights<\/li>\n<li>New: Preload fonts button for one-click font caching<\/li>\n<li>Improved: SSL handling for upload URLs<\/li>\n<li>Improved: Bunny Fonts support via filter<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Remove Resource Hints (preconnect, dns-prefetch, preload)<\/li>\n<li>New: Remove WebFont.js inline scripts<\/li>\n<li>Improved: Better compatibility with Smart Slider and Groovy Menu<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Host Google Fonts from link tags locally<\/li>\n<li>Host Google Fonts from @import rules locally<\/li>\n<li>Admin settings page with toggle controls<\/li>\n<\/ul>","raw_excerpt":"Host Google Fonts locally to speed up your site, improve Core Web Vitals, and ensure GDPR compliance. A lightweight (35KB), zero-config plugin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/169196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=169196"}],"author":[{"embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/easywpstuff"}],"wp:attachment":[{"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=169196"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=169196"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=169196"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=169196"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=169196"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=169196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}