Short answer: For a production Next.js app in 2026, Supabase Pro is the cheapest complete backend at 100,000 monthly active users, about $77 a month with Postgres and Supabase Auth on one bill. Neon plus Better Auth lands at about $84 and keeps every user record in a database you control, and that is the stack we would start a new app on. Clerk is free to 50,000 retained users, then climbs to about $1,025 a month at 100,000, while Auth0's B2C Essentials rate of roughly $0.07 per MAU makes it the most expensive option at every size we priced.
Most comparisons price the database and the login system on separate pages. Your invoice does not. At 100,000 MAUs the auth line can run thirteen times the database line, and the choice that causes it usually gets made in week one, when 100,000 users feels hypothetical. This page stacks four auth options on top of three Postgres hosts at 10,000, 50,000, and 100,000 MAUs.
Prices are list rates from each vendor's pricing page as of October 2026. They are the same figures used in our Supabase vs Neon vs PlanetScale latency and pricing comparison and our Clerk vs Auth0 vs Supabase Auth review, so the numbers agree across the site. Better Auth has no list price. It is an MIT-licensed TypeScript library, and its cost shows up in your database and your email bill.
Full-stack monthly cost at 10K, 50K, and 100K MAUs
Each row is one database plus one auth provider. Assumptions: at 10,000 MAUs the database is a small always-on instance with about 5 GB of data; at 50,000 and 100,000 it is a 4 GB RAM instance with 20 GB of data and 200 GB of egress. Paid auth tiers are used throughout, because production apps tend to need them.
| Stack | 10K MAU | 50K MAU | 100K MAU | Main trade-off |
|---|---|---|---|---|
| Supabase Pro + Supabase Auth | $25 | About $77 | About $77 | One vendor holds your data and your users; compute does not autoscale |
| Neon Launch + Better Auth | About $21 | About $84 | About $84 | You own the auth code and pay for your own email sending |
| PlanetScale Postgres (HA) + Better Auth | $15 | From $83 | From $83 | Two replicas included; no free tier, and storage and egress overages are priced per region |
| Neon Launch + Clerk Pro | About $46 | About $109 | About $1,109 | Best prebuilt login UI; the step from 50K to 100K retained users adds $1,000 a month |
| Supabase Pro + Clerk Pro | $50 | About $102 | About $1,102 | You keep paying for Supabase Auth's included MAUs and never use them |
| Any database above + Auth0 B2C Essentials | $700 plus database | $3,500 plus database | About $7,000 plus database (extrapolated) | Enterprise identity protocols at enterprise prices |
Two free tiers bend the 10K column. Clerk's Free plan covers 50,000 retained users per app, so the Clerk rows drop by $25 if you can live without Pro features. Auth0's Free plan covers 25,000 MAUs with a reduced feature set, which can make Auth0 $0 at 10,000 users. Neither changes the 100K column.
Database lines, briefly: Supabase Pro is $25 with a $10 compute credit, and a Medium instance (4 GB) is $60, so $77 after storage. Neon Launch bills $0.106 per CU-hour; one CU always on for 730 hours is about $77, plus $7 of storage. PlanetScale PS-5 (1/16 vCPU, 512 MiB) is $15 a month with high availability, and PS-40 (1/2 vCPU, 4 GiB, arm64) is $83 HA before overages. The 512 MiB tier will feel tight for a 10,000-user app with real queries.
Auth pricing alone: Clerk vs Auth0 vs Better Auth vs Supabase Auth
| Provider | Model | Billing unit | Free tier | 10K | 50K | 100K |
|---|---|---|---|---|---|---|
| Clerk | Hosted service with React components | Monthly retained users (MRU) | 50,000 MRU per app | $0 Free or $25 Pro | $0 Free or $25 Pro | About $1,025 (Pro: $25 plus 50,000 × $0.02) |
| Auth0 (B2C Essentials) | Hosted service, Universal Login redirect | Monthly active users (MAU) | 25,000 MAU, limited features | $700 | $3,500 | About $7,000 at the same rate; expect an Enterprise quote |
| Better Auth | Open-source library inside your Next.js app | None | Unlimited | $0 | $0 | $0 |
| Supabase Auth | Hosted, tied to a Supabase project | MAU | 50,000 MAU | Included in Pro ($25) | Included in Pro | Included in Pro (100,000 MAU), then $0.00325 per MAU |
Clerk counts a user only if they come back at least a day after signing up. A launch-day spike of sign-ups who never return costs nothing, which flatters Clerk early and stops mattering once you have a retained base. Auth0 and Supabase count everyone who authenticates in the month.
The Auth0 figure at 100,000 deserves a caveat. It simply extends the roughly $0.07 per MAU rate from our Auth0 coverage, and at that volume Auth0 generally moves customers onto a negotiated Enterprise contract. Use it as an opening position for that conversation.
Which Postgres host fits a production Next.js app
Neon. For most teams deploying Next.js to Vercel or another serverless host, Neon is the default we would pick, mainly because of preview deployments: every pull request can get its own copy-on-write database branch, and the Neon integration for Vercel wires that up per preview. Ten branches are included on Launch. The cost of all that is the cold start. Neon suspends an idle compute after 5 minutes by default and wakes it in "a few hundred milliseconds," per its docs, so turn scale-to-zero off on your production branch once real traffic arrives and keep it on for previews.
Supabase earns its place when the database is only half of what you need. Many Supabase-backed Next.js apps never open a raw Postgres connection from a serverless function at all; the supabase-js client talks to PostgREST over HTTP. If you do connect with Prisma or Drizzle, use Supavisor in transaction mode on port 6543 and turn off prepared statements.
PlanetScale is for the app that has already found its users. Its HA plans include a primary and two replicas, and there is nothing to wake up. Connections go through PgBouncer on port 6432. It is the wrong place to run twenty throwaway preview databases a month, since there is no free tier.
For latency numbers and preview-branch costs, see the full database comparison. For the two-way version, see Neon vs Supabase Postgres.
The real cost of free auth
Better Auth is free the way a self-hosted mail server is free. The license costs nothing. What you take on is the work Clerk was charging $1,025 a month to do: sign-in screens, verification emails through your own provider (Resend, Postmark, SES), rate limits on the reset endpoint, and the 2 a.m. page when the session table grows faster than you expected.
It is still our pick for a new Next.js app with one engineer who can spare two days on login flows. Users sit in your own Postgres tables, where joining against them is ordinary SQL. Changing hosts means moving a database dump. The Auth.js project (formerly NextAuth) is now maintained by the Better Auth team, which settled the open-source question for most new Next.js projects.
One setting matters more than the rest if you pair it with Neon. By default every session check reads the database, and every read keeps a scale-to-zero compute awake. The cookie cache stores a signed copy of the session in a short-lived cookie, so most requests skip that query:
import { betterAuth } from "better-auth";
import { Pool } from "pg";
export const auth = betterAuth({
database: new Pool({ connectionString: process.env.DATABASE_URL }),
emailAndPassword: { enabled: true },
session: {
// Re-check the database at most every 5 minutes per session
cookieCache: { enabled: true, maxAge: 5 * 60 },
},
});
Supabase Auth has a smaller version of the same catch. Its built-in email sender is rate limited and meant for testing, so production apps plug in their own SMTP provider anyway.
Where each option fits (and where it does not)
| Option | Layer | Best for | Where it loses |
|---|---|---|---|
| Neon | Database | Serverless Next.js apps that want a database branch per preview deployment | First request after idle when scale-to-zero is on; always-on workloads cost more per hour than a fixed instance |
| Supabase | Database plus auth and storage | Small teams that want one bill and Row Level Security tied to the signed-in user | Compute is a fixed instance size; per-hour branching gets expensive with many previews |
| PlanetScale | Database | Production apps where replicas and predictable instance pricing matter more than a free tier | No free tier and no scale-to-zero; overages priced per region |
| Clerk | Auth | B2B SaaS that needs organizations and invitations working this week | The 50K-to-100K retained-user band at $0.02 each |
| Auth0 | Auth | Enterprise customers who bring SAML or LDAP and a procurement checklist | Cost at every consumer scale; a configuration surface with hundreds of settings |
| Better Auth | Auth library | Teams that want users in their own Postgres and no per-user fee | You build and run the login experience, email included |
| Supabase Auth | Auth | Apps already on Supabase, up to 100,000 MAUs inside the $25 plan | Only makes sense with a Supabase database; team management is DIY through RLS |
Clerk scores higher in our auth review (9.0 against Better Auth's 8.6 here) because its developer experience really is better. The gap in price at 100,000 users is what moves the recommendation.
What we would ship tomorrow
Neon on Launch with scale-to-zero off for production, Better Auth with the cookie cache on, and a calendar note to look at Clerk or Auth0 the week a customer's security team asks for SAML.
Frequently asked questions
How much does auth cost at 100,000 MAUs with Clerk, Auth0, Better Auth, and Supabase Auth?
At October 2026 list prices: Better Auth costs $0 because it is an open-source library that stores users in your own database. Supabase Auth costs nothing extra on the $25/month Supabase Pro plan, which includes 100,000 MAUs. Clerk Pro costs about $1,025/month ($25 plus $0.02 for each retained user from 50,001 to 100,000). Auth0 B2C Essentials runs about $0.07 per MAU, which extends to roughly $7,000/month, and at that volume Auth0 usually quotes an Enterprise contract instead.
Which managed Postgres is best for a production Next.js app: Supabase, Neon, or PlanetScale?
Neon is the best default for a production Next.js app on Vercel or another serverless host, because it pairs a pooled connection string and an HTTP driver with copy-on-write branches for preview deployments. Supabase is the better choice if you also want auth and file storage on the same $25/month Pro plan. PlanetScale is the pick when uptime matters most: its HA plans include a primary and two replicas, starting at $15/month for PS-5, but there is no free tier.
Is Better Auth really free?
The library is free and MIT-licensed, and there is no per-user fee. You still pay an email provider to send verification and password-reset messages, and someone on your team builds the sign-in screens. With session cookie caching turned on, most requests skip the database lookup, which matters on Neon because every query keeps a scale-to-zero compute awake.
Can I use Clerk with Supabase or Neon?
Yes. Clerk stores users on its own infrastructure and issues session tokens your Next.js server can verify, so it works with any Postgres host. Supabase supports Clerk as a third-party auth provider, so Row Level Security policies can read the Clerk user ID. On Supabase Pro you keep paying for the 100,000 Supabase Auth MAUs included in the plan even if Clerk handles every login.
Does Neon's scale-to-zero slow down logins?
It can. Neon suspends an idle compute after 5 minutes by default and wakes it in what Neon's docs describe as a few hundred milliseconds, so the first login after a quiet period pays that delay if your auth library queries the database. On the Launch plan you can turn scale-to-zero off. A production app with steady traffic rarely idles long enough to suspend anyway.
When is Auth0 worth the price over Clerk or Better Auth?
When a customer's security team requires SAML or LDAP federation, or when procurement has already approved Okta and will not review another identity vendor. For a consumer or early-stage SaaS app on Next.js, Auth0's B2C Essentials rate of about $0.07 per MAU ($700/month at 10,000 users) is hard to justify against Clerk's free tier or Better Auth's $0.