Comparisons

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.

When to choose which
  • 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.
Grav facts checked 19 primary sources Spot an error? Tell us

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.

Total CMS compared with Grav, feature by feature
FeatureTotal CMSGrav
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:

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.

Try it against Grav on a site of your own.

45 days, every Pro feature, no credit card.