In recent years we have witnessed a real explosion of Headless CMSs — at the time of writing, there are 70+ alternatives between open-source and commercial products. That’s a lot of CMSs.
It is a fact that Contentful has been the forerunner of this type of product. Compared to its lesser known competitors, it received tons of investments that it has been able to pour into massive advertising and content marketing operations, so it doesn't come at a surprise that it is often considered a "yardstick" and that people want to know how DatoCMS differs from it.
There are many areas in which we consider DatoCMS to be a much stronger CMS than Contentful, and some others in which we'd consider the opposite to be the case. This in-depth comparison (yep, sorry, long article!) will try to be as balanced as possible: our goal is to ensure that every client and developer get the best possible experience working with a Headless CMS. And, if you find something is missing, please reach to us!
Going into detail, we're going to avoid mentioning the set of "basic" features common to most Headless CMSs, and we'll focus instead on the most peculiar features of both products, grouping them by area.
Ready? Let's go! 🔥 🤼 🔥
It's important to think about the high level direction of a company in addition to the small details when you are deciding whether to invest many hours of work into one platform, so I will start with this.
Contentful is an enterprise services company. Their money is made by selling large contracts for thousands of dollars per month to companies. This is abundantly clear from both their support and pricing models. They offer a large, generous free tier as an "on‐ramp" to get developers to try out their platform and use it to set up sites, or even run smaller or personal sites without any investment at all.
Their professional tier is enormously expensive. Their pricing goes from $0 to $489/$879 per month, which is an absurdly large jump. There is absolutely no way that most small to medium sized sites can justify that kind of cost, given the number of alternative hosting and CMS options that are significantly cheaper, so if you are on the free plan, and they change it, and force you into a paying plan, you either are going way over budget or are forced to drop Contentful and rebuild your site.
I have had many interactions over the years with Contentful staff trying to convince them that caring about small and medium sized applications of their product is a goal worth pursuing, but every attempt had fallen flat.
It's clear that their business strategy does not include this consideration, and that they only see these smaller sites as leads that they could possibly sell into an overpriced enterprise plan.
Seeing as how it has not changed for many years, and how they are getting investment and seem to be doing fine, I see no possible reason that it will change in the future, making it a very unstable platform for anything other than enterprise applications in which the site operator is willing to pay in the hundreds to thousands of dollars per month range for the service.
Tightly related to the above point is just the raw data when it comes to number of customers. DatoCMS has ~25,000 active projects and ~1,500 paying customers as of today, while Contentful in its website talks about ~2,000 customers.
So yes, we’re smaller… but it’s not such an unbridgeable distance as it would seem at first sight from social/marketing presence.
Since we’re less enterprise‐focused we’re extremely receptive to new features and support requests and we pay a lot more attention to what our users want. Our Community-based Feature Request forum constantly directs our efforts on the product.
Again, Jeff in his break-down analysis:
I have requested several features to DatoCMS that have made their way to production in a matter of days, where with Contentful I have requested features for years and they are still not there.
Another important consideration is how likely it is that any given CMS will go out of business and force a migration.
I understand it might be hard to make a call with this one – Contentful is by far the larger and more stable company. But Contentful is a heavily venture‐backed company, which means that it is part of their mission to drive large profits and exponential growth. Slowing from exponential to "doing pretty well, still profitable" means their investors are going to try to force the company to sell and/or shut down to cut their losses in advance. This is just how venture capital works. As such, Contentful is at a much higher risk for being sold, shut down or merged into a different service, and is forced to pursue a very aggressive growth plan, that can quite literally never slow down until they sell or IPO.
DatoCMS, on the other hand, it’s a highly profitable, fully bootstrapped company with a small, hyper-focused team, so it can simply continue to offer its product to its users without all this pressure and taking into consideration only the good of our customers. The possibility of keeping the service active in maintenance mode at low cost is certainly more feasible for us.
The one category where Contentful is ahead is enterprise support, and frankly, they are far ahead. As noted in the initial section, they are an enterprise services company, so this shouldn't be surprising.
We’re just getting started getting accustomed to enterprise support, and we’re very much new to the area. We’ve have handled it pretty well so far — we have lots of happy enterprise customers now! — but if you are working on a job that is in absolute need to very buttoned‐up enterprise support, Contentful will be much stronger in this area without a doubt.
That being said, we have (far) better support on average across all tiers of service – Contentful prioritizes enterprise above all else, so it can be difficult to get what you need as a non‐enterprise user.
Result: DatoCMS wins 4-1
Superior user experience – overall, DatoCMS has a better user experience. This is hard to describe precisely, but the way things are arranged is just easier and makes more sense for clients. This is the #1 reason why people switch from Contentful to DatoCMS. There are fewer levels of nesting, less confusion with drafts and published items, and the interface is cleaner and more friendly. Just try it, you’ll realize it immediately.
Customizable navigation – in DatoCMS, you can customize the navigation bar presented to clients. So, rather than having the default dashboard be a list of all models, you can choose which models are presented for editing, and even nest them into structures in which they make the most sense.
White-labeled admin interface – DatoCMS has a very strong interface white-labeling system. When you are on any paid plan, you can completely customize the interface to the point where you can't tell you're using it at all, and it looks like a custom CMS made specifically for the client. On higher plans, both systems support SSO and SCIM protocol to automatically provision/de-provision users
Collaborative editing – DatoCMS has presence indicators built in, so you always know where your collaborators are and what content they are working on. When a user starts editing a record, it will be considered locked and therefore not editable by other users with a clear indication of what’s happening. Contentful doesn't have presence indicators and you can only find that someone else was editing the same content when you have already started working — at which point it simply warns you that you need to refresh the page and you may lose some data.
Comments — Contentful has a Comments tab that you can use to keep track of relevant conversations within a specific record, which DatoCMS has not.
Result: DatoCMS wins 6-1
Single instance models – DatoCMS has this concept where you can create a model that there could never be more than one instance of, which is often very helpful. For example, if you have an about page with some custom content, you would never have a second about page. In Contentful, you'd need to make an "about pages" model, which has potentially multiple instances, and just instruct people to not make any more. Not having this feature also makes the UI more confusing, requiring strange naming conventions and an extra click level.
Sortable/tree collections – in DatoCMS, you can create collections that can be ordered and/or organized in a tree structure by editors. This is a very frequent need for any site, just think about navigation menus in a website. Having a simple and unequivocal way to manage these cases without having to resort to workarounds helps editors’ and developers’ lives.
Fieldsets – DatoCMS gives developers the ability to group fields of a model into logical sets within the editing interface, helping content editors better understand how the fields of the same model are connected and improve the overall scannability of the forms, defining a clear visual hierarchy.
SEO field – If you are building a website, you surely need to think about SEO and how to write the custom special content search engines and social networks need. In DatoCMS you can find a special SEO meta tags field that makes it extra-easy for editors and marketers and provides a preview of what the tags will look like when published.
Internationalization – DatoCMS was initially built by an Italian agency for whom internationalization is nearly a default requirement for their work. A lot of thought has been put into this system, making it very easy to understand and use. With Contentful, while they have the feature, it's not nearly as straightforward (it becomes quite unmanageable if you have more than 2-3 languages in your project). Additionally, DatoCMS lets you specify at a model-basis if every language is required for a record, while in Contentful editors can just insert a subset of languages with no validation.
Rich-text field – One great feature of Contentful is the rich-text field, a field type that enables authors to enter content in a WYSIWYG editor and save it, not as HTML or Markdown that both have its flaws/limitations and meant to be used mainly for the web, but in a structured JSON format. Other records and assets can be linked dynamically and embedded within the flow of the text, much like you can do with the Medium editor. DatoCMS is going to implement something similar in the near future, but right now it’s not available.
Modular content – DatoCMS has a special field called Modular content that lets you define reusable custom components and build dynamic layouts for ie. landing pages, micro websites, case studies and testimonials. Editors can stack & reorganize blocks on the fly with drag & drop functionality. With Contentful you are forced to use Reference links, but 1) the experience is much uglier and difficult to both configure and use and 2) when you delete a record, it’ll leave a lot of orphan records behind.
Result: DatoCMS wins 4-2
Strongly consistent architecture – Contentful bases their architecture on eventual consistency, which means that after a record is created, if you request that record you may get a 404 since it hasn't replicated to all their nodes. The only way to handle this is to continue retrying until it shows up. This makes writing scripts that utilize its API for adding content or migrating extremely frustrating. DatoCMS has a strongly consistent architecture, so after you create something, it is there immediately, like it said it was.
REST API response organization – when you make a request to DatoCMS, you get back the data in a very clean and organized JSON API format. Any request to Contentful results in enormous amounts of junk data you don't need that you must wade through to get to the content you were after.
API surface area – DatoCMS's REST API covers literally everything you could possibly do, from creating new users, to adjusting those users' roles and permissions, to provisioning models, etc. It makes it very easy to be confident that there is no action within the CMS that you couldn't automate with scripts. Contentful exposes a lot of API surface area as well, but it's not as much as DatoCMS.
Relational queries – Contentful’s REST API allows filtering of entries by values of their reference fields. This is useful for queries like give me all the articles for the author whose name equals “Mark F. Robb”. Neither Contentful nor DatoCMS offer such deep filtering capabilities in their GraphQL API.
Low-quality image placeholders in GraphQL – Contentful and DatoCMS have a pretty similar read-only GraphQL API that you can use directly in your front-end projects to fetch content. The only (huge!) advantage of DatoCMS is the way it exposes advanced image capabilities that let your website serve responsive, lazy-loaded images, complete with predetermined size and low-quality image placeholders in one line of code, without making extra-requests. This way you can avoid any layout jumping, and offer instant previews of images while they load. It’s like magic, and works wonders with Nuxt.js/Next.js/Supper.
Sync API – Contentful’s offers a Sync API that allows you to keep a local copy of all content in a project up-to-date via delta updates, or content that has changed. Without a Sync API, applications have to constantly download all data in each synchronization, including content they are already aware of.
Result: DatoCMS wins 5-1
Image API – DatoCMS uses Imgix as its image processing API. There is absolutely nothing you can't do with Imgix, down to watermarking images, auto‐center‐finding crops, etc. Contentful has their own image processing API which is good, and much better than what most other CMSs provide, but not nearly as good as Imgix, which is a service that specializes exclusively in this field.
Image Focal Points – DatoCMS lets editors explicitly specify focal points for images, ensuring that the key part of your images doesn't get cut off or misaligned across multiple image sizes and ratios. The interface allows them to preview the result of the crop operation on different aspect ratios. You can achieve this in Contentful with custom plugins and link fields, but the experience is much uglier and difficult to both configure and use.
Built-in Video Streaming API – in addition to Imgix for images, DatoCMS offers Mux integration out-of-the-box. This means DatoCMS can ingest almost every available codec — including those for broadcast and professional applications like H.264, H.265, VP9, and Apple ProRes — and make videos instantly available for streaming. Thanks to HLS Adaptive Bitrate (ABR) streaming, every viewer will always download the right video size for their device and connection speed.
Complete Asset Metadata – DatoCMS automatically extracts dominant colors, EXIF data, aspect ratio, filesize, copyright information, geo-location, and automatically tags assets using machine learning. Every possible information about your images is stored in, ready to be used in your websites. With Contentful, you have none of this out-of-the-box. You can install an additional plugin that stores image tags in a separate model, but that's quite inconvenient.
Assets Manager UI – having more metadata stored, DatoCMS offers a lot more filter options to find your files. Moreover it allows you to preview audio and video files inside the interface, and has three different browsing modes (tabular, grid or masonry).
Draft/published status – With Contentful you can set draft/published status on images, while with DatoCMS (still) you can only do that on records.
Result: Contentful wins 2-0
Assets permissions - Contentful lets you give specific permissions to edit/create/delete assets in the Media Area, while in DatoCMS any collaborator can perform changes freely (we’ll address this next month!)
Per-locale editing rules - Contentful lets you allow/deny users permission to edit content in certain languages, while in DatoCMS you can’t do it.
Contentful is certainly a quality product. Much like DatoCMS, it offers lots of value when you're using it to build performant digital experiences.
It's safe to say that the biggest differences here are:
If you're an existing Contentful customer and you'd like to try DatoCMS out, we've built an incredibly easy command-line importer. As of today, Contentful does not offer a direct DatoCMS importer (yet).
At this point, what you prefer is up to you 😊
PS. If you find something fundamental is missing in this article, please let us know via Twitter or our Community Forum, we can't wait to know what the most important features for a headless CMS are for you!