— 12 reading minutes
Symfony is a framework, not a CMS. When a Symfony project needs content management, the range of available options is very different from the WordPress ecosystem: it is not simply a matter of installing whichever CMS is most popular. The first step is to determine the role content plays within your architecture and choose accordingly.
The decision largely depends on one key factor: where the center of gravity of your project lies. If your custom application is the main focus and content is a supporting element, one type of solution will fit best. If content itself is the product, a different approach is required. And if all you need is a simple, fast website, neither option may be the right choice.
In this article, we compare the five CMS solutions most commonly found in Symfony projects—Armonic, Sulu, Ibexa, Drupal, and Grav—looking at their architecture, editing experience, headless capabilities, and ideal use cases. None of them is the best choice in every scenario: the right option depends on what you are building.
Before We Compare: What “CMS for Symfony” Actually Means
Not all of these options relate to Symfony in the same way, and understanding the distinction helps avoid common misconceptions:
- Native Symfony bundles. These are installed with Composer inside your Symfony application and share its runtime, codebase, and administration interface. This is the case with Armonic and Sulu.
- Platforms built on Symfony. These are complete, standalone applications that use Symfony components under the hood but are installed as the foundation of the project itself. This is the case with Ibexa and, to a large extent, Drupal (modern Drupal relies heavily on Symfony components, but it is its own platform rather than a bundle).
- Independent applications that leverage Symfony components. This is the case with Grav: it is not a Symfony application, but it reuses Symfony libraries for specific tasks.
This distinction—whether you are adding a bundle to your existing application or building on top of a standalone platform—is the factor that most strongly influences the rest of the decision.
Quick Guide: Choosing the Right Symfony CMS for Your Use Case
| Recommended Option | |
|---|---|
| You want to add a CMS to a Symfony application (new or existing) with a unified admin panel and inline editing. | Armonic |
| You need a headless CMS with a REST API available from day one, structured content, and built-in search. | Sulu |
| You are building an enterprise-grade, omnichannel DXP with complex workflows and REST + GraphQL headless capabilities. | Ibexa |
| You are launching a large-scale, content-driven website and want access to a vast ecosystem of modules. | Drupal |
| You only need a simple, standalone website (blog, documentation, portfolio) without a database. | Grav |
Let’s take a closer look at each option.
A Closer Look at Each Option
Armonic
Armonic is a CMS bundle built for and on top of Symfony. It is installed with composer require inside a new or existing Symfony application and shares its codebase, runtime, and administration interface. Its philosophy is deep integration: the CMS and the application are one and the same.
Where it stands out:
- True integration and unified administration. CMS sections (content, blocks, media) coexist in the same backend as your application's users, products, or order management. One deployment, one codebase.
- Modern inline editing. A module-based page builder with direct on-page editing and real-time preview, designed to give marketing and content teams greater autonomy and reduce dependency on developers.
- Configuration as code. Content types are defined in version-controlled YAML files, making them a natural fit for Git and CI/CD workflows while ensuring consistency across environments.
- Granular versioning. A new version is saved with every change, not just when content is published, providing a complete and auditable history that is valuable for compliance and traceability.
Limitations:
- It is not headless by default. Armonic is a coupled CMS, so serving content to decoupled frontends requires custom development.
- It does not include frontend search out of the box.
- Workflows are basic (versioning and publish/unpublish), without a multi-step approval engine.
Ideal for: Teams already building with Symfony that need an integrated CMS with a unified administration interface and a visual editing experience, without introducing a separate platform.
Sulu
Sulu is an open-source CMS that is also built as a Symfony bundle. What sets it apart is its structured content model and a headless REST API available out of the box.
Where it stands out:
- Headless by default. It includes a REST content API, making it suitable from day one for decoupled architectures such as React SPAs, mobile applications, and other frontend frameworks.
- Structured and consistent content. Developers define page structures using XML templates, while content editors work through forms. This approach offers less layout flexibility but ensures greater data consistency and integrity.
- Built-in search. Sulu includes a search solution based on Lucene/Elasticsearch that can be used both in the administration interface and on the public website.
- Advanced media management. It provides granular permissions and integrates with Flysystem for storage solutions such as Amazon S3. Released under the MIT license.
Limitations: Content editing is form-based rather than visual or inline, so editorial teams cannot modify page layouts without developer involvement. Versioning is created when content is published (draft/live model), without maintaining a detailed history of draft changes.
Ideal for: Projects that require headless capabilities from the start, teams that prefer rigid content structures, and use cases where search functionality is critical from day one.
Ibexa
Ibexa is a Digital Experience Platform (DXP) and content management framework built on Symfony. It is a standalone application designed for enterprise environments.
Where it stands out:
- Headless and API-first. REST and GraphQL APIs are available out of the box, making Ibexa a strong choice for omnichannel strategies that deliver content across websites, mobile apps, and other digital services from a single content repository.
- Enterprise-grade workflows. It includes a multi-step approval engine, role-based transitions, and content states such as draft, review, and published, making it well suited for large editorial teams.
- Advanced search. A platform-agnostic Search API integrates with Elasticsearch or Solr to provide fast, faceted search experiences.
- Complete digital platform. Features include versioning with diff comparison, a visual drag-and-drop page builder, and optional capabilities for PIM, commerce, and PaaS hosting through Ibexa Cloud.
Limitations: Ibexa is a full platform that you install as the foundation of your project, with the complexity and learning curve that comes with it. It is often more than what is needed for a custom application that only requires some content management features.
Ideal for: Organizations building large-scale digital platforms where content is a core business asset, distributed across multiple channels and supported by complex editorial processes.
Drupal
Drupal is a mature, open-source general-purpose CMS. While modern versions make extensive use of Symfony components, Drupal is a complete standalone application rather than a Symfony bundle.
Where it stands out:
- Huge module ecosystem. Tens of thousands of contributed modules cover almost any functionality imaginable, reducing the amount of custom development required.
- Advanced editorial workflows. Workflow and Content Moderation modules are included in the core, providing built-in states such as draft, review, and published.
- Mature headless capabilities. JSON:API and REST are included in the core, making it easy to deliver content to decoupled frontends and applications.
- Configuration through the interface. Non-technical users can define content types, fields, and relationships without writing code. Drupal also offers robust multisite and multilingual support.
Limitations: Drupal is a platform that you build on top of—your business logic lives within its module and theme architecture—rather than a component that you add to an existing application. For teams whose primary focus is a custom Symfony application, adopting Drupal can feel like introducing a second system alongside the first.
Ideal for: Large-scale content-driven websites with complex editorial workflows and a need to leverage a vast ecosystem of existing modules and integrations.
Grav
Grav is a flat-file CMS: it does not use a database and stores content and configuration in Markdown and YAML files. It is not a Symfony application, but it does leverage several Symfony components.
Where it stands out:
- Simplicity and portability. Without a database, deployment is almost trivial—simply copy the files to a server—and backups can be as simple as creating a ZIP archive.
- Public plugin ecosystem. More than 300 free community plugins are available for search, forms, SEO, and many other features. Released under the MIT license.
- Easy to adopt. Any PHP developer can work with Grav without needing prior Symfony expertise.
Limitations: Grav does not include a visual page builder (editing is based on files and templates), lacks native versioning (typically relying on Git), and its multisite support is currently labeled as "preliminary".
Ideal for: Simple, standalone websites such as blogs, documentation portals, portfolios, and small business websites, where operational simplicity and speed are the main priorities.
Comparison Table
| Criteria | Armonic | Sulu | Ibexa | Drupal | Grav |
|---|---|---|---|---|---|
| Symfony Relationship | Native Bundle | Native Bundle | Platform Built on Symfony | Platform (Uses Symfony Components) | Independent Application (Uses Symfony Components) |
| Installation | Inside Your Symfony Application | Inside Your Symfony Application | Standalone Application | Independent Platform | Copy Files |
| Unified Admin with Your App | Yes | Yes | Flexible | No | For the Site Itself |
| Content Modeling | YAML (Configuration as Code) | Templates/Forms | Repository + UI | From the UI | Flat-file (Markdown/YAML) |
| Page Building | Visual + Inline Editing | Forms | Drag-and-drop | Fields/Blocks/Views | Files/Templates |
| Headless / API | Not Included by Default | Yes (REST) | Yes (REST + GraphQL) | Yes (JSON:API/REST) | Via Plugins |
| Workflows | Basic | Basic | Advanced (Multi-step) | Advanced (Core) | Not Native |
| Versioning | Granular (Every Change) | On Publish | With Diff/States | Yes | Not Native (Git) |
| Frontend Search | Not Included by Default | Yes (Lucene/ES) | Yes (Solr/ES) | Via Modules | Via Plugins |
| Multisite / Multilingual | Yes, Mature | Yes, Native | Yes | Yes | Preliminary Multisite |
| License | AGPL-3.0 (Some Bundles) | MIT | Commercial / Open | GPL | MIT |
| Hosting | Self-hosted | Self-hosted | Self-hosted or PaaS | Self-hosted | Any PHP Hosting |
How to Choose the Right Option
The comparison table is useful, but the right choice becomes much clearer once you answer a few key questions:
Are you starting from an existing Symfony application or from scratch? If you already have a custom application and want to add content management without replatforming, a bundle such as Armonic or Sulu is a natural fit. If you are starting a content-centric project from scratch, a platform such as Drupal or Ibexa may provide more functionality out of the box.
Is content the product or a complement to your application? If your application is the main focus and content plays a supporting role, Armonic is likely the better choice. If content is the core asset you create and distribute, Drupal or Ibexa are stronger candidates.
Do you need headless or omnichannel capabilities from the start? If you plan to deliver content to multiple frontends from day one, consider Sulu or Ibexa. If your website and application are essentially the same product, there is little value in taking on the additional complexity of a headless architecture.
Who will manage the content? If your content is managed by a marketing team that needs visual autonomy, Armonic’s inline editing experience can make a significant difference in day-to-day operations. If your users are more technical or you prioritize structured content models, Sulu or Drupal may be a better fit.
Do you have complex approval processes? If you require multi-step editorial workflows, Drupal and Ibexa provide them out of the box. Armonic and Sulu do not.
How important is built-in search? If search is critical from the beginning, Sulu or Ibexa are the strongest options. If you are comfortable implementing search as a custom feature later, Armonic remains a solid choice.
Licensing and hosting. If you need an MIT-licensed solution with an extremely lightweight deployment model, Grav is worth considering. If you are looking for a managed PaaS option, Ibexa stands out. The remaining solutions are primarily self-hosted, with licensing considerations that should be evaluated based on your specific requirements.
Frequently Asked Questions
Does Symfony have its own CMS? No. Symfony is a framework; content is managed through CMS solutions built on top of it (such as Armonic or Sulu) or through platforms that use Symfony components (such as Drupal or Ibexa).
Is Drupal based on Symfony? Modern Drupal uses many Symfony components, but it is a complete standalone platform, not a bundle that integrates into your Symfony application.
What is the best headless CMS for Symfony? If you need an API from day one, Sulu (REST) and Ibexa (REST + GraphQL) are the most direct options. Drupal also offers mature headless capabilities through JSON:API.
Can I add a CMS to an existing Symfony application? Yes. A bundle such as Armonic is specifically designed for this scenario: it can be installed with Composer inside an existing Symfony application without requiring a replatforming effort.
Which Symfony CMS should I choose for multisite and multilingual projects? Armonic, Sulu, Ibexa, and Drupal all provide solid support for multisite and multilingual environments. In Grav, multisite support is still considered preliminary.
Conclusion
Choosing a Symfony CMS is, above all, an architectural decision: it depends on where the center of gravity of your project lies. If your custom Symfony application is the core of the project, an integrated bundle such as Armonic provides the highest level of cohesion and a modern editorial experience. If content is the primary focus, platforms such as Drupal or Ibexa are better equipped for the job. And if all you need is a simple website, Grav stands out for its operational simplicity.
For projects with complex business logic or demanding workflows, working with a Symfony development company can help you avoid costly architectural mistakes and long-term maintenance issues. If you'd like to discuss your project, let's talk.
