← All guides

EU Accessibility Checklist for Custom SaaS Applications

Why This Matters for Custom SaaS Applications

Custom SaaS products often evolve quickly through internal development cycles, and accessibility issues slip in silently—missing alt text on dynamically loaded charts, unlabeled form fields in complex workflows, or contrast problems in custom-branded interfaces. Unlike public websites, B2B SaaS teams sometimes assume their users are "tech-savvy" and don't need accessibility support, which is false and expensive: inaccessible software excludes employees with disabilities, opens your product to legal challenge under the European Accessibility Act (effective enforcement June 28, 2025), and damages retention when a paying customer's team member can't use your tool. This checklist helps you catch and fix the six most common WCAG issues before they become blocking problems.

Enforcement in France

France runs two accessibility regimes at once, and which one applies to you is currently a live legal question. The EAA route exempts genuine microenterprises (under 10 employees, under €2 million turnover). But an older 2005 disability-rights law separately requires compliance from any company with €250 million or more in French annual turnover — and in May 2026, a Lille court ruled that this older law takes precedence, dismissing a case against a major retailer's e-commerce arm because its French revenue fell under that €250M line, even though its site was only 41% accessible. A month later, a Caen court reached the opposite conclusion in a similar case, ordering a different retailer to fix its platform within six months (€500/day for delays), ruling that accessibility is a result you owe, not just an effort you make. The first ruling is under appeal.

For a SaaS business, the practical takeaway is: don't assume the standard €2M EAA exemption is the whole story if your French revenue is substantial — the €250M threshold from the older law may apply on top of it, and the two courts haven't agreed on how they interact yet.

France's consumer-protection authority (DGCCRF) has examined 20+ e-commerce sites since early 2026 and is deciding on corrective action for about half of them. No fine has actually been paid by anyone yet — both 2026 rulings above are interim orders, not final penalties. Standard statutory fines for EAA violations are modest by comparison: around €7,500 for a first offense, €15,000 for a repeat one.

The Six Critical Checks

Image Alt Text

The Issue: Data visualizations, product screenshots, icons, and logos in your SaaS dashboard don't have alternative text descriptions.

How to check on custom SaaS applications: Open your browser's developer tools (F12), search the HTML for `<img>` tags without an `alt` attribute or with empty `alt=""`. Also inspect dynamically generated charts (e.g., revenue graphs, user analytics) to see if they render as inaccessible images instead of accessible SVG or HTML tables. Ask: could a screen reader user understand this chart?

What to do: Write concise, meaningful alt text for every image (e.g., "Sales trend chart showing 23% growth in Q3" instead of "chart.png"). For complex data visualizations, provide a text summary or linked data table as an alternative.

Color Contrast

The Issue: Text in your custom UI—form labels, button text, status messages, table data—doesn't have enough contrast between foreground and background colors.

How to check on custom SaaS applications: Use a contrast checker tool (WebAIM, Contrast Ratio) or your browser's accessibility inspector to test every custom color combination, especially branded button colors, sidebar text, disabled form states, and chart legend text. Aim for at least 4.5:1 contrast ratio for normal text.

What to do: Adjust your color palette. If your brand color is too light or too dark against your background, either darken the foreground, lighten the background, or both. Test on actual monitors and with browser zoom (users often zoom to 150%+).

Form Input Labels

The Issue: Text input fields, dropdown menus, checkboxes, and radio buttons in your SaaS forms don't have associated `<label>` elements.

How to check on custom SaaS applications: Open developer tools and inspect a form field. Look for a `<label>` tag with a `for` attribute matching the input's `id`. If the label is missing or floating text isn't properly connected, your form fails this check. Try navigating your form with Tab key alone—can you tell what each field is without looking at the page?

What to do: Associate every input with a `<label>` using the `for` and `id` attributes. For complex custom inputs (date pickers, multi-selects), ensure the label or a hidden ARIA label describes what the field does.

Link Names

The Issue: Links in your navigation, breadcrumbs, or action rows contain only icons, or say generic things like "click here" or "more," with no clear destination.

How to check on custom SaaS applications: Search your code for `<a>` tags with no text content, or only an icon inside. Inspect icon-only buttons in your SaaS UI (settings links, delete actions, expand toggles). Use a screen reader (NVDA on Windows, VoiceOver on Mac) to navigate your site—does each link make sense when read aloud in isolation?

What to do: Add visible text to every link, or use an invisible ARIA label. Instead of `<a href="/settings"><i class="icon-gear"></i></a>`, use `<a href="/settings">Settings<span class="sr-only"> (open account settings)</span></a>` or `<a href="/settings" aria-label="Settings">⚙</a>`.

HTML Document Language

The Issue: Your SaaS application's root `<html>` tag doesn't declare the language the page is written in.

How to check on custom SaaS applications: View your page source (Ctrl+U or Cmd+U) and look at the opening `<html>` tag. It should say `<html lang="fr">` for French-language SaaS, or `<html lang="en">` for English. If there's no `lang` attribute, or it's empty, screen readers will try to guess and mispronounce text.

What to do: Add `lang="fr"` to your root `<html>` tag if your SaaS is in French, or the appropriate language code for your content. If you support multiple languages on one page, add `lang` attributes to individual sections (e.g., `<section lang="en">` for English help text embedded in a French interface).

Button Labels

The Issue: Clickable buttons in your SaaS—save, delete, cancel, filter actions—have no readable text, only an icon or background image.

How to check on custom SaaS applications: Inspect every button in your interface (header buttons, table row actions, modal actions). Look for `<button>` or `<div role="button">` tags with no visible text. Open your page with a screen reader and activate buttons—can you hear what each button does?

What to do: Ensure every button has visible text (preferred) or a hidden ARIA label. For icon buttons, use `<button aria-label="Delete row">🗑</button>` or `<button>Delete <span class="sr-only">row</span></button>`. Keep button text concise and action-oriented.

Next Steps

Run an automated WCAG scan (Axe DevTools, Lighthouse) on your SaaS application to identify these issues at scale, then prioritize fixes by user impact: missing form labels and link names affect core navigation and data entry, while color contrast and alt text affect specific user groups but block access to important content. Plan remediation before June 28, 2025, when the European Accessibility Act enforcement begins; accessibility debt grows exponentially if left unchecked. Involve QA and design in the fix process—this isn't a developer-only problem.

This is technical WCAG guidance, not legal advice.

See exactly where your site fails

Run a free automated scan and get a real WCAG violation report in seconds — no signup required.

Scan your site for free