Auth0 alternatives: where to go and how to migrate without losing a user

Eight destinations, one per reason to leave, and an eight-step migration plan.

Short answer: Clerk if your app runs on React or Next.js, WorkOS if you sell to enterprises that demand SSO, Supabase Auth if your data already sits in Postgres, Amazon Cognito if everything runs on AWS, Firebase for a consumer mobile app. Done paying per MAU? Better Auth as a library, Keycloak or FusionAuth self-hosted. One thing to know before you choose: without a paid plan, Auth0 won't give you your password hashes. We compared all eight destinations and checked their pricing in 2026.

Romain CochardCEO of Hack'celeration
Updated 20268destinations compared8migration steps2026prices checked

The ranking is editorial: a sponsored spot is always labeled on its card, and no affiliate link changes a score.

The real reasons

Why teams leave Auth0, and why it hurts

Auth0 is still a capable product: deep docs, dozens of social connections, SDKs for nearly every language. People rarely leave over the tech. They leave over the bill, the way it climbs, and how hard it is to get out once you're in.

A steep step from free to paid

Free covers 25,000 MAU. The first paid plan, Essentials, starts at $35 a month for 500 B2C users or $150 for B2B; Professional starts at $240 and $800. Higher up, the grid ends in "Contact us". As one Hacker News commenter put it: "Auth0's pricing really disappointed us, but we don't have the resource to switch".

You pay for the next tier up

If usage lands between two tiers, Auth0 bills the higher one. Hit 1,100 MAU and you pay the next band, not 1,100. On a fast-growing app, the bill jumps in steps instead of following your curve.

Enterprise SSO priced per connection

On B2B plans, Essentials includes 3 enterprise connections and Professional 5, then each extra costs $100 a month, capped at 30. One developer saw their bill go from free to $15k a year at around ten connectors. On B2C plans, enterprise connections aren't available at all.

Passwords don't leave easily

All your user data comes out through the Management API, except password hashes. Those need a support ticket and a paid plan, with no guaranteed date. On the free plan, Auth0 staff themselves suggest a temporary upgrade.

Forced rewrites from inside

Auth0 deprecated Rules and Hooks in favor of Actions. Teams with heavy Rules logic had to rewrite it, and many asked whether rewriting it somewhere else would really cost more.

A region you can't change

The hosting region, EU localities included, is picked when the tenant is created and can't be changed. A team that needs EU data residency for a customer or a GDPR review has to spin up a new tenant. That's a migration already, so many look elsewhere.

The 8 alternatives

Auth0 alternatives, tool by tool

For each tool: why move there, who it fits, its catch, how to migrate from Auth0, and what it costs. Prices are what vendors list in 2026, in US dollars. Watch the units: MAU (monthly active), MRU (monthly retained) and self-hosted "unlimited" aren't directly comparable.

01

Clerk: drop-in auth for React and Next.js apps

Quickest to wire up

Why move to Clerk. Clerk ships sign-in, sign-up and profile screens as components you place inside your React or Next.js app, instead of redirecting users to a hosted login page. The Hobby plan is free up to 50,000 monthly retained users per app, against 25,000 active users on Auth0 (different units).

Who it's for. Product teams on React or Next.js, B2C or B2B SaaS, who want organizations and roles without building an admin panel.

Who it's not for. Apps whose front end isn't JavaScript, and enterprises that insist on hosting identities themselves.

The catch. Clerk doesn't count users the way Auth0 does. A MRU (monthly retained user) is someone who comes back at least one day after signing up: a sign-up who never returns costs nothing, but your Auth0 and Clerk numbers won't line up. On the B2B side, one enterprise SSO connection is included, then $75 a month each, and an organization caps at 20 members unless you add the $100/month B2B add-on.

How to migrate. Clerk maintains an open source import script that reads JSON or CSV, with a password_hasher field so existing passwords keep working. It also supports a trickle migration where each user moves over on their next sign-in. Plan for one thing: active sessions end at cutover, so everyone logs in once more.

Free
50,000 MRU per app
Paid
Pro $25/mo ($20 billed yearly)
Overage
$0.02 per MRU
Our score
4.5/5
See Clerk pricing →
02

WorkOS: for SaaS selling to enterprise buyers

Best for B2B SSO

Why move to WorkOS. For B2B SaaS, the number one reason to leave Auth0 is the enterprise SSO line on the invoice. WorkOS splits the two: AuthKit, its login layer, is free up to 1 million monthly active users. You only pay for enterprise connections (SSO and Directory Sync): $125 per connection per month for connections 1 to 15, then $100 for 16 to 30.

Who it's for. A SaaS closing customers who run Okta, Entra ID or Google Workspace and write SAML or SCIM into every contract.

Who it's not for. A consumer app. You'd be ignoring everything WorkOS is good at.

The catch. Every enterprise customer adds a fixed line. Twenty SSO customers come to about $2,375 a month (15 × $125 + 5 × $100). That usually beats Auth0 B2B, but bake it into your enterprise tier price.

How to migrate. Importing accounts is the easy part. The hard part is reconfiguring SSO with each customer, who has to update the callback URL or SAML metadata on their side. Give enterprise accounts a month's notice and book a slot with each one.

Free
AuthKit up to 1M MAU
Paid
SSO $125/connection/mo (1 to 15)
Best for
B2B SaaS with SSO
Our score
4.4/5
See WorkOS pricing →
03

Supabase Auth: if your data already lives in Postgres

Cheapest at scale

Why move to Supabase Auth. If your app already runs on Supabase, auth comes with the same subscription: 50,000 monthly active users on Free, 100,000 on the $25/month Pro plan (per organization), then $0.00325 per extra active user. At 200,000 MAU, overage adds roughly $325 a month. No "Contact us" wall halfway up.

Who it's for. Teams who want users in the same Postgres database as their data, with access rules written in SQL through Row Level Security.

Who it's not for. B2B SaaS built on Auth0 Organizations. Supabase Auth has no equivalent, so you rebuild the team model yourself.

The catch. The migration guide only carries TOTP for MFA, and an idle free project pauses after 7 days. For production, budget Pro from day one. SAML is included for 50 MAU, then $0.015 each.

How to migrate. Supabase publishes a guide written for Auth0. It imports bcrypt and Argon2 hashes, so users keep their passwords, as long as you get the hash export from Auth0 support. MFA factors need re-enrollment, and SAML connections are wired up with Supabase support. More in our Supabase review, and if Supabase isn't a fit, see its alternatives.

Free
50,000 MAU
Paid
Pro $25/mo, 100,000 MAU included
Overage
$0.00325 per MAU
Our score
4.3/5
See Supabase pricing →
04

Better Auth: own the code, skip the vendor

Open source library

Why move to Better Auth. Several Hacker News threads describe teams leaving Auth0 for a library to cut costs, and Better Auth is the TypeScript option that keeps coming up. The library is free under the MIT license and users sit in your own database; Better Auth sells an optional paid infrastructure layer (hosted dashboard, audit logs).

Who it's for. TypeScript teams with a back end they control, who'd rather maintain a dependency than pay a monthly identity invoice.

Who it's not for. Companies whose enterprise buyers send security questionnaires expecting a vendor with its own audit reports. With a library, that compliance work lands on you.

The catch. You become the identity provider. Security patches, rate limiting, breach response and uptime are your job now, not a vendor's.

How to migrate. Manual. Write a script that reads your Auth0 export and inserts users into your tables, and check that your password verification handles the bcrypt hashes from the export. Run it on a staging copy first.

Price
free, MIT license
Hosting
your stack
Best for
TypeScript teams
Our score
4.2/5
Visit Better Auth →
05

Firebase Authentication: for mobile apps on Google

Generous free tier for B2C

Why move to Firebase. Firebase Authentication gives you 50,000 monthly active users free, on both Spark and Blaze. For a consumer mobile app, the math is blunt: one Hacker News commenter says moving from Auth0 to Firebase was "2 orders of magnitude cheaper".

Who it's for. iOS and Android apps, and teams already on Firestore, Cloud Functions or Google Cloud.

Who it's not for. B2B SaaS needing organizations, roles and per-customer SSO out of the box.

The catch. SAML and OIDC are free for only 50 MAU; past that, Identity Platform pricing on Google Cloud applies.

How to migrate. Confirm in Firebase's import docs that your Auth0 hash algorithm is supported, then run the import on a dozen accounts before the real thing. If you ever leave Firebase too, our Firebase switching guide covers the reverse route.

Free
50,000 MAU (Spark and Blaze)
SAML / OIDC
50 MAU free
Best for
B2C mobile apps
Our score
4.0/5
See Firebase pricing →
06

Amazon Cognito: if your whole stack is on AWS

AWS per-MAU pricing

Why move to Cognito. The lowest per-user price on this page among services billed per MAU alone, with no subscription. On the Lite tier: 10,000 MAU free, then $0.0055 each, then $0.0046 at the next band. One Hacker News developer moved to Cognito after enterprise connectors pushed their Auth0 bill from free to $15k a year.

Who it's for. Teams already on AWS (Lambda, API Gateway, IAM) who are comfortable with infrastructure as code.

Who it's not for. Teams who want polished login screens without effort. Cognito's UI customization trails Auth0 and Clerk.

The catch. Three tiers that behave differently: Lite, Essentials (10,000 free then $0.015) and Plus ($0.020, no free tier). SAML and OIDC are free for 50 users, then $0.015. User pools created before the late-2024 pricing change keep 50,000 free MAU, so don't delete an old pool casually.

How to migrate. Cognito's "Migrate user" Lambda trigger checks the password against Auth0 on first sign-in and creates the user in Cognito. Nobody resets anything, but Auth0 must stay live for the whole window. Users who hit "forgot password" during that window end up in a reset flow. For automation around it, there's an AWS Cognito node in n8n.

Free
10,000 MAU (Lite and Essentials)
Overage
from $0.0055 per MAU (Lite)
Best for
AWS teams
Our score
3.8/5
See Cognito pricing →
07

Keycloak: the open source server you run yourself

Free, self-hosted

Why move to Keycloak. No more per-MAU invoice. Keycloak is an Apache 2.0 identity server with over 37,000 GitHub stars: SSO, SAML, OIDC, LDAP federation and MFA all ship in the box. SaaS teams paying $100 a month per enterprise connection often end up here.

Who it's for. Teams with ops skills (Kubernetes, databases, backups), or organizations that must keep identities in-house.

Who it's not for. A three-person startup with nobody on call. The license is free; running it isn't.

The catch. Upgrades. Managed-Keycloak vendors count about four minor releases a year, and each one needs preparing. If your identity server goes down, every login in your product goes with it.

How to migrate. Keycloak imports users from JSON, and a custom user storage SPI can verify legacy passwords on the fly. That's more code than Clerk or Cognito: plan a few days of Java work.

License
Apache 2.0, free
Hosting
your infrastructure
Best for
ops-heavy teams
Our score
4.1/5
See Keycloak on GitHub →
08

FusionAuth: self-host for free or buy a dedicated cloud

Self-host or dedicated

Why move to FusionAuth. It sits between Keycloak and a pure SaaS. The Community edition is free with unlimited users when you self-host, and the same vendor sells hosted plans if you'd rather not run servers.

Who it's for. Teams who want to self-host today with a commercial vendor behind them, or who need single-tenant hosting for compliance.

Who it's not for. Small teams wanting a cheap managed service: hosted plans climb fast.

The catch. Price of the cloud. Starter begins at $162 a month and Essentials at $2,970 a month, both billed annually.

How to migrate. Before you commit, check FusionAuth's own Auth0 migration docs for how it handles bcrypt hashes from the export, and run a pilot import on the free Community edition.

Free
Community, self-hosted, unlimited users
Paid
Starter from $162/mo (annual)
Best for
self-hosting with a vendor
Our score
4.0/5
See FusionAuth pricing →
Side by side

The 8 alternatives compared

Our default pick: Clerk for B2C or an early-stage JavaScript SaaS, WorkOS once customers ask for SSO. For scale, take 100,000 B2C monthly active users: Supabase Auth stays inside the $25 Pro plan and Cognito Lite stays under $500, while Auth0's Professional and B2B plans move to custom quotes well before that volume.

Free planFirst paid tier and migration
Auth0Where you start25,000 MAU, 1 enterprise connectionEssentials from $35/mo (B2C) or $150 (B2B); hashes by ticket, paid plans only
ClerkReact, Next.js50,000 MRU per appPro $25/mo; JSON or CSV import, trickle migration
WorkOSB2B SSOAuthKit up to 1M MAU$125/mo per SSO connection (1 to 15)
Supabase AuthPostgres50,000 MAU, pauses after 7 idle daysPro $25/mo (100,000 MAU); bcrypt and Argon2 import
Better AuthLibraryFree, open sourceYour hosting; manual import script
Firebase AuthMobile50,000 MAU, SAML for 50 MAUIdentity Platform pricing beyond
Amazon CognitoAWS10,000 MAU (Lite, Essentials)$0.0055/MAU on Lite; Lambda migration trigger
KeycloakSelf-hostedFree, Apache 2.0Your hosting and ops cost
FusionAuthSelf-host or cloudCommunity, unlimited users self-hostedStarter from $162/mo, billed annually

Entry prices before tax, as listed by vendors in 2026, subject to change. Always rerun the math on your own usage.

Migration plan

Migrating off Auth0 in eight steps

Order matters. Each step protects something: your users' passwords, their sessions, your enterprise customers, and your ability to roll back if a detail breaks.

01

List everything Auth0 does for you

Week 1

Write down every connection (database, Google, Apple, each enterprise SAML or OIDC connection), every Action plus any legacy Rules or Hooks still running, user_metadata and app_metadata, roles, Organizations, MFA factors, your custom domain, and each app's callback URLs.

Actions are what teams forget. They add claims to tokens (a role, a tenant ID) that your back end reads without anyone remembering where they come from. Open each Action and note what it writes into the token.

Time
half a day to two days
Output
one row per item
02

Ask for a discount before you leave

Week 1

Before you commit six weeks of engineering, call Auth0. One Hacker News commenter says Okta/Auth0 pricing is negotiable: they went from paying per customer connection to a flat fee. Show up with a priced competing offer (WorkOS, Clerk, Cognito) and your real usage.

Even if the discount falls short, the call is useful: request the password hash export (next step) and check your renewal date. Yearly billing costs 11 times the monthly price, so don't renew for a year right before leaving.

Time
one week
Goal
discount or export date
03

Get the password hash export

Weeks 1 to 3

This is what most guides skip. Auth0's Management API exposes everything about your users except password hashes. To get those, you open a support ticket, and the export is only available on paid plans. Auth0 doesn't guarantee a delivery date.

On the free plan? In Auth0's community forum, staff suggest upgrading temporarily for the export. Budget at least one month of Essentials ($35 for B2C) into the migration, and file the request in week one.

Lead time
not guaranteed
Requirement
paid plan
04

Choose bulk import, lazy migration, or both

Week 2

Bulk import moves every account at once, hashes included: fast, but you need the hash export. Lazy migration (a Lambda trigger on Cognito, trickle mode on Clerk) creates each account when the user signs in again, checking the password against Auth0. No hashes needed, but Auth0 stays live and billed for the whole window.

What works: lazy migration for 4 to 8 weeks, then a bulk import of inactive users, who would otherwise never come back to be migrated.

Window
4 to 8 weeks
Inactive users
bulk import at the end
05

Rebuild tokens and Action logic

Weeks 2 to 4

Using your inventory, recreate every custom claim, role and org ID in the new provider. Decode an Auth0 token and a new one for the same user and compare them field by field before touching production.

Update API validation too: new issuer (iss), new audience, new signing keys. During the migration window, your back end has to accept both issuers.

Checkpoint
tokens diffed field by field
During window
accept both issuers
06

Reconnect each enterprise customer

Weeks 3 to 6

A SAML or OIDC connection takes two parties: your customer set up Auth0 inside their Okta or Entra ID, and they have to redo it for your new provider. Send each customer the new metadata, a time slot and a named contact.

Start with the smallest account. Never disable the old connection until the customer confirms at least one of their users signed in through the new one.

Per customer
30 minutes to an hour
Order
smallest to largest
07

Cut over, warn users, re-enroll MFA

Day one

On cutover day, open sessions end and everyone signs in once more. Email users two days ahead with one plain sentence about what changes. TOTP authenticator factors don't carry over, so affected users re-enroll on first sign-in.

Watch failed logins and password reset requests for 48 hours. A spike almost always means a hash or redirect issue, not careless users.

Monitoring
48 hours
Notify
every user
08

Shut Auth0 down at the right time

After the window

Keep the Auth0 tenant until the lazy migration window closes and inactive users are imported. Pull a final export of logs and metadata you need for legal retention, drop to the free plan, then delete the tenant.

Finally, strip Auth0 env vars, SDKs and URLs from your code. A forgotten library still calling Auth0 fails silently the day the tenant disappears. Check your automations as well, such as the Auth0 module in Make.

When
window closed + inactive import done
Check
no remaining Auth0 calls

Is your tool missing from this page? Email us: hello@hackceleration.com

Migration pitfalls

What makes an Auth0 migration fail

The same mistakes show up in forum threads and in vendors' own migration guides. None of them is hard code. They're scheduling and scope misses.

Asking for hashes too late

The export ticket has no guaranteed turnaround. File it in cutover week and you may switch without passwords, forcing a reset on your whole user base. File it in week one.

Forgetting inactive users

Lazy migration only moves people who come back. Everyone else stays in Auth0, and if you shut it down without a final import, they lose their account. Always end with a bulk import.

Comparing different units

25,000 MAU on Auth0, 50,000 MRU on Clerk, unlimited on self-hosted Keycloak: the same headcount bills very differently. Pull your login stats and convert before comparing prices.

Breaking an enterprise login unannounced

A broken SAML connection locks out every employee of a customer at once, often your biggest contract. Each customer rewires on their side, on an agreed date, with the old connection still live.

Leaving orphaned claims

An Action that injected a role into the token vanishes with Auth0. Your API then denies access with no clear error. Diff tokens field by field before cutover.

Renewing yearly the week before you leave

Auth0's annual plan costs 11 months of monthly billing. Handy if you stay, expensive if you leave in three months. Switch to monthly as soon as the decision is made.

  • Inventory of connections, Actions, metadata, roles and Organizations
  • Hash export ticket filed with Auth0 support
  • Renewal date checked
  • Billing units converted (MAU, MRU)
  • Strategy picked: bulk import, lazy migration, or both
  • Tokens diffed field by field
  • Back end accepts both issuers
  • Each SSO customer given a date
  • User email sent before cutover
  • Inactive users imported at the end
FAQ · 8 questions

Auth0 alternatives: frequently asked questions

  • What is the best Auth0 alternative?

    There isn't one answer: Clerk for React or Next.js apps, WorkOS for B2B SaaS that sells SSO, Supabase Auth if your data is already in Postgres, Cognito if you live on AWS. Run your own numbers with two finalists, converting units (MAU, MRU) first, before deciding.

  • Is there a free or open source alternative to Auth0?

    Yes. Keycloak is free and Apache 2.0, but you host and upgrade it. Better Auth is a free MIT-licensed TypeScript library, FusionAuth Community is free to self-host with unlimited users. On the SaaS side, WorkOS AuthKit is free up to 1 million MAU and Clerk up to 50,000 retained users.

  • Which Auth0 alternative is cheapest for B2B SSO?

    For a handful of enterprise customers, Clerk includes one SSO connection and charges $75 a month for each extra; WorkOS charges $125 per connection with free core auth. Past 15 connections WorkOS drops to $100. Self-hosted Keycloak has no per-connection fee, but you pay in ops time.

  • Is Auth0 part of Okta?

    Yes. Okta completed its acquisition of Auth0 in 2021. Okta focuses on workforce identity, Auth0 on customer login for apps, so moving from Auth0 to Okta won't fix a pricing problem. Going the other way? Read our Okta switching guide.

  • How do I migrate users from Auth0 without resetting passwords?

    Two routes. Get the hash export through an Auth0 support ticket (paid plans only) and import it into a provider that reads bcrypt, like Supabase. Or migrate lazily: the password is checked against Auth0 on first sign-in. Only users who click "forgot password" during the window pick a new one.

  • Clerk vs Auth0: which should I pick?

    Clerk if your front end is React or Next.js and you want login screens inside your app: its free tier covers 50,000 retained users versus 25,000 active on Auth0. Auth0 if you run many languages, already have dozens of enterprise connections configured, or hold a negotiated contract. Note that a user who never returns doesn't count on Clerk.

  • Is Auth0 free?

    Yes, up to 25,000 monthly active users, with 5 organizations and one enterprise connection. A custom domain requires card verification, and advanced MFA factors aren't included. The trap: the free plan can't export password hashes, which makes leaving harder.

  • Can I keep user data in the EU after leaving Auth0?

    On Auth0 the region is fixed when you create the tenant, so moving to the EU already means a migration. Among alternatives, self-hosted Keycloak or FusionAuth run wherever you deploy them, so the region is your call. Check each vendor's subprocessors too.

Hack'celeration Labs

Get the next migration guide in your inbox

One tool to leave, one destination, one migration plan. Nothing else.

No spam. Unsubscribe in one click.