EAA-compliancechecklist: EN 301 549 webvereisten
Volledige checklist voor naleving van de Europese Toegankelijkheidswet (EAA). Alle EN 301 549 Hoofdstuk 9-vereisten (webcontent) gekoppeld aan WCAG 2.2, met indicatoren voor geautomatiseerd en handmatig testen.
Snelle referentie: EN 301 549 in één oogopslag
EN 301 549 en de EAA begrijpen
De Europese Toegankelijkheidswet (EAA) vereist dat digitale producten en diensten die aan EU-consumenten worden verkocht, toegankelijk zijn. De technische norm waarnaar wordt verwezen is EN 301 549, die WCAG 2.1 Level AA voor webcontent overneemt.
EN 301 549 Hoofdstuk 9 behandelt de vereisten voor webcontent. De clausulenummers komen rechtstreeks overeen met WCAG: EN 301 549-clausule 9.X.Y.Z verwijst naar WCAG X.Y.Z. Bijvoorbeeld: EN 301 549-clausule 9.1.4.3 komt overeen met WCAG 1.4.3 (Contrast).
Hoe u deze checklist gebruikt
- Geautomatiseerde vereisten kunnen worden gedetecteerd door scantools (inclly detecteert deze)
- Handmatige vereisten vereisen menselijk oordeel en testen
Elke vereiste toont zowel het EN 301 549-clausulenummer (voor EU-compliancedocumentatie) als het bijbehorende WCAG-criterium (voor technische implementatie).
9.1 Waarneembaar
Informatie en componenten van de gebruikersinterface moeten aan gebruikers worden gepresenteerd op manieren die zij kunnen waarnemen.
Niet-tekstuele content
Level AAlle niet-tekstuele content die aan de gebruiker wordt gepresenteerd, heeft een tekstalternatief dat hetzelfde doel dient.
Hoe op te lossen
- -Voeg alt-tekst toe aan alle informatieve afbeeldingen
- -Gebruik leeg alt="" voor decoratieve afbeeldingen
- -Bied tekstalternatieven voor complexe afbeeldingen
Alleen audio en alleen video (opgenomen)
Level ABied alternatieven voor op tijd gebaseerde media: transcripties voor audio, audiobeschrijving of tekst voor video.
Hoe op te lossen
- -Maak transcripties voor podcasts
- -Voeg audiobeschrijvingen toe voor video-only content
Ondertiteling (opgenomen)
Level AOndertiteling wordt aangeboden voor alle opgenomen audiocontent in gesynchroniseerde media.
Hoe op te lossen
- -Voeg gesynchroniseerde ondertiteling toe aan alle video's met audio
- -Vermeld de spreker
Audiobeschrijving of media-alternatief
Level AEen alternatief voor op tijd gebaseerde media of audiobeschrijving wordt aangeboden voor opgenomen videocontent.
Hoe op te lossen
- -Bied audiobeschrijvingen voor visuele informatie in video's
Audiobeschrijving (opgenomen)
Level AAAudiobeschrijving wordt aangeboden voor alle opgenomen videocontent.
Hoe op te lossen
- -Voeg audiobeschrijvingen toe die visuele elementen beschrijven tijdens natuurlijke pauzes
Info en relaties
Level AInformatie, structuur en relaties die via presentatie worden overgebracht, kunnen programmatisch worden bepaald.
Hoe op te lossen
- -Gebruik semantische HTML
- -Koppel labels aan formulierinvoervelden
- -Gebruik correcte tabelopmaak
Betekenisvolle volgorde
Level AWanneer de volgorde waarin content wordt gepresenteerd de betekenis beïnvloedt, kan de juiste leesvolgorde programmatisch worden bepaald.
Hoe op te lossen
- -Zorg dat de DOM-volgorde overeenkomt met de visuele volgorde
- -Test met uitgeschakelde CSS
Zintuiglijke kenmerken
Level AInstructies voor het begrijpen en bedienen van content zijn niet uitsluitend afhankelijk van zintuiglijke kenmerken.
Hoe op te lossen
- -Vermijd "klik op de groene knop" of "zie de zijbalk"
- -Gebruik meerdere identificerende kenmerken
Oriëntatie
Level AAContent beperkt de weergave en bediening niet tot één schermoriëntatie.
Hoe op te lossen
- -Ondersteun zowel portret- als landschapsoriëntatie
- -Beperk alleen indien essentieel
Identificeer invoerdoel
Level AAHet doel van elk invoerveld dat informatie over de gebruiker verzamelt, kan programmatisch worden bepaald.
Hoe op te lossen
- -Gebruik autocomplete-attributen op velden voor persoonlijke informatie
- -Bijv. autocomplete="email"
Gebruik van kleur
Level AKleur wordt niet als het enige visuele middel gebruikt om informatie over te brengen.
Hoe op te lossen
- -Voeg pictogrammen of tekstlabels toe naast kleurindicatoren
- -Gebruik patronen in grafieken
Audiobediening
Level AAls audio langer dan 3 seconden automatisch wordt afgespeeld, bied dan een mechanisme om te pauzeren of te stoppen.
Hoe op te lossen
- -Vermijd automatisch afspelen van audio
- -Bied pauzeer-/stopbediening indien nodig
Contrast (minimum)
Level AATekst heeft een contrastverhouding van minimaal 4,5:1 (3:1 voor grote tekst).
Hoe op te lossen
- -Gebruik een contrastcheckertool
- -Grote tekst (18pt+) vereist 3:1-verhouding
Tekstgrootte wijzigen
Level AATekst kan zonder hulptechnologie tot 200% worden vergroot zonder verlies van content of functionaliteit.
Hoe op te lossen
- -Gebruik relatieve eenheden (rem, em)
- -Test bij 200% browserzoom
Afbeeldingen van tekst
Level AAAls dezelfde visuele presentatie met tekst kan worden bereikt, worden afbeeldingen van tekst niet gebruikt.
Hoe op te lossen
- -Gebruik CSS voor tekststijlen in plaats van afbeeldingen
- -Logo's zijn een uitzondering
Reflow
Level AAContent kan worden gepresenteerd zonder verlies van informatie of functionaliteit bij een breedte van 320px zonder tweedimensionaal scrollen.
Hoe op te lossen
- -Gebruik responsive design
- -Test bij een viewportbreedte van 320px
Niet-tekstueel contrast
Level AAVisuele informatie die nodig is om UI-componenten en grafische objecten te identificeren, heeft minimaal 3:1-contrast.
Hoe op te lossen
- -Formulierinvoervelden moeten zichtbare randen hebben
- -Focusindicatoren vereisen 3:1-contrast
Tekstafstand
Level AAGeen verlies van content of functionaliteit wanneer gebruikers eigenschappen van tekstafstand aanpassen.
Hoe op te lossen
- -Vermijd containers met vaste hoogte voor tekst
- -Test met verhoogde regelhoogte en letterafstand
Content bij hover of focus
Level AAExtra content die verschijnt bij hover/focus is afwijsbaar, hoverbaar en persistent.
Hoe op te lossen
- -Tooltips moeten afwijsbaar zijn met Escape
- -Content moet zichtbaar blijven totdat deze wordt afgewezen
9.2 Bedienbaar
Componenten van de gebruikersinterface en navigatie moeten bedienbaar zijn.
Toetsenbord
Level AAlle functionaliteit is beschikbaar via het toetsenbord.
Hoe op te lossen
- -Test alleen met Tab, Enter, Spatie en pijltoetsen
- -Zorg dat alle interactieve elementen focusbaar zijn
Geen toetsenbordval
Level AToetsenbordfocus kan van elk component worden verplaatst met alleen het toetsenbord.
Hoe op te lossen
- -Test modals en dialogen op toetsenbordnavigatie
- -Focus mag nooit vastzitten
Tekentoetssnelkoppelingen
Level ASneltoetsen met één teken kunnen worden uitgeschakeld of opnieuw toegewezen.
Hoe op te lossen
- -Vermijd sneltoetsen met één toets
- -Bied instellingen om uit te schakelen of opnieuw toe te wijzen
Timing aanpasbaar
Level AGebruikers kunnen tijdslimieten uitschakelen, aanpassen of verlengen.
Hoe op te lossen
- -Waarschuw gebruikers voor sessietime-out
- -Sta verlenging van tijdslimieten toe
Pauzeren, stoppen, verbergen
Level ABewegende, knipperende of scrollende content kan worden gepauzeerd, gestopt of verborgen.
Hoe op te lossen
- -Carrousels moeten pauzeerbediening hebben
- -Animaties langer dan 5 seconden moeten bediening hebben
Drie flitsen of onder drempel
Level AWebpagina's bevatten niets dat meer dan drie keer per seconde flitst.
Hoe op te lossen
- -Vermijd flitsende content volledig
- -Houd de flitsfrequentie onder 3 Hz
Blokken omzeilen
Level AEr is een mechanisme beschikbaar om blokken content over te slaan die op meerdere pagina's worden herhaald.
Hoe op te lossen
- -Voeg een "ga naar hoofdinhoud"-link toe
- -Gebruik ARIA-landmarks
Paginatitel
Level AWebpagina's hebben titels die het onderwerp of doel beschrijven.
Hoe op te lossen
- -Elke pagina moet een unieke, beschrijvende titel hebben
- -Vermeld zowel paginanaam als sitenaam
Focusvolgorde
Level AAls de navigatievolgorde de betekenis beïnvloedt, ontvangen focusbare componenten focus in een volgorde die de betekenis behoudt.
Hoe op te lossen
- -Tabvolgorde moet de visuele leesvolgorde volgen
- -Modals moeten focus op de juiste manier vasthouden
Linkdoel (in context)
Level AHet doel van elke link kan worden bepaald uit de linktekst alleen of met programmatisch bepaalde context.
Hoe op te lossen
- -Vermijd "klik hier" zonder context
- -Gebruik aria-label indien nodig
Meerdere manieren
Level AAEr is meer dan één manier beschikbaar om een webpagina te vinden binnen een set webpagina's.
Hoe op te lossen
- -Bied zoekfunctionaliteit
- -Neem een sitemap op
- -Gebruik duidelijke navigatie
Koppen en labels
Level AAKoppen en labels beschrijven het onderwerp of doel.
Hoe op te lossen
- -Gebruik beschrijvende, unieke koppen
- -Formulierlabels moeten duidelijk de verwachte invoer beschrijven
Focus zichtbaar
Level AAElke met het toetsenbord bedienbare gebruikersinterface heeft een zichtbare focusindicator.
Hoe op te lossen
- -Verwijder nooit outline zonder vervanging
- -Gebruik :focus-visible voor toetsenbordstijlen
Focus niet verborgen (minimum)
Level AAWanneer een element toetsenbordfocus ontvangt, is het niet volledig verborgen door content van de auteur.
Hoe op te lossen
- -Sticky headers mogen gefocuste elementen niet bedekken
- -Gebruik scroll-margin voor sticky elementen
Aanwijzergebaren
Level AAlle functionaliteit die meerpunts- of padgebaren gebruikt, kan met een enkele aanwijzer worden bediend.
Hoe op te lossen
- -Knijpen-om-te-zoomen moet knop-alternatieven hebben
- -Veeggebaren moeten knop-alternatieven hebben
Aanwijzerannulering
Level AVoor functionaliteit met een enkele aanwijzer geldt minimaal één van de volgende: geen down-event, afbreken of ongedaan maken, up-omkering, essentieel.
Hoe op te lossen
- -Gebruik click/touch-end in plaats van mousedown
- -Bied ongedaan maken voor destructieve acties
Label in naam
Level AVoor UI-componenten met zichtbare tekstlabels bevat de toegankelijke naam de zichtbare tekst.
Hoe op te lossen
- -De toegankelijke naam moet overeenkomen met of het zichtbare label bevatten
Bewegingsactivering
Level AFunctionaliteit die wordt geactiveerd door apparaatbeweging kan worden bediend via gebruikersinterfacecomponenten.
Hoe op te lossen
- -Schudden-om-ongedaan-te-maken heeft een knopalternatief nodig
- -Bewegingsbediening moet optioneel zijn
Sleepbewegingen
Level AAAlle functionaliteit die sleepbewegingen gebruikt, kan worden bereikt met een enkele aanwijzer zonder slepen.
Hoe op te lossen
- -Bied omhoog/omlaag-knoppen voor het herordenen van lijsten
- -Slepen-om-te-herordenen vereist een alternatief met één klik
Doelgrootte (minimum)
Level AADe grootte van het doelgebied voor aanwijzerinvoer is minimaal 24 bij 24 CSS-pixels.
Hoe op te lossen
- -Knoppen en links minimaal 24x24 pixels
- -44x44 pixels aanbevolen voor mobiel
9.3 Begrijpelijk
Informatie en de bediening van de gebruikersinterface moeten begrijpelijk zijn.
Taal van de pagina
Level ADe standaard menselijke taal van elke webpagina kan programmatisch worden bepaald.
Hoe op te lossen
- -Voeg het lang-attribuut toe aan het html-element
- -Gebruik de juiste taalcode (en, nl, de, etc.)
Taal van onderdelen
Level AADe menselijke taal van elke passage of zin kan programmatisch worden bepaald.
Hoe op te lossen
- -Gebruik het lang-attribuut op elementen met tekst in een andere taal
Bij focus
Level AWanneer een component focus ontvangt, veroorzaakt dit geen contextwijziging.
Hoe op te lossen
- -Formulieren niet automatisch verzenden bij focus
- -Geen nieuwe vensters openen bij focus
Bij invoer
Level AHet wijzigen van de instelling van een UI-component veroorzaakt niet automatisch een contextwijziging, tenzij de gebruiker is geïnformeerd.
Hoe op te lossen
- -Formulieren moeten expliciete verzendknoppen hebben
- -Waarschuw vóór automatisch verzenden
Consistente navigatie
Level AANavigatiemechanismen die op meerdere pagina's worden herhaald, verschijnen in dezelfde relatieve volgorde.
Hoe op te lossen
- -Houd navigatie op dezelfde locatie op alle pagina's
- -Handhaaf een consistente menuvolgorde
Consistente identificatie
Level AAComponenten met dezelfde functionaliteit worden consistent geïdentificeerd.
Hoe op te lossen
- -Gebruik consistente labels voor vergelijkbare functies
- -Zoekpictogrammen moeten altijd zoeken betekenen
Consistente hulp
Level AAls hulpmechanismen op meerdere pagina's worden aangeboden, verschijnen ze in dezelfde relatieve volgorde.
Hoe op te lossen
- -Houd hulplinks op een consistente locatie
- -Contactinformatie moet op dezelfde plek staan
Foutidentificatie
Level AAls een invoerfout automatisch wordt gedetecteerd, wordt het foutieve item geïdentificeerd en wordt de fout beschreven.
Hoe op te lossen
- -Toon duidelijke foutmeldingen
- -Identificeer welk veld de fout bevat
Labels of instructies
Level ALabels of instructies worden aangeboden wanneer content invoer van de gebruiker vereist.
Hoe op te lossen
- -Elk formulierveld heeft een label nodig
- -Bied formaathints voor verwachte invoer
Foutsuggestie
Level AAAls een invoerfout wordt gedetecteerd en suggesties bekend zijn, worden deze aangeboden.
Hoe op te lossen
- -Stel correcties voor waar mogelijk
- -Toon het verwachte formaat voor ongeldige invoer
Foutpreventie (juridisch, financieel, data)
Level AAVoor pagina's met juridische verplichtingen of financiële transacties: omkeerbaar, gecontroleerd of bevestigd.
Hoe op te lossen
- -Sta beoordeling toe vóór verzending
- -Bied een bevestigingsstap
- -Sta ongedaan maken toe
Redundante invoer
Level AEerder door de gebruiker ingevoerde informatie wordt automatisch ingevuld of is beschikbaar voor selectie.
Hoe op te lossen
- -Vul verzendadres automatisch in vanuit factuuradres
- -Onthoud voorkeuren binnen de sessie
Toegankelijke authenticatie (minimum)
Level AACognitieve functietests zijn niet vereist voor enige stap in de authenticatie, tenzij alternatieven worden aangeboden.
Hoe op te lossen
- -Sta wachtwoordmanagers toe
- -Bied kopiëren/plakken voor codes
- -Bied CAPTCHA-alternatieven
9.4 Robuust
Content moet robuust genoeg zijn om betrouwbaar te worden geïnterpreteerd door user agents, inclusief hulptechnologieën.
Naam, rol, waarde
Level AVoor alle UI-componenten kunnen de naam en rol programmatisch worden bepaald; statussen, eigenschappen en waarden kunnen programmatisch worden ingesteld.
Hoe op te lossen
- -Aangepaste componenten hebben ARIA-rollen nodig
- -Gebruik aria-pressed voor schakelaars
- -Gebruik aria-expanded voor uitklapbare elementen
Statusberichten
Level AAStatusberichten kunnen programmatisch worden bepaald zonder focus te ontvangen.
Hoe op te lossen
- -Gebruik aria-live regio's voor updates
- -Gebruik role="alert" voor foutmeldingen
- -Kondig laadstatussen aan
Veelgestelde vragen
Wat is de relatie tussen EN 301 549 en WCAG?
EN 301 549 is de Europese norm voor ICT-toegankelijkheid. Hoofdstuk 9 (Web) neemt WCAG 2.1 Level AA rechtstreeks over. De clausulenummers komen direct overeen: EN 301 549-clausule 9.X.Y.Z komt overeen met WCAG X.Y.Z. Als u voldoet aan WCAG 2.2 AA, voldoet u aan de webvereisten van EN 301 549.
Geldt de EAA voor mijn bedrijf buiten de EU?
Ja, als u digitale producten of diensten verkoopt aan EU-consumenten. De EAA is van toepassing op basis van waar uw klanten zich bevinden, niet waar uw bedrijf is gevestigd. Amerikaanse en Britse bedrijven die aan EU-klanten verkopen, moeten voldoen.
Wat is de deadline voor EAA-compliance?
De EAA is sinds 28 juni 2025 van kracht. Alle gedekte producten en diensten moeten nu toegankelijk zijn. Er geldt een overgangsperiode tot juni 2030 voor bestaande producten die vóór juni 2025 op de markt zijn gebracht.
Wat zijn de sancties bij niet-naleving?
Sancties variëren per EU-lidstaat, aangezien elk land de EAA handhaaft via nationale wetgeving. Sancties kunnen bestaan uit boetes, verplichte herstelling en in sommige gevallen verwijdering van producten van de markt. In Nederland is de ACM (Autoriteit Consument & Markt) de handhavende instantie.
Moet ik een toegankelijkheidsverklaring opstellen?
Ja, de EAA vereist een toegankelijkheidsverklaring die de nalevingsstatus, bekende beperkingen en contactgegevens beschrijft. Deze verklaring moet worden bijgewerkt wanneer u significante wijzigingen aanbrengt. inclly kan helpen bij het genereren van EU-conforme toegankelijkheidsverklaringen op basis van uw scangegevens.
Verder leren
Ontdek gerelateerde gidsen ter ondersteuning van uw Europese toegankelijkheidscompliance.
Europese Toegankelijkheidswet
Wat Amerikaanse en Britse bedrijven moeten weten over de EAA in 2026.
EN 301 549 Gids
De Europese toegankelijkheidsnorm uitgelegd met hoofdstukindelingen.
EAA vs WCAG
Hoe de Europese Toegankelijkheidswet zich verhoudt tot WCAG en wat compliance betekent.
ACM Toegankelijkheidsvereisten
Nederlandse EAA-handhavingstermijnen en compliancestappen voor Nederland.
Klaar om uw EAA-compliance te controleren?
inclly scant uw website op EN 301 549-vereisten en biedt specifieke hersteladviezen. Zie precies wat moet worden aangepast om EU-compliance te bereiken.