Every "best SaaS starter" list is the same: a grid of feature bullets you can't check until after you've paid. This one is different in one specific way. It publishes the actual npm run audit output of the kit it ends up recommending — red findings and all — so you can verify the claims before spending a cent. I also flag where the free option or a bigger paid kit beats mine.
Disclosure, up front: I build SaaS Starter, one of the four kits below. So read the parts where I recommend a competitor or list my own gaps as the load-bearing ones — a vendor talking up rivals and flaws is at least being expensive with their own credibility. Everything I claim about my kit is reproducible: clone it, run the audit, and the numbers on this page should match.
Pick by scope, not by star count. If your goal is to learn how auth and billing fit together, clone the free official nextjs/saas-starter — it's MIT, readable, and paying for a shortcut would defeat the point. If you need multi-tenant teams, merchant-of-record billing and background jobs on day one, Makerkit and Supastarter carry more surface area than I do and I won't pretend otherwise.
SaaS Starter is the pick when you want one opinionated, fully-wired, single-tenant kit with nothing half-built pretending to be done — and you'd like to verify that before paying. It's the only kit here that ships an audit tool and publishes its output.
Search "best Next.js SaaS starter" and you'll find twenty pages that all copy the same feature grid: auth ✅, Stripe ✅, i18n ✅, tests ✅. Green check-marks the author never ran. The dirty secret of paid boilerplates is that "Stripe billing" can mean a production webhook with signature verification and plan sync, or it can mean a checkout button and a TODO. The bullet reads identically either way, and you find out which one you bought after the refund window on some of these has closed.
So the honest question isn't "who has the longest list". It's "whose claims can I check before I pay". For an open-source repo that's easy — read the code. For a paid, private repo it's usually impossible, which is exactly why the free official starter feels like the safe default even when it does less.
My answer to that problem is a script called npm run audit. It walks my own codebase and prints what's wired, what's protected, and — critically — what's declared but never called. The full output is further down this page, unedited. Nobody else in this search result shows you theirs.
Two adjacent decisions get their own deep-dives so this page stays focused: if free is the constraint, see the named free/open-source repos and what "free" really costs in hours; if you're weighing Supabase, see Clerk + Prisma vs Supabase, decided honestly.
nextjs/saas-starter — the free official one
MIT · freeThe reference implementation from the Next.js team. Postgres, Drizzle, Stripe and real shadcn/ui. Its own README calls it "intentionally minimal and to be used as a learning resource". It has Owner/Member roles and an activity log — genuinely more team structure than my kit — but no admin metrics, no transactional email, no blog, no tests and no i18n. As of 16 July 2026 it carried 15,957 stars and its most recent commit was 11 December 2025, a CVE-2025-55182 security bump. Unmaintained is the normal resting state of a teaching repo; just know that keeping it current becomes your job.
Makerkit — the broad commercial kit
paid · check their site for priceA mature, wide-scope paid boilerplate. Markets multi-tenant teams with roles, several billing providers including merchant-of-record options, storage, and AI tooling. If you're building a team-seated B2B product and want that plumbing pre-built, it's a serious option and out-scopes me on breadth. I'm deliberately not quoting its exact price or star count here — those move, and I'd be asking you to trust a number I snapshotted once. Check their site; compare capability, not my memory of it.
Supastarter — the Supabase-leaning kit
paid · check their site for priceAnother well-regarded paid kit, strong on organisations, provider-swappable auth and multiple billing back-ends, with Next.js and Nuxt variants. Same honest caveat as above: I'm comparing it on the capabilities it's known for rather than reciting figures I can't stand behind today. If teams and merchant-of-record billing are non-negotiable, put it and Makerkit on your shortlist ahead of me.
SaaS Starter — mine, the narrow-but-proven one
$149 / $299 · 30-day refundNext.js 15 (stable, not a canary), Clerk auth, Stripe subscriptions with a billing portal and signature-verified webhooks, Prisma on Postgres, an admin panel that computes MRR and plan splits, an MDX blog, Resend with four React Email templates, 8 locales via next-intl, and 45 passing Vitest tests. Single-tenant. No teams, no merchant-of-record billing, no queue. The trade is deliberate: a smaller surface with everything actually finished, and a npm run audit command that will tell you where I cut a corner before you find it yourself.
Rows I can verify by cloning or reading a public repo carry a firm mark. Where a paid competitor's capability is well-established but I can't run their code, I mark it in their favour and say so. My column shows its losses in red — that's the whole point.
| Capability | nextjs/saas-starter | Makerkit | Supastarter | SaaS Starter |
|---|---|---|---|---|
| Price | Free (MIT) | Paid | Paid | $149 / $299 |
| Read the source before buying | Yes — public | No — private | No — private | Partial — audit + demo published |
| Published audit of its own gaps | No | No | No | Yes — npm run audit |
| Multi-tenant teams / orgs | Owner/Member + log | Yes | Yes | No — User/Admin only |
| Merchant-of-record billing | No — Stripe | Yes — multi-provider | Yes — multi-provider | No — Stripe only |
| Admin panel with MRR metrics | No | Varies | Varies | Yes |
| i18n | No | Yes | Yes | Yes — 8 locales |
| Transactional email templates | No | Yes | Yes | Yes — 4 React Email |
| Automated tests shipped | No | Varies | Varies | Yes — 45 Vitest |
| Durable rate limiting (Redis) | No | Yes | Yes | No — in-memory only |
| Background jobs / queue | No | Yes | Yes | No |
Four red cells in my own column. I'd rather you see them here than discover them on day two. The limitations panel below explains each one and what it means in practice.
Paid-kit landing pages love a big scary number — "save $12,000" is a common one. I won't use it, because I can't defend it and neither can they. Here's the honest version: an itemised count of the pieces you'd wire yourself to reach where SaaS Starter starts, with rough hours. These are estimates from having built this stack more than once, not a stopwatch reading. Your speed varies.
| What you'd wire yourself | Rough hours |
|---|---|
| Clerk auth + middleware + protected routes | ~10 |
| Stripe: checkout, billing portal, webhook verification, plan sync | ~18 |
| Prisma schema, Postgres, migrations, seed | ~6 |
| Admin panel + MRR / plan-split queries | ~10 |
| next-intl scaffolding across 8 locales | ~8 |
| Resend + 4 React Email templates, wired to events | ~7 |
| MDX blog pipeline | ~5 |
| Vitest suite (45 tests) + config | ~8 |
| Rate limiting, security headers, glue | ~5 |
| Total, roughly | ~77 hours |
Call it 70-ish hours once you subtract the parts you'd copy from memory. At a hobby rate of $50/hr that's about $3,500 of your evenings; at a $100/hr contractor rate it's $7,000. Against that, $149 for one project or $299 for unlimited projects is the trade. If your hourly value is genuinely near zero — you're learning, you have time, you enjoy the plumbing — then the maths says build it, and the free starter is your on-ramp. I mean that.
The one figure I'd push back on from any kit, mine included: the hours only count if the code actually works. A boilerplate that "saves 70 hours" but ships a half-wired webhook you spend 15 hours debugging saved you 55. That's the entire reason the audit below exists.
This is the unedited output of npm run audit run against the repo on 19 July 2026. It counts the code, lists every route and whether the middleware guards it, checks which Prisma models are actually queried, and reconciles declared environment variables against the ones the code reads. Then it prints its findings — including the unflattering ones. A buyer running the same command gets the same output.
SaaS Starter — codebase audit ──────────────────────────────────────────────── Size (code = non-blank, non-comment lines) src/app 33 files 1659 code src/components 20 files 1223 code src/__tests__ 7 files 334 code src/lib 8 files 320 code src/emails 5 files 259 code prisma 2 files 62 code ──────────────────────────────────────────── total 81 files 3991 code Data model (uses = Prisma client calls in src/) User 13 fields 23 uses ApiKey 7 fields 0 uses WaitlistEntry 3 fields 1 uses 6 findings • Model ApiKey is declared in schema.prisma but never called in src/. It ships as an empty table. • NEXT_PUBLIC_GA_ID is read by code but missing from .env.example. • NEXT_PUBLIC_PLAUSIBLE_DOMAIN is read but missing from .env.example. • NEXT_PUBLIC_POSTHOG_KEY is read but missing from .env.example. • ADMIN_USER_IDS is declared in .env.example but never read. • NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY is declared but never read. These are gaps between what the code declares and what it runs. Re-run anytime: npm run audit
Read the top half and the claims on the home page hold up: 81 files, 3,991 lines of real code, an admin panel that queries the User model 23 ways, a working waitlist. Read the bottom half and you learn the exact seams before paying — chiefly that the ApiKey table is a dead scaffold today. I'd rather lose a sale to someone who needed API keys than sell them a table with nothing behind it.
That's the wedge over every other kit here. Their landing pages are unaudited by definition — you take the feature grid on faith and reconcile it with reality after the money's gone. Mine hands you the reconciliation up front.
The four red cells in the matrix, spelled out, so nothing is a surprise on day two:
The ApiKey table is a dead scaffold
The Prisma model exists; nothing generates, hashes, scopes or verifies a key, and there's no UI. The audit flags it with 0 uses. If your product needs programmatic API keys, budget building that yourself.
Rate limiting is in-memory
Fine on a single long-lived instance; it resets on redeploy and doesn't coordinate across serverless instances. For production at scale, swap in Upstash or Redis. The seam is one file, src/lib/rate-limit.ts.
Stripe only, no merchant-of-record
Flat subscriptions through Stripe, no Lemon Squeezy / Paddle / Polar. If you sell globally and want the provider to own EU VAT and sales tax, a merchant-of-record kit is the safer buy.
Single-tenant, no teams
Roles are User and Admin. No organisations, no member invites, no per-seat billing. The free official starter and both paid rivals beat me here — if teams are a hard requirement, buy one of them.
None of these is hidden in a changelog you'd find after purchase. They're on the sales page, in the audit, and in the schema itself.
So you can judge trajectory without me faking present capability. These are directions, not promises with dates — and if any lands, it lands for existing buyers too, because updates are free for life.
SaaS Starter is built and maintained by KipDev — the same shop behind the tools linked in the footer below (a webhook toolkit, a cron monitor, a schema.org generator and others). The kit isn't a write-once-sell-forever template gathering dust: this very marketing site runs on the same stack, and the boilerplate gets the fixes as the network's own products surface edge cases in Stripe webhooks, i18n routing and email delivery.
I'm not going to stack fake testimonials here — a five-star wall of invented names would undercut the one thing this page is about. When there are real, named customers happy to be quoted, they'll go here with their names and what they shipped. Until then, the audit output and the live demo are the proof I'm willing to stand behind.
There's no universal winner. Learning the plumbing: the free official starter. Team-seated B2B with global tax: Makerkit or Supastarter. One opinionated single-tenant kit where everything is finished and you can verify it before paying: SaaS Starter. Pick by the scope you need, not by the length of a feature grid.
Only if you've wired this stack before and know the hours. My honest itemised count is around 70 hours for a fully-working single-tenant kit — $3,500 to $7,000 of contractor time. If you've never built auth and billing and want to learn, buy nothing and clone the free starter; you'd be paying to skip the education you're after.
The $149 Starter licence covers one project; the $299 Unlimited licence covers as many as you like. Both include free updates for life — when the roadmap items above land, existing buyers pull them at no extra cost. Full terms are on the terms page.
30-day money-back guarantee, no questions asked — see the refund policy. The window exists precisely because it's a private repo and you can't read all the source first. The published audit and the live demo are there to shrink that risk before you ever pay.
The kit ships Stripe subscriptions with a billing portal and verified webhooks, and nothing else. If you sell worldwide and want the provider to handle EU VAT and US sales tax, a merchant-of-record kit like Makerkit or Supastarter is the honest recommendation over this one. A merchant-of-record adapter is on my roadmap but not built.
Yes, auth is Clerk — a third-party service with its own pricing beyond the free tier. That's a real dependency and if self-hosted auth is a requirement, don't buy this. The upside is you skip building session handling, social login and SSO. The auth surface is isolated in src/lib/auth.ts, so swapping it is a bounded job rather than a rewrite.
The components are hand-written on shadcn's token contract rather than generated by the CLI, but the CLI, registry and MCP all work against the repo. There's a whole page on that nuance, with the sixty-second test to prove it: Next.js SaaS starter + shadcn/ui, compatible not locked.
Poke at the live demo, run the numbers on this page against the repo after you buy, and if it doesn't hold up you have 30 days. $149 covers one project, $299 covers unlimited — both include updates for life. If teams or merchant-of-record billing are dealbreakers, go buy Makerkit or Supastarter with my blessing; if you're here to learn, clone the free official starter.
One-time payment · 30-day refund · Instant GitHub access · Read the docs before buying