Comparison

tinbase vs PocketBase

Both are single-binary, batteries-included backends with no Docker. The real question is SQLite and PocketBase’s own API versus Postgres and the Supabase ecosystem, weighed against PocketBase being lighter and production-ready today.

At a glance

tinbase

Single-binary Postgres, wire-compatible with Supabase.

PocketBase

The lightest single-binary backend, on SQLite, production-ready.

Feature by feature

tinbase vs PocketBase, compared

Colour is a hint, not a verdict: green marks a tinbase strength, amber an area where it is still catching up. Footprint figures come from the reproducible benchmarks.

tinbasePocketBase
LicenseMIT, open sourceMIT, open source
RuntimeNode, or standalone binaryGo, standalone binary
DatabaseReal Postgres 17SQLite
Postgres features (RLS, jsonb, FKs, triggers)YesSQLite equivalents only
Client SDKsupabase-jsPocketBase SDK (JS / Dart)
Single binaryYes, ~58 MBYes, ~30 MB
Memory under load~66 MB (binary)~24 MB
Runs in the browser / embeddedYes (PGlite / pg-mem)No, server only
Realtimepostgres_changes, broadcast, presence + RLSRealtime subscriptions
AuthEmail, OAuth, magic link, MFA/TOTPEmail, OAuth, OTP
StorageS3-style, RLS, signed URLs, TUSFile storage, S3 backend
Admin dashboardStudio (Supabase-style) at /_/Built-in admin UI
Access controlPostgres RLS (SQL policies)Collection API rules
ExtensibilitySQL, Edge Functions, webhooks, cronGo extensions / JS hooks
Ecosystem portabilitysupabase-js + migrations portable to SupabasePocketBase-specific
Production maturityAlphaProduction-ready, mature

Which should you choose?

Choose tinbase if

  • You want real Postgres semantics (RLS, jsonb, FKs, triggers), not SQLite
  • You want the Supabase SDK and migrations that stay portable to hosted Supabase
  • You need the backend to run in a browser tab or embedded, not just as a server
  • Per-request Row Level Security in SQL matters to you

Choose PocketBase if

  • You want the absolute lightest footprint (~24 MB under load)
  • You are shipping to production now and want a mature, proven backend
  • SQLite fits your workload and you like extending the backend in Go
  • A single self-contained file with the smallest possible surface is the priority

Keep exploring

Frequently asked questions

How is tinbase different from PocketBase?
Both are single-binary, Docker-free backends. PocketBase uses SQLite and its own SDK and API rules. tinbase runs real Postgres (RLS, jsonb, foreign keys, triggers) behind Supabase’s wire protocols, so you use supabase-js and keep migrations portable to hosted Supabase. PocketBase is lighter and production-ready; tinbase is alpha.
Is tinbase as lightweight as PocketBase?
Close, but PocketBase is lighter. PocketBase runs at about 24 MB of RAM under load; the tinbase single binary is about 66 MB. tinbase trades that extra footprint for a full Postgres engine and Supabase-compatible APIs.
Does tinbase have an admin UI like PocketBase?
Yes. tinbase ships Studio, a Supabase-Studio-style dashboard, at /_/. It includes a table editor, SQL editor, auth and RLS management, storage, and logs, and it compiles into the single binary.
Can I use Postgres features PocketBase’s SQLite lacks?
Yes. Because tinbase is real Postgres, you get jsonb, foreign keys, triggers, PL/pgSQL, Row Level Security, and the wider Postgres extension surface, all through the standard supabase-js client.

Try it in one command

No Docker, no sign-up. Point the supabase-js SDK you already know at a real Postgres backend running in a single process.

npx tinbase start