Clerk cost vs self-hosted ZITADEL

Clerk bills by plan, retained users and enterprise connections, while self-hosted ZITADEL moves the cost to infrastructure, PostgreSQL, implementation and operations. This page shows how to model both sides with your own numbers.

On this page

Clerk cost vs self-hosted ZITADEL: where the money actually goes

Self-hosting ZITADEL moves identity spend from metered vendor fees to a one-time implementation project plus recurring infrastructure and operations. Whether that shift saves money depends on three things: your monthly retained user count, how many enterprise SSO connections you run and how many people your team can spare to operate the service. Clerk's current plan fees, retained user tiers and per-connection charges must be taken from Clerk's own pricing page, since those numbers change and are not part of the researched facts for this page.

Start by listing every Clerk line item on your invoice: the base plan, retained user overage, each enterprise connection and any dashboard seats your staff pay for. Then price the self-hosted side by component. ZITADEL's core is licensed under AGPL-3.0 since v3.0, so the software itself carries no license fee, but the AGPL terms matter if you modify it and offer it to users, and your counsel should confirm that position. Its database is PostgreSQL, and ZITADEL supports PostgreSQL 14 through 18, so your DBA team and any managed database service are a recurring cost. The current release is v4.19.5, released on 15 October 2026, and each upgrade is staff time you should budget for.

Ask any implementation partner for a written quote that separates one-time work (installation, the Clerk user and password hash migration, login screens, connection setup and cutover testing) from recurring work (hosting, database backups, patching, monitoring, on-call and upgrades). Ask whether support is priced per year or per incident. Build two illustrative scenarios with your own user counts and connection counts, and set the break-even month against your Clerk renewal date. Keep the migration plan in view too, because exporting password hashes and enterprise connections is where the schedule usually slips.

Which cost components move between Clerk and self-hosted ZITADEL

This table lists each cost component on the Clerk side and the matching item on a self-hosted ZITADEL side, and marks whether it is one-time or recurring. Use it to build your own comparison from the current Clerk pricing page and your quotes, since no vendor prices are shown here. The main takeaway is that most of the self-hosted cost sits in people and operations, not in the software license.

Cost componentClerk (commercial side)Self-hosted ZITADELOne-time or recurring
Plan feesSubscription plan tier, checked on Clerk's pricing pageNo license fee for the AGPL-licensed core; confirm current terms with ZITADELClerk: recurring. ZITADEL: none for the core
Retained user tiersCharged by monthly retained users, with tiers and overageNot metered by user count; cost scales with hosting capacityClerk: recurring. ZITADEL: infrastructure only
Enterprise SSO and Directory Sync connectionsPer-connection fees for SAML, OIDC and Directory Sync, per Clerk's pricingConnections configured without per-connection fees; confirm with ZITADEL Cloud terms if relevantClerk: recurring. ZITADEL: none in software
Dashboard seatsPaid seats for team members on the Clerk dashboard, if your plan charges themNo seat fee; admin access managed through your own identity and rolesClerk: recurring. ZITADEL: none
InfrastructureIncluded in the hosted serviceCompute, load balancers and storage for ZITADEL on your cloud or data centerRecurring, driven by high availability design
PostgreSQLNot visible to youManaged or self-run PostgreSQL 14 to 18, with backups and replicationRecurring, with a one-time setup
ImplementationInitial SDK and dashboard setup by your developersDeployment, hardening, hosted login branding and integration, quoted by written scopeOne-time
Data migrationExport of users and password hashes from ClerkImport and verification in ZITADEL, including just-in-time options if usedOne-time
SupportVendor support tier included in your planInternal on-call or a support retainer you buy separatelyRecurring
Upgrades and testingHandled by ClerkYour team or a partner applies ZITADEL releases and retests login flowsRecurring
Internal skillsDevelopers integrate the SDK; little operations workStaff need PostgreSQL, Kubernetes or Docker and identity operations skillsRecurring, often the largest item

What moves the comparison most for your team

Six factors decide whether a hosted Clerk bill or a self-run ZITADEL deployment costs less for your team. Several push in opposite directions, so each card explains which side each factor favors and what to measure before you ask for a quote.

Retained user count and growth

Clerk's charges scale with monthly retained users, so a rising user base raises the hosted bill in steps defined by its plan tiers. Self-hosted ZITADEL adds cost mainly through database storage, compute and backups, which grow more gradually with users. Pull your current retained user count and six-month growth from Clerk, then ask your vendor or integrator how the self-hosted footprint scales with that number.

Number of enterprise SSO connections

Clerk charges per enterprise SSO connection, so customers that each bring their own SAML or OIDC identity provider add a recurring line item. In ZITADEL, each customer organization can use a different identity provider without a per-connection fee, which shifts the cost into setup and testing effort. List every active connection, its protocol and whether Directory Sync is in use before comparing totals.

Required availability and multi-zone design

Clerk handles availability as part of its hosted service. A self-hosted ZITADEL deployment must be designed for it, and the official documentation recommends Kubernetes with the official Helm chart for high availability. Multi-zone designs add nodes, load balancing and database replicas, all of which are recurring costs. Write down your uptime target and whether a regional outage must be survivable before pricing either side.

Data residency and hosting location

If customer identity data must stay in a specific region or your own data center, the hosted option may not meet the requirement, and the self-hosted route becomes a compliance cost rather than a preference. Self-hosting moves responsibility for location, access controls and backups to your team or integrator. Confirm with legal and your customer contracts which regions and subprocessors are acceptable, then price the infrastructure in those places.

Edition and support level

ZITADEL is licensed under AGPL-3.0 for its core, and the Cloud option and any paid support are separate purchases with their own terms. Support contracts, response times and upgrade assistance add recurring cost if you need them, and so does a retainer for ongoing operations. Ask the vendor exactly which features and support levels each plan includes, and whether the AGPL terms affect how you ship changes to users.

In-house Kubernetes and PostgreSQL skills

Self-hosted ZITADEL runs on PostgreSQL, with versions 14 through 18 supported, and is typically operated on Kubernetes for high availability. Teams that already run these platforms carry lower operating cost, while teams without them either hire, train or pay an implementation partner for ongoing operations. Count the people who can patch the database, rotate keys, restore backups and upgrade the identity service, and note who is on call for it.

How to build the cost model with your own numbers

This sequence turns your current Clerk bill into a three-year comparison against self-hosted ZITADEL, using your own user counts, staff rates and migration scope. The result is a model your finance and security leads can challenge line by line.

  1. Pull your current Clerk invoices and usage

    Finance or the account owner collects the last twelve months of Clerk invoices, plan details and usage reports, including any overage charges and enterprise SSO line items. Keep the invoices as the baseline, since the figures you enter later must reconcile to what you actually paid. Done means every recurring and variable charge is listed by month with its source document attached.

  2. Count retained users and SSO connections monthly

    The product owner and an engineer extract monthly retained user counts and the number of active enterprise SSO connections and directory sync connections from Clerk's dashboard, then compare them with the tier boundaries on your plan. Track peaks as well as averages, because tiered pricing charges for the high months. Done means you have a twelve-month table that matches the invoice totals within a difference you can explain.

  3. Inventory the self-hosted infrastructure and database needs

    The platform team lists the compute, load balancing, backup storage, monitoring and PostgreSQL resources ZITADEL would need in your cloud account or data center, including a non-production environment. Use the supported PostgreSQL versions and the deployment method your team already runs, Docker Compose or Kubernetes, as the basis. Done means each resource has an owner, a monthly cost from your own pricing sheet, and a note on whether it is one-time or recurring.

  4. Cost the migration from Clerk's export path

    Engineers estimate the work to export users and any hashed passwords from Clerk, map organizations and enterprise connections, and run ZITADEL's migration approach, such as just-in-time migration, against your application. Ask the vendors and any implementation partner for a written scope, since the amount of login UI to replace drives most of this cost. Done means each migration task has a named owner and an effort range that a quote can be compared against.

  5. Estimate operating hours at your own staff rates

    The platform and security leads estimate monthly hours for upgrades, certificate and database maintenance, backups, incident response and on-call, then multiply those hours by your internal loaded rates. Add any paid support or retainer you decide to buy, using written quotes rather than estimates. Done means the operating cost is a monthly figure with its hour assumptions written next to it, so a reviewer can change one input and see the result.

  6. Run a three-year comparison with illustrative inputs

    Finance builds a three-year table with Clerk spend, including projected user growth and SSO connections, against ZITADEL's one-time migration, infrastructure, support and operating costs. Label any sample numbers as illustrative and replace them with your own rates before circulating the model. Done means the table shows cumulative cost by year, the break-even point if one exists, and a sensitivity line for user growth and staff time.

  7. Review assumptions and document open questions

    The CISO, CTO and finance lead review each assumption, flagging items to confirm with Clerk, ZITADEL, a support provider or your own environment, such as contract terms, data residency needs and feature gaps. Record which figures came from invoices, which came from quotes and which are internal estimates. Done means the model has a signed-off assumptions list and a short list of questions that must be answered before the decision.

How one-time migration work shapes the first-year number

The largest one-time items in a move from Clerk to self-hosted ZITADEL are implementation work, the user export, the rebuilt login screens and the mapping of organizations and enterprise connections. Those items, not the software license, decide most of the first-year number, because ZITADEL itself carries no license fee on your own infrastructure. Before you scope anything, confirm one question with Clerk and with your own export: whether password hashes come out of Clerk's export in a form ZITADEL can import. If hashes cannot move, every user faces a reset or a just-in-time path, and the project timeline and support load change with it.

The export is the first checkpoint. Run it in a non-production environment, count the users, and check that the fields you need (identifiers, email addresses, verification state, metadata and organization membership) are present. Organizations and enterprise connections are usually exported separately from the user list, so your team should map each Clerk organization to a ZITADEL organization inside an instance and decide how each customer's SAML or OIDC connection will be recreated. ZITADEL documents migration guides and just-in-time migration, which can move users on their next sign-in. That approach reduces bulk import risk but adds a long tail of work to keep the old and new systems running side by side.

The other large block is interface work. Clerk's prebuilt components do not carry over, so your team either builds sign-in, sign-up, account and organization screens against ZITADEL's APIs or uses its hosted login, then tests each flow, passkey enrollment and fallback to password login. Ask any implementation partner for a written scope that lists each screen, each connection and each data check, and the assumptions behind them, including the hash handling you confirmed. Treat the migration as a fixed, documented project with its own acceptance tests, so the first-year figure reflects known work instead of an estimate made before the export was checked.

Who runs ZITADEL, and what each option costs to own

This model fits organizations that already run Kubernetes and have a platform team that owns clusters, ingress, backups and certificates. ZITADEL recommends a Kubernetes cluster with the official Helm chart for high availability, and the PostgreSQL database it depends on (versions 14 through 18 are supported) becomes a service your team must size, patch and back up. Most of the recurring cost is staff time and the cloud resources underneath, not the software.

  • Cluster and load balancing: nodes, ingress, TLS certificates and the network paths that front the login pages and APIs.
  • Managed or self-run PostgreSQL: replication, point-in-time recovery, minor version upgrades and capacity planning for the identity data.
  • Helm chart lifecycle: reviewing chart and ZITADEL release notes, testing upgrades in a non-production instance and scheduling rollouts.
  • Skills required: Kubernetes operations, PostgreSQL administration, OIDC and SAML troubleshooting, and secrets handling for signing keys.
  • Monitoring and on-call: login availability alerts, certificate expiry and a runbook for identity outages, which affect every application that depends on sign-in.

Before you commit, confirm with your platform team how many hours a month they can give to identity operations, and ask ZITADEL and your cloud provider which managed database and cluster tiers they support for your expected load.

Costs teams forget on each side

Most comparisons stop at the subscription line on one side and the server line on the other. The costs that surprise teams sit in growth, exit work and operations, and they appear on both sides once the platform is in production.

Per-connection growth for enterprise SSO

Each enterprise customer that asks for SAML or OIDC single sign-on can add a billable enterprise connection on the Clerk side, so the bill grows with your sales pipeline rather than with your traffic. Count the connections you expect in the next two renewal cycles, then ask Clerk in writing how each one is priced and whether Directory Sync is charged separately. On the ZITADEL side, the same customers are onboarded as organizations with their own identity provider, which carries no per-connection fee but does need an engineer to configure and test each one.

Seat creep on the dashboard

Dashboard seats tend to multiply as support, sales engineering and developers each request access to user records and logs. Each added seat is a recurring line item that rarely gets reviewed at renewal. Audit who logs in to the Clerk dashboard each quarter and remove inactive accounts. With ZITADEL, the console access is governed by roles you define yourself, so the number of administrators is a policy decision rather than a licensing one.

Export and exit work

Leaving any hosted identity service costs engineering time, even when the export itself is simple. Password hashes, organization memberships, metadata and enterprise connection settings must be pulled, checked and reimported, and some hashes may not transfer cleanly. Budget a test migration in a staging environment and confirm with Clerk exactly which fields the export includes before you commit to a cutover window. ZITADEL documents migration guides and just-in-time migration, which can reduce the bulk work.

PostgreSQL backups and restore tests

ZITADEL stores its data in PostgreSQL, so your identity records are only as recoverable as your database backups. Backups that run but are never restored are not a control. Schedule point-in-time recovery, store copies outside the cluster, and run a timed restore into a separate environment at least once a quarter. Ask whether your team or DeployOpen will own this runbook, since it is a recurring operating task rather than a one-time setup.

High availability and database setup

Running ZITADEL on a single node is simple, but a login outage blocks every application that depends on it. ZITADEL recommends Kubernetes with the official Helm chart for high availability, and the database layer must be designed for failover too. Confirm your target topology, your database replication and your failover tests before you rely on the platform for production logins. Clerk's uptime is handled by its provider, so this cost is a responsibility you take over.

Monitoring, patching and on-call

Login is a Tier 1 service, so someone must watch error rates, certificate expiry and database health around the clock, and respond when they fail. Security patches for the platform, the operating system and PostgreSQL arrive on their own schedule. Define who is paged, how fast they must respond and who approves emergency patches before go-live. Ask any implementation partner to quote monitoring and on-call coverage as a separate line, because it recurs for as long as the service runs.

ZITADEL upgrade cadence

ZITADEL ships new releases frequently, and the most recent one noted in the supplied sources is v4.19.5, released on 15 October 2026. Each upgrade needs a staging test, a rollback plan and a check of the license terms, since the core moved to AGPL-3.0 with v3.0. Plan a recurring upgrade window in your operations calendar and decide who reviews release notes. Treat this as a standing cost rather than a project that ends at launch.

Questions buyers ask before comparing Clerk and ZITADEL costs

How long does a migration from Clerk to ZITADEL take?

No single duration fits every team, and the answer depends on the scope you agree in writing. The main drivers are how many user records and password hashes must move, how many applications and redirect URIs must switch over, whether Clerk organizations map cleanly to ZITADEL organizations and projects, and how many enterprise connections you rebuild. Login screens also take time, because Clerk's prebuilt components must be replaced with ZITADEL's hosted login or your own interface. Ask any provider, including DeployOpen, to split the plan into phases with clear completion criteria, and inventory your applications and integrations before anything is scoped.

Can an internal team run self-hosted ZITADEL without outside help?

Often yes, if the team already runs production services on Kubernetes or Docker, operates PostgreSQL and owns on-call duties for identity. ZITADEL documents self-hosting with Linux and macOS binaries, Docker Compose and Kubernetes, and recommends the official Helm chart for high availability. The harder question is staffing. Someone must handle upgrades, certificate rotation, backups, monitoring, sign-in incident response and security patches. Teams that lack that depth often bring in an outside partner for setup, hardening or ongoing support, and DeployOpen offers both fixed-scope engagements and retainers. Before you commit, ask your team to name an owner for each operational task.

What PostgreSQL skills does a self-hosted ZITADEL deployment need?

ZITADEL uses PostgreSQL as its database, and the documentation lists versions 14 through 18 as supported. Your team needs to size and provision the database, configure backups and point-in-time recovery, test restores, plan minor version updates, and monitor connections and storage. For high availability, the database layer must be designed alongside the Kubernetes deployment so failover behavior is tested before go-live. If your cloud provider offers a managed PostgreSQL service, confirm that it meets ZITADEL's version and configuration requirements before you choose it.

Does ZITADEL's AGPL license change what self-hosting costs?

The license carries no fee, but it changes what you must review. ZITADEL moved its core, Console and hosted login to AGPL-3.0 with v3.0 on 31 March 2025. APIs, SDKs, proto definitions, examples, documentation, Helm charts and Terraform configurations remain Apache 2.0. Internal use generally carries different obligations from offering a modified version to users over a network, so ask your legal counsel to confirm how the terms apply to your deployment and to any changes you make. Budget for that review as a one-time item, plus any engineering time needed to keep custom changes current with upstream releases.

Does Clerk's user export include password hashes?

Confirm this in Clerk's current export documentation and in your own dashboard before you plan the cutover, because the answer decides whether users keep their passwords after the move. If the export includes hashed passwords, check the hashing algorithm and whether ZITADEL can verify those hashes at import or through just-in-time migration. If it does not, plan for password reset emails or passkey enrollment, which add support load and may cause a sign-in drop-off. ZITADEL documents migration guides for Auth0, Keycloak and Firebase, and it is worth testing whether those approaches fit your export. Run the export on a copy of production data first.

What does a fixed-scope quote for this migration depend on?

A fixed-scope quote follows from a written scope. DeployOpen agrees scope, deliverables and timelines in writing before work starts, and it does not publish a price list. The scope is usually shaped by these factors:

  • The number of applications, environments and user records, and whether password hashes move
  • The Clerk features in use, such as organizations, enterprise connections and user metadata
  • Whether you keep Clerk's login experience or rebuild it on ZITADEL's hosted login or your own interface
  • The target deployment, such as Docker Compose or Kubernetes in a cloud account or data center you control
  • Backup, high availability and handover requirements

Ask any vendor for the assumptions, exclusions and acceptance criteria that sit behind the price.

Which ZITADEL costs recur after the migration goes live?

Recurring cost is mostly staff time and infrastructure, since the software license carries no fee. Recurring items include compute and storage for ZITADEL and PostgreSQL in each environment, backups and off-site copies, monitoring, security patching, version upgrades, on-call coverage, and any support contract or retainer you buy. One-time items include discovery, migration, login screen work, integration testing and documentation. Check ZITADEL's pricing page for any paid Cloud or support options, because those choices change what you pay for. Ask your provider to split the quote into one-time and recurring lines so you can compare it with Clerk's invoices line by line.

How DeployOpen scopes a fixed-price ZITADEL implementation

DeployOpen plans, implements, customizes, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms inside your own infrastructure. For a move off Clerk, that means a written scope that covers the ZITADEL deployment on PostgreSQL, the user migration, the login flows and the operating runbooks, agreed before any work starts.

How we scope

  • Engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts.
  • We inventory your Clerk plan, retained user count, enterprise connections and dashboard roles so the scope matches what you pay for today.
  • Ask for the written scope to name the target: Docker Compose or Kubernetes, the PostgreSQL version and the expected instance and organization layout.

How we build

  • We deploy ZITADEL on your own cloud account, data center or air-gapped network, using the deployment method named in the written scope.
  • We configure OIDC applications, customer organizations, identity provider federation and passkey or MFA policies to match your existing login behavior.
  • We test user export and import, password handling, SCIM provisioning and login flows in a staging environment before any cutover is scheduled.

How we hand over

  • We document the architecture, configuration, backup and restore steps, and the upgrade path, so your team can run the platform after handover.
  • Handover includes the cutover plan, rollback steps and the evidence list your compliance team needs for identity controls.
  • We prepare systems, controls and evidence for compliance assessments, while independent auditors and certification bodies issue any formal reports.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers, scoped separately from the implementation.
  • Retainers can cover ZITADEL version upgrades, database maintenance, backup verification and periodic security testing of the login surface.
  • Ask for the retainer scope in writing to confirm response expectations, upgrade windows and which tasks stay with your internal team.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.