Edge-deployed
Served from Cloudflare's network across 300+ cities and cached per config version, so your experiments live where your visitors are.
ABTestly is a small, cacheable experiment runner. Your variants are served from Cloudflare's edge, so the right version is in place before the page finishes loading. No flash of the original, no layout jump. It's for people who run on the data and won't slow their site down to do it.
The things you actually need to run good experiments, without dragging down the page you're testing on.
Served from Cloudflare's network across 300+ cities and cached per config version, so your experiments live where your visitors are.
A checkbox when you copy the snippet, unchecked by default: a full-page hide costs every visitor, including the ones in no experiment. Tick it and the page stays hidden until variants apply, revealing after 2 seconds no matter what.
Every exposure pushes an experience_impression event to your dataLayer with the experiment and variant IDs, so it flows into GA4 through your existing GTM/GA4 setup, with no separate analytics add-on or SKU.
Works with static and server-rendered sites — Astro, Hugo, Eleventy, Rails, the server-rendered output of Next, and plain HTML. Anywhere you can drop a small script tag, you can run experiments on the rendered page.
Significance testing with confidence intervals and a sample-size calculator, plus a plain-language verdict that won't call a winner before the data supports it. Built so your CRO lead and your engineering lead are looking at the same numbers.
ABTestly detects client-side route changes and fires experiments per view, no full reload required.
The honest version. Pricing and capabilities reflect public information from each vendor.
At the same 100,000-tracked-user tier, ABTestly Pro is 55% cheaper than Convert, and a fraction of what VWO and Optimizely charge, both of which only quote custom pricing.
* How we calculated this — methodology & sources →
Go deeper: Convert vs ABTestly · ABTestly vs Optimizely, VWO & Convert · the Convert alternative · how migration works
Every plan ships every feature. The number you pay scales with how much testing you actually do, not which capabilities we're willing to unlock.
For solo builders running a couple of experiments to see what's there.
For a single product team running a steady cadence of tests.
For teams running serious experimentation as part of how they ship.
For multi-product orgs running concurrent tests across teams.
Custom MTU volumes, dedicated support, security review, MSA, BAA, on-prem data residency, and the rest of the procurement paperwork.
The snippet is around 15 KB gzipped (the loader itself is under 1.5 KB) and is served from Cloudflare's edge across 300+ cities, cached per version. In practice that means it's fetched from a PoP close to your visitor and reused across page loads.
We're not going to put a specific millisecond figure here until we have a benchmark we're willing to publish. If a vendor's marketing site quotes one without methodology, treat it as marketing.
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 SPA handling, which is rolling out.)
ABTestly pushes a dedicated experience_impression event to your dataLayer carrying the experiment and variant IDs; it reaches GA4 through your existing GTM/GA4 configuration. One-time setup is mapping those fields to GA4 custom dimensions — we ship a GTM template to do it in a few clicks. No separate analytics add-on or SKU; it's included in every plan.
It can, and there's a checkbox for it. The experiment config is delivered from Cloudflare's edge, but the runtime is injected as a dynamic script and doesn't block the parser, so a variant that changes content above the fold can show the original first. When you copy your install snippet there's 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's off by default because a full-page hide costs every visitor, including the ones in no experiment, and a slow config fetch becomes a visibly empty site. Turn it on if you see flicker.
Yes. Monthly plans are month-to-month; annual plans run for 12 months. First-time customers on any paid plan get a 30-day money-back guarantee — request a full refund within the first 30 days, no questions. Outside that window, cancelling stops further charges but doesn't trigger a prorated refund — you keep paid access until the end of the current billing period, then revert to the Free tier with your data preserved. Full details in the refund policy.
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; their higher tiers cost more. Optimizely is quote-only. VWO's Growth tier is gated by MUV bucket within the tier, so it has no single published MTU cap at the 100K point.
Cost per 1,000 tracked users = subscription price ÷ included MTU. ABTestly figure uses monthly Pro pricing; Convert figure uses their annual-billing rate (their lowest published price for that volume). Snippet figure is the runtime snippet, excluding inlined config.
Competitor capabilities and pricing verified May 2026 from each vendor's public documentation. Sources:
Check each vendor's site for current details. The comparison reflects what was public on the dates above.
Free plan, no card, no “contact sales”. Drop in the snippet, define one variant, watch the events.