Craft is a modern content management system with a focus on a "content first" strategy. It aims to make life enjoyable for developers and content managers alike, and has a smart developer concept of its own.

Craft-CMS is a young and modern CMS. The first version of Craft has been published in 2013. In December 2015, "Craft Commerce" was published, an e-commerce platform for the Craft-CMS.

Craft is a proprietary CMS created by Pixel & Tonic. Pixel & Tonic started as a developer team for the CMS Expression Engine. According to their website, Craft CMS sold more than 100,000 licenses by December 2016, so the focus on content-first has obviously been a wise decision.

Craft for Content Managers

Craft claims to be a "content-first" CMS. And, indeed, it is super modern and uses a lot of JavaScript to make the interaction with the control panel smooth and easy. These effects are not meaningless showcases of fancy scripting. Instead, everything is designed to improve the content creation experience of the author.

One of these nice features is the live preview. The live preview fades in with an overlay and provides a small, live editor. This means that you can edit the content in the live preview and store all the changes before you switch back to the standard mode. All this works together very smoothly and without any interruption of the editing experience.

With the default installation of Craft, the control panel is very clean. The main menu starts with the three points "dashboard", "entries", and "settings". Behind this simplicity and reduction, there is a flexible and powerfull concept.

The concept of the different content-types "singles", "channels" and "structure" is very powerfull and flexible. But it has to be configured from the developer, initially. Otherwise, some standard features won't work out of the box. For example, if you want to create a new static page in WordPress (e.g. for an imprint), then you can do that easily with a "new page"-button. With the default installation of Craft, you cannot create a new single page unless your developer has configured the system to work that way. The same with images. The image upload does not work out of the box. The developer or administrator has to configure the upload-folder and the fields for the editor (Redactor II) to enable this functionality. If it is configured the right way, you have a powerfull, full-blown media management for your content work.

This sounds a bit hacky, at first. But Craft is created for developers. It is not meant to be used for content managers out of the box. The huge advantage of Craft is that the system does not determine any kind of structure for the website. Instead, the developer can tailor Craft exactly to the author's needs.

Craft for Developers

Craft is written in PHP and there is a free developer version to test the CMS. Craft is quite different from other CMS. Yes, you have to develop templates and themes similar to any other CMS. But, when it comes to the editor's interface, the whole development is mostly done with some magic clicks and drag and drop.

A content management system basically stores the content of the author (ususally created with input-forms) and displays the content with templates. Craft provides some kind of form builder to manage the input of the author. The form builder works with a combination of fieldsets, sections, and entry types. You can define all of that in the control panel of Craft and create literally everything you want.

In most of your projects, the only code work that you have to do is coding the templates and themes. Craft uses Twig as a template language. To output the content created with Craft, you simply use the names of the sections and fields, that you previously defined. Remember our example above. We can create a simple loop with Twig to print out the content for the blog entry:

{% for entry in craft.entries.section('blog').find() %}

{{ entry.title }}

{% endfor %}

If you want to enable your content editors to create new "static" pages, like an imprint or an about page, then you have to configure Craft the right way. There are two (or more) possible solutions for this quite common requirement.

The first solution is less flexible: You can define a new "section" for a static pages in the settings. Then, you define the template for the single page and add the input fields for the content manager. But, you have to repeat these steps for every new page that the content manager want's to create. A quite limited solution.

The second solution is more flexible: You can create a new "section" for static pages in the settings. This section is of the "channels" type. Then, you define the slug for the url like this:{slug}. This way, new sites are published directly under the root-url (e.g. Finally, you can define sub-pages for this section as described above. Now the editor can create unlimited static websites in the new channel "static". This solution is also described by Jeff Bridgforth and it demonstrates that you have to think a bit differently if you create websites with Craft.

There is also a github repository for craft. It is for reference only and is not meant to be used for a Craft installation. However, you can study the code work there if you want.

If you want to dig deeper, just read the documentation of Craft that is linked in the fact sheet below.

Craft for Non-Coders

Craft is a content management system for developers. It does not provide any prebuild themes. If you like the concept of Craft, just talk to your IT-departement or hire some developers specialized in Craft.


Craft is a proprietary CMS in a low and mid-price range. It provides four different options:

Recommendation: When to use it?

If you are looking for a modern CMS with a focus on usability for content managers, Craft is a really good choice. Craft is a good option for simple websites, as well as business websites of mid-range complexity. In combination with Craft-Commerce, Craft is also a good option for more complex e-commerce websites.

Craft is used by some medium-sized organizations and companies, like Kunsthall Stavanger, Samuelsohn, and