How many plugins is too many on WordPress?
Not how many.
What each one costs.
There is no number of WordPress plugins that is too many: one heavy plugin can slow a site more than twenty light ones. What costs speed is what each plugin does on every page view: the scripts and styles it loads, the options it autoloads, the database queries and outside requests it makes. What costs safety is a plugin nobody maintains. Below: how to measure each cost, a free plugin audit that finds two plugins doing one job, and an honest look at which front-end plugins one website widget can replace, and which it can’t.
By the Builderify team
Do plugins slow down WordPress?
Only by what they do.
A plugin that only adds a settings screen costs a visitor almost nothing. A plugin that puts a script on every page, or runs a slow query on every request, costs every visitor every time. These are the five places the cost hides, and where to see each one.
Files on every page
Plugins add scripts and stylesheets with wp_enqueue_script(). Many load them on every page, not just the one with the form or slider. Since WordPress 6.3 a plugin can ask for defer or async; not all do.
See it: Query Monitor: Scripts and Styles
Autoloaded options
WordPress loads every autoloaded option on every request. Since 6.6, options over 150 KB are not autoloaded unless a plugin insists, and Site Health warns when the total passes 800 KB.
See it: Tools › Site Health
Slow queries
Some plugins query the database on every page view, sometimes the same query several times. It shows up as server time before the first byte.
See it: Query Monitor: Queries by Component
Outside requests
On the server, a plugin can call out to a licence check or feed while the page is built. In the browser, every third-party script means another connection and more work on the main thread.
See it: Query Monitor: HTTP API Calls; DevTools Network
Two plugins, one job
Two analytics tags, two popup tools, two cookie banners: double the cost for one result, and sometimes two banners asking the same question.
See it: The audit below
Plugin scripts show up most in Interaction to Next Paint (INP), the Core Web Vital for how quickly a page responds to a tap or click. web.dev counts an INP of 200 milliseconds or less as good and over 500 as poor, measured at the 75th percentile of real visits. Busy main threads, which is what too much JavaScript makes, are the usual cause.
Plugins that mostly work in the dashboard, such as a redirect manager or an editor tweak, add little to what a visitor downloads. Scheduled work such as backups still uses your server, so run it at a quiet hour.
Are more plugins
a security risk?
Each plugin is someone else’s code running with full access to your site, and nine in ten WordPress vulnerabilities found in 2025 were in plugins, not in WordPress itself. A plugin is only as safe as the last time somebody updated it, so the question for each one is less “do I need this?” than “is anyone still looking after it?”
Delete the plugins you have switched off and won’t use again. A deactivated plugin doesn’t run on your pages, but its files are still on your server.
new vulnerabilities in the WordPress ecosystem in 2025, 42% more than in 2024
of them were in plugins; 9% in themes
were in WordPress core, all low priority
had no fix from the developer in time for public disclosure
Source: Patchstack, State of WordPress Security in 2026
-
WP Notification Bars 10,000+ active installs
Last updated 28 February 2022 and tested up to WordPress 5.9.19, while WordPress is on 7.1.3. Its page warns that it “hasn’t been tested with the latest 3 major releases of WordPress.”
-
BookingPress Closed
Closed on WordPress.org on 1 February 2025, with the reason given as a guideline violation. A closed plugin can’t be downloaded from the directory and gets no updates through it.
Check yours on each plugin’s WordPress.org page: Last updated and Tested up to. The audit below flags the ones in its list that are closed or out of date.
How do I find which plugin
is slowing WordPress down?
Measure instead of guessing. Four free tools tell you almost everything, and the last step proves it. Do the switching off on a staging copy if your host gives you one.
-
Step 1
Write down the job of every plugin
Plugins › Installed PluginsGroup them by what they do. Two plugins on one job is the cheapest win there is, and the plugin audit below does the grouping for you.
-
Step 2
Look inside a page with Query Monitor
Admin toolbar › Query MonitorInstall the free Query Monitor plugin and open a typical page while logged in. Queries by Component shows the database time per plugin, HTTP API Calls shows outside requests made while the page was built, and Scripts and Styles list every file each plugin added.
-
Step 3
Check the autoloaded options
Tools › Site Health › StatusSite Health shows “Autoloaded options could affect performance” when the total passes 800 KB. Plugins you have deleted can leave their options behind.
-
Step 4
Watch a visitor’s page load
DevTools › Network, Coverage, PerformanceOpen the page logged out, in a private window, with Chrome DevTools. In Network, sort by domain to see which files come from which plugin or vendor. In Coverage (Command Menu, then “Show Coverage”), see how many bytes of each script and stylesheet the page never used. In Performance, record a click and look for long tasks.
-
Step 5
Switch one off, and measure again
pagespeed.web.devRun PageSpeed Insights three times, deactivate one plugin, and run it three more. The lab numbers move within minutes. The field data at the top comes from real Chrome users over the previous 28 days, so it lags any change you make.
Which of your plugins
do the same job?
Tick the plugins you run, or paste the text of your Plugins page. The audit finds overlaps, flags plugins the directory says are closed or out of date, and says which jobs Builderify can take over and which it can’t. Nothing you paste leaves your browser.
Select everything on Plugins › Installed Plugins and paste it here, or type names one per line.
7 if the 3 plugins marked “check first” go too.
-
Popups and opt-insOptinMonster + Popup Maker
Two plugins doing one job. Pick one.
-
Visitor statsJetpack (Stats) + MonsterInsights
Two plugins doing one job. Pick one.
-
Not maintained in the directory
The count assumes one tag in a snippets plugin. With a child theme instead, it is one fewer.
Builderify can take over
6-
OptinMonster Popups and opt-ins
Builderify Popups: exit-intent, scroll, delay and page-count triggers, shown by page, device and new or returning visitor. Sign-ups land in your lead lists and are asked to confirm.
OptinMonster alternative guide -
Popup Maker Popups and opt-ins
Builderify Popups: exit-intent, scroll, delay and page-count triggers, shown by page, device and new or returning visitor. Sign-ups land in your lead lists and are asked to confirm.
OptinMonster alternative guide -
Tidio Live chat
Live chat, plus an AI chatbot that answers from your own pages, in the same widget.
Free live chat plans compared -
CookieYes Cookie banner
A banner with Google Consent Mode and a consent log, from its own tag first in <head>. It is not Google-certified and has no IAB TCF, so ad publishers who need those should keep a certified banner.
CookieYes free plan limit guide -
MonsterInsights Visitor stats
MonsterInsights shows Google Analytics inside WordPress. If you are leaving GA4, User Journey replaces both; if you keep GA4 for Google Ads, keep it.
Jetpack Stats is free again: the alternatives -
GTranslate Translation switcher
GTranslate's free version also translates in the browser and says it gives no SEO advantage. If you pay for its indexed translations, keep it.
Google Translate widget guide
Check first
3-
Jetpack (Stats) Visitor stats
Jetpack Stats is free again for any site. Builderify covers the same job; if you also use Jetpack for backups, scans or anything else, keep it and turn its Stats module off.
Jetpack Stats is free again: the alternatives -
Contact Form 7 Contact forms
The widget's Message Us form puts each message straight into your Builderify Inbox, so there is no email to get lost. It sits in the widget, not inside a page, and the Inbox comes with adding your own sending domain.
Contact form not sending email guide -
Pretty Links Link management
Short links with click analytics and bot flags, on a short domain you connect. Plugins like Pretty Links put links under a path on your WordPress domain, so moving means redirecting the old ones.
Affiliate link click tracking guide
Keep
6-
WP Mail SMTP Email delivery
WordPress's own emails, such as password resets, order receipts and anything a form plugin sends, still go out through wp_mail(). Keep one SMTP plugin for those.
Contact form not sending email guide -
Yoast SEO SEO
Titles, sitemaps, schema and redirects are made on your server before the page reaches a browser. A script tag can't do them.
-
LiteSpeed Cache Caching and speed
Page caching and file optimisation happen on your server. Keep one, and if it delays or combines JavaScript, leave the Builderify consent and A/B tags out of that.
-
UpdraftPlus Backups
Copies of your files and database. Keep one, with a copy stored away from your server.
-
Wordfence Security
Firewalls, malware scans and login protection work on your server.
-
Elementor Page builder
Your pages are built with it. Removing it means rebuilding them.
Active installations, last updates and closures were read from the WordPress.org plugin directory on 15 October 2026. WP Rocket and WPML are sold outside the directory. The audit doesn’t measure speed: that is what the steps above are for.
Can one script replace
several WordPress plugins?
For jobs that happen in the visitor’s browser, often yes: a popup, a chat box, a cookie banner and a stats tag are each a script on the page, whichever plugin installs them. For jobs on your server, no. And a script is still a cost, so here is ours, measured the way section 03 says to measure anything.
- Several front-end plugins each load their own vendor’s script, styles and connection on every page.
- Two of them do one job, like two popup tools or two stats tags.
- You want one place to manage it all, and one bill that only grows with use.
- The work can wait until the page has loaded, which is how the Builderify widget loads.
- The job runs on your server: SEO, caching, backups, security, a shop, a page builder.
- You run one light plugin and nothing else. Swapping it gains you nothing.
- You can’t accept a single dependency. If the provider is down, or a Builderify account runs out of credits, every module in the widget stops at once.
- You need translated pages that search engines index. Builderify translates in the browser, and those translations are not indexed.
What Builderify’s script actually loads
“Lightweight” means nothing without a number. The tag you paste loads a 2.6 kB loader, which waits for the page’s load event and an idle moment before fetching the widget. The widget core is the big file: 253.8 kB, 54.5 kB over the wire, cached for a year. Each block you turn on is its own small file, fetched only if your widget uses it, and the live chat connection loads only when a chat starts.
Two modules have to act before the page paints, so they come as their own small tags in <head>: Cookie Consent and A/B Testing. Those two load before the page, not after it.
On builderify.com/guides, with the consent tag, the A/B tag and a widget running live chat, support tickets, links, the cookie banner and User Journey: 14 requests and 97 kB, of which 13 kB came before the load event.
Headless Chromium, cache off, three runs with and three without Builderify’s requests, medians, 15 October 2026. One page and one widget setup: measure yours with the steps in section 03.
| File | When it loads | Size, kB | Sent, kB |
|---|---|---|---|
Consent tag
/consent/…js
|
Before the page paints, first in <head> Only with Cookie Consent | 21.1 | 7.7 |
A/B tag
/ab/…js
|
Before the page paints, high in <head> Only with A/B Testing | 9.7 | 4.3 |
Loader
bdf-connect.js
|
With the page, then it waits Always | 2.6 | 1.2 |
Widget core
bdf-core-….js
|
After the load event, when the browser is idle Always; cached for a year | 253.8 | 54.5 |
Your widget's settings
One API request
|
After the core Always | — | 4.3 |
One file per block in use
bdf-<block>-….js
|
After the settings, only for blocks you turned on 0.3 to 31.3 kB each | 0.3–31.3 | 0.3–8.2 |
Live chat connection
bdf-pusher.js
|
Only when a live chat connects Live Chat only | 62.1 | 18.7 |
How do I add Builderify
to WordPress?
There is no official Builderify plugin for WordPress yet, so the tag goes in by hand, once. It takes about five minutes.
-
1. Copy your tag
In Builderify, open your website's Integration page and choose the WordPress tab. It shows your tag with your widget's ID already in it.
-
2. Paste it into a snippets plugin
With WPCode or Code Snippets, create a snippet and paste the tag into the Header section. This survives theme updates and works with block themes, which have no header.php.
-
3. Or use a child theme
On a classic theme, paste it just before </head> in your child theme's header.php. Don't edit the parent theme: its next update overwrites your change.
-
4. Add the head tags you need
Using Cookie Consent? Its tag goes first in <head>, above everything else. A/B Testing's tag goes as high as you can, before any stylesheet. If a speed plugin delays or combines JavaScript, leave these two out of it.
One balance pays for all of it. The widget costs 10 credits per 1,000 page loads, and every account gets 250 free credits a month, which is about 25,000 page loads before anything else uses them. New leads are 1 credit each, live chats 1, tracked visitors 0.1 and announcements 5. Packs start at $9 for 1,000 credits, never expire, and are all on the pricing page.
- Popups and top bars
- Live chat
- AI chatbot
- User Journey analytics
- Announcements
- Bookings
- Callback requests
- Quizzes
- Support tickets
- Accessibility toolbar
- Translations (not indexed)
- Lead capture
- No official WordPress plugin yet. The tag lives in a snippets plugin or a child theme.
- Translations happen in the visitor's browser and are not indexed by search engines. For translated pages in search, keep TranslatePress, Polylang or WPML.
- If your credits run out, the widget stops loading, and with it every module, the cookie banner included. The consent tag keeps running: under an opt-in rule new visitors stay at “denied” with no banner to change it, and under an opt-out rule they are treated as agreeing without seeing one. Keep an eye on your balance.
- The cookie banner is not Google-certified and doesn't support IAB TCF. If you run Google ads to visitors in Europe and need a certified banner, keep yours.
- It doesn't replace your SEO, caching, backup or security plugin, your page builder or your shop.
How many plugins should
a WordPress site have?
As many as it has jobs, and one per job. Most business sites need an SEO plugin, a cache, a backup and some security on the server, plus whatever runs on the page. These are the calls we’d make, including the ones where the answer isn’t us.
Your contact form has to sit inside the page.
Keep Contact Form 7 or WPForms, and make sure its email arrives: the contact form email guide walks through SMTP and DNS. Builderify’s form lives in the widget instead.
Your stats plugin is free, cookieless and enough.
Leave it. If a plugin like Koko Analytics already answers your questions, switching gains you little. Jetpack Stats is free again for any site too; the Jetpack Stats guide says what still costs and when an alternative is worth it, and the Google Analytics alternatives guide goes wider.
Your cookie banner stops working at a pageview cap.
Read the cap first. The CookieYes free plan guide explains what happens when the pageview quota runs out, and what to do before it does.
You run two popup tools, or pay for one per site.
Pick one. The OptinMonster alternatives guide compares plugins and services, and the exit-intent popup guide builds one step by step.
You need translated pages in search results.
Keep TranslatePress, Polylang or WPML, or GTranslate on a paid plan. A browser-side switcher, ours included, doesn’t get translations indexed. The Google Translate widget guide explains the difference.
Customers pay when they book.
Keep your booking plugin. Builderify Bookings handles meeting types, hosts and notice periods, but takes no payment.
Chat, popups, a banner, stats and a toolbar each come from a different vendor.
That is where one tag pays off. The Builderify widget runs them from one script and one balance of credits: live chat, a scheduled announcement bar, a lead scoring quiz, an accessibility toolbar (read what overlays can’t do first) and tracked short links.
WordPress plugins, before you ask.
There is no fixed number. One plugin that loads scripts on every page or runs slow database queries can cost more than twenty light ones. Measure what each plugin loads and queries, remove any that do the same job as another, and delete the ones nobody maintains.
No. A deactivated plugin doesn't run on your pages, so it doesn't cost speed. Its files are still on your server, though, so delete the plugins you won't use again rather than leaving them switched off.
Install Query Monitor and open a typical page: it shows database time, outside requests, scripts and styles by plugin. Check Tools › Site Health for autoloaded options, use Chrome DevTools on the logged-out page, then deactivate one plugin on a staging copy and compare PageSpeed Insights runs.
For jobs that happen in the browser, such as popups, live chat, a cookie banner, stats or an accessibility toolbar, one widget script can replace several vendors' scripts. It can't replace server work like SEO, caching, backups, security or a shop, and a script is still a dependency on its provider.
Not yet. You add the Builderify tag once with a snippets plugin such as WPCode or Code Snippets, in the Header section, or in a child theme's header.php before </head>. That loads every module you turn on, with Cookie Consent and A/B Testing each adding their own small tag in <head>.
Sources
Read on 15 October 2026.
- WordPress Developer Resources wp_enqueue_script(): loading strategies
- Make WordPress Core Options API: disabling autoload for large options
- web.dev Interaction to Next Paint (INP)
- web.dev Load third-party JavaScript
- Chrome for Developers Coverage: find unused JavaScript and CSS
- Google for Developers About PageSpeed Insights
- WordPress.org Query Monitor
- Patchstack State of WordPress Security in 2026
- WordPress.org WP Notification Bars
- WordPress.org BookingPress (closed)
- WordPress.org GTranslate
- WordPress.org Site Kit by Google
- WordPress.org Koko Analytics
- WordPress.org Amelia
- WordPress.org Nelio A/B Testing
- WordPress.org Web Accessibility (Ally)
- WordPress.org WP Accessibility
- WordPress.org PrettyLinks
Stop losing the visitors
you already paid for.
More leads from the traffic you already have, and follow-up that sends itself. Free to start. No card, no monthly fee.