Pricing modelAuth.js is free at any scale. Clerk's per-MAU billing matters once you grow.
free up to 10k MAU · $25/mo Pro · usage above
free · 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.
30 minutes · install + drop in component
few hours to days · provider config + UI
OAuth providersAuth.js has more provider options. Clerk has fewer but they're polished.
20+ social providers · enterprise SSO on Pro
70+ providers via adapters · SSO via Keycloak/etc
B2B / orgsIf you need multi-tenancy and SSO, Clerk is dramatically less work.
first-class · orgs, RBAC, SSO, invites, domains
DIY · build org schema yourself
Database ownershipAuth.js keeps users in your own database. With Clerk, the canonical user lives at Clerk.
Clerk hosts users · webhook to your DB
your DB · users live in your tables
CustomizationAuth.js gives you more rope. Clerk gives you less rope but better defaults.
themes, components, hosted UI · bounded
complete · you own the entire stack
MFA / passkeysClerk's MFA story is built-in. Auth.js's is bring-your-own.
first-class · TOTP, SMS, passkeys included
passkeys via adapter · TOTP DIY
Session managementClerk's session UX (active devices, revoke, etc.) is polished. Auth.js gives you the primitives.
managed · multi-session, device list, revoke
managed · JWT or DB · revoke is your problem
Lock-inMigrating off Clerk is doable but real. Auth.js has nothing to migrate from.
high · users live at Clerk · export available
low · users in your DB
ComplianceIf you sell to enterprises, Clerk's compliance posture is meaningfully easier than building your own.
SOC 2, GDPR, HIPAA-ready · attestations included
your problem · whatever your DB / hosting provides