Blog
3 min read

What Is a Headless CMS? And Does Your App Need One?

A headless CMS is a content editor with no website attached — it stores your content and hands it to your app through an API. How it differs from WordPress, the popular options, when it beats Markdown files or your own database, and when it's overkill.

A CMS (content management system) is software for editing website content without touching code — the classic example is WordPress. A headless CMS is the same idea with one part removed: the "head," meaning the website itself.

It gives you an editing interface and a database for content, and serves that content through an API. Your own app — built with Next.js, Astro, React, or anything else — fetches it and decides how to display it.

Traditional vs headless

Traditional CMS (WordPress) Headless CMS
Editing interface Yes Yes
Stores content Yes Yes
Builds the web pages Yes, with themes No — your app does
Delivers content to Its own website Any app, via API
Front end tech PHP themes Whatever you like

The point of going headless: you keep a friendly editor for non-technical people, while developers (or AI tools) build the site with modern tools. The same content can feed a website, a mobile app and an email newsletter.

  • Hosted: Contentful, Sanity, Storyblok, Hygraph, Prismic — sign up and go; usage-based pricing.
  • Self-hosted / open source: Strapi, Directus, Payload — run on your own server with your own database. (Payload installs inside a Next.js app.)
  • Git-based: Decap CMS, TinaCMS, Keystatic — an editing UI that saves Markdown files into your repo.

Check each one's current pricing and free tiers; they change often.

When a headless CMS makes sense

  • Non-developers edit content often — marketing pages, blog posts, product descriptions, FAQs.
  • Content needs workflows — drafts, review, scheduled publishing, multiple editors.
  • Content appears in several places — site, app, newsletters.
  • Structured content — events, team members, case studies with consistent fields.

When it's overkill

You're the only editor and you're happy in a code editor. Markdown files in your repo are simpler, free, versioned with git, and AI tools can edit them directly. Many blogs (including this one) work this way. (What is Markdown?)

The "content" is really app data. User posts, products in a store, bookings — those belong in your app's own database, managed through your app. A CMS is for content you publish, not data your users create. (What is a database?)

A tiny site with a few pages. Edit the text in the code, or ask an AI tool to.

How your app uses it

Typically:

  1. Model your content types in the CMS (e.g. "Blog post: title, slug, body, cover image").
  2. Editors write and publish.
  3. Your app fetches the content via REST or GraphQL at build time (static site) or request time.
  4. A webhook from the CMS triggers a rebuild or cache refresh when content changes. (What is a webhook?)

Things to check before choosing

  • Pricing at your scale — seats, API calls, and records all count on some plans.
  • Preview — can editors see a draft on the real site before publishing?
  • Image handling — resizing and CDN delivery built in?
  • Export — can you get all your content out if you leave?
  • Localisation — if you need multiple languages.

The summary

  • A headless CMS stores and edits content, and serves it through an API; your app builds the pages.
  • Great when non-developers publish often, or content feeds several places.
  • Overkill for solo developers (use Markdown) and for user-generated data (use your database).

EasySpawn can run a self-hosted CMS like Strapi, Directus or Payload next to your app and its Postgres database, on one server with SSL and daily backups. See how it works or join the waitlist.

Related: Static vs Dynamic Websites · Astro vs Next.js · What Is an API? · What Is Markdown?

Keep reading