Pick Wagtail if your developers write Python and you want a tailored editing interface with workflows and scheduling. Pick Drupal if you need deep structured content, formal moderation and several languages out of core, and can staff a PHP and Composer build. Both are free to license; both are paid for in developer time.
The short version
Pick Wagtail if your team writes Python. It is a BSD-licensed content management system built on Django. You add it to a Django project, define page types in Python and write the templates, and editors get a tailored admin with workflows, scheduled publishing with expiry and revision comparison, according to the vendor’s features page.
Pick Drupal if your publication treats content as structured data: many content types, several desks with different permissions, several languages or an API consumer. Core includes Content Moderation, multilingual modules and JSON:API. The price is a heavier build, with SEO helpers and scheduling coming from contributed modules.
The deciding trade-off is stack and scope. Wagtail is a focused editorial layer on a Python framework. Drupal is a bigger platform with more in core and more to configure. Our profiles for Wagtail and Drupal go further. Everything here rests on vendor documentation, not our own install, and we name no news publisher as a user of either.
At a glance
| Feature | Wagtail | Drupal |
|---|---|---|
| Licence | BSD-3-Clause | GNU GPL version 2 or later |
| Latest version | 8.0 (25 August 2026); 7.4 is the LTS series | 11.4.9 (repository tags, 9 October 2026); 12.0.0-beta1 is a pre-release |
| Written in | Python on Django | PHP (11.x requires 8.3 or later) |
| Hosting | Self-hosted Django application; compatible with Django 5.2, 6.0 and 6.1 | Self-hosted on Apache, Nginx or similar; Linux recommended; Composer for installs |
| Editorial roles/workflow | Configurable workflows, page-tree permissions, scheduling, revision comparison | Core Content Moderation; roles and permissions; Scheduler is a contributed module |
| SEO & structured data | Contrib sitemap and redirects apps; structured data not verified | Contributed Pathauto, Metatag, Simple XML Sitemap; separate Schema.org Metatag module |
| Multilingual | Separate page tree per locale; Simple Translation; wagtail-localize is third party | Core Language, Interface, Configuration and Content Translation modules |
| Headless/API | Stable read-only v2 API; preview v3 API in 8.0 | JSON:API in core |
| Typical cost | Software free; developer time | Software free; developer time |
| Best for | Python teams wanting a tailored editor experience | Complex, multi-role, multilingual publishers |
Editorial workflow
Wagtail’s features page lists customisable workflows that control who can moderate, review and publish, scheduled publishing with expiry dates, and built-in revision comparison. Page permissions attach to pages and cascade down the page tree. The permission types are add, edit, publish, bulk delete and lock/unlock. Users without publish permission can submit changes for moderation. A group with edit rights on a section gets them on everything beneath it, which maps naturally to desks.
Drupal’s core Content Moderation module expands the unpublished and published states into workflows made of states such as Draft, Published and Archived and the transitions between them. A published version can stay live while a working copy is reviewed, and enabling the module creates a default Editorial workflow. The User Guide covers users, roles and permissions, so a desk-by-desk model is configuration.
Scheduling differs. In Wagtail it is on the features list. In Drupal it comes from the contributed Scheduler module, which lets editors schedule content, media, commerce products and taxonomy terms for publishing and unpublishing. We have not verified how Scheduler interacts with moderation states, so test that pairing.
Both can cover a newsroom’s daily needs. Drupal’s states and transitions are more explicit; Wagtail’s page-tree permissions are simpler to reason about. For approval chains beyond either default, check your own process.
Search, structured data and feeds
Neither system is complete out of the box. Wagtail’s sitemap module builds on Django’s sitemap framework and, once enabled, adds all published pages to sitemap.xml. The optional redirects app creates permanent redirects automatically when pages are moved or slugs change, and has an import command for bulk redirects, which helps migrations. We did not verify structured data, news sitemaps or RSS in the pages we opened.
Drupal asks more of you. Pathauto generates URL aliases from patterns, Metatag provides titles, canonical URLs, descriptions, Open Graph and Twitter Cards, and Simple XML Sitemap generates multilingual sitemaps with hreflang and image support and supports IndexNow. Schema.org and JSON-LD come from a separate Schema.org Metatag module, according to the Metatag page. We did not verify Drupal feed behaviour.
Either way, titles, canonical tags and JSON-LD depend on the build and modules. Follow Google’s documentation, and use the feature checklist to test output.
Hosting, performance and security
Wagtail runs as a Django application. Its documentation says it is currently compatible with Django 5.2, 6.0 and 6.1, and installs Pillow, which needs system libraries. We did not confirm supported Python versions or databases from the pages we opened. The 7.4 series is marked LTS, which gives a slower upgrade path.
Drupal 11.x requires PHP 8.3.0 or later. It supports MariaDB, MySQL, PostgreSQL and SQLite, runs on Apache, Nginx and other web servers, and recommends Linux for hosting, with Windows supported only for development. Composer is needed for installation and updates. The releases page shows Drupal 10.6.x receiving security support only until December 2026, so older branches have a deadline.
We have no performance or security benchmarks for either. Caching and CDN choices sit with your developers or host. See our self-hosted guide.
Cost of ownership
Neither has a licence fee. Wagtail’s licence is BSD-3-Clause, which permits use in open and closed projects. Drupal.org says Drupal is distributed under the GNU GPL with no licensing fees, and the Drupal Association is the non-profit supporting the project.
The spend is in people: a developer to model content, build templates, configure roles and workflows and apply updates. We did not find a vendor-run hosted Wagtail service in the pages we opened and quote no hosted price. We have not verified public prices for Drupal hosts or agencies and give no figures.
Update effort differs in shape. Wagtail upgrades follow Django’s, and Drupal updates run through Composer. Whoever owns that routine matters more than any feature list. See the cost guide and licensing guide.
Migrating between them
We did not find an official Wagtail-to-Drupal or Drupal-to-Wagtail migration tool in the documentation we opened, and we have not verified Drupal’s migration documentation. Content moves between a Django model and Drupal entities through a developer-written importer.
One piece is documented on the Wagtail side: the redirects app has an import command for bulk redirects, so a URL map from an old site can be loaded in one go. Both systems expose content over an API, Drupal’s JSON:API in core and Wagtail’s v2 API read-only, which gives a route to extract content if you script it. Test the full URL map before launch.
Which should you choose?
- Python developers, custom page types, a clean editor experience: Wagtail.
- PHP or Drupal-experienced agency, many content types and roles: Drupal.
- Many languages with separate control of interface, configuration and content translation: Drupal; Wagtail keeps a page tree per locale and adds third-party tooling for richer workflows.
- Desk-level permissions with simple scheduling: Wagtail.
- Headless with a stable, core API today: Drupal; Wagtail’s write API is a preview.
- No developer on staff: neither. See the CMS directory.
For a Drupal comparison against a .NET system, read Umbraco vs Drupal. The comparison hub lists the rest, and the demo page explains how to trial a system.
Questions people ask
Is Wagtail easier than Drupal?
For editors, much depends on the build, since both are developer-defined. For developers it depends on language: Wagtail needs Python and Django, Drupal needs PHP and Composer. Neither is a finished site.
Are Wagtail and Drupal free?
Yes. Wagtail's repository lists the BSD-3-Clause licence and Drupal.org says Drupal is distributed under the GNU GPL with no licensing fees. Hosting, development and maintenance are the real costs, and both need a developer.
Which has better built-in editorial workflow?
Both have it. Drupal's core Content Moderation module adds Draft, Published and Archived states and a default Editorial workflow. Wagtail lists customisable workflows with moderation and review permissions, scheduled publishing and revision comparison.
Which is better for SEO?
Both rely on add-ons or developer work. Wagtail ships contrib modules for sitemaps and redirects. Drupal uses contributed modules for URL aliases, meta tags and sitemaps, plus a separate module for schema.org. Neither is documented as complete out of the box.
Can both run headless?
Yes. Drupal's JSON:API module is part of core. Wagtail has a stable read-only v2 API and, in 8.0, a preview v3 API that can also write content. The Wagtail preview carries a risk for production use.
Sources
- The Wagtail repository describes it as a Django content management system focused on flexibility and user experience and lists the BSD-3-Clause licence. — source, checked 10 October 2026.
- Wagtail 8.0 is the latest stable release in the Wagtail release notes (published 25 August 2026); the 7.4 series is marked LTS and 7.4.3 is the latest 7.4 patch. — source, checked 10 October 2026.
- The Wagtail 8.0 release notes describe a preview v3 REST API built on Django Ninja that can create, edit, publish and unpublish content, support for custom base page models, a permission policy registry and formal Django 6.1 support. — source, checked 10 October 2026.
- The Wagtail documentation states Wagtail is currently compatible with Django 5.2, 6.0 and 6.1, and that the Pillow library is installed with the wagtail package. — source, checked 10 October 2026.
- Wagtail's features page lists customisable workflows with moderation and review permissions, scheduled publishing with expiry dates, built-in revision comparison, image focal point and cropping tools, StreamField, and use as a headless CMS. — source, checked 10 October 2026.
- Wagtail page permissions attach to pages and cascade down the page tree; the permission types are add, edit, publish, bulk delete and lock/unlock, and users without publish permission can submit changes for moderation. — source, checked 10 October 2026.
- Wagtail's sitemap module uses Django's sitemap framework and, once enabled in INSTALLED_APPS and urls.py, adds all published pages to sitemap.xml. — source, checked 10 October 2026.
- The wagtail.contrib.redirects app is optional, creates permanent redirects automatically when pages are moved or slugs change, and includes an import_redirects management command for bulk imports. — source, checked 10 October 2026.
- Wagtail stores content in a separate page tree for each locale; it includes a basic Simple Translation module, and wagtail-localize is a separate third-party package for PO-file, machine-translation and external-service workflows. — source, checked 10 October 2026.
- Wagtail's v2 API is a stable, read-only interface built on Django REST Framework that exposes content for non-web clients or for use in another site. — source, checked 10 October 2026.
- The tag list of the Drupal repository shows Drupal 11.4.9, dated 9 October 2026, as the newest stable tag, ahead of 12.0.0-beta1 dated 30 September 2026, which is a pre-release. — source, checked 10 October 2026.
- The Drupal.org core releases page lists Drupal 11.4.9, 11.3.18 and 10.6.18 as bugfix releases, 12.0.0-beta1 as a testing release, and says Drupal 10.6.x receives security support until December 2026. — source, checked 10 October 2026.
- Drupal, and all contributed files that are derivative works of Drupal hosted on Drupal.org, are licensed under the GNU General Public License, version 2 or later. — source, checked 10 October 2026.
- Drupal.org describes Drupal as content management software, says it is distributed under the GNU General Public License, that there are no licensing fees, and that the Drupal Association is the non-profit supporting the project. — source, checked 10 October 2026.
- The composer.json of the Drupal core repository's 11.x branch requires PHP 8.3.0 or later and describes Drupal as an open source content management platform powering millions of websites and applications. — source, checked 10 October 2026.
- Drupal's system requirements page lists MariaDB, MySQL, PostgreSQL and SQLite as database servers, says Drupal works on Apache, Nginx and other web servers, recommends Linux or a similar operating system for hosting with Windows supported only for development, and says Composer is needed for installation and updates. — source, checked 10 October 2026.
- The core Content Moderation module expands the unpublished and published states with workflows made of states such as Draft, Published and Archived and the transitions between them, lets a published version stay live while a working copy is reviewed, and creates a default workflow called Editorial when enabled. — source, checked 10 October 2026.
- The Drupal User Guide covers users, roles and permissions in its chapter on managing user accounts, and taxonomy in its chapter on setting up content structure. — source, checked 10 October 2026.
- The contributed Scheduler module lets editors schedule content, media, commerce products and taxonomy terms for publishing and unpublishing at specified dates and times in the future. — source, checked 10 October 2026.
- The contributed Pathauto module automatically generates URL path aliases for nodes, taxonomy terms and users without requiring a manual path alias, and the project page reports 470,202 sites using it. — source, checked 10 October 2026.
- The contributed Metatag module provides meta tags including page titles, canonical URLs, descriptions, Open Graph and Twitter Cards; its page says schema.org and JSON-LD support is provided by the separate Schema.org Metatag module. — source, checked 10 October 2026.
- The contributed Simple XML Sitemap module generates multilingual sitemaps for entities, views and custom links, supports hreflang and image sitemaps, and supports the IndexNow protocol. — source, checked 10 October 2026.
- The Drupal User Guide says the base language of Drupal software is English, that the core Language module is needed to use another language, and that the core Interface Translation, Configuration Translation and Content Translation modules cover interface text, configuration text and content respectively. — source, checked 10 October 2026.
- The JSON:API module is part of Drupal core; it implements the JSON:API specification for Drupal entities and provides a zero-configuration, opinionated way to allow RESTful CRUD for a site's content. — source, checked 10 October 2026.