Appwrite Alternatives in 2026: Postgres, Documents, Self-Host
The best Appwrite alternatives depend on why you are leaving. If you want SQL and a real Postgres database, look at StitchDB, Supabase or Nhost. If you want to stay with documents, Firebase and Convex are the closest. If you self-host Appwrite and want something lighter, PocketBase is one binary. This guide sorts the Appwrite alternatives by the reason you are switching, so you can skip straight to the part that applies.
Appwrite is a capable open source backend: Auth, Databases, Functions in many runtimes, Storage, Messaging and Sites, BSD 3-Clause licensed and easy to self-host with Docker. Its cloud plans are reasonably priced too. So "Appwrite alternatives" is less about Appwrite being bad and more about fit.
#Appwrite in one paragraph (as of November 2026)
Appwrite Cloud has three self-serve tiers per project: Free ($0, 5 GB bandwidth, 2 GB storage, 750K function executions, 75K MAU, 2 projects), Start (from $10/month, 80 GB bandwidth, 40 GB storage, 1.5M executions, 100K MAU, in selected regions) and Pro (from $25/month, 2 TB bandwidth, 150 GB storage, 3.5M executions, 200K MAU). Free projects freeze when they hit a limit and the console turns read-only; Pro keeps running and bills extra up to a budget cap you set. Databases can be serverless or dedicated (from $10/month per database). Source: appwrite.io/pricing.
#Summary table
| If you want... | Look at | Why |
|---|---|---|
SQL, joins, a database you can psql into | StitchDB, Supabase | Full Postgres with RLS and REST from your schema |
| GraphQL on Postgres | Nhost | Hasura engine built in |
| An SDK-first document model | Firebase, Convex | Document data model, strong client SDKs |
| Lighter self-hosting | PocketBase | One Go binary with SQLite |
| Data in the EU only | StitchDB | All regions in Germany and Finland |
#Reason 1: you want SQL and Postgres
Appwrite's Databases (TablesDB, DocumentsDB, VectorsDB) are used through the Appwrite SDKs and permissions. Appwrite Cloud also has native PostgreSQL and MySQL with direct connections, but its docs say Appwrite permissions and SDK queries don't apply to those. If you want SQL, the generated API and per-user access rules on the same database, a Postgres backend with row level security does that in one place.
#StitchDB
Every StitchDB project is its own Postgres database (not a schema in a shared one) with Auth, a REST API generated from your tables, GraphQL, Realtime, Storage and Edge Functions. Access rules are Postgres row level security policies that apply to REST, Realtime and Storage alike:
create table public.notes (
id uuid primary key default gen_random_uuid(),
owner_id uuid not null default auth.uid() references auth.users on delete cascade,
body text not null
);
alter table public.notes enable row level security;
create policy "own notes" on public.notes
for all to authenticated
using (owner_id = auth.uid())
with check (owner_id = auth.uid());Appwrite users often like its "everything in one place" feel, and StitchDB keeps that: push notifications, in-app purchase checks, feature flags, cron, queues, short links and crash reporting are built in.
Pricing (as of November 2026): Free $0 with 2 projects, a 500 MB database per project, 1 GB of files, 25 GB egress and 50,000 MAU; Pro $15.99/month with a 10 GB database, 100 GB files, 1 TB egress and 100,000 MAU. Paid plans start with a spend cap on. See pricing.
Trade-offs: no self-hosted edition (Appwrite has one), EU-only regions, and a younger platform. Functions run on Deno (TypeScript/JavaScript) only, while Appwrite supports many runtimes.
#Supabase
Supabase is the obvious open source Postgres pick. It is self-hostable like Appwrite, has 17 AWS regions on its cloud, and a large ecosystem. Free projects pause after a week of inactivity; Pro starts at $25/month (as of November 2026).
#Reason 2: you want GraphQL
Appwrite has a GraphQL endpoint, but its core is REST. Nhost is GraphQL-first: Postgres plus the Hasura engine with subscriptions, event triggers and role-based permissions, MIT licensed and self-hostable. Starter is free with a 1 GB database and pauses after a week of inactivity; Pro is from $25/month (as of November 2026).
StitchDB also serves GraphQL at /graphql/v1 via pg_graphql, with RLS applied, if you want both REST and GraphQL from one schema.
#Reason 3: you like documents and want a different vendor
#Firebase
Firebase is the original document backend. Firestore's offline cache, FCM, Crashlytics and Analytics are mature. On the free Spark plan Firestore gives 1 GiB of storage and 50K reads per day, but Cloud Storage and Cloud Functions require the Blaze pay-as-you-go plan. Firebase is closed source and cannot be self-hosted. Compare with Firebase vs Appwrite.
#Convex
Convex stores documents in tables, and you write queries and mutations as TypeScript functions that run next to the data. Queries are reactive by default. Free & Starter includes 1M function calls and 0.5 GB of storage; Professional is $25 per developer per month (as of November 2026). It is source-available under FSL Apache 2.0 and self-hostable.
#Reason 4: self-hosting Appwrite feels heavy
Appwrite runs as a set of containers. For a small app on a small VPS, PocketBase is far lighter: one MIT-licensed binary with SQLite, auth, files, realtime and an admin UI. Its own FAQ says it scales on a single server only, and full backward compatibility is not guaranteed before v1.0. If you outgrow that, you are back to choosing a bigger stack.
If you do not actually want to operate anything, a managed Postgres backend removes the containers entirely.
#When Appwrite is still the right call
- You want open source with a managed cloud from the same team.
- Your team writes functions in Python, Dart, PHP, Go or other runtimes, not just TypeScript.
- You want dedicated database tiers you can size up without changing platforms.
- You need regions outside Europe under one vendor with self-host as a fallback.
#Moving from Appwrite to Postgres
There is no automatic Appwrite importer on StitchDB. A typical move:
- Export each table or collection to JSON with the Appwrite server SDK (page through the rows with an API key).
- Create one table per collection. Relationship attributes become foreign keys; array attributes become
text[]or a child table. - Load rows with
insert ... select from jsonb_populate_recordset(...)or a small script using the REST API with the service_role key. - Recreate users. If you cannot export password hashes, send users a reset link or use magic links for the first sign-in.
- Copy files bucket by bucket, for example with the S3-compatible endpoint and rclone.
For a feature-by-feature look, read StitchDB vs Appwrite.
#A quick checklist before you switch
Whatever you pick, check these five things against your real app, not a demo:
- Auth methods. List every sign-in method you use today (OAuth providers, phone, anonymous, MFA) and confirm each one exists on the target.
- Function runtime. If your Appwrite functions are in Python or Dart, budget time to port them, or keep them on a separate service.
- Realtime volume. Count peak concurrent connections. StitchDB Free includes 200 peak realtime connections and Pro 500, with more above that when the spend cap is off.
- File sizes. Free StitchDB uploads are limited to 50 MB per file; check your largest uploads.
- Region. If most of your users are outside Europe, test latency from where they are before you move.
#FAQ
#What is the best open source Appwrite alternative?
Supabase if you want Postgres, PocketBase if you want the smallest footprint, Nhost if you want GraphQL. All three can be self-hosted.
#Is Appwrite cheaper than Supabase?
As of November 2026 both list Pro from $25/month, and Appwrite also offers a Start plan from $10 in selected regions. Included amounts differ, so compare against your own bandwidth and user numbers.
#Can I use SQL with Appwrite?
Appwrite Cloud offers native PostgreSQL and MySQL with direct connections on paid plans, separate from its SDK data APIs and permissions. If you want SQL and API access rules on the same tables, a Postgres backend with RLS such as StitchDB or Supabase is simpler.
#Does StitchDB support functions in Python?
Edge Functions run TypeScript or JavaScript on Deno. You can still call your project from Python with the Python SDK on your own servers.
See what a Postgres-based backend with built-in app services looks like: create a free project.