A powerful platform: Kirby is built with flexibility and extensibility in mind
For developers
- Battle-tested flat-file foundation
- Reliable tech stack
- Versatile templating
- Headless or not – you decide
- Powerful plugin platform
- Extensive docs & great community
- Built with security in mind
At the core: Files & Folders
A rock-solid, yet simple foundation
Stay in control of your data. Kirby stores your data in files and folders. Universally accessible on all operating systems and editable with any text editor.
-
Fast
The file system is much faster than you might think. Most often even way faster than a database. With SSD drives on your server you get a system that can fly.
-
Resilient
Files and folders are probably the most future-proof way of storing your data. Think version control via Git, simple backup options and syncing via tools like rsync.
-
Extensible
Combine our flat-file system with databases, APIs or even data from a simple Excel spreadsheet. Kirby handles it all.
Blimey, Kirby has come on a lot since I last used it. A fantastic CMS.
A reliable tech stack
Performant, well-tested and cost‑effective
Modern PHP
Kirby is built on our own PHP micro-framework and can be combined with your favorite PHP libraries. Tested and continously improved over more than 10 years, it fully leverages the power of modern PHP. With over 6,200 automated tests with a code coverage of 95% across the entire CMS backend and more than 80 stable releases since 3.0, we invest heavily into the quality of our foundation.
Admin interface framework →
Our admin interface is built on Vue.js. It's a playground for your ideas. Extend it with plugins and make it your own with the full power of Vue and an incredibly powerful backend.
Your frontend
Every project is different, every team and freelancer have their own tools and workflows. With Kirby, you use your own frontend code, your own build process, your own framework. Kirby stays out of your way.
Sustainable open-source →
Yes, Kirby has a commercial license that's been keeping us running since 2012. But we believe in the transparency of open-source. Kirby's complete code base is available on GitHub, not hidden behind a paywall. No obfuscation, no secrets. You only need to pay when you're actually going live with a Kirby project.
Templating
Stay in control of your markup.
Keep your projects lean.
Kirby comes with a powerful PHP-based template engine. Optimized for speed and equipped with an ultra flexible and intuitive PHP API, you can build your perfect frontend the way you like.
<?php snippet('header') ?>
<article class="album">
<h1><?= $page->title() ?></h1>
<figure class="cover">
<?= $cover->resize(800, 600) ?>
</figure>
<div class="text">
<?= $page->text()->kirbytext() ?>
</div>
<ul class="gallery">
<?php foreach ($gallery as $image): ?>
<li><?= $image->crop(300) ?></li>
<?php endforeach ?>
</ul>
</article>
<?php snippet('footer') ?>
{% extends 'layout.twig' %}
{% block content %}
<article class="album">
<h1>{{ page.title }}</h1>
<figure class="cover">
{{ cover.resize(800, 600) }}
</figure>
<div class="text">
{{ page.text.kirbytext | raw }}
</div>
<ul class="gallery">
{% for image in gallery %}
<li>{{ image.crop(300) }}</li>
{% endfor %}
</ul>
</article>
{% endblock %}
@extends('layouts.default')
@section('content')
<article class="album">
<h1>{{ $page->title() }}</h1>
<figure class="cover">
{!! $cover->resize(800, 600) !!}
</figure>
<div class="text">
{!! $page->text()->kirbytext() !!}
</div>
<ul class="gallery">
@foreach($gallery as $image)
<li>{!! $image->crop(300) !!}</li>
@endforeach
</ul>
</article>
@endsection
-
Controllers →
Complex logic? Use Kirby’s controllers to filter data collections based on URL query parameters, handle forms, do date-based calculations and more without cluttering your templates. Marie Kondō agrees.
-
Models →
Super-charge your pages with additional functionalities. Page models extend our default page class and offer unlimited opportunities to customize what a page represents.
-
Collections →
Keep your code DRY with collections. Featured articles, upcoming events, team members – create reusable collections that you can use everywhere.
-
Bring your own engine →
Your team is familiar with Twig, Blade or your own template engine? No problem! Our engine can be swapped using a template plugin, or you can create your own.
I probably was never as convinced of something the way I am about Kirby. The last 4 months I solely built on it and I wouldn't want to recommend anything else to my potential clients.
Security
A pro-active policy and good track record
A secure foundation
Kirby is built on a modern, secure stack with state-of-the-art PHP and Vue.js at its core. We follow OWASP standards closely for everything we build. Our file-based architecture eliminates one of the main attack vectors of content management systems – SQL injections. Kirby can easily be set up to run without an admin interface or external API for even tighter security on your production server.
A good track record →
Kirby is constantly audited by security researchers for big client projects. We are very transparent with their findings and possible security incidents. You can find past security incidents on our security page.
Our response time for vulnerability reports is normally within 24 hours. We react immediately and communicate issues clearly and openly to our community.
A focus on privacy →
Kirby is GDPR (DSGVO) compliant by default. Your sites don’t include tracking code or set cookies unless you want them to.
As a self-hosted software, your clients own their content and you don’t operate a black box.
Go headless
Modern publishing possibilities at your fingertips
Use Kirby as a headless CMS in combination with a static site generator or your mobile app. Modern system architecture meets the flexibility of a flat-file CMS.
{
"code": 200,
"data": [
{
"id": "notes/across-the-ocean",
"num": 20180421,
"title": "Across the ocean",
"url": "/notes/across-the-ocean"
},
{
"id": "notes/a-night-in-the-forest",
"num": 20180625,
"title": "A night in the forest",
"url": "/notes/a-night-in-the-forest"
},
{
"id": "notes/in-the-jungle-of-sumatra",
"num": 20180731,
"title": "In the jungle of Sumatra",
"url": "/notes/in-the-jungle-of-sumatra"
},
],
"pagination": {
"page": 1,
"total": 22,
"offset": 0,
"limit": 3
},
"status": "ok",
}
-
REST-ful by nature
Use Kirby like a classic CMS or convert it into a powerful, headless content container. Connect it to mobile applications, static site generators or your custom frontend.
-
Extensible
Define your own API endpoints and objects. Integrate external data from databases, files or other APIs with data from Kirby into one seamless data source.
-
Secure
Use our built-in authentication methods to connect securely from the same server or a remote application. Add 2FA and custom auth methods for your API users.
More and more a CMS needs to be headless and flexible to configure. I just love Kirby’s clean & simple panel UI and native JSON support!
-
User management
Work with roles and user permissions to create protected sections on your site. From client areas to communities: Kirby’s user system has got you covered.
if ($user = $kirby->user()) { echo 'Welcome, ' . $user->name(); // your community starts here }
-
Media API
Kirby comes with async image processing. Resize, crop and convert your images on the fly. Make sure that every visitor gets the perfect image size.
$image->srcset( '1x' => [ 'width' => 512, 'height' => 512, 'crop' => 'center' ], '2x' => [ 'width' => 1024 ] ]);
-
Caching
Kirby comes with mighty caching on board. Not the right fit for your project? Add your cache driver of choice and reduce page loading times in the blink of an eye.
return [ 'cache' => [ 'pages' => [ 'active' => true, 'type' => 'memcached' ] ] ];
Plugins
Endless options for projects without roadblocks
Say yes with confidence when the client asks for changes. Pretty much any aspect of Kirby can be extended - with existing plugins or custom solutions for your project.
-
Custom sections & fields
Add entirely new interface elements to the Panel with custom sections. Integrate data from analytics tools, your ERM system, third-party services and more and use them seamlessly alongside your content. Use the power of Vue.js to create truly interactive plugins.
-
Hooks
React to specific events with hooks and trigger your own actions. Resize a file on upload, add data to a newly created page, add custom content validations and more.
-
Core components →
You don't like our template engine, Markdown parser or media API? Simply swap out major parts of the Kirby system with your own plugins.
-
Routes →
Routing has never been easier: Kirby comes with a powerful router that can be extended to adjust the URL scheme, handle form submissions, add webhook endpoints or create virtual pages.
Kirby is such a pleasure to work with
And so much more
Kirby is packed with features that empower you to build amazing sites.