Share
Explore

Perfmatters

Lightweight WordPress performance plugin. Slow WordPress sites have higher bounce rates and fewer conversions.
addresses many optimizations most cache plugins don’t.
Even though most people use it to remove unused CSS/JS with the , it has other that can improve core web vitals and real-world browsing experience. It can remove unused CSS (1-click setting), preload critical images to improve LCP, delay JavaScript, remove bloat, limit post revisions/autosaves, and host fonts/analytics locally. Kinsta also updates the plugin frequently. I like to say it finishes the last 10% of speed most cache plugins don’t handle.
I prefer Perfmatters over Asset CleanUp because the interface is cleaner, it includes more optimizations, and it’s maintained better with new features which you’ll find in the . This guide should help you configure the ideal Perfmatters settings to give you the best results.
1. General
Some Perfmatters settings may overlap with your cache plugin and cause duplicate functionality, but may want to test it in Perfmatters to see if it gives you better results.
Disable Emojis: ON – removes JS file loaded by emojis.
Disable Dashicons: ON – prevents admin icon font from loading on the frontend.
Disable Embeds: ON – when you paste a URL into your WordPress editor, this feature loads a pretty preview (from YouTube, Facebook, Tweets, etc). Disable if you don’t use it.
Disable XML-RPC: ON – bad for speed + security (used to publish content from mobile).
Remove jQuery Migrate: ON – leave on if you’re using a page builder, disable otherwise.
Hide WP Version: ON – improves security by hiding WP version from showing publicly.
Remove wlwmanifest Link: ON – you likely don’t use Windows Live Writer, so disable.
Remove RSD Link: ON – used to edit your site in a browser instead of blog clients.
Remove Shortlink: ON – disable if you’re using the “post name” permalink structure.
Disable RSS Feeds: OFF – only enable this if you don’t have a blog on your website.
Remove RSS Feed Links: ON – removes unnecessary links in your RSS feed to pages, posts, comments, categories, tags, etc. This will remove a little unused code on your site.
Disable Self Pingbacks:– ON – disables pingbacks when linking to your own blog.
Disable REST API: disable for non-admins – hides usernames of anyone who published on your site to improve security, but completely disabling it often leads to errors with Gutenberg and certain plugins. Therefore, disabling Rest API for non-admins is safest.
Remove REST API Links: ON – removes a short line of code created by the REST API.
Disable Google Maps: OFF – some themes/plugins have the Google Maps API built-in with no option to disable this, in which case you can disable Maps if you don’t use them.
Disable Password Strength Meter: ON – removes a file that can sometimes load on your website when it should usually only load on account, checkout, and password reset pages.
Disable Comments: OFF – you probably don’t want to disable blog comments completely.
Remove Comment URLs: ON – disables comment author links which are often spam.
Add Blank Favicon: OFF – only used for speed testing purposes on fresh WP installs.
Remove Global Styles: ON – removes 311 lines of unminified code which seemed to be to WordPress core. It was originally added to improve duotone styles.
Heartbeat: disable everywhere – only enable if you need the Heartbeat API which shows when other uses are editing a post, real-time plugin notifications, etc. Heartbeat is known for increasing CPU usage but if you need it, you can enable Heartbeat then limit it to 60s.
Limit Post Revisions: 5 – gives you a few backups of old posts in case you need to restore a post to an earlier version, but prevents too many revisions from bloating your database.
Autosave Interval: 5 minutes – increase frequency to reduce CPU and save resources.
Change Login URL: add a custom login URL – stops unwanted requests by hiding wp-login from bots/attackers. If using QUIC, keep the default URL since it has features to protect it. You can also change the redirect/message when the default login is viewed.
2. Assets
JavaScript
Script Manager: ON – lets you edit pages/posts to remove unused CSS/JS (see below).
Defer JavaScript – OFF – most cache plugins already do this. Deferring JavaScript fixes the render-blocking resources item in PageSpeed Insights and can also include jQuery.
Delay JavaScript: OFF – again, most cache plugins already do this. If not, enable it, then add non-critical JavaScript files loading below the fold while setting the delay timeout.
Delay Behavior: only delay specified scripts – better control of which files are delayed. “Delay all scripts” is more aggressive but may include files loading above the fold and others you may not want delayed. In that case, you would need to exclude those files.
Delayed Scripts: add a list of JS files you want delayed. This is often done with Google Analytics, Tag Manager, AdSense, Facebook Pixel, and other third-party code which you can find in your PSI report. You can also delay specific plugins loading below the fold. Perfmatters has for delaying certain types of files. They explain how to delay common third-party code, inline JavaScript, and why you can defer/delay simultaneously. Read the documentation! Feel free to also check out this list of common JF files to delay.
Delay Timeout: amount of time to delay JavaScript. I found that you usually have to do it for about 4s (or more), otherwise you may not see as good of results in some speed tests.
Using The Script Manager
Once the is enabled, view any page/post and it will be in the admin bar.
Script manager tab
Next, view scripts/styles loading on that post (they will be categorized by plugins). You can disable them everywhere, on current URL, use (URL patterns), and make exceptions.
Examples
Disable social sharing buttons on everywhere but posts.
Disable contact form plugin everywhere but contact page.
Disable slider plugin on all posts if they’re only used on pages.
Disable any page builder plugins where they’re not being used.
Disable schema plugin on all pages if they’re only used on posts.
Disable email plugins on pages if forms are only used on your blog.
Disable page builder CSS/JS (but most have built-in settings for this).
CSS
Remove Unused CSS: ON – before you do this, Perfmatters recommends disabling existing CSS preloads, uncombining CSS, and disabling this feature in other plugins.
Stylesheet Behavior: Delay – what Perfmatters recommends for better LCP/FCP.
Clear Unused CSS: use this if you make design/code changes and aren’t seeing them.
3. Preloading
Preload, preconnect, prefetch are often recommended in PSI. Many cache plugins automatically preconnect CDN URLs and Google Fonts (and some add preload automatically too). Read up on your cache plugin’s documentation, then use Perfmatters to add more resource hints if needed.
Enable Instant Page: OFF – downloads pages in the background when users hover over a link. However, this can cause high CPU usage and the benefit might not outweigh the cost.
Preload: use this to preload fonts mentioned in the CSS style and any fonts loading above the fold (only self-hosted fonts can be preloaded). PSI also tells you which fonts to preload under preload key requests. Images usually don’t need to be added here (use next setting).
Preload Critical Images: 2-3 – preloads above the fold images, resulting in a faster LCP. The number should be determined by how images are typically above the fold (i.e. 2-3).
Preconnect – CDN URLs and third-party Google Fonts (font.gstatic.com) are the most common URLs to preconnect. Your cache plugin may already do this, so make sure to check the documentation. Fonts should always be preconnected using CrossOrigin.
Prefetch – open your “reduce impact of third-party code report” in PSI (or GTmetrix Waterfall chart) and they’ll list all third-party domains loading on your site. Other than CDN URLs + third-party fonts which you’ll use preconnect, the rest should be prefetched.
4. Lazy Loading
Images: ON – while using JS is said to be worse (what Perfmatters uses), they say it only adds 2.5KB and is better than native lazy load since more resources can be lazy loaded. If you enable it, native lazy loading in WordPress will be disabled and will show the option to exclude leading images. I wouldn’t use this because the number of images shown above the fold can be different depending on the page/post (excluding them manually is better).
iFrames And Videos: ON – lazy loads iframes and replaces iframes with a preview image so the “fat YouTube player” is only loaded when clicked. I have this enabled in FlyingPress which also hosts the thumbnails locally to prevent third-party requests from ytimg.com.
Exclude From Lazy Loading – above the fold images should be excluded from lazy load which can improve LCP. Copy those image URLs and add them so they’re not lazy loaded.
DOM MonitoringOFF (only enable if you use infinite scrolling). Kinsta says this “watches for changes in the DOM and dynamically lazy loads newly added elements. This improves compatibility for third-party plugins and themes that utilize infinite scrolling…”
Add Missing Images Dimensions: ON – adds width/height to images without dimensions to prevent layout shifts while fixing the “use explicit width + height” PSI recommendation.
Fade In: ON – adds a fade in effect for lazy loaded images so they don’t jump in suddenly.
5. Fonts
Disable Google Fonts: OFF – only use if you’re in the process of using system fonts or custom fonts and need to disable them. Otherwise, it removes Google Fonts on your site.
Display Swap: ON – adds font-display: swap to your font CSS which can fix “ensure text remain visible during webfont load” in PSI. While it fixes FOIT (flash of invisible text) by setting a fallback font, it can also cause FOUC (flash of unstyled text) which can look ugly.
Local Google Fonts: ON – downloads fonts.google.com fonts and hosts them locally.
CDN URL: add a CDN URL to serve self-hosted fonts from your CDN (i.e. BunnyCDN, StackPath, etc). But this does not apply to Cloudflare since they don’t use a CDN URL.
6. CDN
Enable CDN Rewrite – ON – if you’re using a CDN URL, this rewrites assets to be served from the CDN (i.e. https://cdn.yourwebsite.com/wp-content/uploads/2022/02/logo.png). Cloudflare doesn’t use a CDN URL in which case you’d skip the CDN section all together.
CDN URL: add your CDN URL – common CDNs are BunnyCDN, KeyCDN, RocketCDN.
Included Directories: generally nothing to do here (Perfmatters automatically includes wp-content and wp-includes in the CDN rewriting, which should be all most sites need).
CDN Exclusions: .php + .xml are good if you’re using an SEO plugin like Yoast/Rank Math.
7. Analytics
Enable Local Analytics: ON – host locally to prevent third-party GA requests.
Tracking ID: enter your Google Analytics tracking ID so it can be hosted locally.
Tracking Code Position: Header (Default) is what’s recommended by Google.
Script Type: analytics.js or minimal – these have smaller file sizes compared to other types, but disables some data in Google Analytics. Read the Perfmatters documentation and decide whether you want to disable the data in return for a small performance boost.
Disable Display Features: ON – disables remarketing and advertising options in GA which isn’t used by most people and prevents a second HTTP request to DoubleClick.
Anonymize IP: ON – shortens IP address to comply with GDPR in some countries.
Track Logged In Admins: OFF – you don’t want admin visits in your analytics data.
Adjusted Bounce Rate: 30s – this is recommended by the Perfmatters developers.
Use MonsterInsights: OFF – only enable if using MonsterInsights to host GA locally.
Enable AMP Support: OFF – only enable if you’re using AMP which I don’t recommend.
8. Database
This is found under Tools → Database.
Most cache plugins do this already so there’s usually no need for this. But as a bonus tip, I recommend installing every so often which lets you go through your actual database tables and remove junk left by old plugins. Especially if you install/delete plugins constantly, they can leave behind tables. Also lookout for certain plugin features/modules causing database bloat (some plugins are module-based and let you disable certain features).
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.