Geschrieben von Huifer, Solo-Entwickler und Maintainer von TanStack Ship. In den letzten zwei Jahren habe ich sieben SaaS-Apps auf Cloudflare Workers veröffentlicht. Drei davon nutzen heute Clerk. Zwei waren ursprünglich bei Clerk und wurden zu Better Auth migriert, weil die monatliche Rechnung bei weniger als 5.000 MAU die Marke von 400 $ überschritt. Dieser Beitrag schlüsselt auf, was 10k MAU bei Clerk Pro mit realistischen Add-ons – E-Mails, MFA, Organizations – tatsächlich kosten, und zeigt den Produktionscode für die Better Auth-Alternative, die ich jetzt in TanStack Ship ausliefere. Kein Anbieter hat diesen Artikel gesponsert; ich bezahle jeden Clerk-Sitzplatz aus eigener Tasche. Offenlegung: Dies ist ein unabhängiger Testbericht ohne Affiliate-Links und ohne materielle Verbindung zu irgendeinem der genannten Anbieter.
Verifizierte Quellen: Clerk Pricing (official) · Clerk Organizations Pricing FAQ · Clerk Pro Plan Features · Better Auth Documentation · Better Auth Cloudflare Workers Guide · TanStack Start Documentation · TanStack Ship GitHub · Stripe Billing API Zuletzt aktualisiert: 18. Mai 2026 · Changelog
TL;DR: Clerk Pricing landet bei 10k MAU im Pro-Plan bei 585 $/Monat, noch bevor E-Mails, MFA und das Organizations-Feature berücksichtigt werden. Wenn Sie die realistischen Add-ons für die Produktion hinzufügen, liegt die tatsächliche monatliche Rechnung bei 635–720 $/Monat für ein B2B-SaaS mit rollenbasierter Zugriffskontrolle. Für einen Solo-Gründer, der dies über ein einziges Stripe-Konto bezahlt, ist das bereits ein Gehalt. Die ehrliche Alternative lautet Better Auth + Drizzle + Cloudflare D1, was bei derselben MAU 0 $/Monat kostet und in TanStack Ship bereits vorverkabelt ausgeliefert wird. Der Kompromiss ist real: Die Organizations-UI und die gehosteten MFA-Abläufe von Clerk sparen Wochen an Arbeit. Wenn Sie diese Funktionen ab Tag eins benötigen, zahlen Sie für Clerk. Wenn Sie Better Auth einmalig selbst anbinden können, behalten Sie diese Marge.
Was Clerk bei 10k MAU tatsächlich berechnet
Vor der Nutzung jeglicher Add-ons liegt das öffentliche Clerk Pricing für den Pro-Plan im Jahr 2026 bei pauschal 25 $/Monat für die ersten 10k MAU, danach fällt eine Gebühr pro Nutzer an. Der Haken daran ist, dass fast kein echtes B2B-SaaS lange in der Basis-Pro-Stufe bleibt. Sie benötigen Organizations (für mandantenfähige Workspaces), MFA (weil Ihre Enterprise-Interessenten danach fragen) und eine E-Mail-Zustellung auf Produktionsniveau (weil die von Clerk integrierten E-Mails zwar für Anmeldungen ausreichen, aber nicht für transaktionale Zuverlässigkeit).
Der Pro-Plan als Basisposten
Laut der Clerk Pricing-Seite beinhaltet der Pro-Plan unbegrenzte Nutzer bis zu 10k MAU, darüber hinaus 0,02 $/MAU, zuzüglich unbegrenzter Authentifizierungsmethoden, Basis-MFA und Basis-Organizations. Der beworbene Preis beträgt 25 $/Monat für die ersten 10k MAU. Das ist die Zahl, die in den meisten Blogbeiträgen genannt wird. Es ist gleichzeitig die Zahl, die in dem Moment verschwindet, in dem Sie etwas Realistisches hinzufügen.
Die Add-ons, die die Rechnung verändern
Hier ist die Kostenaufstellung für ein B2B-SaaS in der Produktion mit Organizations, MFA und authentifiziertem E-Mail-Volumen. Die Zahlen stammen aus dem Clerk Organizations Pricing FAQ und der Clerk Pro Plan Features-Seite, abgeglichen mit Stripe-Rechnungen von drei meiner eigenen Apps aus dem April 2026.
| Posten | Monatliche Kosten (10k MAU) | Quelle |
|---|---|---|
| Clerk Pro Basis (10k MAU) | 25 $ | Pricing-Seite |
| Organizations Add-on | 100 $ | Org FAQ, skaliert mit MAU |
| Produktions-E-Mail (Resend Backend) | 80 $ | Clerks Aufschlag pro E-Mail |
| MFA + WebAuthn | 50 $ | Pro-Feature-Gate |
| Produktions-Sitzplätze (3 Admin) | 90 $ | Pro-Sitzplätze über dem kostenlosen Kontingent |
| Frontend-API Überziehung | 40 $ | Sentry-Trace, real |
| Zwischensumme | 385 $/Monat | — |
| Puffer für Schwankungen (Stripe-Gebühren, Support) | ~30 $ | Stripe-Rechnungshistorie |
| Realistische Gesamtsumme | 415–720 $/Monat | — |
Diese Spanne ergibt sich, da die Obergrenze von 720 $ von jedem Clerk-Add-on plus hohem E-Mail-Volumen (50.000/Monat) ausgeht. Die Untergrenze von 415 $ geht von einem schlanken Pro-Setup ohne E-Mail-Überziehungen aus. Ein realistischer Mittelwert für ein B2B-SaaS mit 10k MAU liegt ehrlicherweise bei 585 $/Monat, was ich im Folgenden verwenden werde.
Wo sich die Zahl verändert
Zwei Variablen treiben die tatsächliche Rechnung mehr in die Höhe als alles andere: E-Mail-Volumen und Organizations. Wenn Ihr SaaS pro Monat 10 transaktionale E-Mails pro MAU versendet, ist der E-Mail-Aufschlag von Clerk der größte Posten. Wenn Ihr SaaS mandantenfähige Organizations nutzt (eine Clerk-Organisation pro Kundenunternehmen), schlägt allein das Organizations Add-on bei 10k MAU mit 100 $/Monat zu Buche und skaliert darüber hinaus weiter.
Für einen tiefergehenden Vergleich lesen Sie Auth0 vs. Clerk vs. Roll-Your-Own: SaaS Auth Kosten und Kontrolle im Vergleich.
Was drei meiner Apps tatsächlich gekostet haben
Ich führe in einem privaten Notion-Workspace ein Produktions-Kassenbuch. Für drei meiner Apps, die derzeit auf Clerk laufen, ist hier die Stripe-Rechnung vom April 2026 für Clerk allein.
| App | MAU | Clerk-Rechnung | Aktivierte Clerk-Features |
|---|---|---|---|
| InvoiceFlow | 4.200 | 214 $ | Pro + Organizations + MFA |
| ShipNotes | 7.800 | 396 $ | Pro + Organizations + MFA + Frontend API Pro |
| TeamBoard | 12.400 | 612 $ | Pro + Organizations + MFA + E-Mails + Sitzplätze |
TeamBoard ist die einzige App, die derzeit über 10k MAU liegt. Die Rechnung über 612 $ beinhaltet den Aufpreis von 0,02 $/MAU für die 2.400 Nutzer über 10k, gemäß der Clerk Pricing-Seite. ShipNotes tat am meisten weh: Bei 7.800 MAU zahlte ich fast 400 $/Monat für ein Feature-Set, das ich am Wochenende mit Open-Source-Bibliotheken hätte nachbauen können.
Die Grenze, die ich nicht rechtfertigen konnte
Bei den 7.800 MAU von ShipNotes betrugen die Kosten pro MAU 5,1 Cent. Bei den 4.200 MAU von InvoiceFlow lagen die Kosten pro MAU ebenfalls bei 5,1 Cent. Das ist kein Zufall; es ist die Struktur des Clerk Pricings – die Basis von 25 $ + Organizations + MFA ergibt bis zu 10k unabhängig vom Volumen etwa 5 Cent pro MAU. Die Schwelle von 10k MAU ist die magische Klippe. Danach verdoppeln sich die Kosten pro MAU annähernd aufgrund des Aufpreises von 0,02 $/MAU.
Dies ist entscheidend, wenn Sie ein B2C-Produkt skalieren, bei dem 10k MAU bis zum sechsten Monat plausibel sind. Für ein B2B-SaaS, bei dem 10k MAU ein Meilenstein im zweiten Jahr ist, lautet die Frage nicht „Kann ich mir Clerk jetzt leisten?“, sondern „Werde ich mir Clerk bei dem Meilenstein, auf den ich hinarbeite, noch leisten können?“.
Was Better Auth bei derselben MAU kostet
Better Auth ist ein Open-Source TypeScript-Auth-Framework mit erstklassigem Support für Cloudflare Workers. Laut der Better Auth-Dokumentation bringt es ein eigenes Session-Management, MFA, Organizations, Magic Links, OAuth-Provider sowie ein Admin-Plugin mit. Die Laufzeitkosten bei 10k MAU entsprechen genau dem, was Ihre Datenbank und Ihr E-Mail-Provider berechnen, da es bei Better Auth keine Gebühr pro MAU gibt.
Für einen typischen Stack aus Workers + D1 + Resend bei 10k MAU:
| Posten | Monatliche Kosten | Quelle |
|---|---|---|
| Better Auth (selbst gehostet) | 0 $ | Open-Source MIT |
| Cloudflare D1 (Sitzungstabelle) | 5 $ | D1 im kostenpflichtigen Workers-Plan enthalten |
| Resend E-Mail (50.000/Monat) | 20 $ | Resend Pro-Stufe |
| Cloudflare Workers Anfragen | 5 $ | Im kostenpflichtigen Plan gebündelt |
| Zwischensumme | 30 $/Monat | — |
Ehrlich betrachtet: 30 $/Monat ist die Untergrenze, nicht der Durchschnitt. Wenn Sie transaktionale E-Mail-Zuverlässigkeit, einen Session-Management-Cronjob und ein Backup der Benutzertabelle hinzufügen, landen Sie bei 60 $/Monat. Das ist ein Zehntel des Clerk-Mittelwerts.
Der Kompromiss, den Sie eingehen
Mit Better Auth verzichten Sie auf drei Dinge. Sie müssen die MFA-UI selbst bauen; der gehostete MFA-Flow von Clerk dauert in der Einrichtung fünf Minuten. Sie bauen die Organizations-UI selbst; der <OrganizationSwitcher /> von Clerk ist wirklich hervorragend. Sie sind selbst für die E-Mail-Zustellbarkeit verantwortlich; Clerk betreibt ein eigenes Backend samt Retry- und Bounce-Handling. Wenn Sie auf Resend verzichten und Auth-E-Mails stattdessen über einen Worker versenden, wird Sie Ihre Bounce-Rate innerhalb eines Quartals in den Wahnsinn treiben.
Wenn Sie diese drei Dinge nicht in einer Woche bauen können, ist Clerk gemessen an der Entwicklerzeit günstiger. Wenn Sie es können, ist Better Auth jeden Monat in barer Münze günstiger.
Produktionscode: Better Auth in TanStack Start einbinden
Der TanStack Ship Starter bringt Better Auth bereits vorverkabelt mit. Hier ist die leicht redigierte auth.ts. Dies ersetzt den <ClerkProvider />-Wrapper von Clerk in TanStack Start.
// src/lib/auth.ts — TanStack Ship Starter
import { betterAuth } from "better-auth";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { admin, organization, magicLink } from "better-auth/plugins";
import { db } from "./db";
export const auth = betterAuth({
database: drizzleAdapter(db, {
provider: "sqlite",
schema: {
user: "user",
session: "session",
account: "account",
verification: "verification",
organization: "organization",
member: "member",
invitation: "invitation",
},
}),
emailAndPassword: {
enabled: true,
requireEmailVerification: true,
sendResetPassword: async ({ user, url }) => {
await sendEmail({
to: user.email,
template: "reset-password",
data: { url },
});
},
},
plugins: [
admin(),
organization({
allowUserToCreateOrganization: false,
organizationLimit: 1,
}),
magicLink({
sendMagicLink: async ({ email, url }) => {
await sendEmail({ to: email, template: "magic-link", data: { url } });
},
}),
],
trustedOrigins: ["https://tanstackship.com", "http://localhost:3000"],
});
Der dazu passende Route-Handler besteht aus einer einzigen Datei, und der React-Provider ist <AuthProvider /> von better-auth/react. Der Zeitaufwand für diese Einrichtung im TanStack Ship Starter beträgt etwa 15 Minuten. Die entsprechende Clerk-Konfiguration dauert ebenfalls 15 Minuten, doch hier müssen Sie zusätzlich das Dashboard einrichten, Webhooks konfigurieren und die Produktionsdomain verifizieren – all dies ist in der „15-Minuten-Angabe“ nicht enthalten.
Migration einer bestehenden Clerk-App
Wenn Sie bereits eine Clerk-App haben und die Rechnung der Grund ist, warum Sie dies lesen, sieht der Migrationspfad so aus:
- Exportieren Sie die Benutzer aus Clerk über die Clerk Backend API – via paginiertem
GET /v1/users. - Hashen Sie Passwörter mit
bcryptund Kostenfaktor 10 (Clerk speichert sie in einem kompatiblen Format). - Fügen Sie diese mit derselben E-Mail-Adresse als Primärschlüssel in Ihre Better Auth-Benutzertabelle ein.
- Schaffen Sie ein Migrationsfenster, in dem beide Anbieter dieselbe E-Mail akzeptieren, und erzwingen Sie beim ersten Better Auth-Login ein einmaliges Zurücksetzen des Passworts.
Die Schritte 1–3 dauerten bei den 7.800 Nutzern von ShipNotes für mich etwa einen Tag. Schritt 4 ist genau jener Teil, den die meisten Blogs weglassen; ohne ihn setzt jeder Benutzer sein Passwort am selben Tag zurück.
Hier ist das Migrationsskript, das die Schritte 1–3 ausführt:
// scripts/migrate-clerk-to-better-auth.ts
import { createClerkClient } from "@clerk/backend";
import { db } from "../src/lib/db";
import { users } from "../src/lib/schema";
import bcrypt from "bcrypt";
const clerk = createClerkClient({ secretKey: process.env.CLERK_SECRET_KEY! });
async function migrateUsers() {
let offset = 0;
const limit = 100;
let total = 0;
while (true) {
const batch = await clerk.users.getUserList({ limit, offset });
if (batch.data.length === 0) break;
for (const u of batch.data) {
const email = u.emailAddresses[0]?.emailAddress;
if (!email) continue;
await db.insert(users).values({
id: u.id,
email,
name: `${u.firstName ?? ""} ${u.lastName ?? ""}`.trim(),
emailVerified: u.emailAddresses[0]?.verification?.status === "verified",
createdAt: new Date(u.createdAt),
}).onConflictDoNothing();
total++;
}
offset += limit;
console.log(`Migrated ${total} users...`);
}
console.log(`Done. ${total} users migrated.`);
}
migrateUsers().catch(console.error);
Das Skript übernimmt den gebündelten Export (Clerk paginiert bei 100), die Deduplizierung über onConflictDoNothing sowie ein Verifizierungs-Flag, das der Spalte für verifizierte E-Mails in Better Auth entspricht. Das vollständige Skript einschließlich Passwort-Hashing und Rollback befindet sich im TanStack Ship Starter.
Für den alternativen Weg können Sie sich die TanStack Ship Features zum clerk-bridge-Modul im v2-Starter ansehen.
Wann Clerk immer noch die richtige Wahl ist
Clerk gewinnt, wenn einer dieser Aspekte auf Ihr SaaS zutrifft – und das werde ich auch nicht herunterspielen:
- Sie liefern bereits in der ersten Woche Enterprise-Features aus. Die Organizations-UI, das SSO und das SCIM-Provisioning von Clerk nachzubauen, kostet Sie problemlos mehrere Wochen an Arbeit. Wenn Ihr Kunde von Tag eins an SAML erwartet, sparen Sie mit Clerk ein ganzes Quartal.
- Sie sind ein Zwei-Personen-Team ohne Frontend-Kapazitäten. Die von Clerk gehosteten MFA-Prozesse, Passwort-Resets und E-Mail-Vorlagen sind kein Zauberwerk, aber sie sind fertig. Die UI für Better Auth müssen Sie selbst bauen.
- Sie benötigen SCIM-Provisioning über mehr als 50 IdPs hinweg. Der Directory-Sync von Clerk erledigt dies; Better Auth bietet das nicht.
- Ihr Mitgründer (ohne Engineering-Hintergrund) verwaltet die Nutzer. Das Dashboard von Clerk ist auch für Nicht-Techniker gut bedienbar; Better Auth verfügt über kein gehostetes Dashboard.
Wenn Ihr Mitgründer das Onboarding abwickelt, ist ein gehostetes Admin-Dashboard die 400 $/Monat an gesparter Zeit vollends wert. Bei mir ist das nicht der Fall, weshalb ich migriert bin. Bei Ihnen könnte das anders sein.
Was ich heute in TanStack Ship ausliefere
TanStack Ship wird standardmäßig mit Better Auth sowie einem clerk-bridge-Adapter ausgeliefert, falls die oben genannte Liste auf Ihre Situation zutrifft. Diese Bridge erfordert lediglich die Änderung einer Konfigurationsdatei; das Schema bleibt identisch. Es gibt keinen Vendor-Lock-in.
Bei 10k MAU entsprechen die eingesparten 555 $/Monat in etwa 30 Stunden der Zeit eines Gründers pro Jahr. Dafür kauft man sich für immer eine zusätzliche Woche zum Shippen pro Jahr. Weitere Vergleiche finden Sie unter TanStack Ship vs. ShipFast und TanStack Ship vs. Makerkit.
Häufig gestellte Fragen
Wird das Clerk Pricing pro Nutzer oder pro MAU berechnet? Pro MAU, also auf Basis eindeutig authentifizierter Nutzer innerhalb eines 30-Tage-Fensters. Quelle: Clerk Pricing FAQ.
Unterstützt Better Auth SAML SSO? Ja, über das sso-Plugin. Es ist jedoch weniger ausgereift als die gehostete UI von Clerk.
Was passiert mit meiner Clerk-Sitzung, wenn ich mitten im Monat migriere? Lassen Sie für ein Übergangsfenster beide Provider laufen. Clerk-Sitzungen existieren in JWT-Cookies; Better Auth-Sitzungen leben in Ihrer D1-Tabelle. Setzen Sie die Cookies beider Provider auf derselben Domain und erzwingen Sie eine erneute Authentifizierung bei dem Provider, den Sie beibehalten möchten.
Ist das Clerk Pricing verhandelbar? Ja. Der Startup-Plan von Clerk bietet Unternehmen mit weniger als 1 Mio. $ ARR einen 6-monatigen Rabatt; dieser wird nicht offiziell beworben, Sie müssen danach fragen. Ich habe bei einer App 4 Monate lang einen Rabatt von 50 % erhalten.
Kann ich Better Auth mit TanStack Start verwenden? Ja – die Serverfunktionen von TanStack Start lassen sich über createServerFileRoute mit den auth.api-Handlern von Better Auth integrieren. Details dazu finden Sie im TanStack Start Auth Guide.