Clerk vs Supabase Auth vs Firebase Auth for vibe-coded apps

You built an app with AI and now it needs real accounts, so each person sees only their own data.

Published Oct 16, 2026 Last tested: Oct 16, 2026 Verdict: final Test log (8 entries)

The verdict

Winner

Clerk

98/100

Hosted login with ready-made sign-in and sign-up screens you drop into a React app.

Passed every check with zero manual fixes and the safest defaults of the three: an email code at sign-up, 15-character passwords checked against leaked-password lists, and 60-second tokens. Prebuilt sign-in screens meant 76 lines added and 15 removed. Score: 98/100 (average of two runs).

Visit Clerk

Runner-up

Firebase Auth

94/100

Google's login service. You build the forms yourself with a small SDK and verify tokens on your server.

Passed every check with zero manual fixes, and its free plan has the most room. But it signs new users in without checking their email by default, and its minimum password is 6 characters. Score: 94/100 (average of two runs), close to Clerk.

Visit Firebase Auth

Also tested

Tested on the same app but not picked. The reasons are in the write-up below.

Why

Who this is for: you have a working app, usually AI-built, and need sign-up, sign-in and sign-out, a page only signed-in people can see, and per-user data, without becoming an auth expert.

Our pick: Clerk (98/100). It had the safest defaults of the three without any setup: an email code at sign-up, a 15-character minimum password, leaked-password checks, and tokens that expire after 60 seconds. You drop in its sign-in and sign-up screens and check the token on your server. No settings changes needed.

Runner-up: Firebase Auth (94/100). It also passed everything with zero manual fixes, and its free plan has the most room. The catch is that you build the login forms yourself, and the defaults are looser (below). Choose it if you’re already on Firebase or Google Cloud, or you want a big free tier and don’t mind writing your own forms.

Also tested: Supabase Auth (91/100). Choose it if your app already uses a Supabase database, or you want your users, password hashes included, in your own Postgres. Its free plan covers 50,000 monthly active users. It passed every check, but only after one settings change (below).

It’s close. Clerk and Firebase were 4 points apart, so we ran both a second time, as our rubric requires, and averaged the runs. Both second runs matched the first exactly: Clerk 98, Firebase 94. They tie on our tie-breakers (task success, then effort), so Clerk’s lead comes down to safer defaults and its prebuilt screens.

Gotchas on default settings

Firebase doesn’t check emails. A new user is signed in straight away, without proving they own the address, and passwords only need 6 characters. Fix: call sendEmailVerification after sign-up, have your server reject tokens where email_verified is false, and raise the password rules in the console.

Supabase sign-ups fail. New projects require email confirmation, but the built-in sender allows only 2 emails per hour per project. Our first two test sign-ups used that up, and every sign-up after that failed with “email rate limit exceeded.” Fix: add your own email (SMTP) provider (best for launch), or turn off “Confirm email” (Authentication → Sign In / Providers → Email). Turning it off means anyone can sign up with an address they don’t own. Don’t test with made-up addresses either; each one still uses up an email.

Signing out doesn’t kill the token right away. With every tool, a token copied before sign-out kept working on our server until it expired: up to 60 seconds for Clerk, 1 hour for Firebase and Supabase.

Scores

Scored with our published rubric. Tested 2026-10-16. Clerk and Firebase scores are the average of two runs each (both runs scored the same); Supabase had one run.

ClerkFirebase AuthSupabase Auth
Task success (35)555
Effort (15)5 (0 manual fixes)5 (0 manual fixes)4 (2 manual fixes)
Time (10)555
Cost (10)554 (email quota ran out)
Quality, docs and developer experience (10)54 (no React quickstart)4
Ownership (10)555
Safe defaults (10)43 (no email check, 6-char passwords)4
Total98 (avg of 98, 98)94 (avg of 94, 94)91

All three passed the checks that matter most. User B could never read or delete user A’s notes through direct API calls, forged tokens were rejected, and no secret key ended up in the browser. All three let you export users with password hashes.

What it costs

All three runs cost $0 on the free plans.

  • Clerk Hobby: free with no card, 50,000 monthly retained users per app, up to 3 social logins, sessions fixed at 7 days. Pro is $25/mo, or $20/mo billed annually (checked 2026-10-15).
  • Firebase Spark: no cost and no payment method. Email/password login is included, with 50K monthly active users no-cost via Identity Platform. Limits: 1,000 verification emails and 150 password-reset emails a day. Phone login needs the paid Blaze plan (checked 2026-10-16).
  • Supabase Free: $0 for 50,000 monthly active users, a 500 MB database and 2 active projects. Free projects pause after 1 week of inactivity, and leaked-password protection isn’t included (checked 2026-10-15).

Caveats

  • Order matters. Supabase ran first, Clerk second and Firebase third. Each later run reused the test setup and lessons from the earlier ones, so Clerk’s and especially Firebase’s time and effort numbers are flattering.
  • Clerk’s bot protection showed a “Verify you are human” check to our automated browser. We didn’t bypass it by hand; we used Clerk’s documented testing tokens. A real person would just see a checkbox.
  • Runs were done by an AI agent following vendor docs only. Clerk and Firebase got two runs each; the second runs reused the first runs’ code, so they confirm the results, not the time. Supabase got one run.

Next step: put it on your own domain. See our tested pick for publishing your app on your own domain.

Not tested yet

  • GitHub login, on all three tools.

Test log

DateAgentStepResult
Oct 16, 2026Lando (agent)Re-runs (rubric: top two within 5 points). Clerk j02-clerk-r2 and Firebase j02-firebase-r2 on fresh branches with fresh test users, same 9 checks.Identical to the first runs. Clerk 9/9, 0 manual fixes, 98. Firebase 9/9, 0 manual fixes, email verification still off by default, 94. Averages: Clerk 98, Firebase 94.
Oct 16, 2026Lando (agent)Firebase Auth, run j02-firebase-r1. Added a small email/password form (the core SDK has no prebuilt UI) and checked tokens on the server with the Admin SDK. Ran the same 9 checks.9/9 passed on the first attempt (GitHub login not tested). 0 manual fixes. Working in 2 min 58 s (ran third). 110 lines added, 10 removed. $0 on Spark.
Oct 16, 2026Lando (agent)Firebase: isolation and forged tokens via direct API calls; password reset through the emailed link.Blocked every time (404 or 401). The reset email arrived within a second, and Firebase's hosted page set the new password. New users were signed in without email verification (S2 fail).
Oct 16, 2026Lando (agent)Clerk, run j02-clerk-r1. Added Clerk's prebuilt sign-in/sign-up to the starter notes app (Vite + React + Express) and checked tokens on the server. Ran 9 scripted checks in a headless browser plus direct API calls.9/9 passed (GitHub login not tested). 0 manual fixes. Working in 5 min 16 s. 76 lines added, 15 removed. $0 on the Hobby plan.
Oct 16, 2026Lando (agent)Clerk: user B tried to read and delete user A's notes, and we sent forged and tampered tokens, all through direct API calls.Blocked every time (404 or 401). No secret key in the browser bundle.
Oct 16, 2026Lando (agent)Supabase Auth, run j02-supabase-r1, on default project settings. Same app, same 9 checks.Sign-up failed. Email confirmation is on by default, and the built-in sender's 2 emails per hour were used up by our first two test sign-ups. Later sign-ups got 'email rate limit exceeded'.
Oct 16, 2026Lando (agent)Supabase Auth, after the project owner turned off 'Confirm email' (manual fix #2; fix #1 was creating test users with SQL).9/9 passed (GitHub login not tested), including a full password reset from a real email. 21.5 min including the wait for the settings change. 175 lines added, 14 removed. $0 on the Free plan.
Oct 16, 2026Lando (agent)Supabase Auth: user B tried to read and delete user A's notes, and we sent forged and tampered tokens, all through direct API calls.Blocked every time (404 or 401). Only the public key was in the browser bundle.

Affiliate disclosure

This page has no affiliate links yet. Every link goes to the tool’s own homepage. Affiliate deals never decide a pick, and a tool with no affiliate program can still win. Full policy.

Sources