Open source content management systems (CMS) tagged "cms" handle the creation, storage, and publishing of website content: pages, blog posts, product listings, documentation, and media. They separate content from presentation, so editors work in a structured interface (rich text editor, fields, media library) while developers control the templates and frontend rendering. Most fall into two camps: traditional CMS platforms that bundle content storage with a built-in frontend (WordPress-style), and headless CMS platforms that expose content through a REST or GraphQL API for any frontend framework to consume (Next.js, Astro, mobile apps).
Common use cases include corporate websites, blogs, documentation portals, marketing sites, and e-commerce catalogs where non-technical staff need to publish without touching code. Headless variants are popular for teams building custom frontends who still want a friendly editing interface for marketing or content teams.
When choosing one, check the data model flexibility (custom fields, relations between content types), the editing experience (block editor vs. Markdown vs. rich text), API performance and caching behavior for headless setups, media handling and image resizing/conversion support, localization support if the site serves multiple languages, and the plugin or extension ecosystem. Self-hosting means also weighing database requirements (Postgres, MySQL, SQLite), update frequency, and how actively the project is maintained.
Self-hosted CMS tools typically replace proprietary SaaS platforms such as Contentful, Sanity, Webflow's CMS, or Squarespace's backend, and legacy licensed products like Sitecore or Adobe Experience Manager. The appeal is avoiding per-seat or per-request pricing, keeping content data in your own database, and customizing the admin UI or content model without vendor approval. Migration paths from proprietary platforms usually rely on the CMS's API or CLI import tools, and most open source options support webhooks so publishing can trigger a static rebuild or cache purge on save.