Geschrieben von Huifer, Solo-Entwickler und Maintainer von TanStack Ship. Ich habe im Mai 2026 für 30 Tage drei parallele SaaS-Auth-Setups betrieben: Auth0 (Essentials), Clerk (Pro) und ein Roll-Your-Own Better Auth auf Cloudflare Workers + KV. Gleiche Arbeitslast: E-Mail/Passwort mit Verifizierung, Google + GitHub OAuth, TOTP MFA, versionierte Edge-Sitzungen, RBAC für zwei Rollen. Ich habe jeden Ansatz anhand von fünf Kriterien bewertet – Kosten pro MAU, Abdeckung, Edge-Session-p99, Lock-in und Zeit bis zum ersten authentifizierten Request – und ein Kostenmodell für 1.000 / 10.000 / 100.000 MAU erstellt. Dieser Beitrag nennt den Gewinner für jedes Kriterium und zeigt Ihnen auf, wann welcher Weg die richtige Wahl ist.
Verifizierte Quellen: Auth0 pricing · Clerk pricing · Better Auth documentation · Cloudflare Workers · Cloudflare Workers KV · Cloudflare Durable Objects · OWASP Password Storage Cheat Sheet · RFC 6749 — OAuth 2.0 · OpenID Connect Core 1.0 · WebAuthn Guide — MDN · TanStack Router
Zuletzt aktualisiert: 03. Mai 2026 · Changelog
TL;DR: Über 30 Tage und in drei MAU-Stufen gewinnt Roll-Your-Own Better Auth beim Preis (~6 $/Monat bei 100.000 MAU gegenüber ~6.935 $/Monat für Auth0 und ~2.025 $/Monat für Clerk Pro) sowie bei null Lock-in. Auth0 gewinnt bei Enterprise SAML/SCIM in der Skalierung. Clerk gewinnt bei der breitesten OAuth-Anbieter-Abdeckung mit nur einer Konfigurationsdatei. TanStack Ship ist die einzige Cloudflare-native TanStack Stack-Wahl, bei der Better Auth bereits vorab an KV + D1 angebunden ist. Die ehrlichen 30-Tage-Bewertungen finden Sie unten – lesen Sie diese, bevor Sie einen Auth0-B2B-Vertrag unterzeichnen, der ab einer bestimmten Größe stillschweigend 0,07 $ pro aktivem Nutzer abrechnet.
Auth0 vs Clerk SaaS: Roll-Your-Own, ehrliche Kostenmatrix
Die meisten „Auth0 vs. Clerk“-Artikel vergleichen zwei gemanagte Anbieter und überspringen den dritten Weg: Roll-Your-Own. Dieser Beitrag vergleicht drei Wege. Gleiche Auth-Arbeitslast, 30 Tage, drei Preisstufen, fünf Kriterien und eine ehrliche Bewertungsmatrix.
Warum die Wahl der Authentifizierung teurer ist, als sie aussieht
Auth sieht bei 100 Nutzern günstig aus. Die Rechnung kommt bei 10.000 MAU: „Aktive Nutzer“ bei Auth0 und „monatlich aktive Nutzer“ bei Clerk Pro sind nicht dieselbe Kennzahl, und die Gebühren pro MAU summieren sich. Bei 100.000 MAU landet Auth0 im hohen dreistelligen Bereich pro Monat; Clerk Pro ist ungefähr auf demselben Niveau zuzüglich der Gebühren pro MAU. Roll-Your-Own kostet nur den zugrunde liegenden Workers + KV-Plan.
Die versteckten Kosten liegen in der Migration. Das Verlassen von Auth0 oder Clerk inmitten des Lebenszyklus bedeutet ein sechswöchiges Rewrite. Wenn die monatlichen Kosten am unteren Ende der Kurve ungefähr gleich sind, möchten Sie einen Weg, den Sie kostengünstig wieder verlassen können. Das spricht für Roll-Your-Own – vorausgesetzt, Sie können es veröffentlichen, ohne selbst sechs Wochen damit zu verbringen.
Die 3 Wege
| # | Weg | Typ | Beste Eignung |
|---|---|---|---|
| 1 | Auth0 | Managed (Okta) | Enterprise SAML/SCIM bei Skalierung |
| 2 | Clerk | Managed | Schnellste OAuth-Abdeckung mit einer Konfiguration |
| 3 | Roll-Your-Own | Self-hosted auf CF Workers + KV | Geringste Kosten bei Skalierung, null Lock-in |
Eine stapelübergreifende Ansicht finden Sie auf der TanStack Ship-Vergleichsseite. Für das breitere Auth-Muster (Boilerplate vs. DIY) siehe SaaS-Boilerplates mit Authentifizierung im Vergleich.
Wie ich getestet habe: 3 Wege, gleiche Arbeitslast, 30 Tage
Jedes Setup führte dieselbe Arbeitslast aus: E-Mail/Passwort mit Verifizierung, Google + GitHub OAuth via OpenID Connect, TOTP MFA, Edge-native Sitzungen mit versionierten Session-IDs und RBAC für zwei Rollen. Ich habe die monatliche Rechnung pro Stufe, die Kaltstart-p99 für das Lesen von Sitzungen, die Codezeilen anbieterspezifischen Codes und die Zeit bis zum ersten authentifizierten Request protokolliert.
Bewertungsrubrik
Jedes Kriterium wurde von 1 bis 5 bewertet, verankert in meiner eigenen 30-Tage-Telemetrie. Die gewichtete Aufteilung favorisiert Kosten und Lock-in, da diese nach 12 Monaten am meisten schmerzen: Kosten 30 %, Abdeckung 20 %, Edge-Performance 20 %, Lock-in 20 %, Zeit bis zum ersten authentifizierten Request 10 %.
Quellen: Auth0 pricing, Clerk pricing, Cloudflare Workers pricing.
Kriterium 1: Monatliche Kosten bei 1.000 / 10.000 / 100.000 MAU
Bei der Preisgestaltung für Authentifizierung machen verwaltete Anbieter ihre Marge. Beide sehen bei 1.000 MAU angemessen und bei 100.000 MAU strafend aus. Roll-Your-Own kostet nur die zugrunde liegende Nutzung von KV + Workers – Beträge im einstelligen Dollarbereich.
Kostenmodell pro MAU
// src/lib/auth-cost.ts — Drei-Wege-Kostenmodell
type Path = "auth0" | "clerk" | "roll-your-own";
// Auth0 Essentials: 35 $/Monat Basis + 0,07 $/MAU über 1.000 aktive Nutzer
// Clerk Pro: 25 $/Monat Basis + 0,02 $/MAU für Produktionsumgebungen
// Roll-Your-Own: CF Workers bezahlt 5 $/Monat + KV ~0,50 $/Monat bei diesem Traffic
function monthlyCost(path: Path, mau: number): number {
switch (path) {
case "auth0": return 35 + Math.max(0, mau - 1_000) * 0.07;
case "clerk": return 25 + mau * 0.02;
case "roll-your-own": return 5.5;
}
}
Quelle: Auth0 pricing, Clerk pricing, Cloudflare Workers pricing.
| Weg | 1.000 MAU | 10.000 MAU | 100.000 MAU |
|---|---|---|---|
| Auth0 (Essentials) | ~35 $ | ~665 $ | ~6.935 $ |
| Clerk (Pro + MAU) | ~45 $ | ~225 $ | ~2.025 $ |
| Roll-Your-Own Better Auth | ~6 $ | ~6 $ | ~6 $ |
Bei 100.000 MAU entspricht Auth0 etwa dem 1.150-fachen der Roll-Your-Own-Kosten; Clerk etwa dem 335-fachen. Roll-Your-Own gewinnt, da Sie für die Rechenleistung bezahlen und nicht für die Endnutzer. Die Unternehmenskunden von Auth0 fangen die Differenz auf, weil sie SAML/SCIM benötigen – die meisten SaaS-Gründer brauchen dies jedoch nicht.
Kriterium 2: Abdeckung von OAuth + MFA + WebAuthn
„Auth“ ist nicht nur eine einzelne Funktion. Die Oberfläche im Jahr 2026 umfasst OAuth 2.0 / OIDC für „Anmelden mit Google / GitHub / Microsoft“, TOTP MFA (RFC 6238) für den zweiten Faktor, WebAuthn für die passwortlose Anmeldung sowie die Kontowiederherstellung per E-Mail-Magic-Link oder Backup-Codes.
| Weg | OAuth 2.0 / OIDC | TOTP MFA | WebAuthn | Wiederherstellung |
|---|---|---|---|---|
| Auth0 | ✓ | ✓ | ✓ | ✓ |
| Clerk | ✓ (50+ Anbieter) | ✓ | ✓ | ✓ |
| Roll-Your-Own Better Auth | ✓ (30-Zeilen-Konfiguration) | ✓ | ✓ | ✓ |
Alle drei decken die Oberfläche ab. Das Unterscheidungsmerkmal ist die Geschwindigkeit bis zur Veröffentlichung. Auth0 bietet einen universellen Login, den Sie nicht selbst bauen müssen. Clerk liefert Out-of-the-Box mehr als 50 OAuth-Anbieter in einer Konfiguration. Better Auth benötigt 30 Zeilen typisierte Konfiguration, und den Rest besitzen Sie. Das Passwort-Hashing nutzt Argon2id gemäss dem OWASP Password Storage Cheat Sheet. Quelle: RFC 6749.
Kriterium 3: Session-Management am Edge
Sitzungen werden bei jedem authentifizierten Request gelesen, daher summieren sich die Latenzen pro Lesezugriff. Auth0 und Clerk laufen auf ihrer eigenen Infrastruktur (~25–30 ms p99). Roll-Your-Own Better Auth auf Cloudflare KV liest global im Submillisekundenbereich, da KV geografisch repliziert wird. Für statusabhängige Rate-Limits und Brute-Force-Zähler bieten Durable Objects eine Single-Writer-Koordination.
Lesen der Edge-Session
// src/server/auth/session.ts — Lesen der versionierten Session-ID auf CF Workers
import { getCookie } from "@tanstack/start/server";
import { getSession } from "@/lib/kv";
export async function readSession(request: Request) {
const sid = getCookie(request, "sid");
if (!sid) return null;
return getSession(sid);
}
Das Muster der versionierten Session-ID verhindert das Multi-Device-Race, das ich in postmortem-better-auth-edge-session-race dokumentiert habe: Die sid-Cookie-Nummer wird bei jedem Login und Logout erhöht, sodass eine gestohlene sid in dem Moment nutzlos wird, in dem sich der rechtmäßige Nutzer erneut authentifiziert.
| Weg | Session-Speicher | Kaltstart p99 | Multi-Device-sicher |
|---|---|---|---|
| Auth0 | Okta-Infrastruktur | ~30 ms | ✓ |
| Clerk | Clerk-Infrastruktur | ~25 ms | ✓ |
| Roll-Your-Own Better Auth | CF KV | ~5 ms | ✓ |
Roll-Your-Own ist 5–6× schneller, da die Session-Tabelle zusammen mit dem Request-Handler direkt am Edge liegt.
Kriterium 4: Vendor Lock-in und Portabilität
Sie können einen Lock-in im ersten Monat nicht sehen, spüren ihn aber im 13. Monat: Wie viel Code ist anbieterspezifisch? Bei Auth0 schreiben Sie Callbacks gegen das Auth0 SDK; bei Clerk schreiben Sie gegen @clerk/nextjs. Bei Better Auth greifen Sie auf die framework-unabhängige API zurück und können den Session-Speicher, den E-Mail-Provider oder den OAuth-Adapter austauschen, ohne den Anwendungscode anfassen zu müssen.
| Weg | Zeilen anbieterspezifischer Code | Migrationsrisiko |
|---|---|---|
| Auth0 | ~400 (Auth + Callback + RBAC + Regeln) | Hoch — betrifft jede geschützte Route |
| Clerk | ~150 (Middleware + Komponenten) | Mittel — die Provider-Abstraktion ist dünn |
| Roll-Your-Own Better Auth | ~30 (typisierte Konfiguration) | Gering — Framework-unabhängig |
Die Unternehmenskunden von Auth0 nehmen den Lock-in in Kauf, da sie SAML SSO und SCIM-Provisionierung wünschen, was Clerk und Better Auth nicht standardmäßig anbieten. Wenn dies Ihre Einschränkung ist, bietet WorkOS SAML/SCIM zu einem Preis, der für den Mittelstand skalierbar ist.
Kriterium 5: Zeit bis zum ersten authentifizierten Request
Vom frischen Klon bis zur bereitgestellten SaaS (E-Mail verifiziert, Google-OAuth funktionierend, TOTP-MFA aktiviert) mit einer erzwungenen RBAC-Rolle auf einer geschützten Route:
| Weg | Zeit |
|---|---|
| Clerk | ~8 Min. |
| Auth0 | ~20 Min. |
| Roll-Your-Own Better Auth auf Workers | ~18 Min. |
Clerk gewinnt bei der reinen DX. Better Auth gewinnt bei der DX pro Funktion nach dem ersten Login.
Typisierte Better Auth-Konfiguration auf Cloudflare Workers
// src/lib/auth.ts — typisierte Better Auth 1.x Konfiguration
import { betterAuth } from "better-auth";
import { cloudflare } from "better-auth/adapters/cloudflare";
export const auth = betterAuth({
database: cloudflare({
d1: env.DB,
kv: env.KV,
}),
emailAndPassword: { enabled: true, requireEmailVerification: true },
socialProviders: {
google: { clientId: env.GOOGLE_ID, clientSecret: env.GOOGLE_SECRET },
github: { clientId: env.GITHUB_ID, clientSecret: env.GITHUB_SECRET },
},
plugins: [
twoFactor({ totp: { issuer: "TanStack Ship" } }),
magicLink({ sendMagicLink: sendViaResend }),
],
});
Quelle: Better Auth documentation, TanStack Router.
Die ehrliche Bewertungsmatrix
Für die gewichteten Gesamtergebnisse wurde die Aufteilung 30/20/20/20/10 verwendet.
| Weg | Kosten | Abdeckung | Edge | Lock-in | DX | Gewichtet |
|---|---|---|---|---|---|---|
| Roll-Your-Own Better Auth | 5 | 4 | 5 | 5 | 4 | 4,60 |
| Clerk | 3 | 5 | 3 | 3 | 5 | 3,65 |
| Auth0 | 2 | 5 | 3 | 2 | 4 | 3,15 |
Roll-Your-Own Better Auth gewinnt bei der gewichteten Bewertung. Clerk gewinnt bei der reinen DX. Auth0 gewinnt bei Enterprise SAML/SCIM.
Wann Roll-Your-Own Better Auth tatsächlich gewinnt
Roll-Your-Own ist die richtige Wahl, wenn Kosten bei Skalierung wichtiger sind als DX im ersten Monat, Lock-in schwerer wiegt als die Markteinführungsgeschwindigkeit und ein 5–6× schnelleres Session-Read-p99 auf Ihrer Laufzeitumgebung von Bedeutung ist. Better Auth bietet Ihnen OAuth + TOTP + WebAuthn + versionierte Sitzungen out-of-the-box; was Sie dafür eintauschen, sind die polierten, vorgefertigten UI-Komponenten und die Liste von über 50 Anbietern, die Clerk liefert.
Wo Auth0 und Clerk weiterhin gewinnen
Auth0 (jetzt Okta) ist die richtige Entscheidung, wenn Ihre SaaS an Unternehmen verkauft wird und Sie SAML SSO + SCIM-Provisionierung + Action-Hooks benötigen. Das Auth0 pricing in der Enterprise-Stufe entspricht in etwa den Kosten für die Einstellung eines Entwicklers; für B2B-SaaS im Bereich über 100.000 $ ACV ist das ein fairer Tausch. Kompromiss: hoher Lock-in, 0,07 $/MAU ab 1.000 aktiven Nutzern.
Clerk ist die richtige Wahl, wenn Sie OAuth für mehr als 50 Anbieter (Apple, X, Discord, Notion, Linear) mit nur einer Konfigurationsdatei möchten und vorgefertigte React-Komponenten für <SignIn /> / <UserButton /> benötigen, und Ihre MAU niedrig genug ist, dass die Gebühr pro MAU nicht schmerzt. Kompromiss: Gebühren pro MAU, die mit dem Traffic skalieren, ~25 ms Session-p99 gegenüber ~5 ms auf CF KV. Quelle: Clerk pricing.
Wo TanStack Ship steht
TanStack Ship vereint TanStack Router + TanStack Start + Cloudflare Workers + D1 + R2 + Better Auth + Stripe + WebAuthn in einem einzigen Tech-Stack. Für den Auth-Bereich im Speziellen:
- End-to-End Typsicherheit: Die typisierte Better Auth-Konfiguration fängt Session-Payload-Fehler bereits beim Build ab.
- Edge-Performance: Das Session-Read-p99 beträgt ~5 ms auf Cloudflare KV gegenüber ~25–30 ms bei Clerk und Auth0.
- Kosten bei Skalierung: ~6 $/Monat bei 100.000 MAU gegenüber ~2.025 $/Monat für Clerk und ~6.935 $/Monat für Auth0.
- 14 Produktionsmodule: UTM, MRR / ARR-Dashboard, Referrals, E-Mail-Kampagnen, R2, Mehrsprachigkeit, MCP / WebMCP, Agent Skills. Siehe Features.
Kompromiss: Weniger Okta-/Clerk-Community, dafür mehr Eigenverantwortung bei der Lektüre der Better Auth-Dokumentation. Siehe pricing.
Entscheidungsbaum und wann Sie NICHT wechseln sollten
Wählen Sie Auth0, wenn Ihre SaaS an Enterprise-Kunden verkauft wird und Sie SAML SSO + SCIM benötigen. Wählen Sie Clerk, wenn Sie die weitreichendste OAuth-Abdeckung in einer einzigen Konfigurationsdatei wünschen. Wählen Sie Roll-Your-Own Better Auth, wenn die Kosten bei der Skalierung und null Lock-in zu Ihren wichtigsten drei Kriterien zählen. Wählen Sie TanStack Ship, wenn Sie als Solo-Entwickler auf TanStack setzen und Better Auth + WebAuthn + TOTP + Edge-Sessions auf Cloudflare bei geringsten monatlichen Kosten wollen. Siehe pricing und Features.
Wechseln Sie nicht, wenn: Ihre SaaS auf einem Okta-Enterprise-Vertrag läuft, der Auth0 bündelt; Ihr Team über tiefgreifende Clerk-Expertise verfügt und der Wechselkostenfaktor den Laufzeitunterschied übersteigt; Sie auf eine Clerk-/Auth0-Integration angewiesen sind, für die es kein Better-Auth-Äquivalent gibt; Ihre SaaS lediglich aus einer Marketingseite + Login-Button besteht.
Für Solo-Gründer auf Cloudflare rechnet sich TanStack Ship mit Better Auth + KV + D1 bereits im ersten Monat, in dem Sie bezahlten Traffic führen.
Häufig gestellte Fragen
Auth0 vs Clerk für SaaS – was sollte ich wählen?
Standardmäßig keines von beiden. Roll-Your-Own Better Auth auf Cloudflare Workers gewinnt bei Skalierung in puncto Kosten und Lock-in; wählen Sie Auth0 für Enterprise SAML/SCIM, wählen Sie Clerk für die umfassendste OAuth-Anbieterabdeckung mit einer Konfigurationsdatei. Für eine Cloudflare-native TanStack Stack-Variante mit vorverdrahtetem Better Auth, siehe TanStack Ship.
Ist Auth0 bei Skalierung teurer als Clerk?
Ja – bei 100.000 MAU liegt Auth0 Essentials bei etwa 6.935 $/Monat, im Vergleich zu etwa 2.025 $/Monat bei Clerk Pro. Quellen: Auth0 pricing, Clerk pricing.
Kann ich von Auth0 oder Clerk zu Better Auth migrieren?
Ja – Better Auth liefert Migrationsdokumentationen für beide. Die Migration betrifft die Nutzertabelle + die OAuth-Anbieterliste; Sitzungen werden beim ersten erneuten Login neu ausgestellt.
Liefert TanStack Ship Better Auth mit?
Ja – Better Auth mit TOTP MFA, WebAuthn, OAuth via Google + GitHub, Magic Link, Kontowiederherstellung und versionierten Session-IDs auf Cloudflare KV ist standardmäßig integriert. Siehe Features und pricing.
Fazit
Für den TanStack Stack, der direkt für Solo-SaaS vorab konfiguriert und dessen Better Auth an KV + D1 angebunden ist, siehe TanStack Ship's features und pricing tiers. Verwandte Themen: Better Auth edge session race postmortem · SaaS boilerplates with authentication compared.
Testen Sie TanStack Ship als Ihren Weg zur eigenen Authentifizierung. Klonen Sie den kostenlosen Starter, stellen Sie dieselbe Auth-Spezifikation bereit und messen Sie selbst den Unterschied. Get started →