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.
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.
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.
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.
| 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 |
The current evidence favors Variant B. The decision boundary has not been crossed, and the result should not be shipped as a winner yet.
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.
When developers own implementation.
Strongest for CRO and A/B test developers, technical experimentation agencies, and frontend or growth engineers working on custom behavior.
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.
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.
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.
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
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
For small technical experimentation programs.
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
Free while in Beta. Choose your scan volume for after Beta.
Pro
For teams running a consistent testing program.
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
Free while in Beta. Choose your scan volume for after Beta.
Business
For higher volume sites and larger teams.
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
Free while in Beta. Choose your scan volume for 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.
Signals is optional here too, free while in Beta. Learn more about Signals
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.
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
// 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'); });
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.
This element may not exist when the code runs, because querySelector() can return null. Guard it with ?. or an if check.
eval() breaks on sites with a strict Content Security Policy. Run the code directly instead.
Variation CSS should not hide the whole page. Use the platform anti flicker option instead of hiding html or body.
== converts types before comparing, which hides bugs. Use === instead.
Prefer const for values that never change, and let for values that do.
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 →
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.
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.
How ABTestly works
Dashboard, edge config, snippet, ingest, and the canonical result path.
Open document ↗Statistics engines
Frequentist, sequential, and bayesian methods, picked per experiment.
Open document ↗Variation editor
Monaco editing, JavaScript and CSS, linting, and attached libraries.
Open document ↗Activation triggers
Run on page load, click, element view, or a deliberate manual signal.
Open document ↗Exact experiment ledger
The canonical event store behind final experiment numbers.
Open document ↗Revenue metrics
CR, RPV, AOV, and OPV with deduplication and refund handling.
Open document ↗Dev debugger
Inspect assignments, applies, triggers, beacons, goals, and errors in browser.
Open document ↗Team and access
Per site permissions. Twenty five granular keys per member per site.
Open document ↗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.
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>
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.
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.
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.