Neos is neither accessible nor inaccessible on its own, and the project says so itself: accessibility depends on the individual implementation and the editors' care [4]. Neos has no default theme. Every Neos site renders markup its agency wrote – NodeTypes that define the content, Fusion and AFX components that turn it into HTML – plus what editors enter inline. This page separates what Neos gives you from what stays your job, and names the places to test first.
Does the BFSG apply to your Neos site?
The BFSG does not cover websites as such. It covers listed services to consumers – e-commerce, banking, telecoms, e-books and elements of passenger transport among them – and has applied to them in Germany since 28 June 2025, transposing the European Accessibility Act [1][2]. A company's information site built with Neos is generally not one of those services. A booking or order function on it can be: if consumers conclude a contract through your site, that part is an e-commerce service, a "Dienstleistung im elektronischen Geschäftsverkehr" (§ 1(3) no. 5 BFSG) [1], whichever system runs it behind the scenes. For shops, see BFSG for online shops.
A purely B2B offer is not a service to consumers. Micro-enterprises providing services are exempt: fewer than 10 employees and an annual turnover or balance sheet total of no more than €2 million (§ 2 no. 17, § 3(3) BFSG) [1]; details on the micro-enterprise exemption page. Public bodies fall under BITV 2.0 instead. The wider picture is in the BFSG and EAA guide. Neos started in 2006 under the umbrella of the TYPO3 project and has been independent since 2015 [3]; agencies often weigh it against TYPO3 and Contao.
What the platform gives you, and what it does not
You get:
- Full control of the markup. Content structure is defined in NodeTypes, written in YAML, and the rendering in Fusion with AFX templates – usually without writing PHP [6]. Nothing in the core forces markup on you that you would have to fight.
- An honest vendor statement. Neos says that it does not obstruct you in building accessible websites and leaves the freedom to build highly accessible ones, while accessibility depends on the implementation and the editors [4]. In 2015 the project reported that a municipal site built with Neos had been certified WCAG 2.0 AA by the Dutch government [5] – proof that it can be done, not a statement about your site.
- An alternative-text field on the standard image. In the standard content elements from
neos/nodetypes, the image mixin carries analternativeTextproperty in the image section of the inspector [9], and the image element renders it as thealtattribute [10]. - Validation where you configure it. NodeType properties can carry validators [8], so a project can make a field such as alternative text mandatory.
- A place to review components. A living style guide package renders your Fusion components in isolation for testing and review [4].
You do not get:
- A front end. There is no default theme to measure against; every component is project code, and its quality is your agency's.
- Alt text per file. On the standard image element the alternative text belongs to the element on the page, not to the file in the media library [9], so the same picture placed five times needs it five times. The property has no validator by default [9].
- Accessible packages. Slider, carousel and form packages exist [4], and each brings its own markup and scripts.
- A migration that fixes content. Neos 9, released in April 2025, rebuilt the content repository [7]. It changes how content is stored, not the headings, links and images your editors have already written.
What we find on Neos sites
Component libraries built once and copied everywhere
A defect in one Fusion component repeats on every page that uses it: a teaser whose whole card is a link with the heading, text and "Read more" inside it, an icon button without a name, a card grid that uses headings for their size. The upside: a fix in the component fixes every page at once.
Alt text that lives on the element, not the image
Because the standard image element stores alternative text on the element [9], editors who reuse an image rarely fill it in again. Project-specific NodeTypes often have no alt field at all, or render the image's title instead. On the standard element, the title attribute falls back to the title stored in the media library [10], which then competes with the alt text.
Inline editing and heading structure
Neos edits content inline, on the page itself [6]. Editors see the design and choose what looks right: a heading format picked for its size, bold text in place of a heading, a list typed with hyphens. Which formats are offered is decided in the NodeType configuration, and on many projects every format is switched on.
Language fallbacks that change the language, not the attribute
Content dimensions let a site fall back to another variant when content is missing, for example from one language to another [4]. The page keeps the lang of the dimension being viewed, so a screen reader reads the fallback text with the wrong pronunciation rules. Check every language version for passages that are not in the page's language.
Menus and sliders from project code or packages
Menus are written per project in Fusion. Typical findings: mobile menus with a burger button that is not a button, no aria-expanded, and focus that runs behind the open panel. Carousel packages autoplay without a pause control and label their arrows with icons only.
Forms from the form framework
Neos's form framework and form builder let editors define forms, fields and validation rules [4]. The markup comes from the form package and your project's templates: check that every field has a visible label, that required fields and errors are announced, and that fields for personal data carry autocomplete.
Where to look first
| Criterion | Why on Neos | Automation |
|---|---|---|
| 1.1.1 Non-text Content (A) | Alt text on the element, custom NodeTypes without it | Partly automated |
| 1.3.1 Info and Relationships (A) | Card components, lists typed inline | Partly automated |
| 2.4.6 Headings and Labels (AA) | Heading formats chosen by size | Manual only |
| 2.4.4 Link Purpose (In Context) (A) | Teasers with "Read more" links | Partly automated |
| 3.1.1 Language of Page (A) | Layout templates without lang | Automated |
| 3.1.2 Language of Parts (AA) | Dimension fallbacks into another language | Partly automated |
| 4.1.2 Name, Role, Value (A) | Burger menus, icon buttons, carousels | Partly automated |
| 2.4.7 Focus Visible (AA) | Project CSS without a focus style | Partly automated |
| 3.3.2 Labels or Instructions (A) | Form fields with placeholder only | Partly automated |
| 3.3.1 Error Identification (A) | Form framework error messages | Manual only |
"Automated" means a rule can decide the criterion on its own; "partly automated" means a rule finds some failures and a person has to judge the rest. The full list is in WCAG 2.2 AA, criterion by criterion.
A sensible order of work
- List your components. Make an inventory of your NodeTypes and the Fusion components that render them. Review each one in the living style guide [4] with a keyboard before looking at pages.
- Fix at component level. Rank the crawl's issues by the number of pages, trace each to its component and fix it there. One change reaches every page.
- Make alt text part of the NodeType. Add an alternative-text property with a validator [8] to every NodeType that shows an image, with an explicit "decorative" option rather than an empty field nobody noticed.
- Limit inline formats. Offer editors the heading levels and formats a content type actually needs, and nothing that fakes structure.
- Check the dimensions. For each language, find content that falls back to another language, and either translate it or mark the passage with its own
lang. - Walk the journeys and re-test after upgrades. Walk navigation, forms and any booking or order path with a keyboard. After a Neos or package upgrade, crawl again: the markup is yours, and so are its regressions.
What Reviseberg checks on Neos – and what you still test yourself
Reviseberg crawls your site and runs every axe-core rule on every page at a desktop width of 1280 pixels, then repeats the rules that change with the layout – contrast and target size among them – at 360 pixels. Results are mapped to WCAG 2.2 A/AA and EN 301 549. Findings are grouped into issues by rule and ranked by the points you gain by fixing them, so a defect in one Fusion component shows up as one issue on 400 pages rather than 400 separate entries.
The keyboard agent opens the pages of a journey you name – the home page, a content page, a form – and presses Tab, Shift+Tab and Escape through each of them, recording every step. It reports unreachable elements, lost or invisible focus, missing skip links and keyboard traps. It does not fill in forms or place an order, so form errors and any booking or order steps are yours to walk by hand. The free report covers up to 100 pages and runs the keyboard agent on one page you choose. A staging site behind a password can be crawled from an account.
You still test some things yourself: whether alt text describes the image, whether headings and error messages make sense, and how the site behaves with a screen reader and zoom. Screen-reader, zoom and voice-control agents are not built yet; for those criteria the platform gives you guided manual tests, and a criterion nobody has tested is reported as untested, never as passed. There is no Neos package from us, nothing is applied to your site automatically, and we never inject an overlay script.
Written to be useful, not as legal advice. As of 27 September 2026.