Total CMS vs Grav
Grav is free, fast, MIT licensed and genuinely well built. If budget decides this, go and use it — you will not be cutting corners. What is left to compare is not capability but how much you want to assemble yourself.
- Choose Grav if you want free, MIT-licensed software you can fork.
- Choose Total CMS if you want one supported product, not a kit of plugins to assemble.
The short answer: these two are closer than you would guess. Both store content as files with no database. Both template in Twig, so the skill transfers in either direction. Both ship a REST API, first-party MCP tooling for AI agents, and agent skills. Both handle scheduling and webhooks without reaching for a plugin — in Total CMS through Automations, on Pro. If you were listing capabilities, you would struggle to separate them.
What Grav has that we do not is a price of zero and an MIT license. Nothing you need to run a production Grav site is paywalled, you can fork it, and its plugin directory has had more than a decade to grow. Its free skeletons are complete ready-to-run sites.
What actually separates them is how much is one product. Grav is a core plus a set of first-party packages — the admin, the REST API it runs on, and the MCP server — each versioned and released on its own, with access groups that start empty for you to define in YAML. In Total CMS those are one application on one release cycle, with support from its developer and sensible defaults already set. Neither approach is wrong — one is a toolkit, the other is a product.
If budget is the binding constraint, or you want MIT-licensed software you can fork, Grav is the answer. It is a genuinely good CMS and you will not be cutting corners by choosing it. Choose Total CMS when you would rather configure than assemble, and want one vendor answerable for the whole thing. We rank both in our guide to the best flat-file CMSs, if you want to see the whole field before deciding.
Which to choose
Where each one wins.
When to choose Grav instead
Grav is a genuinely good CMS and for a lot of projects it is the right answer. Choose Grav if:
- Budget is the binding constraint. Grav is free and MIT licensed, agent tooling included. Nothing required to build and run a production site costs anything, and you are not making a compromise to get that.
- You want open source you can fork. MIT means you can modify, redistribute, and white-label without asking anyone. Total CMS is proprietary; if the vendor relationship itself is a risk you want to eliminate, Grav removes it.
- You want a running start. 56 free skeletons are complete site packages — core, theme, plugins, and sample content in one download.
- You want the larger extension catalog. An established directory of plugins and themes, against a younger one.
When Total CMS fits better
Total CMS is the better fit when:
- You want one supported product rather than an assembly. The admin, permissions, API, MCP server, automations (Pro), and image processing are one application, from one vendor, on one release cycle. Grav's core, admin, API, and MCP server are separate packages versioned independently, and access groups ship empty for you to define in YAML.
- You want support from the people who build it. Total CMS support comes directly from its developer, through the forum and tickets. Grav's support is a community forum and Discord, with no paid tier.
- Client permissions matter on day one. Access groups and roles are configured in the admin rather than hand-written into YAML files.
- You hand the admin to clients under your own brand. White-labeling is a setting: your logo on Standard, and no Total CMS branding anywhere on Pro.
- You already have a front end. Keep your hand-coded site, the web builder you design in — Stacks, Pinegrow, Bootstrap Studio — or your framework, and add structured content to it. Total CMS works inside the pages you already have, or headless through its REST API; it does not need to own the site.
Feature by feature
Total CMS vs Grav, row by row.
| Feature | Total CMS | Grav |
|---|---|---|
| More | ||
| License | Commercial, one-time, per domain | MIT open source |
| Grav's MIT license permits commercial use, modification, and white-labeling with no fee. Total CMS is proprietary, source-available software requiring a paid license for production. | ||
| Price | $195 Standard / $395 Pro (one-time) | Free |
| Grav sells optional premium plugins and themes ($25–$100 each, one-time, per production site), but nothing required to build and run a site costs money. | ||
| Updates included | 2 years | Free, always |
| Grav is MIT licensed and its updates are free. A Total CMS license includes two years of updates, then converts to a perpetual license for the version you have; renewing is optional. | ||
| Support | Direct from the developer (forum and tickets) | Community forum and Discord |
| Grav's forum is active — roughly 3,800 members and 41,000 posts. There is no paid support tier. | ||
| Content storage | JSON or Markdown files on disk | Markdown with YAML front matter |
| Both version-control cleanly. Grav maps folders to pages and uses numeric folder prefixes to control ordering. | ||
| Database | None, ever | None |
| Grav 2.0 adds an optional SQLite-backed page index for large sites, but no database server is required. | ||
| PHP version | 8.2+ | 8.3+ |
| Grav 2.x is built on Symfony 7 components. | ||
| Templating | Twig 3, with 130+ custom filters and functions | Twig 3 |
| The rare case where two CMSs share a template language — a Grav theme developer will find Total CMS templates immediately familiar, and vice versa. Grav ships its own Twig fork that tracks upstream. | ||
| Front-end integration | Any front end: Twig inside existing PHP pages, any web builder, or headless via REST API | Its own themes and routing, or headless via the REST API |
| Total CMS can live inside a site you have already built — hand-coded or exported from a web builder: initialize it at the top of any PHP page and Twig tags render inside your own HTML, without it taking over routing or templates. Stacks users also get dedicated stacks for every content type. Grav is designed to render the site itself, or to run headless. | ||
| Content modeling | JSON schemas | YAML blueprints, plus Flex Objects |
| Flex Objects is Grav's structured-data layer for content that isn't a page — one blueprint yields admin UI, API, and frontend routing, with pluggable storage. | ||
| Admin interface | Included, server-rendered (HTMX) | Admin2, a first-party plugin (SvelteKit app) |
| Admin2 is a ground-up rewrite built as a single-page app that talks to Grav entirely through the API plugin. Grav ships it in its Core + Admin2 download, and it replaces the classic admin, which is not supported on Grav 2.x. | ||
| White-label admin | Your logo (Standard); no Total CMS branding anywhere (Pro) | Theme colors and fonts; no documented branding settings |
| Admin2 documents light and dark modes, an accent color, and a font picker, but no logo or branding settings. Total CMS white-labels the admin on Standard and removes its branding from every surface on Pro. | ||
| Users and permissions | Access groups out of the box | Define groups yourself in YAML |
| Grav's docs are explicit: "By default, Grav does not provide any group. You need to define them." Users are individual YAML files; permissions are dotted and hierarchical. | ||
| REST API | Same-origin, every edition; external API keys (Pro) | Read and write, free first-party plugin |
| Grav's API is full-featured — API keys, JWT, per-key expiry and revocation — and it is what Admin2 runs on. It requires Grav 2.0+. | ||
| MCP server for AI agents | Built in — public read (Standard), full access (Pro) | First-party npm package, plus an in-site plugin option |
| The first-party grav-mcp package runs inside your AI client and works through the API plugin, so agents get the same permissions as everyone else; it is at version 0.1.x. Grav's plugin directory also lists an MCP Server plugin that serves an endpoint directly from the site. Total CMS's MCP server is part of the application itself, on the same release cycle as everything else. | ||
| Agent skills | Installed with the package | First-party Claude Code skills |
| Both projects ship agent guidance. Grav distributes Claude Code skills through a plugin marketplace; Total CMS installs a skill and Cursor rules automatically on composer install. | ||
| llms.txt for docs | Yes | Yes, via the Sitemap plugin |
| Since Grav 2.1, Sitemap plugin 5.3 generates /llms.txt for any Grav site, and Grav core can serve any page as Markdown by adding .md to its URL. | ||
| Scheduled tasks and webhooks | Built in (Automations, Pro) | Built in (scheduler and webhooks) |
| Grav 2.x ships a scheduler and webhooks alongside multi-environment configuration. | ||
| Caching | Multi-backend (APCu, Redis, Memcached, filesystem) | Five layers, six drivers |
| Both cache across APCu, Redis, Memcached, and the filesystem. Grav splits its cache into config, page, Twig, image, and asset layers; Grav 2.2 focused on cold-start time and memory use on large sites. | ||
| Extension ecosystem | Growing, with a simple extension API | A large, established plugin and theme directory |
| Grav's directory is considerably larger, and its free skeletons are complete ready-to-run site packages. Total CMS's extension API is small enough that an AI coding agent can scaffold one from the starter repo, and each extension's capabilities are individually permissioned. A marketplace is planned. | ||
| Who maintains it | Total CMS | Trilby Media, plus contributors |
| Grav is commercially backed but development is concentrated: of the 100 most recent commits, 90 are by the project's lead developer. That is a strength for coherence and a consideration for continuity. | ||
| Shipping since | 2015 | 2014 |
| Grav 2.0 shipped in June 2026, followed by 2.1 and 2.2 within four months — an actively developed project. | ||
Questions
Common questions.
Grav is free. Why would I pay for Total CMS?
You are paying for one supported product rather than a toolkit. In Total CMS the admin, permissions, REST API, MCP server, automations (Pro), and image processing ship as one application on one release cycle, with direct support from its developer. In Grav those are a core plus separately versioned first-party packages, access groups must be hand-defined in YAML, and support is community-based. Building costs nothing with either: Total CMS is free, with every Pro feature, on local development domains such as .test and .localhost, so you pay only when a site goes live. If none of that matters to your project, Grav is free and genuinely good — use it.
Do both really use Twig?
Yes, and it is unusual. Both are Twig 3, so templating skills transfer directly in either direction. Grav maintains its own fork that tracks upstream Twig; Total CMS uses upstream Twig and adds 130+ custom filters and functions on top.
Which is better for AI agents?
Both are built for it, with different tradeoffs. Grav's agent tooling is free, it ships official Claude Code skills, and since 2.1 it can serve every page as Markdown with an llms.txt index. Total CMS's MCP server is part of the application itself — same release cycle, same permission system as the admin — and it installs an agent skill and Cursor rules with the package; agent writes need Pro. If agent tooling is your deciding factor, try both against a real project rather than taking either vendor's word for it.
Is Total CMS open source like Grav?
No. Grav is MIT licensed — free to use, modify, and redistribute. Total CMS is proprietary, source-available commercial software that requires a paid license for production use. If an open-source license is a requirement rather than a preference, that settles it in Grav's favor.
Can Grav model structured content, or is it just Markdown pages?
It can. Flex Objects is Grav's structured-data layer for content that is not a page — products, members, bookings. One YAML blueprint produces the admin UI, the API, and frontend routing, with pluggable storage backends. It would be wrong to characterize Grav as Markdown files only.
Can I migrate from Grav to Total CMS?
There is no automated Grav importer. Total CMS ships importers for Total CMS 1, Alloy, WordPress, CSV, JSON, RSS, and URLs. Grav content is Markdown with YAML front matter in predictable folders, so exporting to CSV or JSON and importing that is usually straightforward — and Grav's own REST API makes scripting the export easier than most.
Sources
Where these facts come from.
Grav facts checked . Software changes, so check Grav’s own site for their current details.
Grav details verified from primary sources, most recently reviewed on 3 October 2026 against Grav 2.2:
- getgrav.org — positioning and the "CMS for humans & agents" tagline
- getgrav.org/ai — AI and MCP positioning
- getgrav.org/downloads — the Grav Core + Admin2 package
- github.com/getgrav/grav — MIT license, dependencies, release history, contributor activity
- Grav 2.1 release notes — per-page Markdown output
- Grav 2.2 release announcement
- getgrav.org/premium and the premium license — paid add-on pricing and terms
- learn.getgrav.org — requirements — PHP version, no database
- learn.getgrav.org — content pages — folder-as-page structure
- learn.getgrav.org — Flex Objects
- learn.getgrav.org — groups and permissions
- learn.getgrav.org — performance and caching
- learn.getgrav.org — Markdown output — .md page output and llms.txt
- github.com/getgrav/grav-plugin-api — the REST API plugin
- github.com/getgrav/grav-plugin-admin2 — Admin2, its architecture, and its documented theme settings
- github.com/getgrav/grav-mcp — the first-party MCP server
- getgrav.org/downloads/plugins — plugin directory, including the MCP Server plugin
- github.com/getgrav/grav-skills — official Claude Code skills
- Grav 2.0 release announcement
Grav is a trademark of its respective owner. We have no affiliation with Grav, and we have tried hard to represent it accurately — including where it is the better choice. If anything here is wrong or out of date, tell us and we will correct it.
Keep comparing
Weighing something else?
- Hosted vs self-hosted Before you choose between Squarespace and Webflow, or between Kirby and Craft, there is a bigger question underneath: do you want to rent a website platform or own the software that runs it? Here is how to decide, from someone with an obvious stake in the answer.
- The best flat-file CMS in 2026 Five flat-file content management systems worth your time, what each is genuinely good at, and where each one will frustrate you.
- A PHP CMS without a database Running a CMS with no MySQL sounds like a corner-cutting exercise.
- WordPress alternatives for freelancers If you build client sites for a living, the CMS decision is really a decision about the next three years of your evenings.
- Making a PHP app legible to AI agents Coding agents invent functions that don't exist because the app can't describe itself.
Try it against Grav on a site of your own.
45 days, every Pro feature, no credit card.