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.

  • Dashboard: You can personalize your dashboard with widgets. This concept reminds me of PIWIK, the well-known analytics software.
  • Entries: There are three types of entries: “singles” (similar to static pages), “channels” (similar to post-entries and blogs), and “structure” (e.g. a dynamic list of posts or repeating, structured content, like a documentation). The different types of entries can be grouped as a “section” in the control panel.
  • Settings: In the settings area, you can customize the whole system. You can even create your own interface for content-editors from scratch with some clicks and with drag and drop.

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.

  • Fields: At first, you can define some fields. You simply choose one of the 18 pre-defined field types from a drop-down list. There are fields for nearly any type of input, starting with a rich-text-editor (Redactor II), and ending with complex tables and option boxes. You can even write your own help text for each fieldset to guide the content manager.
  • Field Groups: You can group and combine different fields to a field group. This is very handy, if you want to use a bundle of input forms for a template with one click.
  • Sections: After you have defined your fields, you can create a new section. For example, a new section called “blog” for blog entries. You would certainly use the content type “channels” for that.
  • Field-layout: Finally, you can create a layout for input fields, which will be the interface for the author. Craft provides a kind of visual layout builder for this, where you can add all of your previously defined fields and arrange them in different tabs. All this is done with simple drag and drop and without any traditional development work.

Screenshot of Craft Field Layout

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:

  • Free: a trial-version for developers.
  • $199: a pro-version and a single site with only one content-manager.
  • $299: a pro-version and a single site without any limitations.
  • $999: a pro-version together with the commerce-platform of craft.

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 Agatha Christie, as well as many small or even personal website projects.

So you like PHP CMS for medium websites? Then you might also like these CMS: Craft, Drupal, TYPO3, WordPress,

Fact Sheet

Best for Websites:
Special-Features (Selection):
  • Build-in localization panel
  • Templating with Twig
  • One-click-update
  • E-commerce-platform for Craft-cms
  • Web Server (Apache, Nginx, IIS)
  • PHP 5.3.0+ with safe mode disabled
  • MySQL 5.1.0+ with InnoDB
  • 32MB of memory for PHP
  • 20MB of free disk space
  • 1MB of database space
  • Free (personal by and for developer)
  • $199 (per client-site with one content-manager)
  • $299 (per client-site with unlimited content-managers)
  • $999 with craft-commerce per site
  • Proprietary

Last reviewed: February 27, 2017

Leave a Reply

Your email address will not be published. Required fields are marked *