WordPress A/B testing
Half see B.
Nobody sees it swap.
To A/B test a WordPress page without breaking your page cache or flashing the original, the version has to be picked either in the visitor’s browser before the page paints, or at an address of its own that your cache stores separately. Nelio A/B Testing is free for 500 tested page views a month, then from $39 a month. Whatever you use, plan the traffic first: a page converting at 3% needs about 13,914 visitors per version to detect a 20% lift at 95% confidence and 80% power. Below: the three ways tests run on WordPress and what each does to your cache, what the free plans hold back, a calculator for how many weeks your test needs and what it costs on Nelio’s quota or Builderify credits, and how to run one with Builderify’s A/B tag.
By the Builderify team
How do you A/B test a WordPress page?
It depends where the version is picked.
Every test does three jobs: it gives each visitor a version, shows it, and counts who converts. Where the first job happens decides what you can test, what happens to your page cache, and whether anyone sees the page change. WordPress tools do it in one of three places.
WordPress serves the version
The versions live in WordPress, and your site serves each visitor theirs. Nelio does it by default with a JavaScript redirect that adds a test parameter to the address.
- Tools
- Nelio A/B Testing; Thrive Optimize for Thrive Architect pages
- You can test
- Anything WordPress builds: posts, templates, menus, themes, WooCommerce products and prices.
- Your page cache
- The test parameter in the address keeps each version apart in your cache, or out of it.
- Watch for
- The redirect means a second page load for some visitors. Nelio covers tested pages with a white overlay for up to 3 seconds while it decides.
The browser changes the page
A script first in <head> picks the version and edits the page before the browser paints it. The HTML is the same for everyone.
- Tools
- Builderify, Convert, Wingify (formerly VWO)
- You can test
- What is on the page: headlines, buttons, images, links, sections to hide or add.
- Your page cache
- Nothing to change. Every visitor gets the same cached HTML, and the script decides after it arrives.
- Watch for
- If the script runs late, visitors see the original first. It can’t change what WordPress builds on the server, such as cart prices.
Two separate pages
You build page A and page B as ordinary pages, and visitors to one address are sent to one of them.
- Tools
- Split Hero; EasyTest’s page tests
- You can test
- Completely different designs, built with whatever you build pages with.
- Your page cache
- Each page is cached as normal. The step that picks the page must not be.
- Watch for
- Every visitor to the test address takes a redirect. Point search engines from page B back to page A with a canonical tag.
Many WordPress A/B testing tutorials still use Google Optimize. Google’s help page says it and Optimize 360 “are no longer available as of September 30, 2023”, and every experiment still running that day ended. If its snippet is still in your theme or a header plugin, remove it along with its anti-flicker code, which can still hide your page while it waits. The shutdown tracker finds the old snippet for you.
The same choices, with each platform’s own install: Shopify A/B testing, Squarespace A/B testing, and Wix and Webflow A/B testing.
Does A/B testing break WordPress caching?
Not if the cache can’t freeze the choice.
A page cache saves one copy of each address and hands it to everyone. That is fine for a test as long as the version isn’t baked into that copy: either the browser picks after the cached HTML arrives, or each version has an address of its own. The flash testers call flicker is a separate problem, and it is about timing.
The browser picks
Builderify, Convert, Wingify-
01 · Page cache
The same HTML for every visitor. Nothing about the test is in it.
-
02 · Tag first in <head>
Runs before the page paints and picks a version from what this browser has stored.
-
03 · Before the first paint
Hides only the elements it will change, changes them, then shows them.
The risk is a tag that runs late. Keep it first in <head> and out of every delay setting.
Your site picks, by redirect
Nelio by default, split URL tools-
01 · Page cache
The tested page, with the testing script in it.
-
02 · Redirect
The script sends the visitor to an address with a test parameter, or to page B.
-
03 · Second page load
That address is a separate cache entry, or skips the cache. An overlay or a blank moment covers the wait.
The risk is the wait. Nelio’s white overlay stays for up to 3 seconds by default.
Why does my A/B test show the original page first?
Because the browser painted it before anything changed it. On WordPress, one of these four is nearly always the reason.
Open the tested page in a private window, set Chrome DevTools’ network throttling to a slow preset, and reload ten times. You should never see the original copy, and the page should never sit blank for long.
-
01
The script loads late
In the footer, or with
asyncordefer, it runs after the page has painted, so the original shows first and then changes. -
02
An optimisation plugin holds it back
WP Rocket, LiteSpeed Cache, Autoptimize and Cloudflare Rocket Loader can delay, defer or combine scripts. Leave the testing script out of all of them.
-
03
A redirect
The first page starts to load before the visitor is sent to their version. Tools cover the gap; Nelio with a white overlay that lasts up to 3 seconds by default.
-
04
Content drawn later
A slider or builder widget that renders after the page loads can appear after a one-time change has already run, with its original text.
The Builderify plugin marks its A/B tag so those four optimisation tools leave it alone, and prints it before other plugins’ tags: section 06 shows the output.
Is there a free A/B testing plugin for WordPress?
Yes. Each one caps something.
Nelio caps tested page views. Thrive Optimize, Sigmize and Split Hero have no free plan. The fully free plugins cap nothing, but your own server and database do all the work. Read on 17 October 2026 from WordPress.org and each vendor’s pricing page; US prices before tax.
| Tool | WordPress.org | Free | First paid step | How it tests | Know first |
|---|---|---|---|---|---|
| Nelio A/B Testing | 4,000+ installs, updated 8 Oct 2026 | Up to 500 tested page views a month | Basic $39/mo: 5,000 a month, 1 site. Professional $149/mo: 50,000, 5 sites | WordPress serves each version, by default through a JavaScript redirect with a test parameter | Tracking stops when the month’s quota runs out |
| EasyTest | 10,000+ installs, updated 6 Oct 2026 | Everything, with no visitor limit | None | Page tests between two pages, and element tests by CSS class. Data stays in your database | Young: first released in 2025 as Convert Pro, and fixed a CVE in 1.0.2. A cache in front of WordPress needs one rule |
| Split Test For Elementor | 3,000+ installs, updated 10 Aug 2026 | Free | None | Sections and widgets inside the Elementor editor, or whole pages | Tested up to WordPress 7.0.7 |
| Sigmize | 4,000+ installs, updated 20 Aug 2026 | None: the plugin connects to a paid account | Starter $249 the first year, then $349: 50,000 unique visitors a year on tested pages | Page and element tests, with revenue from WooCommerce, SureCart and EDD | Experiment events kept 60 days |
| Thrive Optimize | Not in the directory | None; 30-day refund | With Thrive Architect: $199 the first year, then $399, 1 site | Variation pages built in Thrive Architect | Not for blog posts or custom post types; no link-click goal |
| Split Hero | Not in the directory | 14-day trial, no card | $29/mo: 1 active campaign, unlimited page views | Split URL tests: 302 redirects between your pages | One test at a time on the cheapest plan |
| Builderify A/B Testing | Builderify plugin, from your dashboard | 250 free credits every month | 25 credits to launch a test, 1 per 1,000 results | A tag first in <head> changes the page before it paints | Counts conversions, not revenue, and changes only what is on the page |
Installs are WordPress.org’s “active installations”. Nelio’s yearly billing saves 20% (Basic $374 a year); in the EU its page shows euros with VAT added. Thrive Optimize and Sigmize renew at their full prices after the first year.
The plugin is free on WordPress.org, and its free version “supports up to 500 tested page views per month”. Nelio defines one as “a visit to a page or post involved in a test”, so only traffic to tested content counts, not your whole site. Its own FAQ suggests the free plan is for one test at a time: “you should probably focus your efforts on one test only.”
When the month’s quota is used up, the plugin says so in its own words: “Event tracking has stopped because your quota is exhausted.” Paid plans start at $39 a month for 5,000 tested page views; extra quota comes in packs of 5,000 for $19, and unused packs carry over. Nelio offers a 30-day refund.
Convert starts at $299 a month paid yearly, or $399 monthly, for 100,000 tested users a month, with a 15-day trial. VWO is now Wingify: vwo.com redirects there, and it prices by quote, based on monthly active users. Both load as a script on any WordPress theme and are built for teams that test all year.
How long should a WordPress A/B test run?
Until it reaches the sample you planned.
Enter the page’s weekly visitors, how often it converts now and the smallest lift that would be worth changing the page for. You get the visitors each version needs, the weeks that takes at your traffic, and what the same test costs on Nelio’s quota and on Builderify credits.
The tested page only, not the whole site. Everyone who visits takes part.
Relative: 3.00% → 3.60%. Smaller lifts need far more visitors.
Run 6 full weeks, so every day of the week counts the same, and read the result once, at the end.
A dash means that run is too short for any lift at this rate.
Monthly billing, before tax. One tested page view per visitor; visitors who come back use more.
Inside the 250 free credits you get each month, if nothing else uses them.
The assumptions
- Two-sided 95% confidence and 80% power, versions split equally, one goal, and one look at the result, at the end. The formula is in section 05.
- Never fewer than 100 visitors or 10 expected conversions per version, the minimums Builderify needs before it reports a result.
- Whole weeks, and at least two of them. Every visitor to the page takes part; sending only a share of traffic into the test stretches the time in proportion.
- Nelio: one tested page view per visitor, which is the least it can be; monthly billing at US prices, with $19 packs of 5,000 when they are cheaper than the next plan.
- Builderify: the published rate card, 25 credits to launch a test and 1 per 1,000 results, a result being a recorded exposure or conversion; challengers convert at the lift you entered. Packs from the pricing page.
Flat prices instead
Some tools don’t charge by traffic at all. EasyTest is free with no visitor limit. Split Hero is $29 a month for one active campaign with unlimited page views. Thrive Optimize is $199 the first year with Thrive Architect. Sigmize starts at $249 the first year for 50,000 unique visitors on tested pages.
How many visitors does an A/B test need?
The formula, and the check.
The calculator uses the standard sample size for comparing two conversion rates. It depends on three things: how often the page converts now, how big a difference you want to be able to see, and how sure you want to be. Halving the lift roughly quadruples the visitors.
n = ( z1−α/2 · √ + z1−β · √ )2 ÷ (p2 − p1)2
- p1
- Today’s conversion rate
- p2
- p1 × (1 + the lift you want to detect)
- p
- Their average, (p1 + p2) ÷ 2
- z1−α/2 = 1.960
- Two-sided 95% confidence: a 5% chance of calling a winner that isn’t one
- z1−β = 0.842
- 80% power: an 80% chance of spotting a real lift of that size
- weeks
- n × versions ÷ weekly visitors, rounded up to whole weeks
A page converting at 3%, looking for a 20% lift: p1 = 0.03, p2 = 0.036, p = 0.033. That gives 13,914 visitors per version, 27,828 for an A/B test, which is 6 weeks at 5,000 visitors a week.
Checked against R
power.prop.test is the sample-size function in R’s standard stats package. Its documentation lists worked examples; this page’s formula, run on the same inputs, gives the same answers.
| Inputs | R’s n | This page |
|---|---|---|
| 50% → 75%, 90% power | 76.7 | 76.7 |
| 90% → 100%, 80% power | 73.37 | 73.37 |
| 50% → 50.1%, 99.9% confidence, 90% power | 10,451,937 | 10,451,937 |
Calculators differ a little. Evan Miller’s puts the original rate’s variance in the first term instead of the average’s, so for 20% → 25% it asks for 1,030 per version where this formula, like R, asks for 1,094. Both are standard; this one is the more cautious.
Each version needs its own sample, so three versions take half as long again as two. And Builderify, like most tools, compares each challenger with the original at 95%. The more challengers, the likelier one “wins” by chance alone:
| Challengers | A false winner, up to | z, split 5% |
|---|---|---|
| 1 | 5.0% | 1.960 |
| 2 | 9.8% | 2.241 |
| 3 | 14.3% | 2.394 |
| 4 | 18.5% | 2.498 |
| 5 | 22.6% | 2.576 |
Tick the correction in the calculator to split the 5% between the challengers (the Bonferroni correction). It raises z, and with it the sample, and keeps the chance of any false winner at 5% or less.
The 95% holds for one look at the planned sample. Check every morning and stop the first time a version crosses 95%, and you will call far more false winners than one in twenty, because chance swings cross the line on their way somewhere else.
Builderify won’t call a result before each version has 100 visitors and 10 conversions, but its confidence figure doesn’t adjust for repeated looks. So set the length here, before you start, and read the result once, at the end.
How to split test WordPress
with a tag first in <head>.
Builderify A/B Testing is the browser route from section 01. Its tag carries your running tests inside it, so it decides each visitor’s version without another request, hides only the elements it is about to change, and shows them once they are changed: at the latest when the page’s HTML has finished loading, and never more than 1.5 seconds after the tag runs. Your page cache keeps serving one copy to everyone.
-
1. Install the plugin, then tick the A/B tag
In Builderify, open Connect › Snippet, choose the WordPress tab and download
builderify.zip. In WordPress, go to Plugins › Add New Plugin › Upload Plugin, install and activate it, then paste your site key in Settings › Builderify and tick Load the A/B testing tag. It is off until you do. -
2. Create the test and choose its pages
Under Optimise › A/B Testing, click New test. It starts with your original and one challenger at 50/50; add versions up to six in all, and set the share of visitors who take part. Add the pages by URL: is exactly, contains, starts with, or a pattern such as
/tours/*. Only the path counts, so trailing slashes and query strings don’t matter. -
3. Make the change on your own page
Click Pick on my site. Your page opens with a picker on it, through a link that works for three hours and only for that version. Click an element, then replace its text, replace its HTML, set an attribute such as a link or an image, or hide it. Inserting markup before or after an element is in the dashboard’s change form.
-
4. Add a goal, then start
A visit to a page such as
/thank-you/*, a click on a CSS selector, or a custom event from your own code:bdfAb('convert', 'booking'). A click on a form’s submit button counts attempts, not sent forms; for those, use a thank-you page as the goal, and the button clicks guide shows how to find a selector. Then Start test: visitors are split within a minute. -
5. Read the result once, and apply it yourself
For each goal, Results shows every version’s visitors, conversions, rate, lift over the original and confidence, plus how traffic actually split against the weights you set. Declare winner appears when a version beats the original at 95%. It records the winner and stops the test; it doesn’t edit your page, so make the winning change in WordPress.
A/B goals are the test’s own, so they work whatever analytics you run, or none. If you are choosing analytics too, the MonsterInsights alternative guide compares the WordPress options, and User Journey shows the path each visitor took.
The plugin prints the A/B tag at the start of WordPress’s <head> output, after the consent tag if that is on and ahead of other plugins’ tags. It loads synchronously on purpose, carries the attributes that keep Cloudflare Rocket Loader and optimisation plugins from moving it, and adds itself to WP Rocket’s, LiteSpeed Cache’s and Autoptimize’s exclusion lists. It isn’t printed in wp-admin, the login screen, feeds or REST responses.
- The Builderify plugin isn’t on WordPress.org yet: you download it from your dashboard, and updates come from there.
- It changes what is on the page, in the browser. Templates, menus built by PHP, cart and checkout prices, and a different post entirely are out of its reach.
- Each visitor’s version is kept in their browser’s storage, not a cookie. The same person on a phone and a laptop counts twice, and Safari deletes storage set by scripts after seven days of use without a visit to your site.
- In the EU and UK, storing an ID in the browser generally needs consent. Switch on Only test visitors who consent with Builderify’s cookie banner, and anyone who hasn’t allowed analytics sees your original page. This isn’t legal advice.
- If your credits run out, the Builderify widget pauses until you top up; the cookie banner keeps running.
| On WordPress it can | It can’t |
|---|---|
| Replace text or HTML, set an attribute (a link, an image, alt text), hide an element, or insert markup before or after it | Change what WordPress builds on the server: templates, menus, cart and checkout prices |
| Pick elements on your own live page, no developer needed | Send visitors to a different URL: it has no split URL test |
| Target pages by URL rule, and send a share of traffic into the test | Report revenue or order value: it counts conversions |
| Run up to six versions, with a weight for each | Apply the winner to your page for you |
| Count its own goals: a page visit, a click on a CSS selector, or a custom event | Re-apply a change to content a script draws after the page has loaded |
| Keep each visitor on the same version, and test only visitors who consented | Filter bots out of the results |
No plan and no quota. The rate card prices a test at 25 credits when you launch it and 1 credit per 1,000 results, a result being a recorded exposure or conversion. The calculator’s example, 30,000 visitors over 6 weeks, comes to 56 credits. Every account gets 250 free credits a month; packs start at $9 for 1,000 credits and never expire. Page loads are billed only where the widget runs, at 10 credits per 1,000. All of it is on the pricing page.
Which WordPress A/B testing tool
fits what you want to change?
Pick by what the test changes and how much traffic the page gets. These are the calls we’d make, including the ones where the answer isn’t us.
You want to test WooCommerce prices, product pages, menus, templates or whole posts.
Nelio A/B Testing. It tests what WordPress builds, from inside the admin. Start on the free 500 tested page views a month; Basic is $39 a month for 5,000.
Your landing pages are built in Thrive Architect.
Thrive Optimize, $199 the first year with Architect and $399 after, with page-visit, opt-in and revenue goals and an automatic winner. It doesn’t test blog posts.
You want free tests with no quota, on your own server.
EasyTest for page and element tests, or Split Test For Elementor if everything is built in Elementor. Both keep the data in your database. EasyTest is young, so keep it updated.
You need revenue per version from your shop.
Sigmize, from $249 the first year, or Nelio’s WooCommerce goals. Builderify counts conversions, not order values.
You test headlines, buttons and copy on cached pages, with no quota and no flash.
Builderify A/B Testing, with the plugin’s tag first in <head>. A test is 25 credits to launch and 1 per 1,000 results, from 250 free credits a month.
Your page gets a few hundred visitors a week.
Don’t A/B test small tweaks. At 500 visitors a week, a page converting at 3% needs 56 weeks to show a 20% lift. Test something bolder, pick a busier page, or make the change you believe in and watch your numbers.
A testing plugin is often one of fifteen. How many WordPress plugins is too many shows which front-end jobs one website widget can take over, and which belong on your server.
WordPress A/B testing, before you ask.
The plugin is free on WordPress.org, and its free version covers up to 500 tested page views a month, counting only visits to pages or posts involved in a test. When the month's quota runs out, tracking stops until it renews. Paid plans start at $39 a month for 5,000 tested page views, and Professional is $149 a month for 50,000 across five sites (US prices before tax, read 17 October 2026).
Yes. EasyTest and Split Test For Elementor run on your own server with no visitor limit and keep the data in your database; EasyTest is young, first released in 2025. Builderify A/B Testing has no quota either: a test is 25 credits to launch and 1 credit per 1,000 results, from 250 free credits a month.
It depends on the page's conversion rate and the smallest lift you want to detect. At 95% confidence and 80% power, a page converting at 3% needs about 13,914 visitors per version to detect a 20% lift: 27,828 for an A/B test, or 6 weeks at 5,000 visitors a week. Halving the lift roughly quadruples the visitors.
Yes, as long as the version isn't baked into the cached page. A tag first in the head can pick the version in the browser after the cached HTML arrives, or a plugin can send visitors to an address with a test parameter that the cache keeps apart. Keep the testing script out of the delay, defer and combine settings of WP Rocket, LiteSpeed Cache, Autoptimize and Cloudflare Rocket Loader.
Because the browser painted the page before the test changed it: the script is in the footer, deferred, delayed by an optimisation plugin, or redirecting. Load the testing tag first in the head and exclude it from optimisation. Builderify's tag hides only the elements it will change and shows them no more than 1.5 seconds after it runs; Nelio covers tested pages with a white overlay for up to 3 seconds by default.
Sources
Vendor pages, WordPress.org listings and plugin code. Read on 17 October 2026.
- WordPress.org Nelio A/B Testing
- Nelio A/B testing pricing
- WordPress.org Nelio A/B Testing 8.5.5 source
- WordPress.org EasyTest – Simplify A/B Testing
- WordPress.org Split Test For Elementor
- WordPress.org Sigmize
- Sigmize Pricing
- Thrive Themes Thrive Optimize: pricing and FAQ
- Split Hero Pricing and FAQ
- Convert Pricing
- Wingify (formerly VWO) Pricing
- Google Optimize Help Sunset of Optimize and Optimize 360
- R Documentation power.prop.test
- Evan Miller Sample size calculator
- WebKit 7-day cap on script-writeable storage
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.