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.
Example output — a peek before you generate
| month | account | movement | plan | seats | mrr | mrr_delta |
|---|---|---|---|---|---|---|
| 2026-01-01 | Northwind Labs | new | Pro | 8 | $1,592 | $1,592 |
| 2026-02-01 | Northwind Labs | expansion | Pro | 12 | $2,388 | $796 |
| 2026-03-01 | Cobalt Analytics | new | Starter | 2 | $98 | $98 |
| 2026-04-01 | Cobalt Analytics | churn | Starter | 0 | $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.
| Column | Type | Description |
|---|---|---|
| month | date | First of the month the movement occurred. |
| account_id / account | int / text | The subscribing company. |
| movement | text | new, expansion, contraction, or churn. |
| plan | text | Starter / Pro / Business / Enterprise. |
| seats | integer | Active seats after the movement (0 on churn). |
| mrr | number | Account MRR after the movement. |
| mrr_delta | number | Change in MRR from this movement (negative for contraction/churn). |
| region / industry | text | Firmographic dimensions for segmentation. |
| anomaly | 0/1 | Present 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
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.