Clerk vs Auth0 vs Built-in Auth - Cost at 10k, 50k, 100k Users

Clerk vs Auth0 in one line: Clerk is the faster, cheaper choice for React and Next.js apps up to around 100,000 users; Auth0 is the more complete identity platform for enterprises with complex requirements, at a higher price per user. There's also a third option many teams overlook: auth that comes with your backend, such as Supabase Auth or StitchDB, which costs little or nothing extra and puts users in the same database as your data.

The fair way to compare them is with numbers. Below, the same three apps are priced on each option.

#Prices used in this article (November 2026)

Clerk (pricing): Hobby free for 50,000 monthly retained users (MRU) per app, without MFA or passkeys. Pro $25/month ($20 billed yearly) with 50,000 MRU, then $0.02 per MRU from 50,001 to 100,000. One SAML connection on Pro; extra $75/month each. B2B add-on $100/month beyond 100 organizations.

Auth0 (pricing): Free up to 25,000 MAU. B2C Essentials from $35/month for 500 MAU ($175/month at 2,500 MAU); B2C Professional from $240/month for 500 MAU. B2B Essentials from $150/month; B2B Professional from $800/month. Higher MAU tiers raise the price; the page tells you to use the next tier up when you fall between tiers.

StitchDB (built-in auth, pricing): Free with 50,000 MAU, Pro $15.99/month with 100,000 MAU, Scale $49/month with 200,000 MAU. Extra MAU on Pro cost $0.002 with the spend cap off. MFA, passkeys and SAML are available; Pro includes 50 SSO users.

Supabase (built-in auth): Free with 50,000 MAU, Pro from $25/month with 100,000 MAU, then $0.00325 per MAU.

Auth0's tier prices above 2,500 MAU aren't all listed publicly, so the Auth0 rows below say "quote / calculator" where we couldn't verify a number.

#Scenario 1: consumer app, 10,000 users, needs MFA

OptionMonthly costNotes
Clerk$25Pro needed for MFA
Auth0Use Auth0's calculatorFree tier lacks Pro MFA; Essentials is priced by MAU band
StitchDB$0Free plan includes TOTP MFA
Supabase$0Free plan

#Scenario 2: consumer app, 50,000 users

OptionMonthly costNotes
Clerk$0 on Hobby (no MFA), $25 on Pro50,000 MRU included on both
Auth0Over the free 25,000 MAU; quote / calculatorPaid tier priced by MAU band
StitchDB$0Free includes 50,000 MAU
Supabase$0Free includes 50,000 MAU (projects pause after a week idle)

#Scenario 3: B2B SaaS, 100,000 users, SAML for 3 customers

OptionMonthly costNotes
Clerk$25 + $1,000 (50,000 extra MRU) + $150 (2 extra SAML) = $1,175Plus B2B add-on if >100 orgs
Auth0B2B Essentials from $150, priced up by MAU band; quote3 enterprise connections included on B2B Essentials
StitchDB$15.99100,000 MAU and 50 SSO users on Pro; extra SSO users $0.01 each
Supabase$25 + compute100,000 MAU on Pro; check SSO pricing

The pattern is clear: standalone identity services charge for identity; backends with built-in auth treat it as one feature among many. That doesn't make built-in auth the right answer for everyone, but it's worth knowing the gap before you choose.

#Developer experience

Clerk is built for modern React. Components like <SignIn />, <SignUp /> and <UserButton /> drop into a Next.js app, and middleware protects routes. You can have a polished sign-in flow in under an hour.

Auth0 uses Universal Login, a hosted page you redirect to, plus SDKs for most languages and frameworks. More configuration up front (applications, APIs, rules and actions), more flexibility after.

Built-in auth varies. With StitchDB you either build forms with the SDK or send users to the hosted sign-in page:

JavaScript
import { createClient } from 'stitchdb-js'

const stitchdb = createClient(URL, ANON_KEY, { auth: { flowType: 'pkce' } })

// e-mail and password
await stitchdb.auth.signInWithPassword({ email, password })

// or the hosted page with your logo, colors and providers
await stitchdb.auth.signInWithHostedPage({ redirectTo: 'https://app.example.com/auth/callback' })

#Authorization: where the real difference is

With Clerk or Auth0, the identity service issues a token and your API checks it. You still need to decide, in your code or database, what the user may access. Usually you copy users into your own users table with a webhook.

With built-in auth, the token's sub is the user's id in auth.users, and database policies use it directly:

SQL
create policy "Members read their organization's invoices" on public.invoices
  for select to authenticated
  using (auth.is_member(org_id));

auth.is_member() comes from StitchDB's Organizations feature, which adds teams, roles, invites and JWT claims to your database. Membership is looked up live, so removing someone takes effect at once, even with an older token. Read more about tokens in JWT authentication explained.

#B2B features

FeatureClerkAuth0StitchDB
Organizations / teams100 per app included, add-on beyond5 on Free; more on paid B2B tiersIncluded, no add-on
SAML SSO1 connection on Pro, $75/mo each extra1 on Free; 3 on B2B Essentials, 5 on B2B ProfessionalPer-provider setup; SSO users billed per MAU
Custom rolesYesYesOwner, admin, member plus your own
SCIM / directory syncCheck Clerk docsCheck Auth0 docsNot in the docs
Enterprise compliance paperworkCheck ClerkExtensiveCheck security

Auth0 has the deepest enterprise feature set and a long record in security reviews. If your buyers send 200-question security questionnaires, that history matters.

On StitchDB, SAML SSO is turned on per project, and you add one identity provider per customer organization with its metadata URL and e-mail domains, either in Studio or through the admin API. Sign-in is one call:

JavaScript
const { data } = await stitchdb.auth.signInWithSSO({ domain: 'acme.com' })
if (data?.url) window.location.href = data.url

Users who signed in this way carry sso/saml in the amr claim of their token, so a policy or function can require SSO for a given organization. There's no per-connection fee; SSO users count against the plan's SSO MAU allowance.

#Where each one wins

Pick Clerk if you build with React or Next.js, want beautiful prebuilt UI, and have fewer than about 100,000 users. It's the quickest path to production auth.

Pick Auth0 if you need enterprise identity: many SSO connections, complex B2B flows, extensive compliance and integrations across many apps, and you have budget for it.

Pick built-in auth (StitchDB or Supabase) if your data lives in Postgres anyway and you want authorization in SQL policies, one bill, and users in your own database. StitchDB's trade-offs: EU-only hosting, a younger platform than either Clerk or Auth0, and less prebuilt UI than Clerk. Supabase has more regions but a higher Pro entry price.

Also compare: Auth0 alternatives and Clerk alternatives.

#FAQ

#Is Clerk cheaper than Auth0?

For most apps under 100,000 users, yes, as of November 2026. Clerk Pro is $25/month with 50,000 MRU; Auth0's paid consumer tiers start at $35/month for 500 MAU.

#Is Auth0 better than Clerk for enterprise?

Usually. Auth0 has more enterprise connections, compliance documentation and integrations. Clerk also offers SAML and organizations, which is enough for many B2B apps.

#Can I use Clerk or Auth0 with Postgres row level security?

Yes, by verifying their JWT in Postgres or in your API and mapping the user id. It works, but you maintain the mapping. Built-in auth avoids it.

#Does StitchDB have a sign-in UI like Clerk?

It has a hosted sign-in page with your branding, not React components. You can also build your own forms with the SDK.

Compare for yourself on real numbers: see StitchDB pricing.