Pricing modelAuth.js is free at any scale. Clerk's per-MAU billing matters once you grow.
Clerkfree up to 10k MAU · $25/mo Pro · usage above
Auth.jsfree · self-hosted · pay for your DB
Time to shipClerk's prebuilt UI removes the 'build a sign-in page' work. Auth.js makes you build it.
Clerk30 minutes · install + drop in component
Auth.jsfew hours to days · provider config + UI
OAuth providersAuth.js has more provider options. Clerk has fewer but they're polished.
Clerk20+ social providers · enterprise SSO on Pro
Auth.js70+ providers via adapters · SSO via Keycloak/etc
B2B / orgsIf you need multi-tenancy and SSO, Clerk is dramatically less work.
Clerkfirst-class · orgs, RBAC, SSO, invites, domains
Auth.jsDIY · build org schema yourself
Database ownershipAuth.js keeps users in your own database. With Clerk, the canonical user lives at Clerk.
ClerkClerk hosts users · webhook to your DB
Auth.jsyour DB · users live in your tables
CustomizationAuth.js gives you more rope. Clerk gives you less rope but better defaults.
Clerkthemes, components, hosted UI · bounded
Auth.jscomplete · you own the entire stack
MFA / passkeysClerk's MFA story is built-in. Auth.js's is bring-your-own.
Clerkfirst-class · TOTP, SMS, passkeys included
Auth.jspasskeys via adapter · TOTP DIY
Session managementClerk's session UX (active devices, revoke, etc.) is polished. Auth.js gives you the primitives.
Clerkmanaged · multi-session, device list, revoke
Auth.jsmanaged · JWT or DB · revoke is your problem
Lock-inMigrating off Clerk is doable but real. Auth.js has nothing to migrate from.
Clerkhigh · users live at Clerk · export available
Auth.jslow · users in your DB
ComplianceIf you sell to enterprises, Clerk's compliance posture is meaningfully easier than building your own.
ClerkSOC 2, GDPR, HIPAA-ready · attestations included
Auth.jsyour problem · whatever your DB / hosting provides