Supabase vs PocketBase: A Self-Hosting Comparison for 2026

Supabase vs PocketBase for self-hosting in 2026: architecture, ops burden, scaling, auth, and real costs compared honestly so you pick the right backend.

Cover Image for Supabase vs PocketBase: A Self-Hosting Comparison for 2026

Ask r/selfhosted which backend to run and you'll get the same two answers every time: Supabase and PocketBase. They get compared constantly, and usually badly — most comparisons treat them as interchangeable "Firebase alternatives" when they're built on fundamentally different assumptions about what a backend should be. One is a full Postgres platform you deploy as a multi-service stack; the other is a single Go binary you can scp to a $5 VPS.

If you're choosing between them for a self-hosted project in 2026, the right answer depends on your data model, your traffic shape, and how much operational work you're willing to own. This post lays out the differences honestly — including where PocketBase genuinely wins.

The Architecture Gap Is the Whole Story

Almost every practical difference between these two platforms traces back to one decision: the database.

PocketBase is a single executable — Go application, embedded SQLite database, admin UI, auth, file storage, and realtime subscriptions, all compiled into one binary of a few dozen megabytes. There is no orchestration because there is nothing to orchestrate. ./pocketbase serve and you're live.

Supabase is a suite of independent services built around a full PostgreSQL server: GoTrue for auth, PostgREST for the auto-generated API, Realtime for subscriptions, Storage for files, and an API gateway in front — which, as of the week of August 9, 2026, is Envoy instead of Kong by default. Self-hosting it means running roughly a dozen containers via Docker Compose.

Neither approach is "better." They're optimized for different failure modes. PocketBase minimizes the number of things that can break. Supabase minimizes the number of things your database can't do.

Quick Comparison

Supabase (self-hosted)PocketBase
DatabasePostgreSQLEmbedded SQLite
DeploymentDocker Compose, ~12 servicesSingle binary
Minimum server2 vCPU / 4 GB realisticallyRuns on 512 MB
APIAuto-generated REST + GraphQLREST, JS/Dart SDKs
AuthEmail, phone, 20+ OAuth providers, SAML, MFAEmail + OAuth2
Extensionspgvector, PostGIS, pg_cron, and dozens moreNone (SQLite)
RealtimePostgres replication-basedSSE-based subscriptions
Horizontal scalingRead replicas, and Multigres sharding in previewSingle node, full stop
Ops burdenReal — updates, backups, monitoringMinimal
Maturityv2 stack, massive ecosystemStill pre-1.0

Where PocketBase Wins

Let's start with the case against Supabase, because it's real.

Operational simplicity. A PocketBase deployment is one systemd unit. Backup is copying a directory (SQLite plus your uploads). Upgrading is replacing a binary. There are no inter-service version compatibility questions, no gateway configuration, no environment variable sprawl. If your project is a hobby app, an internal tool, or a prototype, this is a legitimate engineering argument, not laziness.

Resource footprint. PocketBase idles at tens of megabytes of RAM. A full Supabase stack wants 4 GB to breathe — you can squeeze it onto smaller servers by disabling services, but you're fighting the platform's assumptions. On a Raspberry Pi or the smallest VPS tier, PocketBase simply fits and Supabase doesn't.

Read performance on one node. SQLite reads are in-process — no network hop, no connection pool. For read-heavy apps on a single server, PocketBase is startlingly fast.

If that describes your project, use PocketBase. Seriously. The worst outcome in this comparison is running a twelve-container stack to serve a guestbook.

Where Supabase Wins

It's real Postgres. This is the argument that ends most evaluations. Supabase gives you an actual PostgreSQL server: window functions, CTEs, triggers, stored procedures, and the extension ecosystem — pgvector for AI workloads, PostGIS for geospatial, pg_cron for scheduling. SQLite is an excellent embedded database, but it is not a platform you build a data-heavy product on.

Concurrent writes. SQLite serializes writers — one write transaction at a time, per database. PocketBase mitigates this with WAL mode and careful internals, and for most small apps you'll never notice. But if your app has bursty, write-heavy traffic (chat, telemetry, anything social), you will eventually hit the wall, and there is no configuration flag on the other side of it. Postgres handles concurrent writers natively.

A growth path. A single PocketBase node is the whole story — there's no replication or failover; scaling means a bigger server. Supabase self-hosted supports read replicas today, and Supabase's Multigres project — the Vitess-style sharding layer for Postgres previewed alongside their $500M Series F in June 2026 — points at genuine horizontal scale down the road. You may never need it. But "we outgrew our backend" is a much worse problem than "our backend is overkill."

Auth depth. PocketBase covers email/password and OAuth2, which is plenty for many apps. Supabase's GoTrue adds phone auth, magic links, SAML SSO for enterprise customers, MFA, and anonymous sign-ins. If B2B customers are in your future, SSO requests arrive sooner than you'd think.

Row Level Security. Supabase authorization lives in the database as RLS policies — SQL rules enforced regardless of which client connects. PocketBase uses per-collection API rules, which work well but are enforced at the application layer and expressed in its own filter syntax. RLS is harder to learn and much harder to outgrow.

Maturity and ecosystem. In 2026 Supabase is a $10.5B company with a huge community, and the self-hosted stack — while it lags cloud on some features — is production-proven. PocketBase remains a largely one-maintainer project that still hasn't shipped 1.0, and its release history includes breaking changes between minor versions. It's excellent software, but "load-bearing dependency maintained by one person" is a risk you should price in deliberately.

The Honest Cost Comparison

PocketBase's pitch is that it runs on a $5/month VPS, and that's true. But the comparison people actually make — PocketBase VPS vs Supabase Cloud — is the wrong one. Self-hosted Supabase runs comfortably on a $10–20/month VPS from any of the usual providers, with no per-project fees and no usage-based pricing. We've broken down the real numbers in the true cost of self-hosting Supabase.

The genuine cost difference isn't the server — it's your time. And that's the gap tooling exists to close. The reason people reach for PocketBase is rarely "I love SQLite"; it's "I don't want to babysit twelve containers." Supascale exists to remove exactly that burden from self-hosted Supabase: automated S3 backups with one-click restore, custom domains with automatic SSL, OAuth provider configuration through a UI instead of environment variables, and selective service deployment so you only run the services you actually use. It's a one-time license from $99 with unlimited projects — the pricing is deliberately not a subscription, because a self-hosted stack shouldn't have a cloud bill attached.

With the ops burden handled, the decision collapses back to the technical question: SQLite or Postgres?

How to Actually Decide

Choose PocketBase if:

  • The project is a prototype, hobby app, or small internal tool
  • One modest server will always be enough
  • Your data model is simple and your write volume is low
  • You value "one binary, one directory" above everything else

Choose self-hosted Supabase if:

  • Your data is relational and your queries are non-trivial
  • You need Postgres extensions — vector search, geospatial, cron
  • Concurrent writes, replicas, or eventual horizontal scale are plausible futures
  • You need serious auth: SSO, MFA, phone, or fine-grained RLS
  • You're building something you expect to still be running in five years

A pattern worth naming: plenty of developers prototype on PocketBase and rebuild on Supabase when the app gets traction. That's a fine path — but if you already know the app is relational and multi-user, starting on Postgres saves you a migration that always lands at the worst possible time. Check the system requirements — a 4 GB VPS is a lower bar than most people assume.

The Takeaway

PocketBase and Supabase aren't really competitors; they're answers to different questions. PocketBase asks "what's the least backend I can run?" and answers it brilliantly. Supabase asks "what if your backend was just Postgres, with everything wired up?" — and self-hosted, that buys you an open platform with no ceiling and no vendor bill.

Pick based on where your project will be in two years, not where it is this weekend. And if the twelve-container stack is the only thing pushing you toward the smaller tool, that's a tooling problem — one that's already solved.

Further Reading