Skip to content

Features

Kirby is packed with features that help you build high-end projects – faster, more efficient, and more enjoyable.

The Panel

A headquarter that adapts to your needs

A screenshot of Kirby's admin interface

Make it yours

Kirby lets you create a control panel for yourself and your editors that is tailored to your site. Make the Panel reflect the unique structure of your content, use cases and users—not the other way around.

Learn more →

An illustration of Kirby's flexible blueprint system

User-friendly

The Panel is optimized to make editors more happy and productive. There's no need for long training sessions and on-boarding new editors is a breeze.

Secure

Extensive permissions, brute-force login protection and state of the art session management keeps your panel protected. Customize the panel URL or even switch it off on your production server for even less attack vectors.

Mobile-ready

You want to edit your site on the go? The Panel works nicely on mobile browsers in iOS and Android.

title: Shop
sections:
  products:
    type: pages
    layout: cards
    template: product
    info: "{{ page.price }} €"

Blueprints

Configure the Panel interface with our unique blueprint system. Add sections, fields, tabs and create intuitive interface layouts right from your editor.

Learn more →

Quicksearch

Quickly access all pages, users and files with the global search and navigate around with ease.

More than just pages

Articles, albums, events, products – you name it

A screenshot of a Panel setup for blog articles

On display, tailor-made

Display pages the way that fits them best: articles, albums, blogs, events, products, docs etc.

Create individual layouts and add sections so that your pages reflect their nature right in the Panel.

Drag & Drop sorting

Sorting pages or files is a breeze: Pick them up and drop them where you want them to be. It shouldn't be more complicated than that.

A screenshot of Kirby's modal window to switch a page status from draft to public

Drafts

Prepare your content and only publish it when everything is in place with the click of a button. Send preview links to others so they can review your drafts before they go live.

Publishing workflows

Your pages can have three different states: draft, unlisted and listed. Those states can be customized to fit your publishing workflow.

Learn more →

Custom layouts

You want more? Create your own plugins to display pages. Complex tables, gallery grids, maybe even a kanban board? Build your own pages section plugins and get creative.

Learn more →

A screenshot of the PageTable plugin by Sylvain Julé

Content management

Structure your content like never before

An example of a more complex panel layout with multiple custom fields

Custom Fields

Kirby comes with a wide variety of fields that help you build intuitive forms for your content editors and find the right input type for your data.

Learn more →

Auto-saving

Don't worry about unsaved changes. The Panel stores them for you automatically—even when you go offline—and you can save them later.

Learn more →

Content-locking

Collaborate with peace of mind: Kirby's advanced content locking features make sure that unsaved changes are never overwritten by your team mates.

Learn more →

Next level editing

Write with style, stay in style

Writing

Content editors love the flexibility and intuitive features of our new editor. Write without distraction and add formatting you can trust. The result will be clean, accessible and polished for the web.

Learn more →

A screenshot of Kirby's visual editor plugin

Full control

As a developer, you decide how each individual block type of the editor is rendered. You control the markup and the design. Nothing happens by accident and all content stays structured.

Learn more →

Extensible

Add new block types to the editor. You need a call to action button, a gallery or a table block? No problem! Our powerful block component API, based on Vue.js, is here for you.

Learn more →

Asset managament

Images, documents, videos, spreadsheets, etc.

An example of a photo gallery setup in the Panel

Your files

Add galleries, covers, hero images, PDF downloads and more right on your page with files sections.

Learn more →

Drag & Drop uploads

Editors can upload multiple new files at once with the intuitive drag & drop uploader.

Quality assurance

Add fine-grained upload validators and check for image dimensions, file types, file size and more to avoid unwanted uploads.

Learn more →

Metadata

Add custom metadata to your files. Define different file types and customize the metadata fields for each type. An image might need a caption and some alternative text. A PDF catalogue download could have an additional pricing list. You can even use those fields for internal notes in your team.

Learn more →

$page
  ->images()
  ->template('gallery')
  ->first()
  ->srcset(
    '1x' => [
        'width' => 512,
        'height' => 512,
        'crop' => 'center'
    ],
    '2x' => [
        'width' => 1024,
        'height' => 1024,
        'crop' => 'center'
    ]
  ]);

Media API

Kirby comes with an asynchronous media modification API. Resize, crop and convert your images right on the fly in your templates. Start prototyping with different image formats in the browser. Make sure that every visitor gets the perfect image size.

Learn more →

At the core: Files & Folders

A rock solid, yet simple foundation

  • content
    • 1_photography
      • 1_animals
      • 2_trees
      • 3_sky
      • 4_oceans
        • album.txt
        • attention-sharks.jpg
        • island-from-above.jpg
        • jellyfish.jpg
        • nasty-rocks.jpg
        • smashed-by-waves.jpg
      • photography.txt
    • 2_notes
      • 20190731_in-the-jungle-of-sumatra
      • 20190905_through-the-desert
      • 20190926_himalaya-and-back
      • 20191005_chasing-waterfalls
      • 20191031_exploring-the-universe
        • notes.txt
    • 3_about
      • about.txt
    • home
      • home.txt
    • error
      • error.txt
    • site.txt

Simple

Stay in control over your data. Kirby stores your data in files and folders. Universally accessible in each operating system and editable with any text editor.

Learn more →

Fast

The file system is much faster than you might think. Most often even way faster than a database. Add SSD drives to your server and you have a system that can fly.

Resilient

Files and folders are probably the most future-proof way to store your data. Add version control via Git, simple backup options and syncing via tools like rsync.

Templating

Stay in control of your markup. Keep your projects lean.

Templates

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.

Learn more →

<?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') ?>

Controllers

Too much logic for your templates? Use Kirby's controllers to handle complex data collections, form handling, URL query-based filters and more without cluttering your templates. Marie Kondō agrees.

Learn more →

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.

Learn more →

Collections

Keep your code DRY with collections. Featured articles, upcoming events, team members – create reusable collections and use them in your templates or plugins.

Learn more →

/site/templates/article.twig
{% extends 'layout.twig' %}

<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">
    {% for image in page.images() %}
    <li>{{ image.crop(300) }}</li>
    {% endfor %}
  </ul>
</article>

Bring your own engine

Your team is familiar with Twig, Blade or your own template engine? No problem! Our engine can be swapped out with an existing plugin or you can even create your own.

Learn more →

Go headless

Modern publishing possibilities at your fingertips

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.

Learn more →

/api/pages/notes/children
{
    "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",
}

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.

Learn more →

Secure

Use our built-in authentication methods to connect securely from the same server or a remote application.

Learn more →

Go global

Built-in internationalization

Language management

Create new content languages right in the Panel and start translating your pages immediately. Start with a single language and move to multiple languages later, or go global immediately—it's up to your project.

Learn more →

Create & Translate

Internationalization is built into the core of Kirby. Switch intuitively between different language versions and translate your content together with your team or on your own.

Learn more →

Translatable URLs

You can customize the main URL for each language, including subdomains. Combine this with translatable paths for pages to make your visitors feel at home.

Learn more →

Language detection

Switch to automatic language detection and let Kirby figure out which language works best for your current visitor.

Integrate

Are you using a translation service like Memsource? Use the amazing Memsource plugin to import and export translations for your translators right from the Panel.

Learn more →

User management

You are not alone in this

From the backend...

The Panel offers you an easy way to manage your users and set up permissions based on different roles. Create different user types and store metadata to your users.

Learn more →

A screenshot of the user management in the Panel
if ($user = $kirby->user()) {
  echo 'Welcome, ' . $user->name();

  snippet('community', ['role' => $user->role()]);
  snippet('logout');
}

...to the front stage

Integrate user permissions in your site to create protected sections on your site. Or launch whole communities based on Kirby's user system.

Plugins

Endless options for projects without roadblocks

A screenshot of the Matomo section plugin by Sylvain Julé

Custom sections

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.

Learn more →

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.

Learn more →

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.

Learn more →

Field methods

Register additional methods to work with content fields. Transform content directly in your templates and clean up your template code along the way.

Learn more →

Custom fields

Extend your forms with your own fields or use plugins from other developers. Data editing on steroids: locations, colors, annotations etc.

Learn more →

A screenshot of the Locator field plugin by Sylvain Julé

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.

Learn more →

KirbyTags

When Markdown isn't enough, add your own KirbyTags to simplify plain text formatting and to inject complex custom components into long-form text.

Learn more →

Caching

Kirby comes with mighty caching on board. Not fitting for your project? Add your cache driver of choice and reduce page loading times in the blink of an eye.

Learn more →

A screenshot of the Retour view plugin by Nico Hoffmann

Custom views

Add whole new views and menu items to the Panel. Use Vue.js to super-charge it as an admin framework for your own integrated applications.

Learn more →

And so much more...
Learn more about everything in our Guide