Performance

Do review plugins slow down WooCommerce? We measured five

By · ·11 min read
A WooCommerce product page for a Polo with 500 reviews, beside bars showing all reviews on one page taking far longer than 50 per page, and a checklist of what was measured: server time, database queries and files on every page

Every plugin costs something. The question is whether a review plugin costs enough to notice, and most answers you'll find are guesses. So we measured WooCommerce review plugin performance on one test store: five plugins, each on its own against WooCommerce alone, over more than 1,400 timed page loads.

The short version: three of them added under 35 ms, close to our machine's own run-to-run variation, two added more on every page, and the biggest cost on the store wasn't a plugin at all. It was a WordPress setting that's off by default. Two of the five plugins are ours, and one of ours had a cost we didn't expect. It's in the results below.


Quick answer. A review plugin slows WooCommerce down through server time, extra database queries and the files it loads in the browser. On our test store, NeoGrow, NeoLite Review Customizer and NeoLite Disable Reviews each added under 35 ms of server time and loaded nothing outside product pages. Customer Reviews for WooCommerce added 78 to 98 ms, 17 to 30 queries, and 238 KB of CSS and JavaScript on every page. Site Reviews added 155 to 170 ms and 78 KB on every page. On a product with 500 reviews, turning on WordPress's comment paging cut the page from 1,565 ms to 650 ms with no review plugin at all.


The short version

  • Small plugins stay small. NeoGrow and both NeoLite plugins added under 35 ms on product pages, and 0 to 15 ms elsewhere.
  • Where the files load matters. Two plugins loaded their CSS and JavaScript on the home page and the shop, where no review is shown.
  • Queries per review add up. One plugin made about one extra database query for every review on the page: 521 extra for 500 reviews.
  • Check Settings → Discussion first. WordPress shows every review on one page unless you turn on paging. With 500 reviews, that one setting mattered more than any plugin.
  • Caching hides server time, not files. A page cache serves logged-out shoppers a stored copy, but the cart, checkout and logged-in customers still pay it, and every visitor's browser still downloads the files.

How we measured

The store was our test store: WordPress 7.1.3, WooCommerce 11.1.2, the Astra theme, and PHP 8.3.14 with OPcache on, running on a Windows PC under Apache. No page cache and no object cache, so every load built the page from scratch. Visitors were logged out.

Each run had WooCommerce plus one plugin active, and nothing else. We loaded four pages: the home page, the shop, a simple product with 10 reviews (the Belt) and a variable product with 4 (the Hoodie). Each page was loaded 5 times to warm up, then 20 times timed, in three separate rounds, so 60 timed loads per page per plugin. The figures are medians. A small probe plugin, deleted afterwards, recorded each load's server time, its database query count and its peak memory. Front-end files were counted from each page's HTML.

The plugins, at the versions installed on our store:

PluginVersionWhat it does
NeoGrow1.2.22Loyalty points and photo reviews
NeoLite Review Customizer1.1.1Renames and restyles the reviews section
NeoLite Disable Reviews1.1.1Login-only reviews, or none
Customer Reviews for WooCommerce5.124.0Review reminders and its own reviews display
Site Reviews8.3.4A general reviews plugin, with optional WooCommerce support

We didn't change any plugin's settings for the test. Site Reviews' own WooCommerce integration was off, as it is after install, so on our product pages the reviews were still WooCommerce's own; its figures are what having it active costs. Customer Reviews and Site Reviews had small updates available (5.126.0 and 8.3.5) that we didn't install.

One caution about the numbers. Our machine is slower than a good host, so the absolute times are high: WooCommerce alone took 460 to 610 ms per page. The differences are what to read. The same configuration varied by up to about 20 ms between rounds, so treat anything smaller than that as noise.

WooCommerce review plugin performance: the results

Server time is the part of Time to First Byte (TTFB) that your server controls: until WordPress finishes building the page, the browser receives nothing. Here's what each plugin added to the Belt's product page, compared with WooCommerce alone (562 ms, 74 queries, 26.0 MB):

PluginServer time addedQueries addedMemory addedCSS and JavaScript
NeoLite Disable Reviews+13 ms0+0.1 MBNone
NeoLite Review Customizer+24 ms0+0.1 MBNone
NeoGrow+28 ms+14+0.7 MB10.6 KB, product pages only
Customer Reviews for WooCommerce+98 ms+30+7.2 MB238.5 KB, every page
Site Reviews+160 ms+6+6.1 MB77.8 KB, every page

Across all four pages, the time added ranged from 0 to 13 ms for Disable Reviews, 8 to 25 ms for Review Customizer, 9 to 33 ms for NeoGrow, 78 to 98 ms for Customer Reviews and 155 to 170 ms for Site Reviews. The chart shows the product-page figures, in milliseconds added to WooCommerce's 562 ms:

Server time each review plugin added to a WooCommerce product page, as the median of 60 loads. NeoLite Disable Reviews: 13 milliseconds. NeoLite Review Customizer: 24. NeoGrow: 28. Customer Reviews for WooCommerce: 98. Site Reviews: 160. WooCommerce alone took 562 milliseconds on the same machine, and differences under about 20 milliseconds were within run-to-run noise.

Site Reviews made only six extra queries, yet added the most time. The queries weren't its cost; loading its code was. It brought in about 210 more PHP files than WooCommerce alone on every page, against about 65 for NeoGrow. Queries are easy to count, but they aren't the whole bill.

The files each plugin loads

The other cost lands in the shopper's browser: the CSS and JavaScript a plugin adds to the page.

PluginProduct pagesHome page and shop
NeoLite Disable ReviewsNothingNothing
NeoLite Review CustomizerNothingNothing
NeoGrow3 files, 10.6 KB (3.2 KB compressed); 4 files on a variable productNothing
Customer Reviews for WooCommerce3 files, 238.5 KB (33.4 KB compressed)The same 3 files
Site Reviews2 files, 77.8 KB (20.7 KB compressed)The same 2 files

Compressed sizes are with gzip; your server may compress differently. A browser caches these files after the first page, so the cost is paid mostly on a shopper's first visit, which is also the visit you're most likely to lose.

These files can also reach Core Web Vitals. A stylesheet in the page's head holds back the first render, which can delay Largest Contentful Paint (LCP), and JavaScript that runs on every page competes with the shopper's taps, which is what Interaction to Next Paint (INP) measures. We didn't measure Core Web Vitals in this test, so we can't say by how much; a page that shows no reviews just has no reason to carry the cost at all.

Where each plugin's CSS and JavaScript loaded. NeoLite Disable Reviews and NeoLite Review Customizer loaded no front-end files anywhere. NeoGrow loaded 10.6 kilobytes on product pages only. Customer Reviews for WooCommerce loaded 238.5 kilobytes, 33.4 compressed, on every page including the home page and the shop. Site Reviews loaded 77.8 kilobytes, 20.7 compressed, on every page.

What we found in our own plugin

NeoGrow added 8 database queries to every page, product page or not. We read through them. Six were NeoGrow checking, on every page load, that its two daily background jobs were still scheduled, which only needs checking now and then. The other two were settings read from the database one at a time instead of with the rest. None of it is slow on its own, and on our machine the whole plugin stayed within about 30 ms. But it's work that doesn't need doing on every visit, so it's on our fix list. The other six queries on the Belt's page loaded its two review photos and two review settings, which is the plugin doing its job.

We found one more thing while checking the HTML: NeoGrow's review photos aren't lazy-loaded, so the browser fetches them even when the shopper never scrolls down to the reviews. They're small thumbnails, about 300 pixels wide, but that's on the fix list too.

The setting that cost more than any plugin

WordPress has a setting in Settings → Discussion called Break comments into pages. WooCommerce reviews are comments, so it decides how many reviews a product page shows at once. It's off by default in a new WordPress install, so a product shows every review it has.

We added 500 test reviews to one product, the Polo, and timed it both ways (30 loads each), then deleted the reviews:

All 500 reviews on one page50 reviews per page
WooCommerce alone1,565 ms, 711 KB of HTML650 ms, 219 KB
With NeoGrow+275 ms, +290 KB+50 ms, +32 KB
With Customer Reviews for WooCommerce+1,018 ms, +521 queries+195 ms, +71 queries

Turning on paging saved WooCommerce alone 915 ms on that product, more than any plugin cost. It also cut 492 KB from the HTML, and the page went from 7,872 HTML elements to 1,136. That matters in the browser too: Google's Lighthouse flags an excessive DOM size, because every element adds to the work of styling and laying out the page.

The 500-review test also showed which plugins do work for each review. Customer Reviews for WooCommerce made about one extra query per review shown. NeoGrow's queries stayed flat at about 10, but it adds a Helpful and a Report link to every review, which is about 0.6 KB of HTML each.

Server time for a WooCommerce product with 500 reviews. With all 500 reviews on one page: WooCommerce alone 1,565 milliseconds, with NeoGrow 1,840, with Customer Reviews for WooCommerce 2,583. With 50 reviews per page: WooCommerce alone 650 milliseconds, with NeoGrow 700, with Customer Reviews for WooCommerce 845.

To turn it on, tick Break comments into pages, and choose how many top level comments per page and whether the first or last page shows by default. We used 50, WordPress's own default when paging is on. If your products have only a handful of reviews, this changes nothing, and you can leave it.

Does a page cache make this irrelevant?

Partly. A full-page cache, from your host or a caching plugin, stores the finished HTML and hands it to logged-out visitors without running WordPress at all, so none of the server time above applies to them. But WooCommerce tells caches not to store the cart, checkout and My Account pages, and most caches skip logged-in customers entirely. Those are the visits closest to a sale. A cache also does nothing about the files a plugin loads: the browser downloads them either way.

How to check your own store

You don't need a benchmark harness to find the expensive plugin on your store:

  1. On a staging copy, not the live store, install the free

Query Monitor plugin. It shows each page's queries, grouped by the plugin that made them, and the page's generation time.

  1. Open a product page and your home page and note the queries and

time for each review plugin.

  1. Open your browser's developer tools, Network tab, and reload. Filter

by CSS and JS, and look for files from review plugins on pages that show no reviews.

  1. Deactivate the plugin and reload a few times. One load proves

nothing; compare the middle value of five or more.

Then check Break comments into pages on any product with more than about fifty reviews.


Frequently asked questions

Do review plugins slow down WooCommerce?

Some do, and by very different amounts. On our test store, three of the five added under 35 ms of server time, within about the noise of the machine. Two added 78 to 170 ms, and loaded 78 to 238 KB of CSS and JavaScript on every page, including pages that show no reviews.

How do I test WooCommerce review plugin performance?

Compare the same pages with and without the plugin, on a staging copy. Query Monitor shows queries and generation time per plugin, and your browser's Network tab shows the files. Load each page several times and compare the middle values, because single loads vary.

Should I turn on "Break comments into pages" for reviews?

Yes, if a product has more than about fifty reviews. WordPress shows every review on one page by default. On our product with 500 reviews, showing 50 per page took the page from 1,565 ms to 650 ms with no review plugin installed.

Does a caching plugin fix a slow review plugin?

Only for logged-out visitors, and only the server time. WooCommerce keeps the cart, checkout and My Account pages out of the cache, and most caches skip logged-in customers. The plugin's CSS and JavaScript still download in the browser.

Do photo reviews make pages slower?

Each photo is an image the shopper downloads, like any product image. On our product pages, NeoGrow's photo reviews added two small database lookups per photo, and its review styles were 7.8 KB. Photos should be small thumbnails and lazy-loaded, since reviews sit below the fold. NeoGrow's thumbnails are about 300 pixels wide, but they aren't lazy-loaded yet.

Which review plugin is fastest?

On our store, the ones that load nothing they don't need. NeoLite Disable Reviews and NeoLite Review Customizer loaded no front-end files at all, and NeoGrow loaded its files only on product pages. Measure on your own store before deciding, since themes and hosting change the numbers.


Measure before you blame

A review plugin is rarely why a WooCommerce store is slow, but it can be, and now you know what to look for: files on pages without reviews, a query for every review, and a long list of reviews WordPress was never told to break into pages. Check the Discussion setting first, since it's free. Then measure your plugins on a staging copy before Black Friday's traffic does it for you.

Share X LinkedIn Facebook Email
woocommerceproduct reviewsperformancepage speedplugins

Keep reading

How to stop WooCommerce review spam without losing real reviews

Stop WooCommerce review spam in layers: the settings you already have, a guest-only login rule, a spam filter, and what to do when reviews earn points.

Why loyalty points do not belong in postmeta

Loyalty points in wp_postmeta or wp_options compete with the queries your shop depends on. Why a custom table is the right place for a points ledger.

How to fix WooCommerce star ratings not showing in Google

Products have reviews but no stars in Google? Seven causes in the order to check them, including a block-template trap, with a tested fix.