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.

52 plugins in the audit 2 closed or out of date WordPress 7.1.3

By the Builderify team

Illustration · a typical plugin list, run through the audit below. Your list will differ.
01 / What slows it

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.

01

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

02

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

03

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

04

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

05

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

The number that matters to Google

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.

What costs little

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.

02 / Security

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.

11,334

new vulnerabilities in the WordPress ecosystem in 2025, 42% more than in 2024

91%

of them were in plugins; 9% in themes

6

were in WordPress core, all low priority

46%

had no fix from the developer in time for public disclosure

Source: Patchstack, State of WordPress Security in 2026

Two examples from the directoryRead 15 Oct 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.

03 / Measure

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.

  1. Step 1

    Write down the job of every plugin

    Plugins › Installed Plugins

    Group 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.

  2. Step 2

    Look inside a page with Query Monitor

    Admin toolbar › Query Monitor

    Install 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.

  3. Step 3

    Check the autoloaded options

    Tools › Site Health › Status

    Site Health shows “Autoloaded options could affect performance” when the total passes 800 KB. Plugins you have deleted can leave their options behind.

  4. Step 4

    Watch a visitor’s page load

    DevTools › Network, Coverage, Performance

    Open 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.

  5. Step 5

    Switch one off, and measure again

    pagespeed.web.dev

    Run 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.

04 / Plugin audit

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.

Nothing pasted yet.
Plugins you run
Or tick them
Jobs on the page, where one script can help
Popups and opt-ins
Builderify can do it
Notification bars
Builderify can do it
Live chat
Builderify can do it
Cookie banner
Builderify can do it
Visitor stats
Builderify can do it
Contact forms
Builderify, mostly
Bookings
Builderify, mostly
Quizzes
Builderify, mostly
Translation switcher
Builderify can do it
A/B testing
Builderify, mostly
Accessibility toolbar
Builderify can do it
Link management
Builderify, mostly
Jobs on your server, which a script can’t do
Email delivery
Keep a plugin
Code snippets
Holds the tag
SEO
Keep a plugin
Caching and speed
Keep a plugin
Backups
Keep a plugin
Security
Keep a plugin
Page builder
Keep a plugin
Shop
Keep a plugin
Indexed translations
Keep a plugin
Your auditPlugins
15 → 10 plugins

7 if the 3 plugins marked “check first” go too.

Builderify can take over6
Check first3
Keep6
Add WPCode or Code Snippets+1
Two plugins, one job2
  • Popups and opt-ins
    OptinMonster + Popup Maker

    Two plugins doing one job. Pick one.

  • Visitor stats
    Jetpack (Stats) + MonsterInsights

    Two plugins doing one job. Pick one.

The count assumes one tag in a snippets plugin. With a child theme instead, it is one fewer.

Builderify can take over

6
  • None.
  • 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
  • None.
  • 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
  • None.
  • 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.

05 / One script?

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.

When it helps
  • 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.
When it doesn’t
  • 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.

Measured on our own site

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.

Main-thread work added+94 ms
Same, 4× slower CPU+275 ms
Total Blocking Time, 4× CPU+11 ms

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.

Every file Builderify loads, when it loads, and its size before and after compression
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
06 / Install

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. 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. 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. 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. 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.

Know this first
  • 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.
07 / What to keep

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.

If

Your contact form has to sit inside the page.

Then

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.

If

Your stats plugin is free, cookieless and enough.

Then

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.

If

Your cookie banner stops working at a pageview cap.

Then

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.

If

You run two popup tools, or pay for one per site.

Then

Pick one. The OptinMonster alternatives guide compares plugins and services, and the exit-intent popup guide builds one step by step.

If

You need translated pages in search results.

Then

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.

If

Customers pay when they book.

Then

Keep your booking plugin. Builderify Bookings handles meeting types, hosts and notice periods, but takes no payment.

If

Chat, popups, a banner, stats and a toolbar each come from a different vendor.

Then

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.

Questions

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>.

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.