Load testing WordPress plugins performances
Written by Francesco Carlucci in 2019
When it comes to WordPress performance, a lot of players are involved and they all need to play together nicely to produce a robust and fast loading website. The hosting and the stack in general (caching, CDN, database) are of course critical, as well as the “size” of the site in terms of posts and images, and many other factors.
In this article, we will focus on themes and plugins, which are equally important because every new plugin has an impact on the site’s performance, and a poorly coded theme can significantly slow down the entire site!
When we run performance audits, one of the first things we check is the list of active plugins and themes, and it is not rare to find bottlenecks there!
Before installing a new plugin, a question you should ask yourself is:
Do I really need all the functionalities the plugin brings into my site, and how significant is the impact on my site’s performances?
To make this concept more tangible, I decided to load test some popular WordPress plugins and show in plain numbers their “performance price.”
Getting ready to load-test WordPress
I choose to test on a strong foundation, so I put the target site on a very powerful and performance oriented hosting platform called Kinsta (affiliate link), and I strongly recommend it for a hassle-free hosting experience.
The active theme is Twenty Seventeen, which is very lightweight, and the plugins I tested were:
- Advanced Custom Field
- All In One SEO Pack
- Caldera Forms
- Contact Form 7
- Cookie Notice
- Custom Post Type UI
- Jetpack by WordPress.com
- MailChimp for WordPress
- NextGEN Gallery
- Ninja Forms
- Page Builder by SiteOrigin
- Shortcodes Ultimate
- Sucuri Security
- The Events Calendar
- User Role Editor
- Wordfence Security
- Yoast SEO
As part of the test, the website filled with about 1000 items for every post type (posts, pages, products, events, etc.) generated using FakerPress, a plugin that loads dummy data in WordPress. I conducted all the tests using Loader.io, a simple, reliable and free tool!
WordPress itself is insanely fast!
I ran an initial test with no active plugin, and the results were unsurprisingly good: with 10,000 users distributed in a period of one minute the average load time was 400 milliseconds for the first load, then about 100 ms when the cache started doing its job!
My initial plan was to test the front-end part of the site, even if some plugins only impact a specific section of the website. However, after running a second test with all the plugin active, I realized the outcome would not be so much different for one reason: the cache.
Kinsta uses a pretty aggressive full page cache, so once the page is in the cache, it will be fast, no matter how much content, CSS or JS is there.
So, to get a more reliable and consistent result, I decided to test the WordPress backend (which is uncached) and more specifically the Admin Dashboard.
Testing the backend, plugin’s impact is as huge as 12 seconds
I tested the two edge scenarios, all plugins active versus no plugin active, and the difference in seconds was huge: 0.304 compared to 12.895, a difference of more than 12 seconds!
AI ran the tests three times to ensure reliable results and minimize “server behavior” impact, and of course, test settings were always the same: 500 distributed in a one-minute test. I’m well aware 500 users in the backend would be too many, but I wanted to put a significant amount of stress on the server to highlight the impact of plugins.
Moving forward, I re-ran the test, deactivating each plugin one-by-one, to get its “performance price” and here are the results ordered from best to worst:
|Ninja Forms||1,308 s|
|WPForms Lite||1,344 s|
|Shortcodes Ultimate||1,545 s|
|Caldera Forms||1,580 s|
|Cookie Notice||1,585 s|
|Contact Form 7||1,625 s|
|Page Builder by SiteOrigin||1,708 s|
|Advanced Custom Field||1,864 s|
|User Role Editor||1,934 s|
|NextGEN Gallery||1,948 s|
|Custom Post Type UI||1,975 s|
|MailChimp for WordPress||1,979 s|
|Sucuri Security||2,492 s|
|All In One SEO Pack||2,935 s|
|Yoast SEO||3,483 s|
|Wordfence Security||3,497 s|
|Jetpack by WordPress.com (19 modules active)||3,662 s|
|The Events Calendar||4,338 s|
Interpreting the results
Keep in mind this does not mean activating Yoast, for instance, which will slow down your backend by 3.5 seconds. We are stress testing the system, and if you are the only user in the backend, you will probably only notice a few milliseconds of performance loss, but at the same time, you will see that plugins do have an impact on performances even if we are testing an agnostic page (the WP dashboard).
According to the results, I would consider:
- excellent: < 1.5 seconds
- good: < 2 seconds
- accettable: < 3 seconds
- not good: > 3 seconds
What’s the next?
Of course, this test is not the bible, meaning that results could be completely different on another hosting platform or with other plugin combinations, as often the plugins can interact differently and even conflict. But it gives us a significant number of insights to think about!
It would be very interesting to load test the frontend and themes, as the most used part of a WordPress website, but also more challenging as plugins impact the front end in different ways.
For now, the main takeaway is that we should be “frugal” with plugins, keep the number under control and consider some custom development for small or specific features.
Author's note: this blog post was published on my old site francescocarlucci.com - it became quite popular so I am "preserving a copy" here on my new site.