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.

Nelio free: 500 tested views a month Google Optimize closed 30 Sep 2023 Read 17 Oct 2026

By the Builderify team

Illustration · the same page twice, for a visitor given version B. Times are examples.
01 / Three ways

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.

01

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.
02 How Builderify works

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

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.
Still on Google Optimize?

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.

Not on WordPress?

The same choices, with each platform’s own install: Shopify A/B testing, Squarespace A/B testing, and Wix and Webflow A/B testing.

02 / Flicker and cache

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
  1. 01 · Page cache

    The same HTML for every visitor. Nothing about the test is in it.

  2. 02 · Tag first in <head>

    Runs before the page paints and picks a version from what this browser has stored.

  3. 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
  1. 01 · Page cache

    The tested page, with the testing script in it.

  2. 02 · Redirect

    The script sends the visitor to an address with a test parameter, or to page B.

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

Check yours

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.

  1. 01

    The script loads late

    In the footer, or with async or defer, it runs after the page has painted, so the original shows first and then changes.

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

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

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

03 / Free plans

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.

WordPress A/B testing tools compared: WordPress.org listing, free plan, first paid step, how each tests and what to know
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.

Is Nelio A/B Testing free?

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.

Hosted testing tools

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.

04 / Test length

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.

Test length calculator
a week

The tested page only, not the whole site. Everyone who visits takes part.

%
+20%

Relative: 3.00% → 3.60%. Smaller lifts need far more visitors.

Versions, including the original
Run the test for
6 weeks 30,000 visitors in all

Run 6 full weeks, so every day of the week counts the same, and read the result once, at the end.

The sample
Each version13,914
All versions27,828
Conversions, original417
At your traffic39 days
z for 95%1.960
The smallest lift you could detect in
2 weeks+35%
4 weeks+24%
8 weeks+17%

A dash means that run is too short for any lift at this rate.

On Nelio’s quotaUSD
Tested page views30,000
Basic, $39 × 2 months$78
4 packs of 5,000 at $19$76
This test$154

Monthly billing, before tax. One tested page view per visitor; visitors who come back use more.

On Builderify creditsCredits
Launch, once25
30,990 results31
This test56 credits

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.

05 / The maths

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.

Visitors per version

n = ( z1−α/2 · √2p(1 − p) + z1−β · √p1(1 − p1) + p2(1 − p2) )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
Worked example
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.

Sample sizes from R's power.prop.test documentation and from this page's formula
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.

More than two versions

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:

Chance of at least one false winner, and the z needed when the 5% is split between challengers
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.

Don’t stop at the first green number

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.

06 / With Builderify

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

Illustration · the plugin’s settings and the start of a page it prints

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.

Know this first
  • 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.
What Builderify A/B Testing can and can't do on a WordPress site
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
How it is charged

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.

07 / Which to pick

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.

If

You want to test WooCommerce prices, product pages, menus, templates or whole posts.

Then

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.

If

Your landing pages are built in Thrive Architect.

Then

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.

If

You want free tests with no quota, on your own server.

Then

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.

If

You need revenue per version from your shop.

Then

Sigmize, from $249 the first year, or Nelio’s WooCommerce goals. Builderify counts conversions, not order values.

If

You test headlines, buttons and copy on cached pages, with no quota and no flash.

Then

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.

If

Your page gets a few hundred visitors a week.

Then

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.

Questions

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.

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.