KI

Kirby

File-based CMS for designers and developers

Content Management Systems ★ 1.5k stars Medium setup Proprietary

Kirby is a flexible file-based content management system that stores content in plain text files and gives developers full control over markup. It is popular for portfolios and custom-designed websites.

Key features

  • File-based content storage
  • Flexible panel for editors
  • No database required
  • Developer-friendly templating

Pros & cons

Strengths

  • Easy backups and version control
  • Highly customizable

Trade-offs

  • Commercial license required for production
  • Free only for personal use

Kirby replaces

Last reviewed Sep 13, 2026 · 850 words

Budget about €99 per site before you launch anything with Kirby. The source is on GitHub and you can run it locally for free indefinitely, but a production site needs a paid licence, and that is the fact that sorts readers of this page into two groups faster than any feature. If paying for a CMS you host yourself is a non-starter, stop here and go to Grav, which is the closest free equivalent. If a one-off fee is acceptable for a well-maintained tool with a company behind it, Kirby is one of the nicest pieces of PHP software a designer or developer can run.

The licence is the first decision, not the last

Kirby's model is free for personal and development use, paid per site for anything public. Prices at last check were about €99 for the basic tier and about €399 for the enterprise tier that covers larger organisations, both as one-time purchases per major version with a period of updates included. That is cheaper than a year of most hosted site builders and it buys a full-time team, a real changelog and a support forum with staff in it. The catalogue is right that this cuts against the "free" expectation of self-hosting; the counterargument is that WordPress agencies routinely pay more than that for a single premium plugin.

Content is a folder of text files

There is no database. A page is a folder under content/, and inside it a text file holds the fields, with images and files sitting next to it:

content/
  1_projects/
    1_bridge/
      project.txt
      hero.jpg
  about/
    about.txt

The numeric prefix is the sort order, the folder name is the URL, and project.txt names which template renders it. Fields inside the file are Title: ... lines separated by four dashes. This is why "easy backups and version control" is not a slogan: the whole site, content included, is a Git repository, and a content change shows up as a readable diff. Migrating hosts is rsync. Restoring is checkout. For a portfolio, an agency site, a documentation site or anything under a few thousand pages, that beats a database for the operator every time. Past that scale, or with heavy concurrent editing, it does not, and Kirby does not pretend otherwise.

The Panel is what editors actually see

Developers control the front end completely: templates are PHP files, and there is no theme system to fight. What makes Kirby viable for clients is the Panel, the admin interface, and the blueprint files that define it. A blueprint is YAML describing the fields, tabs and layouts for a page type, so the editing screen for a "project" shows exactly a title, a client field, a gallery and a text block, and nothing else. Editors get a multi-user backend with roles, drafts, image handling and a block editor, and they never see the file system. This is the feature that puts Kirby above Grav for client work in my experience, because Grav's admin is a plugin that has always felt like an addition, while Kirby's Panel is the point.

Hosting needs PHP and little else

Requirements are a current PHP with the usual extensions and a web server that can rewrite URLs. A 256 MB PHP-FPM pool on a small VPS runs a Kirby site with room to spare; I have hosted several on a shared 2 GB box next to other things. There is no official Docker image, but the pattern is a php:fpm image plus Caddy or Nginx with the site directory bind-mounted, and it works because there is no database to link. Turn on the page cache in site/config/config.php for public sites and it serves static HTML until content changes. Performance complaints about Kirby are almost always a missing cache or a missing image cache directory permission.

Who picks Kirby, and who should not

Kirby wins for designers and developers building custom sites for clients where the editing experience is a deliverable, and for anyone who wants content in Git with a proper admin on top. It loses for people who want to install a theme and be done, where WordPress and its ecosystem are unbeatable, and for people who want free, where Grav or a static generator like Hugo is the answer. It also loses if you need an editorial workflow with approvals and scheduling across a large team; that is not what a file-based CMS is for. See the wider CMS category for the alternatives.

What I'd do

For a client site or a serious personal site where someone other than me edits content, buy the licence, build on the starter kit, commit content/ to Git, and host it as PHP-FPM behind Caddy with the page cache on. For a personal site nobody else edits, use Grav or Hugo and keep the €99. The licence is the only real objection to Kirby, and it is an objection about money, not about the software.

Compare Kirby

25 head-to-head comparisons.

Similar content management systems apps