At 100K monthly active users, Clerk costs $1,825/month and Supabase Auth costs $25/month. Same authentication. 73x price difference. Find your number before you scale.
Enter your MAU · Select feature tier · Compare all providers instantly
Same authentication. Wildly different pricing at scale.
Clerk and Supabase Auth both let users sign in with email, Google, and GitHub. Both handle sessions, JWTs, and user management. At 1,000 users they cost the same: $0. At 100,000 users, Clerk charges $1,825/month ($0.02/MAU after 10K free). Supabase charges $25/month ($0.00325/MAU after 50K free).
| Provider | Free MAU | Rate after free | 10K MAU | 50K MAU | 100K MAU |
|---|---|---|---|---|---|
| Supabase AuthCHEAPEST | 50,000 | $0.00325 | $0 | $0 | $25 |
| WorkOS | 1,000,000 | $0.001 | $0 | $0 | $0 |
| Firebase Auth | 50,000 | $0.0055 | $0 | $0 | $275 |
| Clerk | 10,000 | $0.02 | $0 | $800 | $1,825 |
| Auth0 (Okta) | 7,500 | $0.07 | $175 | $2,975 | $5,000+ |
The cheapest option is not always the right option.
Best if you are already using Supabase for your database. Auth is essentially included. No pre-built UI — you build login forms yourself with their SDK.
Best developer experience. Pre-built React/Next.js components, organizations, multi-session. Worth the cost below 10K MAU (free). Gets expensive fast after that.
Best for enterprise B2B. 1M MAU free, then $0.001/MAU. Built for SSO-first products. Overkill for B2C apps.
Auth0's per-MAU pricing becomes extremely expensive at scale. The 7,500 free MAU limit is the lowest of all providers compared here.
Find your auth provider cost at current and projected user scale.
A B2C SaaS growing from 5K → 50K → 200K MAU over 18 months. On Clerk: Month 1 ($0, within 10K free) → Month 6 ($800/month at 50K) → Month 18 ($3,825/month at 200K). On Supabase Auth: Month 1 ($0) → Month 6 ($0, within 50K free) → Month 18 ($487/month). Total 18-month auth cost: Clerk ≈ $22,000 vs Supabase ≈ $1,500.
How we calculate auth provider costs.
Sources: All pricing sourced from official provider pricing pages — Clerk's pricing page, Supabase's auth pricing documentation, Auth0/Okta's pricing page, WorkOS pricing, Firebase's Blaze plan pricing. All are current as of June 2026.
MAU definition: Monthly Active Users (MAU) is a unique user who authenticates at least once in a calendar month. Providers define this slightly differently — Clerk counts by authentication events, Supabase by unique auth.users rows with a session in the billing period. The practical difference is minimal for most apps.
Enterprise tier complexity: Enterprise auth pricing (SSO/SAML) is frequently custom-quoted. The rates shown for Auth0/Okta at enterprise scale are based on published Enterprise plan rates; actual enterprise contracts may differ. WorkOS enterprise pricing is primarily per SSO connection ($125/connection/month) rather than per-MAU.
What is excluded: Email provider costs (Clerk uses their own email sending; Supabase requires an external SMTP provider like Resend or Postmark at $0–20/month), SMS/MFA costs (typically $0.05–0.10 per SMS verification), and custom domain SSL certificate management costs. For most apps these are minor but worth adding for complete budgeting.
Supabase Auth is the cheapest at scale: 50,000 free MAUs, then $0.00325/MAU. At 100K MAU it costs ~$25/month. If you already use Supabase for your database, auth is essentially free. WorkOS has the largest free tier at 1M MAU (the best choice for B2C apps that scale quickly) but lacks Clerk's polished developer experience. For developer tools and B2C consumer apps, WorkOS or Supabase Auth are almost always the right cost choice.
Clerk wins for developer experience: pre-built React/Next.js components, excellent documentation, organizations support, multi-session, and beautiful sign-in/up flows with minimal code. Auth0 wins for enterprise requirements: SAML SSO, SCIM provisioning, extensive compliance certifications (SOC2, ISO 27001, HIPAA BAA), and complex multi-tenant B2B scenarios. For most indie developers and startups, Clerk (at under 10K MAU) or Supabase Auth (at any MAU) is the better choice. Auth0's per-MAU pricing at scale is prohibitively expensive for B2C products.
Yes — select the "Enterprise (SSO + SAML + compliance)" tier in the calculator to see pricing that includes SSO. Auth0 and WorkOS are purpose-built for enterprise SSO; Clerk charges extra per SSO connection; Supabase Auth supports SSO but requires more implementation work. WorkOS is the specialized choice for products that are exclusively enterprise-focused (connecting to customers' Okta/Azure AD/Google Workspace).
The financial trigger: when Clerk's monthly bill exceeds $200/month (roughly 20,000 MAU above the free 10K tier). At that point, Supabase Auth would cost ~$33/month — a 6× cost reduction. The migration cost is real: you'll need to export all user data, handle session invalidation, rebuild any Clerk-specific UI components, and test the entire auth flow. Budget 2–4 weeks for a thorough migration. For most teams, it's worth doing when you can clearly see the bill doubling every 6 months.
WorkOS is an auth platform focused on enterprise features — SSO, SCIM, admin portal, directory sync. Their 1M free MAU tier is a strategic choice: they make money on SSO connections ($125/connection/month), not consumer users. B2C apps with millions of regular users can use WorkOS completely free (standard auth features). Enterprise apps selling to companies pay per SSO connection, which is where WorkOS revenue comes from. This makes WorkOS a legitimate choice for any B2C app focused on consumer users who won't need SSO.
Monthly Active Users (MAU) counts unique users who authenticate at least once in a calendar month. Total registered users is everyone who ever signed up. For most SaaS products, MAU is 20–40% of total registered users (many users sign up once and never return). For high-engagement products (daily-use tools, consumer apps), MAU can be 60–80% of total users. Auth providers bill on MAU, not total users — a database with 1M registered accounts but only 50K monthly active users costs based on the 50K, not 1M.