Supabase vs Appwrite - SQL Platform or All-in-One API?

Supabase vs Appwrite is a choice between two open-source backends with different centers. Supabase is built around Postgres: you write SQL, policies and migrations, and the APIs follow your schema. Appwrite is built around its own API: you create databases, tables and permissions through the console and SDKs, and it bundles more app features (messaging, site hosting) under one roof. Developers who think in SQL tend to prefer Supabase; developers who want a single SDK for everything and no SQL tend to prefer Appwrite.

Both are open source, both can be self-hosted, and both have cloud plans starting at $25 a month as of November 2026. Here's how they differ in practice.

#At a glance

SupabaseAppwrite
CorePostgres database, APIs generated from itAppwrite API over managed databases
Data accessSQL, PostgREST REST, GraphQLSDK queries; TablesDB, DocumentsDB, VectorsDB; managed PostgreSQL with direct connections
PermissionsRow Level Security in SQLAppwrite permissions on tables, rows and files
Server codeEdge Functions (Deno, TypeScript)Functions in several runtimes
ExtrasRealtime, Storage, Vector, Cron, QueuesRealtime, Storage, Messaging, Sites hosting
Self-hostingDocker ComposeDocker, Kubernetes via Helm
Cloud paid entryPro from $25/mo per organizationPro $25/mo per project
Free tier at limitsPaused after 1 week inactivityProject freezes, console read-only

#How you model data

Supabase: you write tables in SQL (or the Table Editor) and get a REST endpoint per table automatically. Joins, views, triggers, functions and extensions like pgvector and PostGIS are all available because it's plain Postgres.

SQL
create table public.tasks (
  id bigint generated always as identity primary key,
  project_id bigint references public.projects on delete cascade,
  title text not null,
  done boolean default false
);
JavaScript
const { data } = await supabase
  .from('projects')
  .select('id, name, tasks(id, title, done)')
  .eq('id', 7)

Appwrite: its Databases product now has three kinds of managed databases: TablesDB ("structured, relational data with typed columns, rows, relationships, and indexes"), DocumentsDB for schemaless JSON and VectorsDB for embeddings, all with Appwrite's API, permissions and realtime on top. Appwrite also lists a managed PostgreSQL offering with direct connections, pgvector and full SQL (Appwrite Databases). Most Appwrite apps use the API-first databases through the SDK.

If your team is comfortable with SQL and migrations, Supabase feels natural. If you'd rather define structure in a console and never write SQL, Appwrite does that well.

#Permissions

Supabase's model is Row Level Security: SQL policies that decide which rows each request may read or write, evaluated inside Postgres.

SQL
alter table public.tasks enable row level security;
create policy "Members see their project's tasks" on public.tasks
  for select to authenticated
  using (exists (select 1 from public.members m
                 where m.project_id = tasks.project_id and m.user_id = auth.uid()));

Appwrite's model attaches permissions (read, create, update, delete) for roles such as any, a user, a team or a team role, to tables, rows and buckets. It's easier to learn and maps well to "this user owns this row" and "this team can read this". Complex rules that depend on other data (like the membership join above) are where SQL policies are more expressive.

#Auth

Both include e-mail and password, magic links, OAuth providers, anonymous sessions, phone sign-in and MFA. Appwrite has Teams built into auth, which is handy for B2B. Supabase stores users in auth.users inside your database, so foreign keys and policies can reference them directly. Supabase's free plan includes 50,000 MAU; Pro includes 100,000 then $0.00325 per MAU.

#Functions and hosting

Supabase Edge Functions run TypeScript on Deno. Appwrite Functions support several runtimes (check Appwrite's docs for the current list), and Appwrite Sites hosts front-end apps, so a whole app can live in one Appwrite project. With Supabase, you typically host the front end on Vercel, Netlify or similar.

#Pricing and how it scales

As of November 2026:

Supabase: Free has 500 MB database, 1 GB storage, 5 GB egress, 50,000 MAU, 2 active projects, and pauses after a week of inactivity. Pro is from $25/month per organization with 8 GB disk, 100 GB storage, 250 GB egress, 100,000 MAU and $10 in compute credits; each additional project adds its compute (about $10/month for Micro). Team is $599/month. Source: Supabase pricing.

Appwrite: since September 1, 2025, Pro costs $25/month per project, each additional project $15, with unlimited team seats and 2 TB of bandwidth per project per month; resources are per project, not pooled. On Free, a project that hits a limit freezes and the console goes read-only until the next cycle or an upgrade. Source: Appwrite's pricing update.

So for one project, both are $25. For five small projects, Supabase Pro is roughly $25 plus four extra Micro instances, while Appwrite is $25 plus four projects at $15. Check both calculators with your real numbers.

#Self-hosting

Both are open source. Supabase self-hosting uses Docker Compose; a self-hosted install runs one project, and branching, managed backups and PITR are platform features. Appwrite runs on any machine with Docker and also has an official Helm chart for Kubernetes.

#Where StitchDB fits

If you like the Supabase model but want a different hosted platform, StitchDB is worth a look. It's a hosted backend with a dedicated Postgres database per project and the same APIs as the open-source Supabase stack, so supabase-js works by changing the URL and keys (compatibility). There's an Import from Supabase wizard that copies the database, users with passwords, files and cron jobs, with a live copy and a switch-over in seconds (import docs).

Compared with both, as of November 2026: Pro is $15.99/month (pricing), free projects aren't paused while you use your account, PITR is on every plan, and it adds services like Organizations for team-based apps, offline sync, push notifications and feature flags. The trade-offs: hosting is EU-only (Germany and Finland), it's younger than both, and there's no self-hosted edition. Appwrite's site hosting has no StitchDB equivalent in the docs.

#Questions to ask before choosing

  • Will you write SQL? If your team is comfortable with SQL, Supabase lets you use joins, views, functions and extensions directly. If you'd rather never see SQL, Appwrite's API-first databases and console fit better.
  • Where do permissions live? Supabase keeps them in Postgres policies next to the data. Appwrite keeps them on collections, tables and documents in its own permission model.
  • How many projects will you run? Appwrite bills per project on Pro, so staging plus production means two charges. Supabase bills compute per project.
  • Do you need to self-host later? Both can be self-hosted; try a local install of each before you depend on that option.

#Who should pick what

  • Pick Supabase if you want SQL, Postgres extensions, regions worldwide and the option to self-host a Postgres-based stack.
  • Pick Appwrite if you want one SDK for auth, data, files, messaging and front-end hosting, simple permissions, and easy self-hosting with Docker or Kubernetes.
  • Pick StitchDB if you want the Supabase-compatible Postgres stack hosted in the EU at a lower price, without free-tier pausing.

Also see Firebase vs Appwrite and our list of the best backend as a service platforms.

#FAQ

#Is Appwrite a Supabase alternative?

Yes. Both are open-source backends with auth, databases, storage, functions and realtime. Supabase is SQL-first on Postgres; Appwrite is API-first with its own database products.

#Does Appwrite use Postgres?

Appwrite lists a managed PostgreSQL option with direct connections, next to its TablesDB, DocumentsDB and VectorsDB products. Its classic database API isn't plain Postgres access.

#Which is easier to self-host, Supabase or Appwrite?

Both use Docker. Appwrite also has an official Helm chart. Supabase's self-hosted version runs a single project.

#Which is cheaper?

For a single project both Pro plans start at $25/month as of November 2026. With many projects, Appwrite charges $15 per extra project and Supabase charges each project's compute.

Prefer the Postgres model with EU hosting? Start free on StitchDB.