A/B testing for teams who ship experiments in code.

Three engines. Public prices. No overage bills.

A 27 KB snippet. Three statistics engines. Exact event ledger.

Direct control over targeting, JavaScript, CSS, measurement, and results. No visual editor. No heavyweight testing layer between your codebase and your visitors.

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

~27 KB runtime, gzipped
300+ edge cities
SPA capable route change aware
3 engines frequentist, sequential, bayes
0% sampling on decision results
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.
  • No sampling. Every exposure and conversion 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 served27 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 does not publish a 100,000 tracked user price, 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
100,000
100,000
custom
Cost per 1,000, annual
$1.99
n/a
$2.99
n/a
Per version config from edge compute
yes
no
no
no
Snippet size
~27 KB
larger
larger
larger
Three statistics engines
yes
partial
yes
yes
Anti flicker, opt in
yes
partial
yes
yes
Unsampled decision-grade ledger
yes
no
no
partial

Prices at the 100,000 tracked user tier, annual billing, checked August 2026. ABTestly Pro annual is $199 and Convert Growth annual is $299. VWO does not publish a 100,000 tracked user price, so ask VWO for a quote; Optimizely is custom.

Go deeper: Convert vs ABTestly · VWO vs ABTestly · Optimizely vs ABTestly · AB Tasty vs ABTestly · how migration works

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 first does not mean workflow light. You still move from scope to QA to interpretation, without hiding a single technical decision.

01

Where

Match real URLs and reusable locations.

02

Who

Add audiences, geo, device, and exclusions.

03

When

Choose page load, click, view, or manual activation.

04

Variations

Author JavaScript and CSS in Monaco.

05

Goals

Attach primary and guardrail goals.

06

QA

Force variants, share previews, inspect the runtime.

07

Launch

Start now or schedule with a defined end.

08

Read result

Check method, SRM, guardrails, and verdict.

developer surface / stable

The runtime should explain itself.

Write the variation in a real editor and attach curated libraries once. Then ask the runtime what loaded, who qualified, what applied, and which events left the browser.

Unsampled decision results, exact counts
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 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 confirm the numbers agree 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 numbersResults matched
A
Now on ABTestlyYou control the switch
You keep full control. Your experiments and their history stay yours.
predictable MTU pricing

Start free. Scale
with testing traffic.

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

Free
$0/forever
 

For evaluating the workflow and running a focused test.

  • 3,000 tracked users / mo
  • 1 active experiment
  • 1 seat
  • Community support
  • The full core toolkit
  • A/B testing, variants, and full URL, audience, and segment targeting
  • Monaco code editor, goals, preview and QA
  • Frequentist statistics with the sample ratio guard
Starter
$99$79/mo
Billed $948 a year · save $240

For small technical experimentation programs.

  • 25,000 tracked users / mo
  • 5 active experiments
  • 2 seats
  • Email support
  • Everything in Free, plus
  • Experiment scheduling and clone
  • CSV export and change history
  • Guardrail metrics
Most popular
Pro
$249$199/mo
Billed $2,388 a year · save $600

For teams running a consistent testing program.

  • 100,000 tracked users / mo
  • Unlimited active experiments
  • 3 seats
  • Priority email support
  • Everything in Starter, plus
  • Geo targeting and activation triggers
  • Sequential and Bayesian statistics
  • Revenue metrics and outlier control
  • Global JS, dev libraries, speed guardrails
Business
$549$439/mo
Billed $5,268 a year · save $1,320

For higher volume sites and larger teams.

  • 500,000 tracked users / mo
  • Unlimited active experiments
  • 10 seats
  • Role based team access
  • Everything in Pro, plus
  • Mutual Exclusion Groups
  • Full segment matrix
  • Raw event export and blocked IPs
  • Business impact summary
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
Talk to sales

Prices and limits checked against the live ABTestly pricing page. Verify current pricing ↗

the honest FAQ

Honest answers.

How fast is the ABTestly snippet?

The snippet is around 27 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 need our dedicated route handling, which is rolling out.

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. We do not stop firing experiments and we do not 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. Any paid plan comes with a 30 day money back guarantee on your first paid month. After that window, cancelling stops future charges but is not prorated. You keep paid access until the end of the billing period, then revert to the Free tier with your data preserved.

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. VWO and Convert figures are each vendor's 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 100,000 pricing; the figure is from its in app checkout.

start today

Ship your first test in code.

Free to start, no card. Stay on the free tier for as long as you like and keep every result.

No credit card Free tier, no time limit 30 day money back on your first paid month