From signal to decision

Turn scattered signals into experiments that matter.

ABTestly is a code first A/B testing platform. You write each variation as real JavaScript and CSS, configuration is served from Cloudflare's edge in 300 cities, and every result is measured on an exact event ledger with three statistics engines.

~31 KB runtime, gzipped
300+ edge cities
SPA capable route change aware
3 engines frequentist, sequential, bayes
0% estimated decision numbers
the whole product

Watch one test go from idea to verdict.

Activation triggers, three statistics engines, variations written in code, revenue metrics, Signals with heatmaps, and role based team access. Core testing is on every plan; advanced capabilities arrive as you move up.

The whole product: activation triggers, three statistics engines, code first variations, revenue metrics, Signals with heatmaps, and role based team access. Core testing on every plan; advanced capabilities as you move up.

Start free trial

Four minutes and fifty two seconds, with sound. No signup to watch.

how it works

Five stages. One test.

An ABTestly experiment moves from a page pick to a defensible verdict in five stages. Each one is inspectable in the dashboard and named in the public docs. Nothing is hidden behind a black box that decides for you.

  • Deterministic split. The same visitor always sees the same variant.
  • Nothing estimated. Every accepted event writes to the exact ledger.
  • Honest verdicts. No winner is called before the selected method meets its decision threshold.
how a test runs live · day 4
01 Page
Pick the page you want to test
homepagecheckoutany URL
02 Split
Split your visitors 50 / 50
deterministicstickySRM guarded
03 Apply
Show each visitor their variant
Anti-flicker, opt-inedge served31 KB snippet
Running now
04 Measure
Every accepted event lands in the ledger
exact ledgerrevenue tooGA4 events
05 Verdict
Call the winner, honestly
decision thresholdsplit checkplain english
Ship the winner. The next test starts.
decision quality

Control what you ship.
Trust what you learn.

A result is more than lift. ABTestly keeps the statistics method, confidence view, sample integrity, guardrails, and plain English verdict together.

illustrative result
Checkout reassurance· EXP-042
primary goal
Completed purchase
revenue goal · unique visitor counting
MethodSequential
LedgerComplete
SRMPassed
GuardrailsClean
Variation Visitors CR Lift Decision
AControl 12,418 5.42% n/a Baseline
BReassurance 12,506 6.11% +12.7% Front runner
CCompact 12,389 5.51% +1.7% No clear effect
verdict / sequential
Variant B leads, but keep collecting.

The current evidence favors Variant B. The decision boundary has not been crossed, and the result should not be shipped as a winner yet.

honest comparison / workflow fit

Choose for the team
that will ship the test.

There is no universally best experimentation platform. The right choice starts with who authors the change, how much runtime control they need, and how they want to validate the result.

choose ABTestly

When developers own implementation.

Strongest for CRO and A/B test developers, technical experimentation agencies, and frontend or growth engineers working on custom behavior.

Direct JavaScript and CSS Explicit cleanup lifecycle Inspectable, auditable results
choose a visual editor platform

When marketers must edit pages themselves.

A better fit for drag and drop changes, marketer owned implementation, broad marketing suites, or teams that do not have developer support.

Non technical authoring Simple static page changes More guided platform workflow
Simple rule: if developers ship the experiment, start with ABTestly. If marketers must build it without code, evaluate a visual editor. Read the detailed comparison →
named vendors / at 100,000 tracked users

How we stack up on price.

The honest version. Pricing and capabilities reflect public information from each vendor at the 100,000 tracked user buying point.

At the same 100,000 tracked user tier, on annual billing, ABTestly Pro is about a third less than Convert. VWO publishes no price at all, at any volume, and Optimizely quotes custom.

ABTestly best value
VWO
Convert
Optimizely
Subscription, monthly
$249/mo · $199 annual
By quote100k not listed
$399/mo · $299 annual
Custom
Tracked users included
100,000
not published
100,000
custom
Cost per 1,000, annual
$1.99
n/a
$2.99
n/a
Per version config from edge compute
yes
via SDK
via SDK
via SDK
Snippet size
~31 KB
not documented
~60 KB
not documented
Three statistics engines
yes
partial
yes
yes
Anti flicker, opt in
yes
partial
yes
yes
Unsampled decision-grade ledger
yes
not documented
not documented
partial
Heatmaps included in the plan
yes
yes
yes
yes

Prices checked 11 September 2026, capabilities August 2026.

How we checked these numbers

Heatmaps: experiment heatmaps are part of Pro and Business at no extra cost rather than a separate line item, covering the pages your tests run on. The Signals add on reads that behaviour as evidence when it writes hypotheses, and brings heatmaps to Starter, where they are not otherwise included.

Prices at the 100,000 tracked user tier, annual billing, checked 11 September 2026 on vwo.com/pricing, convert.com/pricing and optimizely.com/plans. ABTestly Pro annual is $199 and Convert Growth annual is $299. Convert's page opens on the annual toggle, so $299 is the first number you see there rather than its $399 monthly rate. VWO publishes no price at any volume, in any currency, so ask VWO for a quote; Optimizely is custom.

Two things this table does not show. VWO runs a 30 day trial that starts without payment details, which is a longer and looser evaluation than our 14 days with a card. And VWO and AB Tasty are now one company, so a shortlist holding both is one vendor rather than two.

Capabilities checked August 2026. Edge execution: VWO, Convert, and Optimizely each offer it through a separate edge or full stack SDK (Optimizely Performance Edge on Cloudflare Workers, VWO FME edge SDK, Convert Full Stack SDK), while ABTestly serves per version config from the edge in its standard snippet. Snippet size: Convert documents about 60 KB; VWO and Optimizely do not publish a comparable figure, and an Optimizely edge microsnippet can be smaller. Ledger: Optimizely documents its results as complete rather than estimated while its event export is preprocessed rather than a raw event ledger; VWO and Convert do not publish how their result data is aggregated, and both offer raw data exports.

The full method, and six vendors rather than four, on the comparison hub.

predictable MTU pricing

Start with a 14 day trial.
Scale with testing traffic.

One MTU is one unique visitor bucketed into at least one experiment during the UTC calendar month. Visitors outside active experiments do not count.

Annual billing saves 20% on every plan and 15% on Signals.

Add Signals, the AI CRO audit layer, to any paid plan below. It is optional, free while in Beta, and priced separately by scans a month once Beta ends.

Plans step from 25,000 to 500,000 tracked users a month. If your traffic sits between two of them, or above Business, email [email protected] and we will price for the volume you actually need.

Get started today

Try ABTestly free for 14 days

Full access to the plan you pick, on your own traffic. See the value before you commit.

  • 14 day free trial on monthly plans
  • Every feature on your tier
  • Cancel anytime
Start your free trial

Card required. Nothing charged today. Your plan's monthly price is charged on day 15 unless you cancel, and you can cancel from your billing page at any point during the trial. Not available on Enterprise or annual billing.

Starter

$99 per month, billed monthly. $79 per month, billed annually.
Billed $948 a year · save $240

For small technical experimentation programs.

Start Starter trialStart Starter

14 day free trial, then $99 / mo. Card required.14 day free trial available on monthly billing.

  • 25,000 tracked users a month25,000 tracked users each month of the year
  • 5 active experiments
  • 2 sites
  • 2 seats
  • Email support
  • Everything in core testing, plus
  • Experiment scheduling and clone
  • CSV export and change history
  • Your own guardrail metrics
  • Revenue metrics and outlier control
Optional add on

Free while in Beta. Choose your scan volume for after Beta.

During Beta
After Beta
Most popular

Pro

$249 per month, billed monthly. $199 per month, billed annually.
Billed $2,388 a year · save $600

For teams running a consistent testing program.

Start Pro trialStart Pro

14 day free trial, then $249 / mo. Card required.14 day free trial available on monthly billing.

  • 100,000 tracked users a month100,000 tracked users each month of the year
  • Unlimited active experiments
  • 5 sites
  • 3 seats
  • Priority email support
  • Everything in Starter, plus
  • Geo targeting and activation triggers
  • Sequential and Bayesian statistics
  • Global JS, dev libraries, speed guardrails
  • Experiment heatmaps, no add on needed
  • Role based team access
Optional add on

Free while in Beta. Choose your scan volume for after Beta.

During Beta
After Beta

Business

$549 per month, billed monthly. $439 per month, billed annually.
Billed $5,268 a year · save $1,320

For higher volume sites and larger teams.

Start Business trialStart Business

14 day free trial, then $549 / mo. Card required.14 day free trial available on monthly billing.

  • 500,000 tracked users a month500,000 tracked users each month of the year
  • Unlimited active experiments
  • Unlimited sites
  • 10 seats
  • Everything in Pro, plus
  • Full segment matrix
  • Mutual Exclusion Groups
  • Raw event export and blocked IPs
  • Business impact summary
Optional add on

Free while in Beta. Choose your scan volume for after Beta.

During Beta
After Beta

Enterprise

Custom traffic, contracts, and support.

For organizations that need custom MTU limits and commercial terms. Includes dedicated support, security review, MSA, DPA, negotiated SLA options, and the rest of the procurement paperwork.

Customtracked users Unlimitedseats Custom SLAon request

Signals is optional here too, free while in Beta. Learn more about Signals

Talk to sales

Signals is optional and free for every paid plan while it is in Beta. The tier you pick above only sets its price for after Beta. Learn more about Signals

Experiment heatmaps are part of Pro and Business at no extra cost, covering the pages your tests run on. Signals reads that behaviour as evidence when it writes hypotheses, including on pages where the test has already finished. On Starter, where experiment heatmaps are not included, Signals brings heatmaps with it. The heatmap corroborates GA4 funnel data rather than replacing it, so it counts toward an idea's evidence tier only on a scan where GA4 also contributed.

a deliberate constraint

No visual editor.
On purpose.

Visual editors are useful for a copy tweak. Serious client side experiments often need production aware JavaScript, controlled CSS, reliable cleanup, and measurement developers can inspect.

Typical visual workflow

  • Generated selectors
  • Drag and drop DOM changes
  • Limited cleanup control
  • Hidden runtime tradeoffs

ABTestly workflow

  • Author JS and CSS directly
  • Use the Monaco editor
  • Target real routes and audiences
  • Measure exposures explicitly
SAVED
// Apply on every eligible route.
abtestly.onApply('hero_cta', () => {
  abtestly.waitFor('.hero__cta', (cta) => {
    cta.textContent = 'Start free';
    cta.dataset.variant = 'focused';
  });
});

abtestly.onCleanup('hero_cta', () => {
  document.querySelector('.hero__cta')?.removeAttribute('data-variant');
});
hero_cta / variant b · JS · 0 errors Preview / forced variant b →
code safety net

A second set of eyes on
every variation.

You write real JavaScript and CSS, so ABTestly reads it back. Every publish, save, and resume runs a static review of your variation code and flags the mistakes that quietly break experiments. It never blocks your publish.

Code check
Checkout reassurance · variant B
warn only
Issues · safety · 3 open

This element may not exist when the code runs, because querySelector() can return null. Guard it with ?. or an if check.

JS 14:3open 2 days

eval() breaks on sites with a strict Content Security Policy. Run the code directly instead.

JS 3:1open 6 days

Variation CSS should not hide the whole page. Use the platform anti flicker option instead of hiding html or body.

CSS 1:1open 1 day
Suggestions · quality

== converts types before comparing, which hides bugs. Use === instead.

JS 22:9

Prefer const for values that never change, and let for values that do.

JS 5:3

Code check catches common mistakes before they reach visitors. It is a set of heuristics, not a guarantee. If you are comparing tools, it is worth asking each of them what happens to the code you write in it after you hit save. See what it checks →

for developers

The runtime should explain itself.

Write the variation in a real editor and attach the libraries you need, just once. When something looks off, open devtools and call window.__abtestly.debug() right on the page: it tells you whether this visitor was even in the test, whether the change actually ran, and whether the result got tracked.

Exact counts, nothing estimated
Full context per event
Live event timeline
Sensitive fields redacted
Explore the developer reference
CONFIGEdge delivered
ASSIGNSticky split
APPLYJS and CSS
MEASUREEvery accepted event
LEDGERUnsampled decisions
VERDICTHonest math
runtime connected window.__abtestly.debug()
Experiment
hero_cta
Route revision
004
Variation
b
Runtime errors
0
documentation as proof

Read how it works
before you install it.

The public documentation names the methods, tradeoffs, event path, statistics, pricing rules, and operational limits. You do not have to buy first and discover later.

SYS-01 / PUBLIC

How ABTestly works

Dashboard, edge config, snippet, ingest, and the canonical result path.

Open document ↗
STAT-03 / PUBLIC

Statistics engines

Frequentist, sequential, and bayesian methods, picked per experiment.

Open document ↗
VAR-02 / PUBLIC

Variation editor

Monaco editing, JavaScript and CSS, linting, and attached libraries.

Open document ↗
ACT-03 / PUBLIC

Activation triggers

Run on page load, click, element view, or a deliberate manual signal.

Open document ↗
DATA-01 / PUBLIC

Exact experiment ledger

The canonical event store behind final experiment numbers.

Open document ↗
REV-04 / PUBLIC

Revenue metrics

CR, RPV, AOV, and OPV with deduplication and refund handling.

Open document ↗
QA-07 / PUBLIC

Dev debugger

Inspect assignments, applies, triggers, beacons, goals, and errors in browser.

Open document ↗
TEAM-02 / PUBLIC

Team and access

Per site permissions. Twenty five granular keys per member per site.

Open document ↗
Browse all documentation
works with your stack

One script.
Any front end.

ABTestly loads as one lightweight snippet, so it runs wherever your site already runs. No framework lock in, no rebuild, no waiting on a plugin.

React Vue Angular Svelte Next.js Plain HTML Shopify Single page apps GA4 events
Loads asynchronously No render blocking Runs everywhere your site runs
abtestly.jsloaded
1<!-- ABTestly · paste first in <head> -->
2<script>(function (w, d) {
3  var s = d.createElement('script');
4  s.src = 'https://cdn.abtestly.com/s/YOUR_KEY.js';
5  s.async = false;
6  (d.head || d.documentElement).appendChild(s);
7})(window, document);</script>
moving from another tool

Switching off Convert, VWO, or Optimizely?

You do not have to start from scratch. Send us your live tests and targeting rules. We help you rebuild them in ABTestly and check the tracking fires the way you expect before you move any traffic across. Your past results stay yours.

CVO
Your current toolConvert, VWO, Optimizely
Send us your setupTests, goals, targeting
We check the trackingEvents land as expected
A
Now on ABTestlyYou control the switch
You keep full control. Your experiments and their history stay yours.
the honest FAQ

Honest answers.

How fast is the ABTestly snippet?

The snippet is around 31 KB gzipped, with a loader under 1.5 KB. It is served from Cloudflare's edge across 300 cities, cached per version. In practice it is fetched from a POP close to your visitor and reused across page loads.

We do not publish a specific millisecond figure until we have a benchmark we are willing to stand behind. When a vendor's marketing quotes one without methodology, treat it as marketing.

Does it work with Next, Astro, Rails, plain HTML?

Yes. Anywhere you can drop a script tag onto a server rendered or static page. Single page apps that swap content with client side routing are supported through our built in route change handling.

How does the GA4 integration work?

ABTestly pushes a dedicated experience_impression event to your dataLayer with the experiment and variant IDs. It reaches GA4 through your existing GTM setup. One time setup is mapping those fields to GA4 custom dimensions, and we ship a GTM template for it. No separate analytics add on or SKU. Included on every plan.

Will it flicker?

It can, and there is a checkbox for it. The experiment config is delivered from Cloudflare's edge, but the runtime is injected as a dynamic script and does not block the parser. A variant that changes content above the fold can show the original first.

When you copy your install snippet there is an "Add anti flicker" checkbox, unchecked by default. Tick it and the snippet hides the page until variants apply, revealing after 2 seconds no matter what. It is off by default because a full page hide costs every visitor, including the ones in no experiment. Turn it on if you see flicker.

What happens at the MTU limit?

You get notified at 80% and 100% of your monthly limit. New visitors see the original until the limit resets on the 1st of the month (UTC) or you upgrade. Visitors already bucketed keep their assignment until you publish any change to the site, the assignment is 30 days old, or they reach a different subdomain. We never auto charge for overage. We email you to upgrade or talk.

Can I cancel any time?

Yes. Monthly plans are month to month, annual plans run for 12 months. Your first paid month carries a 30 day money back guarantee, including when your subscription began with a free trial. After that window, cancelling stops future charges but is not prorated. You keep paid access until the end of the billing period.

How did you calculate the comparison numbers?

All four vendors are shown at the same 100,000 tracked user buying point. ABTestly figure is the Pro plan. The Convert figure is its Growth tier at that point. Optimizely is quote only.

Cost per 1,000 tracked users equals annual subscription price divided by included MTU, on annual billing for every vendor. Snippet figure is the runtime, excluding inlined config.

Competitor pricing checked August 2026 at the 100,000 tracked user tier, annual billing. VWO does not publish a 100,000 tracked user price, so ask VWO for a quote.

start today

Ship your first test in code.

Start with a 14 day free trial on monthly plans. A card is required at signup, and nothing is charged until day 15.

14 day free trial Cancel anytime No automatic overage charges