European Accessibility Act

EAA compliance for Ghost: WCAG 2.1 AA checklist & fixes

Ghost focuses on publishing, which means the content surface — articles, newsletters, member areas — is where accessibility lives or dies. The default theme (Source) is in good shape; risk lives in third-party themes and the embedded member portal popup, which was historically a focus-trap offender. A focused publishing CMS used by independent newsletters and media brands.

Category
Content management system
Standard
WCAG 2.1 Level AA via EN 301 549
Deadline
28 June 2025 (EU consumer services)
Risk for B2C
High — public-facing, consumer-billed

What the EAA actually requires from a Ghost site

Ghost is a publishing-focused CMS, so under the EAA the accessibility obligation concentrates on the content surface (articles, the members portal, and paid subscription flows) rather than on a complex storefront. EN 301 549 conformance forces you to fix the embedded members-portal popup, historically a focus-trap offender that lacked Esc-to-close, and heading hierarchies in custom themes that misuse H1 for the article title and H2 for the site title. Because subscription-selling publications are in scope as e-commerce and digital services, the web-rendered posts and the portal must both meet AA.

Ghost is the tool of choice for independent newsletters, solo creators, and small media brands, so in-scope Ghost sites are usually microenterprises or small publishers selling subscriptions to EU readers. Many are small enough to test the EAA services exemption, but a subscription-selling publication is providing a digital service, so the exemption is not guaranteed, and the realistic exposure is a fixed lower-tier national fine. The dominant practical risk is a one-person publication with no accessibility awareness shipping an inaccessible paywall or signup popup that blocks disabled subscribers from paying.

Remediation is done by the publisher or a contract developer through Ghost's code injection panel and theme files, starting from the accessible default Source theme as a baseline. The signature fix is layering a focus-trap library onto the members-portal iframe via code injection until Ghost ships native focus management, plus correcting the theme's heading hierarchy. This is a small, targeted effort well within reach of a technically comfortable creator, with a scan of a sample article, a member-only article, and the /portal flow to verify.

Top WCAG failures we see on Ghost sites

Across hundreds of Ghost scans, the same handful of issues show up over and over. None of them require ripping the theme apart — most are fixable in a few hours by someone comfortable in the platform's editor or template files.

  • Members portal popup focus management

    Older versions trapped focus and lacked Esc to close.

    2.1.2, 2.4.3 — Level A
  • Custom theme heading hierarchy

    Themes that use H1 for the article title and H2 for the site title break document outline.

    1.3.1, 2.4.6 — Level A/AA

Concrete code fixes for Ghost

Below are copy-paste fixes for the most common Ghost issues. They assume you have access to your theme code or the platform's custom-code injection panel. If you cannot edit code directly, share these snippets with whoever maintains the site — every one of them is a ten-minute change.

Override the members popup overlay container with a focus trap library

TypeScript
// Drop into your code injection, footer
import { createFocusTrap } from 'focus-trap';
document.addEventListener('click', (e) => {
  if ((e.target as HTMLElement).matches('[data-portal]')) {
    setTimeout(() => {
      const dialog = document.querySelector('iframe[src*="portal"]');
      if (dialog) createFocusTrap(dialog as HTMLElement).activate();
    }, 200);
  }
});

Until Ghost ships native focus management, layer a focus-trap on the iframe to keep keyboard users inside the popup.

Tools and plugins worth installing first

  • Ghost's Source theme as a baseline

  • Code injection panel for site-wide tweaks

How to scan a Ghost site without missing anything

Automated scanners catch about 30–40% of WCAG issues; the rest need manual review. The good news is that the 30–40% includes the most expensive issues to remediate after the fact, so an automated scan is the cheapest way to get unstuck. Run one before you change a line of theme code.

  • Audit a sample article, a member-only article, and the /portal flow.

Run a free public scan against any Ghost URL right now — no signup, results in 60 seconds.

Frequently asked questions

Is Ghost covered by the EAA for newsletters?

Ghost-powered publications that sell subscriptions or digital access to EU consumers fall under the EAA's coverage of "electronic communications services" and "e-commerce". The publication website itself must meet WCAG 2.1 AA. Email newsletters are not directly covered by WCAG as sent emails, but the web-based archive versions of posts are.

Does Ghost's Source theme pass WCAG 2.1 AA out of the box?

Source is the most accessible Ghost theme and passes most automated checks. Common remaining issues are the members portal focus management and heading hierarchy in customised layouts. Run a Certvo scan against your live Ghost URL to see what specifically remains on your configuration.

Other content management system platforms

Find every accessibility issue on your site in 60 seconds.

Free public scan. No card. AI-generated fixes for every issue we find.