Live since Feb 2026 · 2.4M experiments run

Opinion is a bug.
Data is the fix.

Pit two versions against each other. Watch real users pick the winner. Ship the result. In hours, not quarters.

checkout_experiment.ts
Click to copy
1import { Split } from 'split-sdk'
2 
3const client = Split.init({
4 apiKey: 'sk_live_••••••••••••',
5 environment: 'production'
6})
7 
8const variant = await client.getVariant(
9 'checkout_button_color', { userId }
10)
11 
12// variant → "teal" | "orange" // 50/50 split
TypeScript · SDK v3.2.1
12 lines

One snippet. Unlimited experiments.

2.4Mexperiments
340+teams
18%avg lift
Scroll to explore
Experiment Catalog

Browse what teams are testing.

Hover any card to see live results. Every archetype runs in minutes.

●= winning variant
✦COPY

Headline Duel

Which headline gets more clicks? Test messaging without a redesign.

Hover to see results
Click-through rate+14% lift
A"Get started free"WINNER
0%
B"Ship faster today"
0%
See Setup Guide →
◉DESIGN

CTA Color Showdown

Green vs orange. One word, two colors, real conversion difference.

Hover to see results
Signup conversion+22% lift
ATeal #0D7377WINNER
0%
BOrange #E8642C
0%
See Setup Guide →
⬡REVENUE

Pricing Table Swap

Monthly-first vs annual-first. Where you anchor changes what people pick.

Hover to see results
Annual plan selection+31% lift
AAnnual prominentWINNER
0%
BMonthly prominent
0%
See Setup Guide →
⬟RETENTION

Onboarding Flow Fork

Guided wizard vs blank canvas. Activation rates tell the story.

Hover to see results
Day-7 retention+38% lift
AWizard (5 steps)WINNER
0%
BBlank canvas
0%
See Setup Guide →
▲ECOMMERCE

Checkout Flow Test

One-page checkout vs multi-step. Cart abandonment drops when friction does.

Hover to see results
Checkout completion+29% lift
AOne-pageWINNER
0%
BMulti-step
0%
See Setup Guide →
★TRUST

Social Proof Placement

Logo wall above fold vs testimonials inline. Trust signals have optimal positions.

Hover to see results
Free trial signups+11% lift
ALogos above foldWINNER
0%
BInline testimonials
0%
See Setup Guide →
Integrations

Works where your stack lives.

Hover to see the exact code for your platform. Copy it. Ship it.

6 SDKs · REST API · Webhooks
NE
2 min setup
Framework

Next.js

App Router & Pages Router. Works with Server and Client Components.

Hover for code snippet
Next.js2 min
snippet
// app/page.tsx
import { getVariant } from 'split-sdk/server';
export default async function Page() {
const variant = await getVariant(
'hero_headline', { userId }
)
return <Hero variant={variant} />
}
See Setup Guide →
SH
5 min setup
E-commerce

Shopify

Theme app extensions. Test product pages, cart flows, checkout.

Hover for code snippet
Shopify5 min
snippet
// theme.liquid
{% assign variant = split.get_variant
experiment: 'product_page_layout'
user_id: customer.id
%}
{% if variant == 'grid' %}
{% render 'product-grid' %}
{% else %}
{% render 'product-list' %}
{% endif %}
See Setup Guide →
RU
3 min setup
Backend

Ruby on Rails

ActiveRecord integration. Variant assignment persisted per user.

Hover for code snippet
Ruby on Rails3 min
snippet
# app/controllers/home_controller.rb
class HomeController < ApplicationController
def index
@variant = Split.get_variant(
'pricing_table_order',
current_user.id
)
end
end
See Setup Guide →
FL
4 min setup
Mobile

Flutter

Dart SDK for iOS & Android. Remote config with instant rollout.

Hover for code snippet
Flutter4 min
snippet
// lib/main.dart
final variant = await SplitClient
.instance
.getVariant(
experimentKey: 'onboarding_flow',
userId: user.id,
);
if (variant == 'guided') {
Navigator.push(context,
GuidedOnboarding.route());
}
See Setup Guide →
RE
2 min setup
Frontend

React

useExperiment hook. Works with any React meta-framework.

Hover for code snippet
React2 min
snippet
// components/PricingCTA.tsx
import { useExperiment } from 'split-sdk/react';
export function PricingCTA() {
const { variant } = useExperiment(
'cta_button_text'
)
return (
<Button>
{variant === 'a'
? 'Start free trial'
: 'Get started free'}
</Button>
)
}
See Setup Guide →
PY
3 min setup
Backend

Python

Django & FastAPI support. Works in any Python 3.8+ environment.

Hover for code snippet
Python3 min
snippet
# views.py
from split_sdk import SplitClient
client = SplitClient(api_key=API_KEY)
def checkout_view(request):
variant = client.get_variant(
'checkout_flow',
user_id=request.user.id
)
template = f'checkout_{variant}.html'
return render(request, template)
See Setup Guide →
2.4M
Experiments Run
340+
Product Teams
18%
Avg Conversion Lift
4hrs
Avg Time to Significance
99.9%
SDK Uptime SLA
From the teams

Data replaced the argument.

Growth leads, e-commerce managers, and solo founders all run the same playbook: form a hypothesis, ship a test, let users decide.

“We killed 3 months of debate with one weekend of data. Split paid for itself in the first experiment.”

MO
Marcus Okonkwo
Head of Growth, Draftly
HEADLINE DUEL
CTA COLOR
PRICING TABLE
ONBOARDING FLOW
CHECKOUT STEP
BUTTON COPY
FORM LAYOUT
SOCIAL PROOF
PLAN ANCHOR
MODAL TIMING
HERO IMAGE
NAV ORDER
HEADLINE DUEL
CTA COLOR
PRICING TABLE
ONBOARDING FLOW
CHECKOUT STEP
BUTTON COPY
FORM LAYOUT
SOCIAL PROOF
PLAN ANCHOR
MODAL TIMING
HERO IMAGE
NAV ORDER
Free forever for solo founders · No card required

Your next experiment
is 8 minutes away.

Install the SDK, define two variants, and watch real users decide. No design tools, no analyst, no committee. Just a clear answer.

✓No credit card required
✓Free tier: 3 live experiments
✓SOC 2 Type II certified
✓GDPR compliant