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.
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.
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 does not publish a 100,000 tracked user price, and Optimizely quotes custom.
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
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'); });
Code first does not mean workflow light. You still move from scope to QA to interpretation, without hiding a single technical decision.
Where
Match real URLs and reusable locations.
Who
Add audiences, geo, device, and exclusions.
When
Choose page load, click, view, or manual activation.
Variations
Author JavaScript and CSS in Monaco.
Goals
Attach primary and guardrail goals.
QA
Force variants, share previews, inspect the runtime.
Launch
Start now or schedule with a defined end.
Read result
Check method, SRM, guardrails, and verdict.
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.
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 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 confirm the numbers agree before you move any traffic across. Your past results stay yours.
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.
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
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
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
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
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.
Prices and limits checked against the live ABTestly pricing page. Verify current pricing ↗
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.
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.