Quick answer: Appwrite is an open-source (BSD 3-Clause) backend-as-a-service — auth, database, storage, serverless functions, messaging, realtime, and hosting in one platform. Its Cloud free plan is a standing $0/month tier good for 75,000 monthly active users, and the self-hosted version has no usage limits at all, so you pay only for your server. The one free-Cloud catch: idle projects pause after a week of no traffic.
Firebase ships a backend in an afternoon, but the catch arrives later: per-operation billing that can spike a $0 month into four figures, a proprietary Firestore store you can only run on Google’s cloud, and closed source with no self-host escape hatch. Appwrite keeps the “backend without the work” and removes the catch — same core pieces, but open source and runnable on your own server with one command.
What Is Appwrite?
Appwrite is an open-source backend-as-a-service: one platform giving a frontend or mobile app everything it normally needs a server for, exposed through clean REST and SDK APIs. Two things set it apart. It was self-hosted first — it began as software you run yourself, with managed cloud added years later, so self-hosting is a first-class path and the whole stack runs in Docker. And it is genuinely open source under the permissive BSD 3-Clause license (GitHub), with no “open core” trick — the platform you self-host is the full platform. Under the hood it’s microservices behind an API gateway, backed by MariaDB and Redis, with isolated containers running your functions. Docs: appwrite.io/docs.
Is Appwrite Free? The Honest Breakdown
Appwrite Cloud has a real free plan — not a trial, a standing $0/month tier from the official pricing page:
| Resource | Free plan | Pro plan (from $25/mo) |
|---|---|---|
| Bandwidth | 5 GB / month | 2 TB / month |
| Storage | 2 GB | 150 GB |
| Function executions | 750,000 / month | 3.5 million / month |
| Monthly active users | 75,000 | 200,000 |
| Projects | 2 (shared resources) | 1 dedicated (extra at $15 each) |
| Backups | None | Daily, kept 7 days |
| Sleeps / expires? | Pauses after ~1 week idle; no expiry | No idle pause |
| Region | Cloud region — see the official console/docs (self-host: wherever your server is) | Same |
| Commercial use | Allowed | Allowed |
| Credit card | Not required | Required |
The standout is 75,000 monthly active users on a free plan — most BaaS tiers measure you in seats or rows, so a popular hobby app can live on $0 for a long time. The one honest asterisk: free Cloud projects pause after one week of inactivity. For a live app this never happens; for an occasional side project or an always-on demo it’s a real consideration — and a reason to self-host. Always check the current pricing page, because BaaS limits move.
Self-hosted Appwrite is free in the deeper sense: no quotas at all — no bandwidth cap, no MAU ceiling, no execution meter, no inactivity pause. Your only cost is the machine. Drop it on a cheap VPS or a permanently free box like an Oracle Cloud Always Free 4-core 24 GB ARM VPS for a true $0/month backend — one of the strongest “$0 backend” setups available in 2026.
The Products
- Authentication — email/password, magic-link and OTP, phone (SMS), anonymous sessions, and 30+ OAuth2 providers, plus sessions, JWTs, verification, recovery, and team/role abstractions.
- Databases — collections, documents, typed attributes, indexes, and relationships, governed by a per-document permission system. Backed by MariaDB, so you get document ergonomics on a SQL-grade core.
- Storage — upload/download APIs, per-file permissions, and on-the-fly image transformation (width/height/quality/format), so you skip a separate thumbnail CDN. Antivirus scanning and encryption at rest available server-side.
- Functions — isolated containers triggered by HTTP, cron, or Appwrite events. Runtime breadth is the standout: Node.js, Bun, Deno, Python, Go, Dart, PHP, Ruby, .NET, Java, Swift, and Kotlin — match each function to its language instead of a TypeScript-only layer.
- Messaging — push (FCM/APNs), email (Mailgun, Sendgrid), and SMS (Twilio, Vonage) through one API, with topics and subscriptions first-class.
- Realtime — WebSocket API to subscribe to any resource (collection, document, file, account) and get updates the instant they change, with no polling.
- Sites (added 2025) — built-in hosting for static sites and SSR frameworks (Next.js, Astro, SvelteKit) from a Git repo, with global CDN, automatic SSL, and preview deploys. Host frontend and backend behind one dashboard.
All of it is reachable from official client SDKs (Web, Flutter, Apple, Android, React Native) and server SDKs (Node, Python, PHP, Dart, Ruby, Go, .NET, Java, Kotlin, Swift) — one consistent mental model across platforms, which is why Appwrite is a favorite in the Flutter and React Native communities.
Self-Host in Minutes
The install is a single Docker command (check the self-hosting docs for the current version tag — pin a version rather than latest in production):
docker run -it --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
--entrypoint="install" \
appwrite/appwrite:latest
An interactive setup asks for ports, hostname, and secrets, then writes a docker-compose.yml and .env and brings the stack up. Worth knowing:
- Full stack via Compose — API gateway, MariaDB, Redis, and function-runtime containers. Plan for ~2 GB RAM as a comfortable floor.
- You own upgrades and backups. “No usage meter” also means nobody backs it up for you — schedule DB dumps and snapshot your volumes.
- Put it behind HTTPS. Appwrite can provision Let’s Encrypt certs during setup; never expose an internet-facing instance on plain HTTP.
If managing the Docker host is more than you want, pair Appwrite with a self-hosted PaaS like Coolify, which deploys and supervises the stack with a friendlier UI.
Your First App: Auth and a Document
Cloud or self-host, the code is identical except the endpoint URL. Install with npm install appwrite, then:
import { Client, Account, Databases, ID } from "appwrite";
const client = new Client()
.setEndpoint("https://cloud.appwrite.io/v1") // or your self-hosted URL
.setProject("<PROJECT_ID>");
const account = new Account(client);
const databases = new Databases(client);
// Register and log in — the entire auth flow
await account.create(ID.unique(), "me@example.com", "s3cret-password");
await account.createEmailPasswordSession("me@example.com", "s3cret-password");
// Write a document to a collection you defined in the console
await databases.createDocument(
"<DATABASE_ID>", "<COLLECTION_ID>", ID.unique(),
{ title: "My first task", done: false }
);
// Subscribe to realtime changes
client.subscribe(
"databases.<DATABASE_ID>.collections.<COLLECTION_ID>.documents",
(event) => console.log("changed:", event.payload)
);
That’s a real backend — accounts, persisted data, live updates — in a handful of calls, with no server code of your own. The same objects exist in the Flutter, Apple, Android, and React Native SDKs with the same shape.
Appwrite vs Supabase vs Firebase
| Appwrite | Supabase | Firebase | |
|---|---|---|---|
| License / source | BSD-3, open source | Apache-2/open source | Proprietary (Google) |
| Self-host | First-class, Docker | Yes, more involved | No |
| Database | Document API on MariaDB | PostgreSQL (raw SQL) | Firestore (NoSQL) |
| Functions | 12+ runtimes | Edge Functions (TS/Deno) | Cloud Functions (JS/TS, Python) |
| Vector / AI search | Via integrations | Native pgvector | Via extensions |
| Billing model | Resource tiers | Resource tiers | Per-operation (can spike) |
| Free tier shape | 75K MAU, pauses if idle | 2 projects, pauses if idle | Generous but usage-billed |
- Firebase — most polished, most locked-in. Per-operation billing is the headline risk and closed source means no self-host exit. Pick it for Google’s ecosystem (Analytics, Crashlytics) if you accept the lock-in.
-
Supabase — the right call when data is relational and you want raw SQL. Native
pgvectormakes it the strongest choice for AI/RAG features next to relational data. See Supabase vs Neon. - Appwrite — wins on self-hosting ergonomics, multi-language functions, and SDK breadth. Best if you want the smoothest path to your own backend, write functions in Python/Go/PHP, or build in Flutter/React Native. It trades raw SQL power for document simplicity.
One economic data point: independent comparisons put self-hosted Appwrite at roughly 68% lower monthly cost than managed Firebase for teams above ~50,000 MAU, because you swap per-operation billing for a flat server cost.
Limits and Honest Caveats
- Free Cloud pause — projects pause after a week of inactivity. Invisible for live apps; annoying for intermittent side projects or long-running demos. Self-hosting never pauses.
- Self-hosting means you run it — upgrades, security patches, backups, monitoring, and uptime are yours. Budget for it, or pay for Cloud.
- Document model, not raw SQL — collections and documents with a permission layer, not an open SQL console. Complex joins, window functions, and ad-hoc analytics are where Postgres-based platforms pull ahead.
-
Vector search is not native — no built-in vector index like Supabase’s
pgvector. You can integrate a dedicated vector database, but it’s another moving part.
Frequently Asked Questions
Is Appwrite really free?
Yes, in two ways. Appwrite Cloud has a standing free plan (5 GB bandwidth, 2 GB storage, 750,000 function executions, 75,000 monthly active users, no credit card), and the open-source self-hosted version has no quotas at all — your only cost is the server. The Cloud free plan’s one catch: projects pause after a week with no traffic.
Appwrite vs Supabase — which should I choose?
Choose Supabase if your data is relational and you want raw PostgreSQL power and native vector search. Choose Appwrite if you want the smoothest self-hosting experience, serverless functions in many languages, and first-class SDKs for Flutter, React Native, and native mobile. Both are open source with real free tiers; database model (SQL vs document) and your platform are the deciding factors.
Can I self-host Appwrite for free?
Yes. Appwrite is designed to be self-hosted and installs with a single Docker command. There are no Appwrite-side fees and no usage limits when self-hosting — you pay only for the server. Run it on a cheap VPS or a permanently free Oracle Cloud Always Free ARM instance for an effectively $0/month backend.
What languages can Appwrite Functions use?
Node.js, Bun, Deno, Python, Go, Dart, PHP, Ruby, .NET, Java, Swift, and Kotlin. You can mix runtimes within a project, matching each function to the language best suited to its job.
Bottom Line
Appwrite gives you Firebase’s convenience without Firebase’s terms — auth, database, storage, multi-language functions, messaging, realtime, and hosting in one open-source platform, run on Appwrite’s cloud or your own server.
- Launching a small app fast? The Cloud free plan carries 75,000 MAU at $0 — just remember idle projects pause after a week.
- Want a backend you truly own? Self-host with one Docker command on a cheap VPS — or a free Oracle Cloud ARM box — for no usage meter and no lock-in.
- Building in Flutter, React Native, or a polyglot stack? Appwrite’s SDK breadth and 12+ runtimes make it the most comfortable BaaS of the three.
If your data is relational and SQL-first, Supabase may suit you better; if you want Google’s ecosystem and accept the lock-in, Firebase is there. But for an open-source backend you can start free and self-host forever, Appwrite keeps the easy parts and hands you the keys.
Related Reads
- Supabase vs Neon: Which Free PostgreSQL Database Should You Use in 2026? — the SQL-first alternative when your data is relational
- Oracle Cloud Always Free: Get a 4-Core 24GB ARM VPS for Free — the free-forever box to self-host Appwrite on
- Coolify: Turn Any VPS Into Your Own Heroku for Free — deploy and supervise your self-hosted Appwrite stack with a UI
- Turso: Free 9GB Distributed SQLite with Vector Search — when you need just a database, not a whole backend
- 7 Best Free Web Hosting for Developers — where to put the frontend that talks to your backend
Originally published at toolfreebie.com.

Top comments (0)