SaaS Subscription & MRR Data Generator

A realistic MRR movement ledger — new, expansion, contraction, churn — with plan tiers, seat counts, and plan-dependent churn hazard. Built for practicing net revenue retention, cohort, and churn analysis.

SeededCSV + ExcelChurn labels100% in-browser

Example output — a peek before you generate

monthaccountmovementplanseatsmrrmrr_delta
2026-01-01Northwind LabsnewPro8$1,592$1,592
2026-02-01Northwind LabsexpansionPro12$2,388$796
2026-03-01Cobalt AnalyticsnewStarter2$98$98
2026-04-01Cobalt AnalyticschurnStarter0$0-$98

A real generated file has 11 columns and up to 200,000 rows; this is a 7-column, 4-row taste of the shape. Set your row count below and click Generate for your own.

Generate the dataset

Save / load scenario (stored only in this browser)

Quick-start presets

What's in this dataset

Each row is one MRR movement for an account in a given month. Sum the deltas to reconstruct MRR, build cohorts, or compute NRR.

ColumnTypeDescription
monthdateFirst of the month the movement occurred.
account_id / accountint / textThe subscribing company.
movementtextnew, expansion, contraction, or churn.
plantextStarter / Pro / Business / Enterprise.
seatsintegerActive seats after the movement (0 on churn).
mrrnumberAccount MRR after the movement.
mrr_deltanumberChange in MRR from this movement (negative for contraction/churn).
region / industrytextFirmographic dimensions for segmentation.
anomaly0/1Present only with injection on; flags suspicious churn events.

Why it's realistic

Each account starts on a plan (weighted toward smaller tiers), with a seat count appropriate to that plan, and a signup spread across the last 24 months. Every subsequent month it faces a plan-dependent churn hazard — Starter accounts churn far more often than Enterprise — plus chances of expansion (seat adds or upgrades) and occasional contraction. Because larger plans both churn less and expand more, the ledger reproduces the real shape of a SaaS book: a leaky bottom end, sticky enterprise revenue, and net retention that depends entirely on which cohort you slice. That makes it ideal for NRR, logo vs. revenue churn, and cohort-retention exercises that actually have signal.

Good for

NRR / GRR calculations Cohort retention curves Churn modeling & prediction MRR waterfall dashboards Finance / SaaS metrics demos Interview take-homes

FAQ

How do I reconstruct total MRR?

Sort by month and take a running sum of mrr_delta — that's exactly what the preview chart plots. The mrr column gives each account's level after a movement.

Why don't all accounts have a churn row?

Accounts that are still active at "today" simply have no churn event yet — just like a live book. Their last row reflects their current state.

Is anything uploaded?

No — generation is 100% in your browser.