Contao is neither accessible nor inaccessible on its own, even though accessibility is part of how the project describes itself. What counts is what your site renders: the templates you have overridden, your theme's CSS, the extensions you run and the content your editors enter. This page separates what Contao gives you from what stays your job, for public bodies under BITV 2.0 as much as for businesses under the BFSG.
Does the BFSG apply to your Contao 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 Contao is generally not one of those services. A booking or order function on it can be: if consumers conclude a contract on your site, that part is an e-commerce service, a "Dienstleistung im elektronischen Geschäftsverkehr" (§ 1(3) no. 5 BFSG) [1].
The same applies to a Contao site with a shop. Contao has no shop in its core; the most widely used extension for it is Isotope eCommerce [12]. If you sell to consumers through it, you run an online shop in the sense of the law – 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.
Many Contao sites belong to public bodies. They fall under BITV 2.0 instead, with its own accessibility statement and feedback duties. The testing benchmark is the same WCAG 2.2 AA work either way. The wider picture is in the BFSG and EAA guide; for comparable systems, see TYPO3 and Neos.
What the platform gives you, and what it does not
You get:
- A project that commits to accessibility in writing. Contao says you can use it to build accessible websites that meet the requirements of BITV 2.0 and the European Accessibility Act, and that its administration area is largely accessible and compatible with assistive technologies [3]. Its feature list adds that the front end is built entirely on customisable templates [4].
- Twig templates with a defined inheritance. Since Contao 5.0 all content elements are based on Twig templates [5]. Since 5.7 every old
.html5template has a Twig counterpart, and.html5templates will not be supported in Contao 6 [9]. A fix in core reaches you as long as you extend a template rather than replace it. - Accessibility features in each release. 5.4 lets you give navigation modules ARIA labels [6]. 5.5 added subtitles for videos (captions or audio description), the
autocompleteattribute for every form field and titles for YouTube and Vimeo embeds [7]. 5.6 ships an accessible navigation template,mod_navigation_accessible.html5, that turns into a burger menu on small screens [8]. - Structured image metadata. The file manager stores title, alternative text, link and caption per file, separately for each language [10]. The Heading element lets editors choose the heading level rather than a size [11].
- Long-term support. LTS versions are supported for four years [3]; Contao 5.7 LTS receives updates until February 2030 [9].
You do not get:
- The fixes in templates you replaced. A copied template keeps the markup it was copied from, and many Contao 4 themes replaced whole templates.
- An accessible theme. Contao ships no finished front-end design; colours, focus styles and layout come from your theme.
- Good alt text. The field exists; whether editors fill it in – in every language – is up to them.
- A supported Contao 4. Since the release of 5.7 on 18 February 2026, Contao 4.13 no longer receives updates [9].
What we find on Contao sites
Templates and themes from the Contao 4 era
Long-running Contao sites were often built on 4.x with a templates folder full of .html5 overrides. Those overrides do not pick up anything the core has improved since.
Mobile navigation and skip links
Before 5.6 there was no accessible mobile menu in the core [8], so most sites run their own: a burger button that is a div or a link rather than a button, no aria-expanded, a closed menu that can still be tabbed through, and an open menu whose focus runs out behind it. With several navigation elements on a page and no distinct labels, a screen reader lists "navigation" three times – the reason Contao added ARIA labels to navigation modules in 5.4 [6].
Editor content from TinyMCE
The Text element uses the TinyMCE rich text editor [11]. Editors use it to pick a heading by size rather than level, to make text bold instead of marking up a list, and to paste tables from Word. Heading chaos is the most common finding on content-heavy Contao sites, and no template change fixes content that is already there.
Alt text in some languages but not others
Contao stores alternative text in the file manager per language [10]. On multilingual sites, the German alt text is often filled in and the English one empty.
Forms from the form generator
Common findings in the form generator: required fields marked only with an asterisk, error messages that do not say what went wrong, radio groups without a group label, and address fields without autocomplete – which Contao has let you set on every field since 5.5 [7], but which nobody sets retrospectively.
Sliders, accordions, videos – and the Isotope checkout
Content sliders autoplay without a pause control; accordion headers are not buttons. Embedded videos have no title and no captions, although 5.5 added both [7]. On sites with an Isotope shop, test the variant selection and the checkout steps with a keyboard all the way to payment: Isotope's own site announced a private beta for Contao 5 in June 2026 [12], so many shops still run on Contao 4.13.
Where to look first
| Criterion | Why on Contao | Automation |
|---|---|---|
| 1.3.1 Info and Relationships (A) | Overridden templates, pasted tables, fake lists | Partly automated |
| 2.4.6 Headings and Labels (AA) | Heading levels chosen in TinyMCE by size | Manual only |
| 1.1.1 Non-text Content (A) | Alt text missing in one language | Partly automated |
| 2.4.1 Bypass Blocks (A) | Themes without a skip link | Automated |
| 4.1.2 Name, Role, Value (A) | Burger menus, accordion headers | Partly automated |
| 2.1.2 No Keyboard Trap (A) | Mobile menus, lightboxes | Partly automated |
| 1.3.5 Identify Input Purpose (AA) | Form generator fields without autocomplete | Partly automated |
| 3.3.1 Error Identification (A) | Form generator, Isotope checkout | Manual only |
| 1.2.2 Captions (Prerecorded) (A) | Videos without subtitle tracks | Manual only |
| 3.1.2 Language of Parts (AA) | Foreign-language passages on multilingual sites | Partly automated |
"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
- Check the version. On 4.13 there are no more updates [9]; plan the move to 5.7 LTS. If you run Isotope, check its Contao 5 status first.
- Take stock of your template overrides. List every template in your
templatesfolder and compare it with the core's current Twig counterpart. Where you only changed a detail, extend the core template instead of replacing it, so future fixes reach you. - Replace the navigation. On 5.6 or later, try
mod_navigation_accessible.html5[8] before repairing a home-made burger menu. Give each navigation module a distinct ARIA label. - Constrain the editor. Remove TinyMCE options that let editors fake structure, and make the alternative text in the file manager part of every upload – in every language.
- Go through the forms. Set
autocompleteon personal-data fields, rewrite error messages, then submit each form once with a keyboard and deliberate mistakes. - Check your obligations. A public body needs a statement and a feedback mechanism under BITV 2.0, and its PDFs are in scope. A business with an Isotope shop needs the BFSG information instead.
What Reviseberg checks on Contao – 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 overridden template 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, a product page – 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, which is where a home-made mobile menu usually shows up. It does not fill in forms or place an order, so form errors and the Isotope checkout are yours to walk by hand. The free report covers up to 100 pages and runs the keyboard agent on one page you choose.
You still test some things yourself: whether alt text describes the image, whether heading text 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. PDF documents are not checked. There is no Contao extension 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.