Quick Answer
The European Accessibility Act has been enforceable since 28 June 2025, all 27 member states have transposed it, and the first lawsuits were filed in France in November 2025. Unlike earlier EU accessibility rules it reaches private businesses selling to EU consumers, including companies based outside the EU. Penalties are set nationally and vary widely - up to EUR 60,000 in Ireland, EUR 100,000 in Germany and SEK 10 million in Sweden. The technical standard, EN 301 549, incorporates WCAG 2.1 Level AA in full. AI-generated interfaces fail it routinely, and automated checkers miss most of the problems.
What Changed, And Why It Is Different This Time
Previous EU accessibility legislation - the Web Accessibility Directive - applied to public sector bodies. Government sites, universities, public agencies. If you were building a SaaS product, it did not touch you.
The EAA is the opposite. It reaches ordinary private businesses selling to EU consumers, and it applies to companies based outside the EU that serve EU customers. If you take money from someone in Berlin or Dublin through a web app, you are in scope regardless of where you are incorporated.
The timeline has already passed the point where this is theoretical. Enforcement started 28 June 2025. All 27 member states have transposed the directive into national law. The first EAA lawsuits were filed in France in November 2025, with the Netherlands and other member states planning enforcement activity through 2026.
The Standard You Are Being Measured Against
The EAA does not describe pixel-level requirements. It points at a harmonised standard, EN 301 549, and the current version - v3.2.1 - incorporates WCAG 2.1 Level AA in full. Version 4.1.1, published on 2 September 2026, moves to WCAG 2.2. It becomes the standard regulators measure against once the European Commission cites it in the Official Journal, which Ireland's National Disability Authority expects on 16 December 2026.
EN 301 549 also covers ground WCAG does not: hardware, mobile applications, documentation and video players. For a typical web product, though, WCAG 2.1 AA is the operative bar.
| Country | Maximum penalty |
|---|---|
| Ireland | Up to EUR 60,000, or 18 months in prison, on conviction on indictment |
| Germany | Up to EUR 100,000 per offence |
| France | Fines, plus daily penalty payments of up to EUR 3,000, capped at EUR 300,000 |
| Sweden | Sanction fee of up to SEK 10 million; orders to fix can also carry a conditional fine |
Each member state enforces independently, so penalties, timelines and complaint processes differ. The practical planning assumption is that you are exposed to the strictest regime among the countries your customers live in, not the most lenient.
Why AI-Generated Interfaces Fail This Specifically
Generated UI code is usually visually correct and semantically empty. The model produces markup that looks right in a screenshot, which is what it was optimised to do, and skips the attributes that carry no visual weight.
// ❌ BAD - renders perfectly, fails WCAG 2.1 AA in four ways
export function ProductCard({ product, onAdd }) {
return (
<div className="card" onClick={() => onAdd(product)}>
<img src={product.image} />
<div className="title">{product.name}</div>
<span style={{ color: '#9aa0a6' }}>{product.price}</span>
<div className="btn" onClick={() => onAdd(product)}>
<svg>{/* cart icon */}</svg>
</div>
</div>
);
}
Four failures, none of them visible: the image has no alt, so a screen reader announces nothing. The clickable div is not keyboard reachable - no tab stop, no Enter handler. The icon-only button has no accessible name. And #9aa0a6 on white is roughly 2.6:1 contrast against a 4.5:1 requirement.
Every one passes a visual review. Every one fails EN 301 549.
How To Fix It
// ✅ GOOD - same visual result, keyboard and screen reader accessible
export function ProductCard({ product, onAdd }) {
return (
<article className="card">
<img src={product.image} alt={product.imageAlt ?? ''} />
<h3 className="title">{product.name}</h3>
{/* #5f6368 on white is about 6:1 - clears the 4.5:1 minimum */}
<span style={{ color: '#5f6368' }}>
<span className="sr-only">Price: </span>{product.price}
</span>
<button type="button" onClick={() => onAdd(product)}
aria-label={`Add ${product.name} to cart`}>
<svg aria-hidden="true">{/* cart icon */}</svg>
</button>
</article>
);
}
A real button is focusable, activates on Enter and Space, and announces its purpose - all for free, which is why the rule is "use the element that means what you mean". Decorative images take alt=""; informative ones need real text.
Finding these across a generated codebase is the harder half. Tools like VibeDoctor's Vibe Check automatically scan your codebase for missing alt attributes and buttons without accessible names, and flag specific file paths and line numbers. Free to sign up.
Two Things That Will Not Save You
Overlay widgets. The one-line script promising instant compliance does not deliver it. The European Commission's web guide says claims of full compliance through automated overlays are not realistic, and in 2025 the US Federal Trade Commission made overlay vendor accessiBe pay $1 million over claims that its widget could make any website WCAG compliant. Installing one does not move you into compliance and may draw attention.
Automated scanning alone. This is the uncomfortable part for a tooling article: automated tools catch only a minority of WCAG issues. When the UK Government Digital Service tested tools on a page full of known barriers, the best single tool found 41% of them. They are excellent at the mechanical, countable failures - missing alt, missing labels, contrast ratios - which is genuinely most of what AI-generated code gets wrong, and they will not find broken keyboard navigation or illogical focus order.
Those need manual testing with real assistive technology. The honest sequence is: automate the mechanical failures because there are hundreds of them and they are cheap to fix, then test the flows that matter - signup, checkout, settings - with a keyboard and a screen reader.
A Realistic First Pass
- Unplug your mouse and complete your primary flow. Signup through checkout, keyboard only. If you get stuck, so does a real user, and no scanner would have told you.
- Fix every missing
altand unlabelled control. High volume, low effort, and it is what automated tooling finds reliably. - Check contrast on greys. AI-generated palettes love
#999and#aaafor secondary text. Both fail. - Publish an accessibility statement. The directive requires service providers to publish how their service meets the accessibility requirements (Article 13 and Annex V), and its absence is an easy thing for a regulator to spot. It is a page of text.
FAQ
I am not in the EU. Does this apply to me?
If you sell to consumers in the EU, yes. The EAA reaches businesses based outside the EU that serve EU customers - the test is where your customers are, not where you are incorporated.
Are small companies exempt?
Microenterprises that provide services are exempt: under the directive that means fewer than 10 employees and an annual turnover or balance sheet total of no more than EUR 2 million. The exemption covers services only, not products, and national laws add their own rules. Treat exemption as something to confirm with a lawyer for your specific situation rather than something to assume.
Is anyone actually being fined yet?
Enforcement is early. The first lawsuits landed in France in November 2025 and other member states signalled activity through 2026. In June 2026 a court in Caen ordered Carrefour France to make its website and app fully accessible within six months, backed by a penalty payment. The penalties are set in national law now, which is the part that matters - the ceiling exists whether or not it has been tested in your jurisdiction.
WCAG 2.1 AA or 2.2 - which do I build to?
The current harmonised standard incorporates 2.1 AA. EN 301 549 v4.1.1 was published in September 2026 and moves to 2.2, which adds a modest set of criteria; it takes over once it is cited in the Official Journal. Building to 2.2 now avoids repeating the work.
Can I ask Cursor or Lovable to make my UI accessible?
Partially, and it helps if you are specific. "Add alt text and aria-labels, use semantic elements, ensure 4.5:1 contrast" produces markedly better output than "make it accessible". It will not fix focus order or keyboard traps, because those are properties of the flow rather than of any single component.
Sources
- Level Access, European Accessibility Act compliance overview - enforcement date, member state transposition, EN 301 549 and WCAG mapping.
- DLA Piper, navigating the Irish accessibility regulations - Ireland up to EUR 60,000 or 18 months on conviction on indictment.
- German Accessibility Strengthening Act (BFSG), section 37 - fines up to EUR 100,000.
- Orange, legal framework in France - daily penalties of up to EUR 3,000, capped at EUR 300,000.
- Swedish Act 2023:254, sections 35 and 39 - conditional fines and a sanction fee of up to SEK 10 million.
- Accessibility.Works, SaaS EAA compliance and EN 301 549 - scope for private businesses and SaaS-specific requirements.