Optimize WordPress Websites With Perfmatters

Things to keep in mind:

    • Every environment (infrastructure, software, etc.) is unique, so there’s no universal approach to configuring a solution.
    • Review and understand all available settings, configuring them to the best of your ability, while not blindly guessing.
    • If a specific setting isn’t mentioned, the defaults are acceptable, or the settings are self-explanatory to any skill level.

WordPress does load many unnecessary assets (CSS, JavaScript, fonts, emojis, etc.) by default, especially on the front end. This is one of the most common performance complaints from developers and site owners.

This guide will show you how to use Perfmatters to increase your WordPress website’s performance by stripping out unnecessary assets, reducing HTTP requests, minimizing back-end component loading, and more.

Always remember to back up your website before making any significant changes and thoroughly review your website after making those changes.

YouTube video

General

Core

Disable Emojis

  • Element Description: Emojis are icons that can be added to websites, and while these are cute, they are a slight performance hit.
  • Recommendation: Toggle ON

Disable Dashicons

  • Element Description: These are the official WordPress core admin icons and are not needed on the front end of your website these days.
  • Recommendation: Toggle OFF

Disable Embeds

  • Element Description: Embeds make placing a video into a post or page easy using the WP editor by simply pasting in the link/URL, but this comes with a cost.
  • Recommendation: Toggle ON

Disable XML-RPC

  • Element Description: XML-RPC allows users and solutions to publish content to a WordPress website without directly logging in.
  • Recommendation: Toggle ON

Remove jQuery Migrate

  • Element Description: jQuery Migrate allows the JavaScript library to preserve compatibility with jQuery code used in older themes and plugins.
  • Recommendation: Toggle ON

Hide WP Version

  • Element Description: Including the WordPress version in your website’s code is unnecessary.
  • Recommendation: Toggle ON

Remove RSD Link

  • Element Description: Similar to XLM-RPC, this is only needed if you edit your website using methods apart from your browser.
  • Recommendation: Toggle ON

Remove Shortlink

  • Element Description: Shortlinks are only useful when the “Plain” permalink structure is used, and website owners should not be using this structure.
  • Recommendation: Toggle ON

Disable RSS Feeds

  • Element Description: These can be useful for websites with an active blog, allowing people to subscribe to new content.
  • Recommendation: Toggle ON, unless you have an active blog

Remove RSS Feed Links

  • Element Description: Similar to how WordPress generates RSS feeds, it also generates RSS feed links for your pages/posts, comments, tags, etc., but you can leave your RSS feeds enabled and still remove the RSS feed links, which typically amount to unused code.
  • Recommendation: Toggle ON

Disable Self Pingbacks

  • Element Description: Essentially, this amounts to nothing more than a waste of resources, as spammers mainly use pingbacks.
  • Recommendation: Toggle ON

Disable REST API

  • Element Description: Some solutions use the REST API, like WooCommerce, Contact Form 7, and Gutenberg.
  • Recommendation: Disable for non-admins

Remove REST API Links

  • Element Description: By default, the REST API drops a link into the header of your website for API discovery purposes, which essentially amounts to unnecessary code on the front end.
  • Recommendation: Toggle ON

Disable Google Maps

  • Element Description: If you have a website where Google Maps are added, associated assets will be loaded on your website.
  • Recommendation: Toggle ON, unless you are using Google Maps

Exclude Post IDs

Let’s say you want to use Google Maps on a particular Post or Page but nowhere else. That is where this feature comes in handy.

To locate a Post ID:

  1. WordPress Dashboard > Click on Posts or Pages
  2. Hover over a Post or Page
  3. The Post ID will be displayed at the bottom of the dashboard

Disable Password Strength Meter

  • Element Description: WooCommerce, for example, has an integrated Password Strength Meter that forces users to use strong passwords and is a performance hit on your website.
  • Notes: Depending on your WooCommerce settings (WooCommerce > Accounts & Privacy > Account Creation), this element may not be present.
  • Recommendation: Toggle ON, unless you allow users to create passwords

Disable Comments

  • Element Description: Depending on the website, allowing comments may make sense (i.e., user engagement) and be required as a dependency for another part of the website (e.g., Ratings/Reviews). However, it’s not uncommon for website owners to disable comments so as not to worry about SPAM, comment moderation, etc.
  • Recommendation: Toggle ON, unless you want to allow comments

Remove Comment URLs

  • Element Description: Depending on how a website is set up, a visitor may be able to link out to their own website, and while these links are nofollow (i.e., Google ignores them), visitors might leave comments solely for the purpose of getting this link.
  • Recommendation: Toggle ON

Add Blank Favicon

This can be ignored, as this has more to do with temporarily getting better performance scores, which doesn’t reflect actual website performance.

Remove Global Styles

  • Element Description: Starting with WordPress 5.9, additional inline code (a significant amount and unmodified) is being added to every page of your WordPress site for FSE themes, gallery blocks, buttons, social icons, etc., related to the WordPress Block Editor.
  • Recommendation: Toggle ON, unless you use the WordPress Block Editor to do more than just write your content

Separate Block Styles

  • Element Description: By default, WordPress core block styles are loaded in a global stylesheet regardless of whether they are rendered on a page. You can change the block styles to only load when they are rendered. This can help performance, as it means less CSS loading across the site.
  • Recommendation: Toggle ON

Disable Heartbeat

  • Element Description: The WordPress Heartbeat API generates AJAX calls, which can cause high CPU usage and a significant number of PHP calls, and if you leave your WordPress dashboard open, for example, WordPress will keep sending POST requests to the admin-ajax.php file every 15 seconds.
  • Recommendation: Only Allow When Editing Posts/Pages

Heartbeat Frequency

  • Element Description: The WordPress Heartbeat runs every 15 seconds by default.
  • Recommendation: 60 Seconds

Limit Post Revisions

  • Element Description: Every time you save a post/page, WordPress creates a new, saved version for rollback purposes. While this is a great feature, WordPress does not limit revisions by default, which is bad news for your database if you don’t get this under control
  • Recommendation: 20

Autosave Interval

  • Element Description: WordPress automatically saves a draft every 60 seconds by default. However, you may prefer to increase the interval to prevent the browser from “hanging” and reduce the number of writes to the database.
  • Recommendation: 5 Minutes

Login URL

Custom Login URL

  • Element Description: If the default WordPress login URLs are not changed, it’s one less thing that “hackers” need to attempt to guess, and bots can hit your WordPress login pages constantly.
  • Note: After changing the Login URL, be sure to bookmark your new URL and flush your permalinks (WordPress > Settings > Permalinks > Click the Save Changes button).
  • Recommendation: Set this to a random, complex value, as you should never need to memorize it (i.e., you’ll bookmark it), and it will be transparent to your users.
  • Tip: Be sure to exclude your new, custom Login URL from all levels of your caching (CDN, server, plugins, browser, etc.).

Disabled Behavior

  • Element Description: This allows you to display a message, show your 404 page, or redirect to your Home page.
  • Recommendation: Default Setting

Message

  • Element Description: This is where you can specify the message displayed if you have the option turned on under Disabled Behavior.
  • Recommendation: Default Setting

WooCommerce

Disable Scripts

  • Element Description: WooCommerce, for example, loads scripts and styles on every page of your WordPress site by default, whether needed or not.
  • Recommendation: Toggle ON

Disable Cart Fragmentation

  • Element Description: WooCommerce, for example, uses this feature to update the cart totals without refreshing the page (AJAX)
  • Recommendation: Toggle ON

Disable Status Meta Box

  • Element Description: By default, WooCommerce, for example, loads a status meta box (widget) in the WordPress dashboard that often goes unused. While it can be hidden using Screen Options, it’s better to disable it to speed up the admin area.
  • Recommendation: Toggle ON

Disable Widgets

  • Element Description: By default, WooCommerce, for example, comes with many widgets installed that often go unused (themes typically have their code to display products). If these widgets are used in sidebars or footers, they can add load times to both the back end and front end
  • Recommendation: Toggle ON

JavaScript

Defer

Defer JavaScript

Script Manager helps you stop loading unnecessary Javascript on your website, and the Defer JavaScript setting helps you optimize the assets that must remain on your website.

  • Recommendation: Toggle ON
  • Tip: Once enabled, clear caching at every level and thoroughly test your website

Cache layers should be cleared in the following order:

  1. Theme
  2. Third-party Plugins
  3. Perfmatters (Clear Minified JS)
  4. Hosting Provider
  5. CDN (e.g., Cloudflare)
Troubleshooting Deferring

One of the quickest ways to test if what you’re deferring is causing an issue, other than visual front-end inspection, is to inspect your posts and pages in your browser and look for errors in the inspect console.

If you think that deferring is causing an issue, Perfmatters makes it easy to enable/disable deferring on a per-post/page basis. To do that, edit the page in WordPress and use the sidebar toggles for Perfmatters.

Include Inline Scripts

This setting can improve performance and help fix console warnings, such as “not yet defined,” caused by dependencies.

Include jQuery

This setting will be exposed when/if you enable Defer JavaScript and Advanced Settings (Tools > Plugin > Show Advanced Settings) is enabled within Perfmatters. jQuery core is something I don’t recommend touching, as the juice (i.e., faster loading potential) isn’t worth the squeeze (i.e., the headache potential).

Exclude from Deferral

If you notice any issues with the Defer JavaScript option turned on, identify the script’s name and add it to the Exclude from Deferral box.

Delay

Delay JavaScript

While deferring JavaScript pushes the script to the bottom of the page load, you can instead delay it based on user interaction. This can be a great way to speed up the paint of the page when something isn’t needed right away, especially heavy third-party scripts like Google Adsense, conversion pixels (FB, Google Ads), etc.

Where Defer JavaScript pushes everything towards the bottom of the list of assets to load, Delay JavaScript delays loading JavaScript files until there is a user interaction (e.g., moving the mouse over the page, touching the screen, scrolling, or pressing a key).

You should only delay JavaScript files that are not required to display anything “above the fold.”

Delay Behavior

There are several ways to do this, and you must decide which method is best for you based on your comfort level with delaying scripts. I prefer to Delay All Scripts and proceed from there. Either way, you must thoroughly test your website’s design and functionality after making changes in this area.

Only Delay Specified Scripts

With this option, you must know exactly which scripts you would like to delay, and identifying these can be difficult for some. This is the safest option for delaying scripts, but you might miss some performance opportunities by not delaying more scripts.

Delay All Scripts

Rather than needing to go one by one and identify scripts that can be delayed, this option will delay them all in one shot, as the name suggests. Depending on the website, this may be the best route. If you enable this option and everything looks and functions properly, you’re “done.”

I say “done” because, like anything related to performance optimization, you’re never really done. Every solution (plugin, theme, app, etc.) you introduce into your environment could cause you to rethink and adjust your delay strategy.

If you decide to delay all scripts but identify some issues, you can use the Excluded from Delay option or Quick Exclusion to fine-tune which scripts are not included in the delay process.

Excluded From Delay:

This option will appear if you enable Delay All Scripts and can be used to specify individual scripts that should not be delayed.

Quick Exclusion:

This option will appear if you enable Delay All Scripts and when specific popular plugins (e.g., Elementor) and themes are activated.

Knowing what to exclude to prevent breaking aspects of your website can be tricky, and Quick Exclusions makes this easier, allowing you to easily apply exclusions based on a predefined list of common exclusions made by the Perfmatters team.

Let’s zero in on Elementor and see how it relates to this feature.

If you can delay all scripts and your website works perfectly, great! But let’s say everything works great, except certain Elementor elements continue to break, and you’re having a hard time (or don’t want to take the time) tracking down exactly which script(s) from Elementor need to be excluded. In this case, you can enable the Quick Exclusion of Elementor.

That said, Elementor is not a lightweight plugin. Therefore, I recommend you take the time to exclude specific scripts from Elementor rather than simply enabling this exclusion. Quick Exclusions can be a great troubleshooting tool for quickly determining whether, in fact, Elementor, for example, has some scripts that need to be excluded.

Delay Timeout

You can set a timeout that will load scripts after a set time (between 1 and 10 seconds) if no user interaction has been detected. Once you enable this setting, Perfmatters will default to a delay time of 10 seconds, which is recommended.

Delay Timeout Examples:

  • Improve the accuracy of tracking scripts’ data, especially if you have a goal associated with a pageview but maybe no user interaction. You still want the goal to trigger.
  • You have a Google AdSense blog, and a user is opening up multiple pages in new tabs in the background. You still want the ads to fire.
Disable Click Delay

This setting will be exposed when/if you enable Delay JavaScript and Advanced Settings (Tools > Plugin > Show Advanced Settings) is enabled within Perfmatters. If you have a large and complex site with a lot of JavaScript, the click delay might be longer than desired. Take a mobile menu, for example.

Based on how Elementor is coded, they might have to wait for the JavaScript to load before the mobile menu opens. Disabling the click delay may help speed things up.

Enable FastClick

This setting will be exposed when Advanced Settings (Tools > Plugin > Show Advanced Settings) is enabled within Perfmatters.

A known bug on iOS sometimes occurs when using the Delay JS feature, causing links to not work until they are clicked twice. Until iOS fixes the bug, this feature from Perfmatters is a temporary workaround.

Minify

Minification is the process of removing all unnecessary characters from code without changing its functionality. These unnecessary characters usually include whitespace characters, newline characters, comments, etc., which are used to add readability to the code but are not required for it to execute.

Minification reduces the size of the source code, making its transmission over a network (e.g., the Internet) more efficient. Here is how Perfmatters approaches this.

  • Files with the .min.js extension in their names will be skipped because this means they are already minified, and there’s no need to use server resources to inspect these files further.
  • JavaScript files that will not result in a smaller file size once minified will not be replaced, which again preserves server resources.

Minify JavaScript

Excluded From Minification:

This option will appear if you enable Minify JavaScript and can be used to specify individual scripts that should not be delayed if you encounter any issues.

Clear Minified JS

If you make design or code changes on your site, you might need to clear your minified JS, along with all cache layers, to ensure all changes are properly displayed.

Cache layers should be cleared in the following order:

  1. Theme
  2. Third-party Plugins
  3. Perfmatters (Clear Minified JS)
  4. Hosting Provider
  5. CDN (e.g., Cloudflare)

To verify your JS changes have been updated, view your website in incognito within your browser.

CSS

Unused

Remove Unused CSS

Sometimes, a theme or plugin loads CSS that isn’t needed or used on a particular Post, Page, etc. This results in a lot of unused CSS, which slows down your website and triggers render-blocking warnings.

Recommendations
Prioritize Script Manager

I recommend ensuring you’ve done all you can at the Script Manager level before using the Remove Unused CSS feature. It’s better to completely stop CSS styles from being called up to begin with rather than call them up and try to optimize them afterward.

Before Using This Feature
  • Remove any existing CSS preloads you have set up in Perfmatters (excluding Local Google Font stylesheets)
  • Uncombine your CSS. Combining CSS is a deprecated optimization technique that hurts performance
  • Ensure you aren’t already trying to remove unused CSS with another plugin

Used CSS Method

I recommend going with the default option (Inline), which means the user only needs to download a single CSS stylesheet rather than multiple, which would be the case using the File method.

Stylesheet Behavior

I recommend going with the default option (Delay).

The Remove option will likely give you the best performance, but you must know what you are doing if you use it, as you can break your website’s design, requiring you to invest a few hours tracking issues and fine-tuning the exclusions to get things just right. It’s high risk, but it’s also high reward.

Testing

Test by viewing a couple of your Posts, Pages, etc. 

Note: If you have any issues, I recommend utilizing the Excluded Stylesheets and Excluded Selectors options rather than giving up on the Remove Unused CSS feature entirely.

Excluded Stylesheets

You can exclude specific CSS (stylesheets) from the Remove Unused CSS feature by adding the source URL (example.css) or a unique portion of the source URL. Whichever you choose, you’ll place each entry into Perfmatters on one line.

Excluded Selectors

Exclude specific CSS (selectors) from the Remove Unused CSS feature by adding the element id, class name, etc. (#id, .class). Whichever you choose, you’ll place each entry into Perfmatters on one line.

CDN URL

This setting will be exposed when Advanced Settings (Tools > Plugin > Show Advanced Settings) is enabled within Perfmatters.

With my recommendation to use Cloudflare (Free) as your CDN, this setting does not apply.

Clear Used CSS

There will be times when you need to clear your used CSS, like when you redesign a page or add a new element. When that time comes, click Clear Used CSS.

Minify

Minify CSS

Exclude From Minification

Unlike Removed CSS, exclusions are usually not needed for minification. However, you might still need to add one in some instances.

Enter the stylesheet’s name into the “Excluded from Minification” box, such as style.css (one per line). The stylesheet name needs to be the original file name, not the minified one.

Clear Minified CSS

If you make design or code changes on your site, you might need to clear your minified CSS, along with all cache layers, to ensure all changes are properly displayed.

Cache layers should be cleared in the following order:

  1. Theme
  2. Third-party Plugins
  3. Perfmatters (Clear Minified JS)
  4. Hosting Provider
  5. CDN (e.g., Cloudflare)

To verify your CSS changes have been updated, view your website in incognito within your browser.

Preloading

Preload Critical Images

Preloading leading images (those above the fold) can help decrease the Largest Contentful Paint (LCP) times in Core Web Vitals. These are typically images like a logo, a featured image on a blog post, a hero image on a landing page, etc.

Preloading leading images places them at the top of the waterfall and instructs the browser to load them first.

Note: If you have manually configured an image to preload (see next section) on a specific post/page, that will take precedence over the Preloaded Critical Images (i.e., automatically preloaded critical images).

Preload

This can be useful for resolving errors like Preload key requests and Render-blocking resources, but this can largely be ignored unless you have a particular use case. 

Preloading should only be used for resources (web fonts, CSS, and JS) needed immediately, so they are loaded non-blocking (i.e., loaded immediately or shortly after a page load).

Fetch Priority

For this setting, it’s best to let Perfmatters explain this in their own words.

Disable Core Fetch

When you enable Advanced Settings (Tools > Plugin > Show Advanced Settings) in Perfmatters, this setting will become visible.

For this setting, it’s best to let Perfmatters explain this in their own words.

Speculative Loading

As of WordPress 6.8, speculative loading is now enabled in core by default. This is great! However, we can do even more to leverage it if you’re using Perfmatters, using the recommended settings below.

  • Mode: Prerender
  • Eagerness: Prerender

Connection

Preconnect

Preconnect picks up where the DNS Prefetch analogy leaves off. This means that Google Maps starts mapping out the directions in the background rather than just storing your address. So, when you’re ready to start your navigation, the route is already mapped out.

Everything I documented for DNS Prefetch applies here regarding determining what domains to target, caution against targeting too many domains, etc., with the only difference being the underlying process.

When in doubt, I recommend using DNS prefetch over preconnect due to the potential performance hit that comes from “missing” on preconnect attempts.

DNS Prefetch

A simple way to visualize this feature is to think of how Google Maps works on your phone. Rather than entering your home address each time as the return destination, Google stores your address to help accelerate the process.

This is what DNS Prefetch does, which stores the addresses (domains) that you anticipate visiting often to speed up the lookup process. Unlike Google Maps, these entries are manual, but you must enter them only once.

So, how do you know which domains to prefetch? You can view the Waterfall using website testing tools and sort the entries using the Domain column.

Other than your own, any domain listed is an excellent candidate for being prefetched since your website calls for it. However, the only domains we want to prefetch are those that load early in the page loading process (see steps below to determine the domains to prefetch), causing possible contention with the other elements loading on the page.

  1. Using your preferred tool for testing website performance, browse the Waterfall tab
  2. Click on “CSS” and “JS” to filter out all other elements
  3. Scroll from top to bottom and identify any domain, other than your own, that has activity beginning before the green line

Note: Once you reach the bottom of your waterfall, DNS prefetching of domains isn’t needed. Long story short, loading scripts at the end is preferred/optimal, so we can just let these be.

Depending on your theme or plugins, the developers may have already coded the software to DNS Prefetch the domains they know will be called upon. For example, when I viewed an Explore page’s source code (Browser > Right-click on the page > View Source Code), I saw the domains below as already being prefetched.

  • api.tiles.mapbox.com
  • apis.google.com
  • fonts.googleapis.com
  • maxcdn.bootstrapcdn.com (Font Awesome)
  • s.w.org (WordPress.org)

Note: This is not a set-it-and-forget-it because as your solutions and settings change, you will most likely need to adjust your DNS Prefetch entries. You don’t want your server making unnecessary calls. For example, if you decide not to use Google Fonts, you want to stop prefetching that domain.

Lazy Loading

Images

  • Element Description: This delays the loading of images until a user scrolls down the page and the images come into view
  • Recommendation: Toggle ON, as long as you are not using lazy-loading functionality from other plugins

Exclude Leading Images

This setting is available when Images are enabled. The goal is to exclude your above-the-fold images (i.e., those in the immediate viewport) from lazy loading, thus preventing image viewing issues and keeping your website in better graces with search engines.

How many images you can exclude depends on the website. It may only make sense to exclude one image, such as your logo, assuming you are using an image for your logo (in the header) and not a text-based logo. It may make sense not to exclude any images in cases where you don’t use a traditional logo in your header and don’t have many images above the fold.

iFrames and Videos

  • Element Description: This delays the loading of iFrames and videos until a user scrolls down the page and either of these elements comes into view
  • Recommendation: Toggle ON, as long as you are not using lazy-loading functionality from other plugins.

YouTube Preview Thumbnails

This setting is available when iFrames and Videos is enabled.

  • Element Description: If you’re using YouTube videos on your site, this swaps out the YouTube iframes with a preview thumbnail and lightweight SVG play icon, providing the fastest way to load YouTube videos
  • Recommendation: Toggle ON, as long as you are not using lazy-loading functionality from other plugins

Exclude From Lazy Loading

There may be times when you will want to exclude a specific image from being lazy loaded, and this is where you would do that.

Excluding an element from lazy loading is as simple as adding its source URL to this area of Perfmatters, one per line. Getting the source URL of an element, like an image, is as easy as viewing the image in your WordPress Media Library and copying the file name (e.g., image-file-name.jpg).

Exclude by Parent Selector

This setting will be exposed when Advanced Settings (Tools > Plugin > Show Advanced Settings) is enabled within Perfmatters.

Many featured images, galleries, etc., above the fold, don’t have a unique class assigned, making them hard to exclude globally. However, their parent container almost always has a pattern or unique string you can match.

You can exclude specific images from lazy loading by adding any unique portion of an attribute string (class=”example”) from a parent container.

Threshold

I would only use this setting if I cannot make the Exclude Leading Images option work.

If you had more than five images (the maximum setting for Exclude Leading Images) above the fold throughout your site (I wouldn’t advise this), you could use Exclude From Lazy Loading instead to capture all those images above the fold.

So, for example, let’s say you had six images appearing above the fold within the first 500px of your page in the viewport; you could only exclude five of those six images from lazy loading. Instead, you could use a Threshold setting of 500px to lazy load all six images.

DOM Monitoring

  • Element Description: Watches for changes in the DOM (i.e., the structure of your web pages/posts) and dynamically lazy loads newly added elements to improve compatibility for third-party plugins and themes that utilize infinite scrolling.
  • General Notes: If you use any plugin that provides infinite scrolling, you could benefit from DOM Monitoring.
  • Recommendation: Toggle OFF

Add Missing Image Dimensions

Modern browsers set images’ default aspect ratio based on width and height attributes. If your images are missing these attributes, they can cause layout shifts, which trigger CLS warnings in Core Web Vitals. This is because image elements do not have explicit width and height.

  • Recommendation: Toggle OFF

Fade In

Some users like to have a fade-in effect on images when scrolling down a page, as this can create a smoother transition rather than just immediately popping in images after they are lazy-loaded.

CSS Background Images

Perfmatters supports lazy loading inline background images by default, but sometimes vendors (e.g., Elementor) load background images within CSS stylesheets. In situations like this, you cannot use Perfmatters to change the contents of the CSS, but you can use it to prevent specific containers from immediately loading their background image in the browser.

So, if you routinely place background images below the fold of your content, it’s worth identifying whether you can lazy load those backgrounds.

Lazy Elements

For this setting, it’s best to let Perfmatters explain this in their own words.

Fonts

Local Google Fonts

  • Element Description: By loading Google Fonts locally, you gain performance while adding more privacy to your website
  • Recommendation: Toggle ON, if you’re using Google Fonts
  • Tip: To speed up your website further, follow the Boost WordPress Website Performance With System Fonts guide

Print Method

The inline method would fix any render-blocking issues and also remove an “Avoid chaining critical requests” warning. This can help improve FCP and LCP. However, it also adds a small amount of extra weight to your page. Roll with the default setting and evaluate if needed.

Limit Subsets

Google Font subsets are specific portions of a font family that include only selected characters or styles. You often don’t need all the special characters, so limiting the subsets with Local Google Fonts will dramatically decrease the size of the CSS. Enable this setting and only select the subsets you need for your website.

Display Swap

  • Element Description: Elementor provides an easy way to add Google Fonts to WordPress websites. It defaults to a font-display property of Swap
  • Recommendation: Toggle ON

CDN URL

This setting is available when Local Google Fonts is enabled. With my recommendation to use Cloudflare (Free) as your CDN, this setting does not apply.

Clear Local Fonts

This setting is available when Local Google Fonts is enabled. Sometimes, you need to clear the local fonts and start fresh, like when choosing different fonts.

Disable Google Fonts

  • Element Description: By disabling Google Fonts, you gain performance while adding more privacy to your website
  • Recommendation: Toggle ON, unless you’re using Google Fonts.
  • Tip: To speed up your website further, follow the Boost WordPress Website Performance With System Fonts guide

CDN

With my recommendation to use Cloudflare (Free) as your CDN, this setting does not apply.

Analytics

This Analytics section is only applicable to website owners using Google Analytics.

Analytics needs can significantly vary for each business. If they are critical to your business’s success, please take the time to understand the settings under Perfmatters fully and look at the guides listed below.

  • Google Analytics Management
  • Google Tag Manager for WordPress Websites

Enable Local Analytics

  • Element Description: Hosting Google Analytics locally can help speed up your site by reducing extra DNS lookups while allowing you to load the analytics script over a single HTTP/2 connection rather than multiple, which can add to load time.
  • Recommendation: Toggle ON, if using Google Analytics

Local Analytics Settings

  • Tracking ID: Input your Google Analytics tracking/measurement ID
  • Tracking Code Position: Footer. (Note: If you have a slow website, it may be better to choose the Header position to prevent issues with tracking accuracy, but you should not have a slow website if you are taking the time to follow guides like this one.)
  • Script Type: Choose the analytics script type that matches the primary script used on your website. I recommend starting with the minimal script (Google Analytics 4 Minimal) to see if you actually need to collect more than the minimal data. (Note: Please check out the analytics guides I linked above for more information.)
  • Track Logged-In Admins: Toggle OFF. (Note: I’m not sure why this is an option, as you should never track admin activity analytics-wise, as that would pollute your stats.)
  • Use MonsterInsights: Toggle OFF. This might benefit you (i.e., maybe it should be enabled) if you use the MonsterInsights plugin. (Note: This option will only be visible when using a tracking script that supports it.)
  • Enable AMP Support: If you use AMP on your website, this setting may benefit you. (Note: AMP is a fad that came and went, so you’ll want to verify if it will benefit you.)

Code

Perfmatters offers an option to add custom code to WordPress websites, with optimization in mind, but this feature is currently in BETA. Until this feature comes out of BETA, I recommend using a code snippets solution to add custom code to your website.

Even when Perfmatters lifts the BETA tag from their custom code feature, you still may want to stick with a separate code snippet solution, as they often have extra functionality that’s nice to have. It depends on your needs.

Tools

Plugin

Script Manager

This feature lets website owners strip out assets (CSS and JavaScript/JS) that themes and plugins unnecessarily load on posts/pages. Script Manager can be accessed using one of the methods listed below.

  • From the back end, hover over a post/page and choose Script Manager
  • By appending “?perfmatters” to any URL while logged into your website
  • Pull up a post/page from the back-end or front-end and use the WordPress admin bar. (Note: Even if you have the admin bar disabled for your admin account, appending “?perfmatters” will invoke it, so again, it’s essential to work in incognito mode.)
Settings

When you open the Scripts Manager options, you’ll see a Settings menu item on the left-hand side of your screen, and these are the default settings you will see the first time you use Script Manager.

  • Display Archives: This setting allows you to get more granular with how you apply Script Manager settings to posts, such as targeting particular categories, tags, etc., but in most cases, getting this granular is unnecessary.
  • Display Dependencies: This gives a nice picture of which plugins, widgets, etc., depend and rely on each other to function correctly. I recommend enabling this.
  • Testing Mode: This allows you, as the admin, to work on your LIVE website and see your changes on the front end without your end users seeing anything you might be changing/breaking as you work through the testing process. I recommend enabling this. Be sure to disable this setting when you’re done using it, as it does place a minimal overhead on performance. This is another argument for still using a Staging environment when getting your Script Manager settings dialed in.
  • MU Mode: Some themes and plugins are coded so that optimization plugins cannot see them without some extra work, and this feature brings them all to the surface. I recommend enabling this.
  • Hide Disclaimer: Once you’re familiar with the disclaimers that Perfmatters communicates, you can enable this setting to prevent the disclaimers from loading.
  • Reset Script Manager: Hopefully, you’ve thoroughly tested your website as you’ve used Script Manager, but if you haven’t and you’re completely lost, this option can quickly restore it to a clean slate.
Global View

When you open the Scripts Manager options, you’ll see a Global View menu item on the left-hand side of your screen, and if you click on that menu item, it will show you a global view of everything you currently have set. Each post or page is identified by its ID, which is also hyperlinked, so you can quickly see which post/page is being referenced.

Loading Options
Disable Loading Completely

This option is the easiest to use, and I recommend it over any other whenever possible.

In short, if you know a theme or plugin is not used for a particular page, completely disable it within Script Manager by sliding the toggle next to the theme/plugin’s name to red/off.

When you completely disable a theme or plugin, you’ll be presented with some options for special exclusions. The options are mostly self-explanatory, with the exception of the Regex option.

Regarding Regex, let’s say you have a page for each corresponding taxonomy. Rather than optimizing each page individually, you can use the Regex option of Script Manager to target them all in one shot.

The regex option allows you to target all posts/pages with a particular word in the URL.

For example, let’s say that every Explore page includes the word “Explore,” and you have a plugin that doesn’t need to load on those Explore pages. Using Script Manager, you can disable the entire plugin by choosing the Regex option and entering ‘(explore)’ as the value.

Disable Loading Selectively

If you need a theme or plugin to load, but some of its CSS or JS is unnecessary, you can selectively choose what elements should load rather than completely disabling it.

Show Advanced Options

This should only be enabled if you know what you’re doing. The settings that this option exposes are more advanced and can break aspects of your website if used improperly.

Disable for Logged-In Users

If you notice any issues with the website, specifically for logged-in users, enable this setting and test the website again. If you find this setting fixes issues for logged-in users but don’t want to completely disable the optimizations Perfmatters provides those folks, you can selectively disable settings using filters.

Hide Admin Menu Bar

Perfmatters adds a quick link to the WordPress Dashboard simply for ease of access. I’d like to disable this because it’s one more thing to load, and I don’t need that quick access to Perfmatters.

Accessibility Mode

This setting might help those who work with Perfmatters and are visually impaired or using a screen reader. Accessibility mode disables the use of visual UI elements in the plugin settings, such as checkbox toggles and hovering tooltips.

Settings

Clean Uninstall

If you ever go to uninstall Perfmatters and you are fairly certain you’ll never install it again, enable this option before uninstalling the plugin. This setting ensures Perfmatters cleans up after itself entirely when it’s removed from your website.

Another option is to export your Perfmatters settings and then use the Clean Install option. That way, you’ll be covered if you ever want to install Perfmatters later.

Purge Meta Options

Perfmatters has meta options to disable certain features from running on individual pages. Sometimes, you might want to start over with certain meta options or with all of them, and that’s where this setting comes into play.

Export Settings

This setting is helpful if you want to create a backup of your settings before uninstalling Perfmatters. It’s also helpful for distributing settings to other websites you manage with Perfmatters.

Database

If you happen to be using a plugin just for the purpose of keeping your database clean, Perfmatters removes the need for that extra plugin. The options in this section are self-explanatory, but below are some special mentions.

  • Tables: Those hosting with Kinsta should not enable the Tables option, as this can do more harm than good, as Kinsta uses database technology that doesn’t require this
  • Scheduled Optimization: Ensure you run optimizations on a schedule (e.g., weekly).

Share Post

383 Exclusive Deals

No Affiliation. Just Big Savings on WordPress and Non-WordPress Solutions.

Exclusive Giveaways

Effortless Entry. No Purchase Required.

IWP Newsletter

No Affiliate Links. No Ads. No Spam. Just Good Stuff.

Our newsletter dares to be different.

Your trust matters. That trust is awarded by providing you with quality content and never sharing your information.