Grav CMS Alternatives: 5 Options Beyond Flat Files
Where to go when flat-file hits its ceiling
Grav is a fast, flat-file CMS with no database, a Twig templating engine, and a big plugin ecosystem. It's free, open source, and great for developers who want file-based content they can version in git. But flat-file has a ceiling. Once you need real queries across thousands of entries, a database-backed content model, a modern admin, or a clean headless API for a React or static front end, Grav starts to feel like the wrong tool. Here are the alternatives that pick up where Grav leaves off.
TL;DR: Staying flat-file? Kirby and Statamic are the closest siblings. Want a database and a headless API while keeping self-hosting? UnfoldCMS or Directus. Going TypeScript-native? Payload. This post breaks down five options with honest tradeoffs.
Why teams move off Grav
Grav is solid. The usual reasons to switch are structural, not quality complaints:
- Flat-file scaling. File-based content is simple until you have thousands of entries or need relational queries. A database handles volume and relationships better.
- Admin experience. Grav's admin plugin works but feels dated next to modern React-based panels.
- Headless needs. Grav renders in PHP/Twig. If your front end is React, Vue, or a static generator, you want an API-first CMS, not a template engine.
- Content operations. Built-in scheduling, roles, and a media library with automatic image variants are more mature in database CMSes.
If flat-file still fits your project, Grav is hard to beat on simplicity. If one of the above bites, keep reading.
The alternatives
1. UnfoldCMS — database-backed, headless, self-hosted
The move for Grav users who want to keep self-hosting and ownership but need a database and an API. UnfoldCMS is a self-hosted CMS on Laravel, storing content in SQLite or MySQL, with a React + shadcn/ui admin and a REST API at /api/v1/*.
- Real database — queryable content, categories, relationships, scheduled publishing.
- Headless + built-in themes — serve any front end over REST, or use the bundled front end.
- Modern admin — 51 shadcn/ui components.
- Pay once, self-host — no subscription, your server, your data.
Honest limits: REST only (no GraphQL), no revision history, and you give up the "content is files in git" model that draws people to Grav. It's a database CMS, with the ops that implies.
2. Kirby — the flat-file sibling
If you want to stay flat-file but leave Grav specifically, Kirby is the obvious neighbor. Also database-free, also PHP, with a cleaner Panel admin and a pay-once license. It's a lateral move — same content model, different (many would say nicer) developer experience.
3. Statamic — flat-file with Laravel underneath
Statamic is flat-file (with an optional database driver) built on Laravel, with a polished control panel. Commercial, per-site license. A good step up if you want more built-in features than Grav while keeping the flat-file option. Compare it in Statamic vs WordPress.
4. Payload — TypeScript-native headless
For teams heading toward a JavaScript stack, Payload is a code-first headless CMS. Define collections in TypeScript, get an admin and API generated. Self-hostable and developer-focused. The shift from Grav: you're now in Node, defining schemas in code rather than editing content files.
5. Directus — API layer over SQL
Directus turns an existing SQL database into a headless CMS with a REST/GraphQL API and an admin. Best when you already have relational data and want a content layer on top. More of a data platform than a content-first CMS — powerful for data-heavy sites, heavier than needed for a simple blog.
Quick comparison
| CMS | Storage | Front end | Cost | Best for |
|---|---|---|---|---|
| UnfoldCMS | Database | Headless + themes | Pay once | Grav users needing a DB + API |
| Kirby | Flat file | PHP templates | Pay once | Staying flat-file, nicer panel |
| Statamic | Flat file / DB | Antlers | Per-site license | Flat-file with more features |
| Payload | Database | Headless | Free / OSS | TypeScript teams |
| Directus | Database | Headless | Free / OSS | Data-heavy apps |
How to choose
- Stay flat-file → Kirby (pay-once) or Statamic (more features).
- Move to a database, keep self-hosting + PHP → UnfoldCMS.
- Go TypeScript → Payload.
- Wrap an existing SQL database → Directus.
The deciding question: are you leaving flat files, or just leaving Grav? If flat files are the constraint, a database CMS like UnfoldCMS or Directus solves it. If you just want a better flat-file experience, Kirby and Statamic are waiting.
FAQ
What's a good free alternative to Grav? Payload and Directus are open source and free (you host them). Kirby and Statamic are commercial but pay-once/per-site. UnfoldCMS is pay-once and self-hosted.
Is there a Grav alternative with a database? Yes — UnfoldCMS (Laravel, SQLite/MySQL), Directus, and Payload are all database-backed, trading flat-file simplicity for queryable content and richer admin tools.
Can I keep self-hosting if I switch? All five options here can be self-hosted. You keep content on your own server, as with Grav.
Which is best for a headless React front end? UnfoldCMS (REST), Payload, or Directus all expose content over an API for React, Vue, or static generators to consume.
Bottom line
Grav is a great free flat-file CMS, and if that model fits, stick with it. Teams leave when flat-file scaling, a dated admin, or headless needs get in the way. To stay flat-file, Kirby and Statamic are the closest. To move to a database and an API while keeping self-hosting, UnfoldCMS is the natural fit; Payload and Directus cover the JavaScript and data-platform angles.
Try UnfoldCMS in the demo or read the flat-file vs database CMS breakdown.
Related: Flat-file CMS vs database CMS · Best self-hosted CMS platforms · Best open source CMS
Free & Open Source
Own your CMS. No subscriptions.
Unfold CMS is free to download and self-host. Built on Laravel + React, full source code included.
Share this post: