Appwrite Cloud
appwrite.io · Storage · 1 record · JSON
Appwrite Cloud Storage
fails: quotaemail?card?R
| Free tier | 2 GB storage + 5 GB bandwidth on Free; 2 projects unit objects; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | 5 GB bandwidth/month on Free — 2.5x the storage, so it is a real wall but not as lopsided as Supabase. |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | s3-compatible, rest, graphql, cli rest |
| Tooling | Appwrite SDKs (web, flutter, node, python, dart), REST + GraphQL API, appwrite CLI; storage buckets expose file preview/download endpoints; S3-compatible adapter exists for self-host |
| Composes with | 2 projects x 2 GB = 4 GB per account; per-project caps on buckets ('1 Database, 1 Bucket, 2 Functions per project') mean a bucket cannot be sharded inside a project. Accounts are the only multiplier. Self-hosting is free and unlimited but that is compute he pays for, not a free tier. |
| Reliability | Same inactivity-pause pattern as Supabase/Nhost (1 week). Project limit of 2 is enforced per account. |
| Notes | 2 GB storage + 5 GB bandwidth on Free; 2 projects |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | appwrite.io/pricing | (via __provider=firecrawl) — '- 5GB bandwidth', '- 2GB storage', '- 1 Database, 1 Bucket, 2 Functions per project', 'Free projects are paused after 1 week of inactivity. Limit of 2 projects.' |
More fields (1)
{
"dead_end": {
"failure_class": "egress",
"why": "2 GB storage + 5 GB bandwidth on Free; 2 projects",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (8)
$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted