Why we’re Craft CMS developers




Contents
TL;DR — Why we're the UK's leading Craft CMS development agency
Craft CMS isn’t the most popular content management system — but we think it’s the best. It’s fast, flexible, secure, and beautifully designed for both web developers and content editors. Here is why it remains our enterprise platform of choice:
- Zero Theme Lock-In: Craft makes absolutely no assumptions about your content or design, giving our developers 100% control over clean HTML output and front-end optimization.
- Editor-Friendly Control Panel: Features a fully accessible, fast admin interface with real-time Live Preview, making content publishing entirely seamless across mobile and desktop.
- Native Architecture & Caching: Built-in Matrix fields, asset relations, and multi-environment management radically reduce reliance on bloated, insecure third-party plugins.
Want the deep dive into the data, metrics, and technical architecture? Keep scrolling.
As certified Craft CMS developers in the UK, we've spent years custom-building, maintaining, and upgrading high-performance digital platforms. Before we get into why it is our platform of choice, take a look at these stats:
According to w3techs.com data — there are a mind-bending 1,006 CMSes powering the top 10,000,000 websites.
The top 10 look like this:
Top 10 CMSes (June 2026)
1. WordPress, 2. Shopify, 3. Wix, 4. Squarespace, 5. Joomla, 6. Webflow, 7. Tilda, 8. Duda, 9. Drupal, 10. GoDaddy
We’ve used our fair share of CMSes.
Six from the top ten list above — and perhaps another five or so from further down.
But since 2015, one CMS has really stood out for us:
Craft CMS.
It may be far from the top of the popularity charts — but here’s a whizz stop tour of what we think is so good about Craft CMS — and why we believe it’s worth investing in.
A (very) brief history of Craft CMS
Craft CMS is built by software development company Pixel & Tonic.
Originally formed by Brandon Kelly — they gained recognition for creating a set must have add-ons for ExpressionEngine.
You’d be hard pushed to have built an ExpressionEngine website without using one of their brilliant add-ons:
- Wygwam
- Assets
- Playa
- Matrix
- Field Pack
Then rumours started circulating that Pixel & Tonic (at the time just Brandon Kelly) was also working on a top secret side project: Blocks CMS.
There was unrest in the ExpressionEngine community as developers had begun to push back against decisions EllisLab (the makers of ExpressionEngine) were making with the CMS.

The Blocks CMS name was a little uninspiring — but the premise of the creator of the best ExpressionEngine add-ons releasing a content management system to compete with ExpressionEngine was tantalising.
Blocks CMS was announced via Twitter in 2012 and soon after Pixel & Tonic published a blog to shed more light on their ‘little side project’.
In March 2013 the official announcement came:
After 27 months of about 12,500 total man hours, 3,483 commits, three product strategies, 31 redesigns, 7 major architecture shifts, countless code refactors, one name change, and approximately 327 liters of consumed Jameson, it is my very great pleasure to introduce you to Craft.
The name change was due to legal implications — and they felt they’d built something greater than they’d originally intended.
The CMS is for people who like to take their time and do things right. It’s for those of us who truly approach our work with the utmost skillfulness and craft. We craftsmen actually like writing every last HTML tag by hand, and we wouldn’t touch an off-the-shelf theme with a ten-foot stick. It’s for web agencies that strive to make their clients happy by delivering the best solution possible. And it’s for site owners, who just want a simple tool to keep their website updated with fresh content, without going up a steep learning curve.
We love the ethos — but it sure can make Googling support articles difficult.
“Craft websites”, anyone?

As the popularity of Craft CMS grew, so too did the Pixel & Tonic team. Brad Bell joined in 2010 as ‘Chief Mixologist’ (aka "Chief drinks maker").
Then a slew of other top tech talent, including former EllisLab CEO, Leslie Camacho as CCO.
Pixel & Tonic Team (Dec 2019)
Unsurprisingly, Pixel & Tonic sold all their ExpressionEngine plugins to EE Harbour — which allowed them to focus purely on Craft CMS.
The popularity of the CMS has grown year on year since it’s original release.
Brandon shared growth stats in his State of Craft keynote from the Dot All conference in 2021.
Who uses Craft CMS?
In terms of popularity, as of July 2025 BuiltWith tells us there are over 46,000+ live Craft CMS websites on the internet.
With the majority of Craft sites located in the United States, the United Kingdom, and Europe:
- United States ~ 16,000
- United Kingdom ~ 5,500
- Switzerland ~ 3,000
- Netherlands ~ 3,000
- Belgium ~ 3,000
- Germany ~ 3,000
- Australia ~ 2,300
Some high-profile Craft users include:
- Netflix
- Adidas
- VW
- Intel
- Sonos
- Salesforce
- Moz
- Atlassian
- Oakley
- Dalai Lama
There's no real discrimination between the size of the organisation or website project. Craft has been adopted, across countless industries and sectors — from international business, SMEs, and websites for startups — to mom-and-pop shops.

Companies that use Craft CMS
Netflix, Atlassian, Sonos, Moz, Salesforce, Intel, Oakley, Hootsuite, The Dalai Lama, Pingdom, Reddit, Mixmag, AP, Foursquare
But what makes Craft CMS so good?
It’s difficult to pinpoint one exact thing that makes us want to be Craft CMS developers — but as experienced website consultants, if we were pushed for an answer we’d boil it down to these 2 points:
1. Craft CMS makes no assumption about the content
At its core Craft CMS makes no assumption about what the site needs to do or be.
We’ve yet to find a situation where Craft CMS can’t easily give us exactly what we want on the front-end; something you may be unfamiliar with if you’ve ever used ‘theme builders’ on other CMSes.
Pixel & Tonic sum it up nicely on their website:
Build exactly what you want from the ground up, rather than wrestling with a pre-built theme.Craft CMS Website
The admin area takes the same approach too. It assumes nothing about what the content is or how it’s structured and simply lets us manage the content.
2. Built-in features
Craft CMS comes with a solid set of built-in features.
Many of Pixel & Tonic’s ExpressionEngine add-ons were repurposed and built into the core of Craft CMS.
That means that there’s scope for achieving more of what you need to do natively — rather than relying on plugins to bridge a functionality gap.
But that’s not all...
A brilliant Control Panel
Craft CMS isn’t just developer-friendly — it’s a joy for content editors too.
The Control Panel is beautifully designed, fast, and genuinely nice to use. Managing content, tweaking settings, and spinning up new sections all feel intuitive and well thought-out. Dare I say… fun?
It’s responsive, clean, and works beautifully on smaller screens — ideal for time-poor content writers trying to squeeze in edits on the move (or, let’s be honest, on the toilet).
Accessibility is baked in from the ground up, with thoughtful details like keyboard navigation, focus states, and screen reader support — so everyone can use it confidently.
And if you’re a developer, the Utilities section will become a regular go-to. Whether it’s clearing caches, managing users, or running queue jobs, it’s all at your fingertips without needing to dive into the command line.

Craft CMS Control Panel
A joy for developers and content authors alike.
PHP info is right there — as well as a report showing you whether your server is meeting all of Craft’s server requirements.
There’s even a Deprecation Errors page to flag up any issues you might have with future versions of Craft.
Author drafts
When writing content, an author can choose to save an entry as a draft rather than publish it straight away.
Though in itself that's fairly standard, Craft CMS once again takes it to the next level, by offering change tracking.
This allows multiple authors working on drafts to merge each other's changes, which is incredibly useful to make sure you don't overwrite your colleague's work.
Advanced filters
With the release of Craft 4, Craft CMS introduced advanced filters to the entries panel. This means you can filter for entries based on the value of any custom field you've created - with and/or logic built in. This will make finding entries on large sites much simpler than before.
Use the Matrix for repeating content blocks
The Matrix allows you to define repeating blocks of content within an entry — and each repeating block can be made up from one or more of Craft CMS Custom Fields.
In Craft 5, Matrix blocks have been upgraded to support full nesting and decoupled entry types. This means that a Matrix block is treated as a standard entry, allowing you to nest blocks within other blocks, reuse entry types across different sections, and build complex layouts without duplicating fields.
A simple example of where to use a Matrix block is a web page showing team members in a company. You would set up a Matrix block with just the fields each team member needs:
- Name
- Role
- Photo
- Bio
Content authors can click the ‘+ Team Member’ button to add a new team member — and the correct Custom Fields would appear, ready to be filled in.
Matrix blocks can easily be rearranged. In the context of the team members page, promoting a person is as simple as dragging and dropping the blocks into a new order.

Craft CMS Matrix
Define repeating blocks of content within an entry — made up from one or more of Craft CMS Custom Fields.
But the Matrix really comes into its own when using multiple block types.
A simple webpage could have the following sections:
- Text
- Image
- Testimonial
We’ll call these the Block Types.
Within each block type, we can define the Custom Fields it needs.
For example, the Testimonial block could have:
- Testimonial
- Name
- Quote
- Photo
And the Image block could have:
- Image
- Photo
- Description
- Photographer
With the block types defined, the content author can start to build up the page in the order that best suits the article.
The article could start with a block of text and then show a sequence of images. Or start with a Testimonial, move on to a block of text and then back to another Testimonial.
It’s totally up to you.
The Matrix gives authors freedom to create engaging content without them having to code HTML or paste in [shortcode]s.
The Matrix can be as simple or complex as you need it to be.
We’ve used it for team profiles and blog articles — right through to full landing page builders which allow authors to design complex pages from a set of content types like; image galleries, contact forms and videos.
Developers have complete control over the template markup and content defined in a Matrix block will output exactly the way you want it to.
Again, no more wrestling with pre-built themes or code.
You can now nest Matrix blocks within other Matrix blocks, allowing for more complex and flexible content structures. This is a game-changer for building intricate layouts without relying on additional plugins.
Craft CMS Tip:
The Matrix isn’t just for entries. You can get creative and use Matrix fields in categories, tags, globals, assets and users too.
Edit images in the Control Panel
Editing images for websites can be a laborious task. The less time you need to spend in Photoshop the better!
Craft CMS's baked-in image editor won’t replace Photoshop — but does come with some handy editing tools:
- Rotate
- Flip
- Crop
- Focal Point
Set the focal point for responsive images
In the age of responsive web design, getting the image to look great across all screen sizes can be difficult and time-consuming.
Previously, we’d need to create a different image crop for each screen size to make sure the main elements of the image were positioned in the right place.
It. Was. Tedious.
Craft CMS allows you to set the focal point, or gravity, on a single image.
In conjunction with Image Transforms, Craft CMS uses the focal point setting to resize and crop the image — keeping the main subject the centre of attention.

Craft CMS Image Editor
Edit, crop and set focal points on images — within the control panel.
Build beautiful (data) relationships
Craft CMS makes it easy to connect and cross reference entries.
Need a ‘Related Blogs’ section? No problem.
Adding a set of Speakers to an Event? Easy.
Craft CMS’s handling of relationships is first class. You can even create new related entries from within the parent entry.
There’s no need to save, create a new entry, go back and add then add the new entry — it can all be done from the same place. A lovely feature and a great time saver.
You can choose which entries can be related to each field, for example only Blog entries can be related to the Related Blogs field. And you can add more advanced limitations here including only allowing entries with a certain category to be relatable.
Decoupled Entry Types
As of version 5, Entry types are no longer tied to specific sections. This means you can reuse entry types across different sections, streamlining content modelling and reducing redundancy.

Craft CMS Tip:
Editing lots of content? You can use a keyboard shortcut cmd + S on Mac or ctrl + S on a PC to ‘Save and continue editing’.
Preview your content before publishing it
Live Preview does exactly what you’d hope; it shows you a live preview of your content on the front-end of your web page — updating in real time as you add and edit it from the Control Panel. In Craft Pro, you have controls to change the viewport to mobile, tablet, and desktop views.

Live Preview
Preview what your content will look like before hitting the publish button.
Many other CMSes allow you to preview the entry before it’s posted — but I’m not sure if this has ever been executed as well in a content management system as it has in Craft.
It’s a killer feature — and one that usually gets an ‘oooh’ from clients when we demo it to them for the first time.
Custom fields for custom content
Custom fields are the backbone of a great and true CMS.
Content can come in many guises: text, images, video — and everything in between.
Out of the box, Craft CMS comes with a healthy set of custom fields to help build the admin interface your client will use to create content.
Addresses
— Similar to a Matrix field, but it manages nested address elements instead of entries.
Assets
— Relate assets (such as images) to other elements.
Button Group
— A compact, graphical option for selecting a single value from a list.
Categories
— Relate categories to other elements.
Checkboxes
— A group of checkboxes.
Colour
— A hexadecimal colour input with a preview of the current colour. On browsers that support
input type="color", clicking the preview opens the native colour picker.Content Block
— Group existing fields into a reusable bundle.
Country
— Select from the list of countries made available via address elements.
Date/Time
— A date picker, and optionally a time picker as well.
Dropdown
— A single-select dropdown input.
Email
— A plain text field with automatic email validation.
Entries
— Relate entries to other elements.
Icon
— Pick an icon from the FontAwesome library.
Lightswitch
— A simple toggle input for a “Yes” or “No” answer.
Matrix
— Create multiple blocks of content within a single field.
Money
— A plain text field with automatic money formatting.
Multi-select
— A multi-select input.
Number
— A text input that accepts numeric values.
Plain Text
— Single-line or multi-line input for plain text.
Radio Buttons
— A group of radio buttons.
Range
— Pick a number with a visual slider.
Table
— A customisable table with multiple rows of content.
Tags
— Relate tags to other elements.
Time
— Select a time (e.g. start time for an event) without an attached date.
Users
— Relate users to other elements.
URL
— A plain text field with automatic URL validation — for websites, phone numbers, or email addresses.
Customise the field layout for each section
To assign Custom Fields to sections in the Control Panel, Craft CMS provides you with an intuitive drag-and-drop editor to build up fields for different types of content your client needs.
In addition to being able to order the fields how you'd like, Craft CMS also allows you to add UI elements such as headings, tips, warnings, line breaks, and even custom templates to each section's field layout. This greatly enhances the authorship user experience and makes sure admins understand how to create the content they need to.
You're also able to relabel fields and add custom instruction text depending on the section it's in. This can be useful if, for example, an image should be square in one section, but widescreen in another — you can change the instruction text without having to create two separate fields! Equally, you might want to have different field names for developers and authors, such as "Masthead -- no image" for developers, but just "Masthead" for authors.

As of Craft 4, Craft CMS supports native conditional fields. For example you could only show the "Image Caption" field if the "Image" field has an image attached.
From here you can also group information for the entry page into tabs. We often use one tab for the main entry content and one tab for the entry's SEO data.
It’s completely optional — but does help group content together in logical chunks.

Get content in the right place with Section Types
In Craft-land, content falls into one of four types:
Singles
Perfect for Homepage, About us and Contact pages. Basically, anything that’s a single page that doesn’t need to be ordered or have a date associated with it.
Channels
Channels are great for date based content like Blogs, News or Events.
Structures
Structures are for content that has to be in a specific order. Ideal for resource sections, people profiles, or services your business offers.
Structures can be hierarchical too — and are perfect for something like services, which might have sub-services below them.
It’s up to you how to organise the content — but the Section Types in Craft give you more than enough freedom to make it feel like you’re never shoehorning content into somewhere it doesn't belong.

For everything else, use Globals
For smaller chunks of content, developers can also set up Global fields which have a dedicated section in the Control Panel.
This is where you might add site-wide setting that aren't necessarily part of an entry — such as the cookie policy popup text, your site logo or a favicon.
Multiple types of entries
Entry Types is a magical setting that can transform the way you think about creating content.
Each Channel and Structure can have multiple Entry Types — effectively extending or completely altering the type of content available within that entry.
Confused? Yes, me too at first.
Imagine your website needed a News section. Not uncommon. The most simple approach would be to create a News Channel and have one Entry Type called News.
Now imagine there are two different types of news; articles, and announcements.
You could create a new Announcements Channel, but this doesn't feel like the right decision since they're both types of news.
This could be achieved with Categories. But where having a new Entry Type shines is that you can post Event and News in the same Channel and have a unique set of Custom Fields for each Entry Type.
The Announcements Entry Type could include the same or completely different custom fields as the News Entry Type.
Entry Types can have their own front-end template. The design, layout and content the visitor sees can change according to which one is being displayed.
It’s a flexible system that you can get super creative with. Add Categories and Tags into the mix and you’ll end up with several ways to build and administer content in a logical, easy to manage way.
Powerful, PHP-free templating language
One major factor that sets Craft apart from other content management systems is that it uses a templating language called Twig, rather than PHP.
There is no inline PHP allowed in the templates. This means that your templates stay beautifully clean, and any complicated logic is deferred to the Craft application.
Templates are easier for everyone to understand. It also prevents poorly written code from clunking up your site — an issue that can affect performance, security and maintainability.
To add your own custom PHP, Craft CMS allows you to easily extend its app by adding your own modules and plugins.
This might seem restrictive at first, but forcing web developers to structure their PHP properly rather than dumping it into the template is great for the long term health of the project.
The Future: Craft 6 & The Laravel Revolution
If you're already running Laravel, this is a game-changer. Craft 6 is completely porting its core to Laravel, meaning it will register natively as a Laravel package. This lowers the barrier for developers, future-proofs your tech stack, and makes complex app integrations incredibly clean.
Organise front-end templates however you like
You can set up your Craft template folder structure however you want.
With the use of Twig’s include(), you can segment your templates up into reusable chunks. For example on the News page, you could include a news-preview partial.
This is a great way to keep coding DRY, reusable and maintainable and work fantastically with design systems.
Within Twig you can write macros, which are essentially little functions that generate bits of templates for you.
One of the macros we’ve written called navLink() generates the markup for a navigation link, so we only need to update it in one place.
{% macro navLink(params) %}
<li class="nav__primary__item nav__item{% if params.active %} nav__item--active{% endif %} f_semibold">
<a class="u_no-dec nav__primary__link" href="{{ params.url }}">{{ params.title }}</a>
</li>
{% endmacro %}Having to write this every time would be inefficient and more likely to be inconsistent — thus saving us time and headaches!
Easy custom URL routing
Routes allows you to manually choose the URLs for all of your sections, eg: News article URLs should be /news/{article-title}.
That’s a powerful feature when you want your News Index to be called News Index in the Control Panel but you want the URL to be /news/.
Anything more complicated than that is super easy too.
You can set custom routes with a simple pattern matching system that can be done through the Control Panel or in the routes.php config file. It's also possible (and simple) to include variables in your routes.
We always recommend using routes.php because then everything is safely saved in version control.
For example, if you're building a property website, you could set up a custom route like so:
return [
'properties' => ['template' => 'properties-index']
];And you may then also want to pass a variable into your template:
return [
'properties/<propertyid>' => ['template' => 'property-details']
];
which will expose the propertyid variable to the template, so you can use it like any other variable:
{{ propertyid }}
Really simple and super useful!
Multisite CMS from one Craft installation
Craft CMS comes with multisite straight out the box. You can run and manage multiple sites from one Craft CMS install but share data, templates and assets across them all. Boom!
We worked on a multisite project for The Church of England which needed 20 individual sites, with different user access permissions, running on different domains—but sharing the same templates and themes. It’s a setup we’ve replicated across several of our enterprise multisite case studies, proving that you don't need clunky third-party plugins to manage complex digital networks.
Multi-lingual support
Craft CMS's native multisite is also how multi-lingual sites can be created. You can set your (for example) French website to use exactly the same templates and entries as your English site, and use the language switcher within the Control Panel to write the French content.
One-click updating via the Control Panel
Craft CMS allows admins to update Craft and any plugins through the Control Panel with a handy update button.
A database backup is automatically created before performing any updates, and will automatically roll back if the update fails for any reason, so we have no anxiety around clicking update. This hasn't been the case with other CMSes.

...Or update from the command line
Whilst non-major updates can be installed with one-click through the Control Panel, you might not want to do that for a variety of reasons; testing, risk of failure, clients clicking it when you don’t want them to, etc.
Luckily, Craft CMS has a solution for this too.
You can update Craft — and any plugins — through the command line and disable the ability to update them via the Control Panel with a config setting.
Run ./craft update from the command line and it’ll list all available updates for your version of Craft.
Then run ./craft update all will update everything for you and save the changes into composer.json, so everything is stored in Git.
This means you can update locally, test everything out, then deploy to production and have the updates run as part of the deployment process.

Migrating to Craft CMS 5
With older versions like Craft 3 now unsupported, upgrading to Craft 5 is essential for security, performance, and future features. As a certified partner, we have successfully migrated dozens of legacy Craft 3/4 platforms to Craft 5. For example, our work with the Cardo Group involved complex data mapping and custom plugin refactoring to ensure a zero-downtime transition.
🛠️ Running an older Craft 3 or 4 site?
Legacy versions are officially unsupported, leaving your business exposed to security risks. Let our certified team handle your database schema mapping and transition with zero downtime.
Storage for all your media assets
Assets are where you store the sites media — such as images, documents and videos.
When stored as Assets, items can be assigned to entries to populate the website content.
Like Section Entries, Assets can use Custom Fields to enhance and customise the information stored within the asset.
A video asset could have Director, Length, and Year Custom Fields assigned to it to help filter the entries on the front-end or in the Control Panel.
Assets are stored within Filesystems, each of which can even have their own user permissions; helpful if you have a set of assets that should never be deleted by click-happy admins.
Filesystems can local folders, or external storage such as an Amazon S3 or Digital Ocean Spaces.
From a user administration point of view, the Assets drag and drop functionality is easy and intuitive to use.

Craft CMS Assets
Assets are where you store the sites media — such as images, documents and videos.
Craft CMS Tip:
Need more storage or want to keep your assets off the server? You can connect Craft to Amazon S3 with the Pixel & Tonic Amazon S3 plugin.
Image manipulation on the fly
In addition to the built-in Image Editor, there’s also a more programmatic way to manipulate images using Image Transforms.
Instead of forcing content admins to upload images at specific dimensions, Craft CMS lets you define custom image resizing rules.
Image Transforms let you set the final image output's width and height — along with whether the image should be cropped or stretched to get to the final dimension.
You can define where the crop should start from using pre-set parameters:
- Top-Left
- Top-Center
- Top-Right
- Center-Left
- Center-Center
- Center-Right
- Bottom-Left
- Bottom-Center
- Bottom-Right
Image Transforms allow you to set the image quality on-the-fly; helpful when trying to shave off kilobytes from images to improve page loading speed.
The Image Format setting lets you specify the image output type as either JPG, PNG or GIF.
We’ve found this immensely helpful thwarting content admins who insist on uploading high-res photos saved as PNGs!
No matter what image settings you apply, the original image will stay intact on the server — so you’ll always have that available if you need to reuse it at a different size on the site.
You can also set a maximum image upload size in the site configuration, to prevent large photos from being uploaded in the first place.
Image Transforms can be defined in the Control Panel or directly in the code. We tend to take the latter approach so that the transforms (along with Routes) can be version controlled.
Multi-environment config file
An overlooked but incredibly important and powerful feature of Craft CMS is the use of an environment file.
The environment file lets you specify things like database settings, site URL, and API keys for third-party services.
The important point here is that settings in this file will be environment-specific.
One developer’s database settings will be different from another’s, which will be different from the staging site — and should definitely be different from the production site.
Keeping these settings in an environment file eliminates the need to edit app files directly on the server, reducing the risk breakages due to human error.
Because environment files are not stored in Git (they shouldn't be, anyway!), it’s also an added security measure as your passwords aren’t saved anywhere but your own computer.
It also has the added bonus of reducing Git conflicts and developer headaches, if, for example, Alice prefers to develop on example.local, but Bob prefers example.dev.
Keep projects in sync across different environments with Project Config
One of the biggest headaches with any CMS is keeping development and production databases in sync.
Craft CMS has solved this issue perfectly by having Project Configuration files (a folder full of .yaml files), which saves the structure of the project, without saving the content.
The Project Config allows us to keep in sync:
- Asset volumes and named image transforms
- Category groups
- Craft and plugin schema versions
- Craft edition
- Email settings
- Fields, field groups, and all field layouts
- Global sets (settings only, not their content)
- GraphQL schemas, and the access settings for the public schemaMatrix block types
- Plugin versions, editions, and settings
- Routes defined in Settings → Routes
- Sections and entry types
- Sites and site groupsSystem name, time zone, and status (live/offline)
- Tag groups
- User settings and user groups
Essentially everything that isn't content.
The Project Config can be deployed directly when going to production. By clicking the “Sync Changes” button in the Control Panel the database is then updated according to the project config data.
This saves us so much time.
The previous option was to either tell clients to not make any changes while we develop (content freeze!) — or to manually replicate any database changes we made when adding a new feature (hassle, prone to error).
It also means the project config can be checked into Git, so Alice and Bob can both develop without having to email or Slack their database to each other.

Craft CMS Tip:
You can also sync project changes automatically on deployment, with the command ./craft project-config/apply or ./craft project-config/rebuild if you need to rebuild from scratch.
Logically group content with categories and tags
Categories and Tags help keep content organised.
Set up as many Category Groups as you need and then apply Categories to any element (Entries or Assets) with a Categories field.
In a similar fashion, Tag Groups can contain their own unique set of tags — which can be created on the fly from a Tags field.
Using either or both together — Categories and Tags are a powerful and logical way to group content into meaningful sets.
Users, User Groups & Registration
On installation, Craft CMS sets you up as an Admin with full permissions to do everything you’ll need to as the site creator.
If more people need access to the Control Panel, you can set up and assign them to User Groups and give users specific permissions.
Users within User Groups share the same permissions and can be updated en masse. Permissions, on the other hand, allow you to fine-tune individual users' access.
You can also decide which users can see which Globals, to avoid a client accidentally changing important settings.
Craft user permissions are extensive and incredibly flexible.
- Access the site when the system is off
- Access the control panel
- Access the control panel when the system is offline
- Perform Craft CMS and plugin updates
- Access Plugin Name
- View users
- Edit users
- Register users
- Moderate users
- Administrate users
- Impersonate users
- Assign user permissions
- Assign users to this group
- Assign users to Group Name
- Delete users
- Edit users
- Edit Site Name
- View entries
- Create entries
- Save entries
- Delete entries
- View other users’ entries
- Save other users’ entries
- Delete other users’ entries for site
- Delete other users’ entries
- View other users’ drafts
- Save other users’ drafts
- Delete other users’ drafts
- Edit Global Set Name
- View categories
- Save categories
- Delete categories
- View other users’ drafts
- Save other users’ drafts
- Delete other users’ drafts
- View assets
- Save assets
- Delete assets
- Replace files
- Edit images
- View assets uploaded by other users
- Save assets uploaded by other users
- Replace files uploaded by other users
- Remove files uploaded by other users
- Edit images uploaded by other users
- Create subfolders
- Utilities
- Updates
- System Report
- PHP Info
- System Messages
- Asset Indexes
- Queue Manager
- Caches
- Deprecation Warnings
- Database Backup
- Find and Replace
- Migrations
Front-end user registration forms
Public Registration is off as default — but if required visitors can self register as Users through a front-end form.
The User Group and Permissions can be assigned on form submission — making Craft perfect for membership sites, guest posting opportunities and member-only content.
Keep developer teams in sync using Composer
With other CMSes, plugins were a big mess of unsorted ZIP files downloaded from various unmanaged places on the internet and then uploaded to the server.
This nightmare is over with Craft CMS.
The CMS itself, any plugins you’re using, and their dependencies are all managed through Composer.
The version-controlled composer.json knows the exact version of Craft you're using, and the exact version of any plugins you're using.
All your web development team needs to do is run composer install from the command line and composer will download all the correct bits and bobs you need.
Again, no more sending ZIP files to fellow developers. Yay!
GraphQL and Headless Mode
Out the box, Craft CMS has full support and functionality in place to use Craft as a headless CMS.
Through the CMS's GraphQL area you can test queries, and create access tokens and schemas for security.
This is super useful if you're creating a project with a JAM Stack approach, as your database and content is decoupled entirely from your front end code.
We leveraged this API-first architecture when building the platform for Global Connections, integrating custom internal databases in real-time. By pairing a fast headless backend with a completely redesigned, highly intuitive user experience, we helped them achieve a 3x increase in time on site and a 10.7% reduction in bounce rate.

Craft Cloud
Craft hosting by Pixel & Tonic.
Modern Craft CMS hosting: Servd & Craft Cloud
For modern, scalable hosting, we recommend specialised environments built specifically for Craft CMS, rather than generic VPS hosts. Our primary hosting choice is Servd, which provides dedicated Docker container environments, automated asset syncing, and staging-to-production workflows tailored specifically for Craft developers. We also support and recommend Craft Cloud, Pixel & Tonic's official managed serverless hosting platform, which provides instant scaling, edge caching, and zero server maintenance straight out of the box. Both options keep your site secure and highly performant.
Dev Mode for testing and debugging
When Dev Mode is enabled, Craft will react slightly differently and makes developing with the CMS even easier.
With Dev Mode on, if there’s an error in your Twig template code, Dev Mode will display a full stack trace in the browser showing you what’s gone wrong and where abouts.
Dev Mode will display PHP errors and exceptions, template syntax errors and extra logs will be created in the craft/storage/runtime/logs folder to help you work out what’s going wrong and how to fix it.
Dev Mode is on by default.
You’ll know it’s active by seeing a strip of construction tape along the top of the Control Panel.

Craft CMS Tip:
Dev Mode should always be turned off for production environments.
Error messages look ugly to visitors — and the full stack trace could potentially expose a vulnerability to visitors with malicious intent.
We set Dev Mode on or off automatically depending on if we're in production or not with 'devMode' => getenv('ENVIRONMENT') != 'live'. This helps us reduce human error.
Further Reading
Super helpful Yii Debug Toolbar
Craft CMS is built on the Yii PHP framework and baked into Craft is the Debug Toolbar.
By the flick of a user preference, the Debug Toolbar can be configured to appear at the bottom of the browser window of your Craft CMS site — whilst viewing the Control Panel or the front-end.
It shows statistics and information about the page you’re currently viewing — including:
- Timeline
- Block and macro rendering time
- User
- Router
- Requests
- Logs
- Deprecation Errors
- Database Queries
- Memory Usage
You can drill down into each set of data to see more information to help debug your site.
Or use the data to streamline your page loading speed by seeing where the database queries are coming fro, and where performance bottlenecks are.

Craft CMS Tip:
Try before you buy! As long as you’re running the site on a domain Craft does not consider to be public you’re free to try plugins out before shelling out hard cash for them.
Craft is fast
Speed isn’t just a nice-to-have — it’s a ranking factor.
Google uses page load time as part of its search algorithm, and Core Web Vitals are baked into how your site is scored. A slow site frustrates users, increases bounce rates, and can cost you rankings, conversions, and revenue.
That’s where Craft CMS shines.
Unlike bloated platforms that rely on hundreds of third-party plugins or heavy page builders, Craft keeps things lean and focused. It outputs clean HTML, doesn’t load unnecessary scripts, whilst giving developers complete control over front-end performance.
From a Google PageSpeed Insights perspective, Craft sites are well-placed to perform brilliantly. We can regularly hit 90+ scores on mobile and desktop — because we build with speed in mind from the start.
Speed and performance were front and centre when we rebuilt the digital platform for Pinkmoon. By leverage-optimising Craft's native caching and image transforms, we successfully reduced their bounce rate by 10.2% and boosted user engagement by 5.8%.
Need caching? Craft has it. Need image optimisation? It’s built-in. Want to lazy load assets, defer scripts, and reduce server requests? No problem. Craft doesn’t get in the way — it enables best practice.
And because it’s not doing anything you didn’t ask it to, there’s less technical debt. Less bloat. Less faff.
For you, that means:
• Faster websites that load in under 2 seconds.
• Better SEO performance, especially on mobile.
• Happier users, who stay longer and convert more.
• Lower bounce rates, higher engagement, better ROI.
Craft is brilliant for SEO
The fact that Moz use Craft CMS for their website should tell you pretty much everything you need to know about how good Craft is for search engine optimisation.
Out the box, Craft assumes nothing — even when it comes to how you roll your SEO.
Because you mark up template HTML you have complete control over the on-page SEO.
There are typically two approaches you can take: 1) Install a plugin or 2) create your own search engine optimisation custom fields.
We use SEOmatic, which is one of the most popular paid plugins in the Craft CMS Plugin Store. It's very feature rich and does the leg work for you in terms of creating the core set of search engine optimisation fields you’ll need, including structured data. We’ve used SEOmatic several times and have been impressed with the depth of options available.
Thanks to the default Asset fields it’s easy to output image Alt and Title Tags (another SEO win).
Routes should get another mention here too — as adding keywords to your sites URLs is simple with Craft and is just one of the many (alleged!) Google ranking factors.
Craft CMS is secure 🔒
Simply put — Pixel & Tonic take security seriously, and the platform has an exceptional security track record. In Craft 5, Pixel & Tonic introduced native support for Passkeys (WebAuthn), enabling passwordless, biometric logins (using Touch ID or Face ID) for admin panels. As a security-focused agency, we actively configure and recommend Passkeys/MFA for all client admin panels to prevent credential stuffing and brute-force attacks.
Off the back of a detailed StackExchange answer about Craft CMS security, the team wrote a Security Q&A post which follows on and expands from Brad Bell’s (Pixel & Tonic CTO) StackExchange post.
Further Reading:
Also see the Securing Craft Guide: a guide to making your Craft installation secure.
A community of Craft CMS developers
The growing Craft CMS community is one of the most talented groups of developers we’ve ever come across.
There’s a regularly updated list on the Craft CMS Awesome page where Craft peeps go.
Some of the most frequented Craft CMS developer community hangouts are:
- Discord — Craft CMS
- Craft CMS Meetups
- Craft CMS StackExchange
- Workwithcraft.com — Job Board
- Craft CMS on BlueSky
- Craft CMS on Mastodon
- Craft CMS on Facebook
- Craft CMS Link List — Newsletter
- Slack — Craft CMS [🪦 RIP; moved to Discord]
Note: Craft are no longer on Twitter / X — but there is now an officially unofficial Craft CMS parody account.
Craft CMS Conference:
Pixel & Tonic put on a Craft CMS developer conference each year called Dot All Conference.
Host Craft CMS everywhere
With the increasing popularity of Craft CMS it's inevitable that hosting companies have started to offer Craft CMS specific server setups - including:
There are also guides for setting up Craft on:
We’re currently using DigitalOcean servers — which have been fast and reliable and easily meet the Craft server requirements.
How much does Craft CMS cost?
Craft falls into 3 pricing plans — all depending on your needs.
Solo — FREE
For when you’re building a website for you or a friend.
Includes:
- One user account — The Solo edition is limited to a single admin account.
- Ultra-flexible content modelling — Define custom content types, fields, and relations needed to perfectly contain your unique content requirements.
- Multi-site + localisation — Serve multiple related/localised sites from a single Craft installation.
- Advanced previewing — Preview your content from multiple targets, including single-page applications.
- Twig + GraphQL — Define custom front-end templates, or use Craft headlessly with the auto-generated GraphQL API.
Team — $279 Per Project
For when you're building something for a small team.
Includes everything in Solo, plus:
- Up to five user accounts — Create up to five user accounts (including admin accounts).
- One user group — All accounts belong to a “Team” user group with customisable permissions for non-admins.
- Developer support — Get developer-to-developer support right from the Craft core development team.
Pro — $399 Per Project
For when you’re building something professionally for a business or organisation.
Includes everything in Team, plus:
- Unlimited user accounts — Create unlimited user accounts with per-user permissions and user group assignments.
- Unlimited user groups — Create multiple user groups with custom permissions.
- Branded control panel — Personalise the control panel for your brand.
- Branded communication — Customise system email messages and provide a custom email template.
Enterprise — Get in touch with Pixel & Tonic
There's also an Enterprise version for when the project has specific licensing requirements. This includes everything in Pro, plus:
- First-party SAML SSO
- Custom license agreement
- Procurement support
- Dedicated premium support
Just like plugins, these versions of Craft can be tried before buying as long as your not developing on what Craft considers to be a public URL — it will let you test on URLs such as localhost, 127.0.0.1, mysite.test, etc.
Upgrading Craft from one version to another is done in the Control Panel. It’s a simple process — click to upgrade and then enter your (or your clients') payment details.
There’s also the option to create a Craft Console account which connects to a separate website where you can view your order history and manage your Craft and plugin licences.
Try the Craft CMS demo
If downloading and installing Craft locally seems like too much effort to test it out — there’s a Craft CMS demo you can take for a spin.
Enter your name and email and Pixel & Tonic will automatically spin up a full-featured installation for you to try out.
Limitations, downfalls and criticism of Craft CMS
There’s a lot to love about Craft — but it does come with (and it would only be fair to mention) some caveats.
Craft is not free
This is usually the first reservation developers have about trying Craft CMS.
In a world of open-source CMSes it does seem a tough pill to swallow — especially if you’re a lone Craft CMS freelancer.
But for the amount of functionality and features — and if you’re pricing projects correctly — IMHO the fee is nominal.
You can think of the licence fee as a guarantee that Craft CMS will continue to be actively developed by a first-class team of developers and a passionate community.
PS: If you think $399 is expensive for a content management system you should check out SiteCore's pricing:

It can be a steep learning curve for developers
Getting your head around Craft’s Section and Entry Types can be daunting. It’s a different way to approach content than many other CMSes.
Due to Craft’s flexibility, there are similar ways to achieve similar outcomes — but finding the best way is something only time and experience (and Googling) will tell you.
Developers coming from CMSes where you can just paste in PHP wherever you feel like it may struggle with Craft CMS's rigid structure for adding modules, but it's for the greater good of code quality and maintainability.
You could be effectively learning Craft and Twig for the first time at the same time.
The documentation can be confusing — especially when you’re unsure if it’s a Craft or a Twig issue you’re searching for — though the docs are definitely improving.
It has a smaller developer community than other CMSes
As of 2026, the Craft CMS StackExchange community has over 14,000 active users — which is dwarfed compared to the 220,000 users in the WordPress StackExchange group.
We’ve had clients specifically request that we do not use Craft.
Being the only Craft CMS developers they knew — they were fearful of not being able to find replacement developers if Honcho fell off the face of the internet.
I did point them towards the StackExchange and Slack groups to give them confidence in the growing communities of Craft CMS devs — but it didn’t help swing the deal.
For reference, the top CMS based StackExchange’s are:
- WordPress — 220,000 users
- Drupal — 74,000 users
- Magento — 97,000 users
- Craft CMS — 14,000 users
- Joomla — 13,000 users
- SiteCore — 15,000 users
- ExpressionEngine — 10,000 users
Not bad considering Joomla has been going since 2005.
Lego vs Craft CMS
Just for context (and the fact that I love Lego) — ‘Bricks’ the question and answer site for LEGO and building block enthusiasts has 24,000 users.
The Craft community may be comparatively small — but as mentioned earlier in the article — it is mighty.
Members of the StackExchange group answer 90% of all questions posted there, compared to 70% on the WordPress StackExchange. (Source: StackExchange)
The official Discord community has over 9,000 active members who support each other daily. (Source: Discord)
Lack of Plugins
The plugin ecosystem is infinitely better now than it was before Craft Version 3 with the addition of the Official Plugin Store.
But with ‘only’ 800+ plugins available (as of 2026) it does look like a ghost town in comparison to the 59,000+ plugins available to WordPress users.
Two reasons for this could be:
- Craft does more out of the box than WordPress, so fewer are needed.
- A more developer-based community may just write their own custom modules without publishing them.
- That same developer community could mean people contribute to open source plugins - rather than write their own - so you don't end up with 10 plugins that do the same thing!
Lack of themes
Craft doesn’t come with themes in the same way other CMSes do.
There’s no theme installer or theme switcher.
Craft is very much geared towards developers creating their own bespoke front-end templates — which harks back to Craft’s philosophy:
For craftsmen who wouldn’t touch an off-the-shelf theme with a ten-foot stick.
How does Craft compare to WordPress?
WordPress powers a huge share of the web, and for a simple blog it does the job. But the “is there a plugin for that?” model is exactly what we moved away from: every plugin is another dependency to maintain, another security surface, and another thing standing between you and the markup you actually want. Craft assumes nothing about your content or your design — you build precisely what the brief needs, on lean code you control.
We’ve weighed both platforms up properly, feature by feature, in our dedicated guide. Read the full Craft CMS vs WordPress comparison →
Key takeaways
- Craft CMS is built for flexibility. It makes no assumptions about your content or design, giving developers complete control and content editors an intuitive experience.
- The Control Panel is genuinely enjoyable to use. It’s fast, responsive, beautifully designed, and packed with thoughtful features — including accessibility support and live preview.
- Performance is a priority. Craft outputs clean, lean code, supports caching and image optimisation, and plays nicely with Google PageSpeed and Core Web Vitals.
- Built-in features reduce plugin reliance. Unlike WordPress, you won’t need to bolt on endless plugins for essentials — many advanced features like custom fields, image transforms, user permissions, and content modelling are native.
- Security is rock solid. Pixel & Tonic has a strong security track record, and Craft’s developer-first architecture avoids many common vulnerabilities.
- Craft Cloud is a modern hosting option. It’s a fully managed, optimised environment maintained by the creators of Craft — ideal for teams who want zero maintenance and top-tier performance.
- It’s trusted by major brands. Netflix, Adidas, Atlassian, Sonos, Salesforce, and Reddit all use Craft — proving it scales for enterprise but stays friendly for smaller teams.
- Yes, it has a learning curve. But once you understand the content model and templating system, the development workflow is powerful, consistent, and scalable.
- It’s not free — but it’s worth it. With so much built in and less need for paid plugins, Craft often ends up cheaper (and better) in the long run.
In conclusion...
If a client is just looking to clothe the site in a generic theme for a run-of-the-mill blog — then there’s absolutely no reason not to use WordPress (or other CMSes).
But if they need something more bespoke — more flexible, with custom web design — and an admin user experience tailored to the way you need to administer content — then you owe it to your clients and their business to try Craft CMS.
🎤🤚

Matt has been designing for the web since 1999. He loves mountain biking, watching Formula 1 and making music.

Reviewed by
Ben Hartley
Matt has been designing for the web since 1999. He loves mountain biking, watching Formula 1 and making music.

Reviewed by
Ben Hartley