Sigilan sääntökirja
Kaikki WCAG 2.1 -ohjeiden A- ja AA-tason vaatimukset ja WCAG 2.2:n uudet vaatimukset selkeällä suomella. Avaa otsikko, niin näet kuvan ja selityksen: mitä vaatimus tarkoittaa, keitä se koskee ja miten sen tarkistat. Tekijälle tarkoitettu korjausohje on jokaisen kohdan lopussa.
56 vaatimusta, joista 6 uusia WCAG 2.2:ssa · Sigila tarkistaa niistä 29 osittain · 27 vaatii ihmisen arvion
Automaattinen tarkistus löytää yleisimmät virheet, mutta se ei voi todistaa, että vaatimus täyttyy. Virheetön tulos Sigilassa on hyvä alku, ei todistus siitä, että sivusto on saavutettava.
Laki vaatii tason AA: mitä se tarkoittaa ja ketä se koskee
Laki ei erottele A- ja AA-tasoa. Kun saavutettavuusvaatimukset koskevat sivustoa, sen pitää täyttää WCAG 2.1 -ohjeiden taso AA, eli 50 vaatimusta: 30 A-tason ja 20 AA-tason vaatimusta. Kumpikaan taso ei ole toista vapaaehtoisempi. Ero on siinä, kuinka pahasti puute haittaa: A-tason puute estää usein joltakulta käytön kokonaan, AA-tason puute tekee käytöstä selvästi vaikeampaa.
Vaatimus tulee eurooppalaisesta standardista EN 301 549, jonka voimassa oleva versio 3.2.1 perustuu WCAG 2.1:een. Standardin uusi versio 4.1.1 julkaistiin syyskuussa 2026. Se perustuu WCAG 2.2:een ja tuo kuusi uutta vaatimusta, jotka on merkitty tähän sääntökirjaan merkinnällä WCAG 2.2. Uusi versio korvaa nykyisen, kun Euroopan komissio julkaisee siitä viittauksen EU:n virallisessa lehdessä. Ajankohtaa ei ole vielä kerrottu. Uudet vaatimukset kannattaa korjata jo nyt, koska ne helpottavat käyttöä heti.
Julkista sektoria, kuten kuntia ja valtion virastoja, vaatimukset ovat koskeneet vuodesta 2019. Kesäkuun 28. päivästä 2025 ne koskevat myös monia kuluttajille tarjottavia palveluja, kuten verkkokauppoja, kuluttajien pankkipalveluja, joukkoliikenteen lipunmyyntiä ja e-kirjoja.
Palveluja tarjoavat mikroyritykset on vapautettu. Mikroyritys tarkoittaa alle kymmenen hengen yritystä, jonka liikevaihto tai tase on enintään 2 miljoonaa euroa. Esimerkiksi kahden hengen taidekaupan verkkokauppaa laki ei siis koske, mutta samat korjaukset palvelevat sen asiakkaita silti. Kunnan verkkosivustoa laki koskee.
Yksittäisen sivuston kohdalla soveltaminen voi vaatia tulkintaa, esimerkiksi silloin, kun sivustolla on sekä verkkokauppa että muuta sisältöä.
Lakisivulla (englanniksi) on tarkemmin lait, valvonta ja saavutettavuusseloste.
Sanasto: sanat, jotka toistuvat tässä sääntökirjassa
- Ruudunlukija
- Ohjelma, joka lukee sivun sisällön ääneen tai pistekirjoitusnäytölle. Sokeat ja monet heikkonäköiset käyttävät verkkosivuja sen avulla.
- Puheohjaus
- Ohjelma, jolla tietokonetta ja verkkosivuja käytetään puhumalla, esimerkiksi sanomalla painikkeen nimi ääneen.
- Apuväline
- Yhteisnimi ohjelmille ja laitteille, joiden avulla ihminen käyttää tietokonetta, kun tavallinen tapa ei onnistu: ruudunlukija, suurennusohjelma, puheohjaus ja erilaiset ohjaimet.
- Kohdistus
- Kohta, jossa näppäimistö on sillä hetkellä. Kun painat Tab-näppäintä, kohdistus siirtyy seuraavaan linkkiin, painikkeeseen tai kenttään, ja Enter valitsee sen.
- Tab-näppäin
- Sarkainnäppäin näppäimistön vasemmassa reunassa, Q-kirjaimen vieressä. Sillä liikutaan sivulla kohdasta toiseen ilman hiirtä.
- Alt-teksti
- Kuvan sanallinen kuvaus, joka kirjoitetaan sivun koodiin. Se ei näy sivulla, mutta ruudunlukija lukee sen kuvan kohdalla.
- Koodi ja HTML
- Sivun rakenne, jonka selain näyttää sivuna. Moni saavutettavuuden kannalta tärkeä tieto on koodissa eikä näy silmin.
- ARIA
- Koodiin lisättäviä merkintöjä, joilla kerrotaan apuvälineille, mikä jokin sivun osa on ja missä tilassa se on, kun sivun tavalliset elementit eivät siihen riitä.
- Kontrasti
- Kahden värin välinen kirkkausero. Se ilmoitetaan suhdelukuna: 1:1 tarkoittaa, ettei eroa ole lainkaan, ja 21:1 on mustan ja valkoisen ero.
- Taso A, AA ja AAA
- WCAG jakaa vaatimukset kolmeen tasoon: A, AA ja AAA. A-tason puute estää usein joltakulta käytön kokonaan, ja AA-tason puute tekee käytöstä selvästi vaikeampaa. Tasot kasautuvat: AA-taso tarkoittaa, että sekä kaikki A-tason että kaikki AA-tason vaatimukset täyttyvät. AAA-taso on tavoitteellinen, eikä laki edellytä sitä.
Sivu muistaa, mihin kohtaan jäit. Tieto on vain omassa selaimessasi, eikä sitä lähetetä minnekään.
1. Havaittava
Jokaisen pitää pystyä havaitsemaan sisältö jollakin aistilla: näkemällä, kuulemalla tai ruudunlukijan avulla.
Kuvalla pitää olla sanallinen kuvausJos kuva kertoo jotain tärkeää, sama asia pitää kertoa myös sanoin. Muuten sokea käyttäjä jää siitä paitsi.
Vasemmasta kuvasta puuttuu HTML-koodiin kirjoitettava alt-teksti, jota ruudunlukijaohjelma käyttää lukiessaan kuvan sisällön ääneen sitä tarvitsevalle käyttäjälle.
<img src="koira.jpg" >
<img
src="koira.jpg"
alt="Ruskea koira noutaa oranssia palloa"Sokea tai heikkonäköinen käyttää usein ruudunlukijaa eli ohjelmaa, joka lukee sivun ääneen. Kuvaa ruudunlukija ei näe. Siksi jokaiselle kuvalle kirjoitetaan sivun koodiin lyhyt kuvaus, niin sanottu alt-teksti, ja ruudunlukija lukee sen kuvan kohdalla. Sama koskee kuvakkeita, kuten hakupainikkeen suurennuslasia: kuvauksen pitää kertoa, mitä painike tekee. Pelkät koristekuvat merkitään niin, että ruudunlukija ohittaa ne.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 45/299 sivustolta (15 %).
Ketä tämä koskee
Sokeat ja heikkonäköiset, jotka käyttävät ruudunlukijaa. Lisäksi kaikki, joilla kuvat eivät lataudu hitaan yhteyden takia, ja hakukoneet, jotka eivät näe kuvia.
Näin tarkistat itse
Käy sivun kuvat läpi ja kysy jokaisesta: jos tätä kuvaa ei näkyisi, mitä tärkeää jäisi kertomatta? Juuri se kuvauksen pitää sanoa. Kuvakepainikkeista kysy, kertooko kuvaus, mitä painike tekee. Pelkällä koristekuvalla ei pidä olla kuvausta lainkaan.
Mitä Sigila tarkistaa puolestasi
Sigila löytää kuvat, kuvina tehdyt painikkeet ja muut kuvaksi merkityt elementit, joilta kuvaus puuttuu, ja ympyröi ne sivun kuvaan. Sitä, kertooko olemassa oleva kuvaus oikean asian, kone ei pysty arvioimaan. Se jää ihmisen tarkistettavaksi.
Tekijälle: näin korjaat
Mikä on vialla
Kuvalta puuttuu alt-teksti eli koodiin kirjoitettu kuvaus. Ruudunlukija lukee silloin kuvan tiedostonimen, esimerkiksi ”IMG_4032.jpg”, tai ohittaa kuvan kokonaan.
Missä tätä tavallisesti näkee
Tuote- ja artikkelikuvat, bannerit, logot, kuvakkeilla tehdyt painikkeet ja linkit sekä kaaviot.
Korjaus
Lisää kuvaan alt-määrite: <img src="koira.jpg" alt="Ruskea koira noutaa oranssia palloa">. Kerro kuvauksessa se, mikä kuvassa on tärkeää juuri tällä sivulla, ei kaikkea mitä näkyy. Koristekuvalle annetaan tyhjä kuvaus alt="", jolloin ruudunlukija ohittaa sen. Kuvakepainikkeen kuvaus kertoo toiminnon: <button><img src="luuppi.svg" alt="Hae"></button>. Kaaviolle kirjoitetaan lyhyt kuvaus alt-tekstiin ja luvut tekstinä tai taulukkona kaavion viereen. Logon kuvaukseen kirjoitetaan logon teksti. Jos linkissä tai painikkeessa on jo teksti, sen vieressä oleva kuvake on koriste ja saa tyhjän kuvauksen alt="".
Sigilan automaattiset mittarit tälle kriteerille
Mittarilta puuttuu nimi
aria-meter-nameMittarilta (
<meter>tairole="meter") puuttuu nimi, joten ruudunlukija ei kerro, mitä se mittaa.Missä tavallisesti: Kiintiön käytön, varastotilanteen ja salasanan vahvuuden näytöt.
Korjaus: Nimeä mittari:
<label for="kiintio">Tallennustilaa käytetty</label><meter id="kiintio" min="0" max="100" value="40"></meter>.Edistymispalkilta puuttuu nimi
aria-progressbar-nameEdistymispalkilta (
<progress>tairole="progressbar") puuttuu nimi, joten ruudunlukija ei kerro, minkä etenemistä se näyttää.Missä tavallisesti: Latauspalkit ja monivaiheisten lomakkeiden vaihenäytöt.
Korjaus: Nimeä palkki:
<progress aria-label="Tiedoston lataus" value="70" max="100"></progress>.Kuvalta puuttuu alt-teksti
image-altKuvalla (
<img>) ei ole alt-määritettä lainkaan, joten ruudunlukija lukee tiedostonimen tai ohittaa kuvan.Missä tavallisesti: Tuote- ja artikkelikuvat, bannerit ja logot.
Korjaus: Lisää kuvaus:
<img src="koira.jpg" alt="Ruskea koira noutaa oranssia palloa">. Pelkälle koristekuvalle annetaan tyhjäalt="", jolloin ruudunlukija ohittaa sen.Kuvapainikkeelta puuttuu teksti
input-image-altLomakkeen kuvana tehdyllä painikkeella (
<input type="image">) ei ole alt-tekstiä, joten ruudunlukijan käyttäjä ei tiedä, mitä painike tekee.Missä tavallisesti: Kuvina tehdyt haku- ja lähetyspainikkeet.
Korjaus: Kirjoita painikkeen toiminto alt-tekstiin:
<input type="image" src="haku.png" alt="Hae">. Vielä parempi on tavallinen painike, jossa on teksti:<button>Hae</button>.Upotetulta sisällöltä puuttuu tekstivastine
object-alt<object>-elementillä upotetulla sisällöllä ei ole tekstivastinetta.Missä tavallisesti: PDF-katselimet, kartat ja vanhojen järjestelmien upotukset.
Korjaus: Kirjoita kuvaus elementin sisään:
<object data="kartta.pdf" type="application/pdf">Toimipisteen kartta: sisäänkäynti on Asemakadun puolella.</object>, tai anna elementillearia-label.Kuvaksi merkityltä elementiltä puuttuu nimi
role-img-altElementti on merkitty kuvaksi (
role="img"), mutta sillä ei ole nimeä, jonka ruudunlukija voisi lukea.Missä tavallisesti: Taustakuvina tehdyt kuvakkeet ja kuvitukset.
Korjaus: Anna elementille nimi:
<div role="img" aria-label="Sademäärä tänään 12 mm"></div>. Pelkkä koriste merkitäänaria-hidden="true".SVG-kuvalta puuttuu nimi
svg-img-altKuvaksi merkitty SVG-kuva ei kerro ruudunlukijalle, mitä se esittää.
Missä tavallisesti: SVG-muotoiset logot, kuvakkeet ja kaaviot.
Korjaus: Anna kuvalle nimi:
<svg role="img" aria-label="Yritys Oy:n logo">…</svg>, tai kirjoita nimi SVG:n sisään:<svg role="img"><title>Yritys Oy:n logo</title>…</svg>. Pelkkä koriste merkitäänaria-hidden="true".
Äänitallenteelle ja äänettömälle videolle tarvitaan vaihtoehtoKuuro ei kuule podcastia, eikä sokea näe äänetöntä videota. Kummastakin pitää saada sama tieto toisella tavalla.
Vasemmalla podcastilla ei ole tekstiversiota, joten kuulovammainen kuuntelija jää sisällöstä paitsi. Oikealla soittimen alla on tekstiversio, jonka voi lukea.

<audio controls src="forest-path.mp3"></audio>
<!-- ei tekstiversiota -->

<audio controls src="forest-path.mp3"></audio>
<details open><summary>Transcript</summary>…</details>
Vaatimus koskee tallenteita, joissa on pelkkää ääntä, kuten podcasteja ja haastatteluja, tai pelkkää kuvaa, kuten äänettömiä esittelyvideoita. Äänitallenteelle tarvitaan tekstiversio, josta saman tiedon saa lukemalla. Äänettömälle videolle riittää joko tekstiversio tai ääniraita, joka kertoo, mitä kuvassa tapahtuu. Pelkästään koristeena pyörivä taustavideo ei tarvitse vaihtoehtoa, eikä tallenne, joka on itse vaihtoehto sivun tekstille, kuten artikkelin ääniversio, kun se kerrotaan sen yhteydessä.
Ketä tämä koskee
Kuurot ja huonokuuloiset äänitallenteiden kohdalla, sokeat ja heikkonäköiset äänettömien videoiden kohdalla. Tekstiversiosta hyötyvät myös ne, jotka eivät voi kuunnella ääntä juuri silloin, sekä hakukoneet.
Näin tarkistat itse
Käy läpi sivuston podcastit, äänitallenteet ja äänettömät videot. Onko jokaisen vieressä tekstiversio tai linkki siihen? Kertooko se saman asian kuin tallenne?
Mitä Sigila tarkistaa puolestasi
Sigila löytää sivulta äänitallenteet ja kysyy raportissa, onko niille tekstiversio. Vastauksesi tallentuu raporttiin. Sitä, kertooko tekstiversio kaiken olennaisen, kone ei pysty arvioimaan.
Tekijälle: näin korjaat
Mikä on vialla
Pelkkää ääntä sisältävältä tallenteelta, kuten podcastilta, puuttuu tekstiversio, tai äänettömältä videolta puuttuu sekä tekstiversio että ääniraita, joka kertoo kuvan tapahtumat.
Missä tätä tavallisesti näkee
Podcastit, haastattelutallenteet, äänikirjojen näytteet sekä äänettömät tuote- ja palveluesittelyt.
Korjaus
Kirjoita tallenteesta tekstiversio ja sijoita se tai linkki siihen soittimen viereen: <audio controls src="jakso12.mp3"></audio> <a href="/podcast/jakso12-teksti">Jakson 12 tekstiversio</a>. Tekstiversion voi myös avata samalle sivulle <details>-elementillä, jolloin käyttäjän ei tarvitse siirtyä. Äänettömälle videolle riittää tekstikuvaus samaan tapaan tai ääniraita, joka kertoo kuvan tapahtumat.
Videolla, jossa puhutaan, pitää olla tekstitysIlman tekstitystä kuuro ja huonokuuloinen eivät saa puheesta selvää. Moni muukin katsoo videoita äänet pois päältä.
Vasemmalla luontovideolla kertoja puhuu, mutta tekstitystä ei ole, joten kuulokojetta käyttävä katsoja jää puheesta paitsi. Oikealla tekstitys näyttää kertojan puheen ja tärkeän äänen: NARRATOR: Foxes hunt mostly at dawn and dusk. [twigs snapping]

<video controls src="kettu.mp4"></video>
<!-- ei tekstitysraitaa -->

<track kind="captions" srclang="en" src="kettu.vtt" default>
Tallennetulle videolle, jossa on puhetta tai muuta tärkeää ääntä, tarvitaan tekstitys. Tekstityksen pitää kattaa puhe ja ne äänet, joilla on merkitystä, kuten ovikello tai naurahdus, jos se muuttaa viestiä. Automaattisesti luotu tekstitys on hyvä alku, mutta se pitää tarkistaa, koska siihen jää virheitä etenkin suomenkielisiin nimiin ja termeihin.
Ketä tämä koskee
Kuurot ja huonokuuloiset sekä kaikki, jotka katsovat videoita ilman ääntä, esimerkiksi julkisissa tiloissa.
Näin tarkistat itse
Katso jokainen video tekstitys päällä. Onko tekstitys mukana koko ajan, onko se oikein kirjoitettu ja pysyykö se puheen tahdissa?
Mitä Sigila tarkistaa puolestasi
Sigila löytää sivun videot ja tarkistaa, onko omalle videolle liitetty tekstitystiedosto. Upotetuista videoista, kuten YouTube-videoista, Sigila kysyy raportissa, onko tekstitys päällä. Tekstityksen laatua kone ei pysty arvioimaan.
Tekijälle: näin korjaat
Mikä on vialla
Tallennetulta videolta, jossa puhutaan, puuttuu tekstitys, tai tekstitys on olemassa mutta ei käytettävissä.
Missä tätä tavallisesti näkee
Omat HTML5-videot, YouTube- ja Vimeo-upotukset sekä esittely-, koulutus- ja kokousvideot.
Korjaus
Omalle videolle liitetään tekstitystiedosto (WebVTT): <video controls src="esittely.mp4"><track kind="captions" srclang="fi" label="Suomi" src="esittely.vtt" default></video>. Merkintä default kytkee tekstityksen päälle oletuksena. YouTubessa ja Vimeossa tekstitys lisätään palvelun omissa asetuksissa. YouTube-upotuksen osoitteeseen voi lisätä ?cc_load_policy=1, jolloin tekstitys näkyy heti. Automaattisesti luotu tekstitys pitää tarkistaa ja korjata ennen julkaisua.
Sigilan automaattiset mittarit tälle kriteerille
Videolta puuttuu tekstitys
video-captionSivun omalta videolta (
<video>) puuttuu tekstitystiedosto.Missä tavallisesti: Omalle palvelimelle ladatut videot.
Korjaus: Liitä videoon tekstitys:
<track kind="captions" srclang="fi" label="Suomi" src="video.vtt" default>. Merkintädefaultkytkee tekstityksen päälle oletuksena.
Videon kuvassa näkyvä tieto pitää kertoa myös sanoinJos tärkeä asia näkyy videolla vain kuvana, sokea katsoja jää siitä paitsi.
Vasemmalla videolla kuuluu vain musiikkia, joten sokea katsoja ei saa tietää, mitä kuvassa tapahtuu. Oikealla videon alla on teksti, joka kertoo kuvan tapahtumat, ja ruudunlukija lukee sen.

<video controls src="kettu.mp4"></video>
<!-- ääniraidalla vain musiikkia -->

<video controls src="kettu.mp4"></video>
<details open><summary>Videon kuvaus</summary>…</details>
Videolla voi näkyä asioita, joita puhe ei kerro, kuten nimiä, osoitteita, hintoja tai tapahtumia. Ne pitää kertoa myös toisella tavalla: joko kuvailutulkkauksena eli puhuttuna kuvauksena siitä, mitä kuvassa tapahtuu, tai tekstiversiona, joka kertoo videon koko sisällön. Jos puhe kertoo jo kaiken olennaisen, lisäystä ei tarvita.
Ketä tämä koskee
Sokeat ja heikkonäköiset.
Näin tarkistat itse
Kuuntele video katsomatta ruutua. Jääkö jotain tärkeää kuulematta? Jos jää, videolle tarvitaan kuvailutulkkaus tai tekstiversio.
Mitä Sigila tarkistaa puolestasi
Tätä kone ei pysty tarkistamaan, koska se riippuu siitä, mitä videolla näkyy ja sanotaan.
Tekijälle: näin korjaat
Mikä on vialla
Videolla näkyy tärkeää tietoa vain kuvana, kuten nimiä, osoitteita, hintoja tai tapahtumia, eikä puhe tai mikään tekstiversio kerro niitä.
Missä tätä tavallisesti näkee
Esittelyvideot, joissa yhteystiedot tai hinnat näkyvät vain ruudulla, ohjevideot, joissa tehdään asioita puhumatta, ja uutiskoosteet.
Korjaus
Vaihtoehtoja on kaksi. Kuvailutulkattu versio on erillinen video tai lisä-ääniraita, jossa puhuttu kuvaus kertoo kuvan olennaiset tapahtumat. Tekstiversio kertoo videon koko sisällön, myös kuvassa näkyvät asiat, ja se sijoitetaan videon viereen tai <details>-elementtiin videon alle. Helpoin ennaltaehkäisy on kertoa tärkeät tiedot jo kuvausvaiheessa myös puheessa.
Suoralla lähetyksellä pitää olla tekstitysSuorassa lähetyksessä tekstityksen pitää syntyä samaan aikaan kuin puhe. Muuten kuuro katsoja ei pysy mukana.
Vasemmalla suorasta lähetyksestä puuttuu tekstitys. Oikealla puhe näkyy tekstinä samaan aikaan kuin se sanotaan.


Vaatimus koskee suoria videolähetyksiä, joissa puhutaan, kuten webinaareja, valtuuston kokouksia ja tapahtumien suoratoistoja. Pelkkä suora äänilähetys, kuten nettiradio, ei kuulu tähän vaatimukseen. Puheen pitää näkyä tekstinä lähes samaan aikaan kuin se sanotaan. Parhaaseen laatuun pääsee pikakirjoittajalla eli ihmisellä, joka kirjoittaa puheen tekstiksi samalla kun sitä puhutaan. Automaattinen tekstitys on suomeksi vielä virhealtis.
Ketä tämä koskee
Kuurot ja huonokuuloiset.
Näin tarkistat itse
Avaa suora lähetys ja kytke tekstitys päälle. Näkyykö puhe tekstinä lähes samaan aikaan kuin se sanotaan, ja onko teksti ymmärrettävää?
Mitä Sigila tarkistaa puolestasi
Sigila ei pysty tarkistamaan suoraa lähetystä jälkikäteen. Tämä on tarkistettava lähetyksen aikana.
Tekijälle: näin korjaat
Mikä on vialla
Suorassa lähetyksessä, jossa puhutaan, ei ole samanaikaista tekstitystä.
Missä tätä tavallisesti näkee
Webinaarit, valtuuston ja hallituksen kokousten suorat lähetykset, tapahtumien suoratoistot ja suorat uutislähetykset.
Korjaus
Paras laatu syntyy pikakirjoittajan avulla: ihminen kirjoittaa puheen tekstiksi samalla kun sitä puhutaan, ja teksti syötetään lähetykseen palvelun tekstitysrajapinnan kautta. Lähetyspalveluiden automaattinen tekstitys on suomeksi vielä virhealtis, joten se sopii korkeintaan väliaikaiseksi avuksi. Tallenteeseen tehdään lähetyksen jälkeen tarkistettu tekstitys, jolloin se täyttää myös vaatimuksen 1.2.2.
Videon kuvassa tapahtuva pitää kertoa myös äänelläKun tärkeä tieto näkyy videolla vain kuvana, sokea katsoja tarvitsee kuvailutulkkauksen.
Vasemmalla videolla kuuluu vain musiikkia, joten sokea katsoja ei saa tietää, mitä kuvassa tapahtuu. Oikealla kuvailutulkkaus kertoo kuvan tapahtumat puheena: punainen kettu kulkee metsässä ja katselee ympärilleen.

<video controls src="kettu.mp4"></video>
<!-- ei kuvailutulkattua ääniraitaa -->

<video controls src="kettu-kuvailutulkattu.mp4"></video>
<!-- puhuttu kuvaus puheen tauoissa -->
Tämä on kohdan 1.2.3 tiukempi versio: tekstiversio ei riitä, vaan tallennetulla videolla pitää olla kuvailutulkkaus. Kuvailutulkkaus on puhuttu kuvaus siitä, mitä kuvassa tapahtuu, ja se kuuluu puheen tauoissa tai omana ääniraitanaan. Jos videon puhe kertoo jo kaiken olennaisen, kuvailutulkkausta ei tarvita.
Ketä tämä koskee
Sokeat ja heikkonäköiset.
Näin tarkistat itse
Kuuntele video katsomatta ruutua. Jos jotain tärkeää jää kuulematta, onko videosta kuvailutulkattu versio tai erillinen ääniraita?
Mitä Sigila tarkistaa puolestasi
Tätä kone ei pysty tarkistamaan, koska se riippuu siitä, mitä videolla näkyy ja sanotaan.
Tekijälle: näin korjaat
Mikä on vialla
Tallennetulla videolla on kuvassa tietoa, jota ääniraita ei kerro, eikä videosta ole kuvailutulkattua versiota.
Missä tätä tavallisesti näkee
Esittelyvideot, joissa kamera näyttää reitin, tuotteen yksityiskohdat tai tekstiä puhumatta, sekä ohjevideot ilman selostusta.
Korjaus
Tee videosta kuvailutulkattu versio: puhuttu kuvaus sijoitetaan puheen taukoihin, ja se julkaistaan erillisenä videona tai lisä-ääniraitana. YouTube tukee useampaa ääniraitaa. Jos taukoja ei ole tarpeeksi, tee pidempi versio, jossa kuva pysähtyy kuvauksen ajaksi. Uusia videoita tehdessä kannattaa käsikirjoittaa puhe niin, että se kertoo kuvan olennaiset asiat itse.
Sivun rakenteen pitää näkyä myös koodissaOtsikot, luettelot ja taulukot erottuvat silmälle ulkoasusta. Ruudunlukija tunnistaa ne vain, jos ne on merkitty sivun koodiin.
Vasemmalla otsikko, luettelo, taulukko ja lomakkeen kenttä on tehty pelkällä ulkoasulla, ja ruudunlukija kuulee ne pelkkänä tekstinä. Oikealla rakenne on merkitty koodiin.


Näkevä lukija hahmottaa sivun silmäyksellä: isompi lihavoitu teksti on otsikko, allekkaiset rivit luettelo ja ruudukko taulukko. Ruudunlukija ei näe ulkoasua. Se tietää sivun rakenteen vain, jos otsikot, luettelot, taulukot ja lomakkeen kenttien nimet on merkitty koodiin oikein. Silloin sokea käyttäjä voi esimerkiksi hypätä otsikosta toiseen samalla tavalla kuin näkevä silmäilee sivua.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 61/299 sivustolta (20 %).
Ketä tämä koskee
Ruudunlukijan käyttäjät sekä kaikki, jotka käyttävät selaimen lukutilaa tai omia värejä ja fontteja.
Näin tarkistat itse
Tarkista, että sivun otsikot ovat oikeita otsikoita eivätkä pelkkää lihavoitua tekstiä, luettelot oikeita luetteloita ja taulukoissa otsikkorivi. Helpoimmin sen näkee selaimen lisäosalla, joka näyttää sivun otsikkorakenteen, tai ruudunlukijalla. Tarkista myös, että jokaisella lomakkeen kentällä on nimi, joka on kytketty kenttään.
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti, onko luetteloiden ja taulukoiden rakenne merkitty koodiin oikein ja onko koko sivu vahingossa piilotettu apuvälineiltä. Sitä, onko jokin lihavoitu rivi oikeasti otsikko, kone ei pysty päättelemään.
Tekijälle: näin korjaat
Mikä on vialla
Sivun rakenne on tehty pelkällä ulkoasulla: otsikot ovat lihavoitua tekstiä, luettelot viivoilla erotettuja rivejä ja taulukot asettelua, jota ruudunlukija ei tunnista taulukoksi.
Missä tätä tavallisesti näkee
Sisällönhallintajärjestelmän tekstit, joissa otsikko on tehty lihavoinnilla, taulukoiksi asetellut sivupohjat ja lomakkeet, joiden kentät on nimetty pelkällä tekstillä kentän vieressä.
Korjaus
Käytä merkintöjä niiden merkityksen mukaan: otsikot <h1>–<h6> sisällön hierarkian mukaan, luettelot <ul> tai <ol> ja <li>, taulukot <table>, jonka otsikkosolut ovat <th scope="col"> tai <th scope="row">, ja kentän nimi <label for="sahkoposti">Sähköposti</label><input id="sahkoposti">. Ulkoasu tehdään tyyleillä (CSS), ei rakennemerkinnöillä. Sisällönhallinnassa tämä tarkoittaa, että otsikko valitaan otsikkotyylistä eikä tehdä lihavoimalla.
Sigilan automaattiset mittarit tälle kriteerille
Koko sivu on piilotettu apuvälineiltä
aria-hidden-bodySivun runko (
<body>) on merkitty piilotetuksi (aria-hidden="true"), joten ruudunlukija ei löydä sivulta mitään.Missä tavallisesti: Harvinainen mutta vakava vika. Yleensä syynä on ponnahdusikkuna- tai animaatiokirjasto, joka jättää merkinnän päälle.
Korjaus: Poista aria-hidden body-elementistä heti. Jos merkinnän lisää kirjasto, tarkista kirjaston asetukset tai vaihda kirjastoa. Tämä vika tekee koko sivusta ruudunlukijan käyttäjälle tyhjän.
Elementiltä puuttuvat sen vaatimat osat
aria-required-childrenElementti on merkitty roolilla, joka vaatii sisäänsä tietynlaiset osat, mutta niitä ei ole. Esimerkiksi valikoksi (
role="menu") merkityn elementin sisällä pitää olla valikon kohtia.Missä tavallisesti: Itse rakennetut valikot, välilehdet ja luettelot.
Korjaus: Lisää vaaditut osat oikeine rooleineen. Helpompi tapa on käyttää selaimen valmiita elementtejä, kuten
<ul>ja<li>tai<select>, joissa rakenne on valmiiksi oikein.Elementiltä puuttuu sen vaatima ympäröivä elementti
aria-required-parentElementti on merkitty roolilla, jonka pitää olla tietyn toisen elementin sisällä. Esimerkiksi välilehden (
role="tab") pitää olla välilehtiluettelon (role="tablist") sisällä.Missä tavallisesti: Itse rakennetut välilehdet ja valikot.
Korjaus: Siirrä elementti oikean ympäröivän elementin sisään tai korvaa koko rakenne selaimen valmiilla elementeillä.
Määritelmäluettelon rakenne on virheellinen
definition-listMääritelmäluettelon (
<dl>) sisällä on muuta kuin termejä (<dt>) ja niiden selityksiä (<dd>).Missä tavallisesti: Sanastot ja tuotetietojen termi- ja arvoluettelot.
Korjaus: Pidä rakenne puhtaana:
<dl><dt>Paino</dt><dd>2 kg</dd></dl>. Termin ja selityksen parin saa kääriä<div>-elementtiin, mutta muut elementit eivät kuulu luettelon sisään.Määritelmäluettelon kohta on luettelon ulkopuolella
dlitemTermi (
<dt>) tai selitys (<dd>) on ilman ympäröivää määritelmäluetteloa (<dl>).Missä tavallisesti: Tekstit, joita on kopioitu sivulle paloina.
Korjaus: Siirrä termit ja selitykset
<dl>-elementin sisään. Termin ja selityksen parin saa kääriä<div>-elementtiin.Luettelon sisällä on muutakin kuin luettelon kohtia
listLuettelon (
<ul>tai<ol>) sisällä on suoraan muita elementtejä kuin luettelon kohtia (<li>), joten ruudunlukija ei tunnista luetteloa oikein.Missä tavallisesti: Valikot ja luettelot, joiden kohtien väliin on lisätty erottimia tai kääreitä.
Korjaus: Pidä luettelon sisällä vain kohtia:
<ul><li>Suomi</li><li>Ruotsi</li></ul>. Erottimet ja koristeet tehdään tyyleillä tai kohtien sisällä.Luettelon kohta ei ole luettelon sisällä
listitemLuettelon kohta (
<li>) on ilman ympäröivää luetteloa (<ul>tai<ol>).Missä tavallisesti: Ohjelmallisesti tuotetut luettelot, joista ympäröivä elementti on jäänyt pois.
Korjaus: Kääri kohdat luetteloon:
<ul><li>…</li></ul>järjestämättömälle ja<ol><li>…</li></ol>numeroidulle luettelolle.Taulukon solu viittaa otsikkoon, jota ei ole
td-headers-attrTaulukon solun headers-määrite viittaa otsikkosoluun, jota ei ole samassa taulukossa, joten ruudunlukija ei osaa kertoa, mihin sarakkeeseen solu kuuluu.
Missä tavallisesti: Monimutkaiset taulukot, joita on muokattu käsin.
Korjaus: Korjaa viittaukset olemassa oleviin otsikkosoluihin. Yksinkertaisempi tapa on merkitä otsikkosolut
<th scope="col">ja<th scope="row">, jolloin headers-määritettä ei tarvita.Taulukon otsikkosolun alla ei ole tietoja
th-has-data-cellsTaulukon otsikkosolu (
<th>) ei liity yhteenkään tietosoluun.Missä tavallisesti: Taulukot, joista on poistettu sarake tai rivi mutta otsikko on jäänyt.
Korjaus: Poista tarpeeton otsikkosolu tai lisää sen alle kuuluvat tiedot.
Ruudunlukijan pitää lukea sivu oikeassa järjestyksessäRuudunlukija lukee sivun siinä järjestyksessä kuin se on kirjoitettu koodiin. Jos järjestys poikkeaa siitä, miten silmä lukee, sisältö menee sekaisin.
Vasemmalla sivu näyttää selkeältä: ensin iso kuva, sitten palvelut, tietoa meistä ja yhteystiedot. Ruudunlukija lukee osat kuitenkin päinvastaisessa järjestyksessä, koska koodin järjestys on eri. Oikealla ruudunlukija lukee samassa järjestyksessä kuin silmä.


Sivun osat voivat näkyä eri järjestyksessä kuin ne on kirjoitettu sivun koodiin. Esimerkiksi sivun reunaan nostetun laatikon tai ruudukon kohtien paikkaa voidaan siirtää ulkoasun tyyleillä. Näkevälle järjestys näyttää oikealta, mutta ruudunlukija lukee koodin järjestyksessä. Kun järjestyksellä on merkitystä, kuten ohjeissa, lomakkeissa ja leipätekstissä, koodin ja näkyvän järjestyksen pitää vastata toisiaan.
Ketä tämä koskee
Ruudunlukijan käyttäjät ja ne, jotka käyttävät sivua ilman sivun omia tyylejä, esimerkiksi selaimen lukutilassa.
Näin tarkistat itse
Lue sivu ruudunlukijalla tai avaa se selaimen lukutilassa. Eteneekö teksti samassa järjestyksessä kuin sivulla, ja onko kokonaisuus yhä järkevä?
Mitä Sigila tarkistaa puolestasi
Sigila etsii kohdat, joissa sivun reunaan tai toisen sisällön päälle sijoitettu osa on koodissa eri kohdassa kuin näytöllä, ja näyttää ne tarkistettaviksi. Onko poikkeama haitallinen, on ihmisen arvioitava.
Tekijälle: näin korjaat
Mikä on vialla
Sivun koodin järjestys poikkeaa siitä järjestyksestä, jossa sisältö luetaan näytöltä, joten ruudunlukija lukee osat väärässä järjestyksessä.
Missä tätä tavallisesti näkee
Absoluuttisesti sijoitetut elementit, kuten sivun reunaan nostetut laatikot, ruudukot, joiden järjestys on vaihdettu tyyleillä (order, grid-area), sekä kelluvat palstat.
Korjaus
Kirjoita koodi siinä järjestyksessä, jossa sisältö on tarkoitus lukea, ja sijoittele se tyyleillä. Vältä elementtien järjestyksen vaihtamista CSS:n order-ominaisuudella tai grid-sijoittelulla silloin, kun järjestyksellä on merkitystä. Jos elementti on pakko nostaa toiseen kohtaan absoluuttisella sijoittelulla, siirrä se myös koodissa lähelle sitä sisältöä, johon se liittyy. Testaa lukemalla sivu ruudunlukijalla tai selaimen lukutilassa.
Ohjeen pitää toimia, vaikka sivua ei näkisiOhje ”paina oikealla olevaa pyöreää painiketta” ei auta sokeaa. Ohjeessa pitää kertoa painikkeen nimi.
Vasemmalla ohje kertoo vain painikkeen paikan ja muodon. Oikealla ohje kertoo painikkeen nimen, jonka jokainen näkee ja kuulee.


Ohjeet eivät saa nojata pelkästään siihen, miltä jokin näyttää, missä se on tai miltä se kuulostaa. Ohjeet kuten ”klikkaa vihreää painiketta”, ”katso oikeaa palstaa” tai ”kun kuulet äänimerkin” eivät toimi kaikille. Muoto, paikka ja väri saavat olla ohjeessa mukana, kunhan ohjeessa on myös asian nimi, esimerkiksi ”paina sivun alalaidassa olevaa Lähetä-painiketta”.
Ketä tämä koskee
Sokeat, värisokeat ja kaikki, joiden näytöllä sivu asettuu eri tavalla, esimerkiksi puhelimessa.
Näin tarkistat itse
Lue sivun ohjetekstit. Pystyisitkö noudattamaan jokaista, jos et näkisi sivua tai et kuulisi ääntä?
Mitä Sigila tarkistaa puolestasi
Tätä Sigila ei vielä tarkista raporteissa. Tarkistus, joka etsii ohjeista paikkaan, muotoon tai väriin viittaavia sanoja, kuten ”oikealla” tai ”vihreä”, on kehitteillä. Käy ohjeet toistaiseksi läpi itse.
Tekijälle: näin korjaat
Mikä on vialla
Ohje kertoo vain, missä jokin on tai miltä se näyttää tai kuulostaa, eikä nimeä asiaa: ”paina oikealla olevaa pyöreää painiketta”.
Missä tätä tavallisesti näkee
Lomakkeiden ohjetekstit, käyttöohjeet ja tukisivut, kuvatekstit sekä ponnahdusikkunoiden ohjeet.
Korjaus
Kirjoita ohjeeseen kohdan nimi, joka näkyy myös ruudulla: ”paina Lähetä-painiketta”. Paikka tai väri saa olla mukana lisätietona: ”paina sivun alalaidassa olevaa Lähetä-painiketta”. Jos ohje viittaa ääneen, kerro sama asia myös tekstinä.
Sivun pitää toimia puhelin pystyssä ja vaakatasossaKaikki eivät voi kääntää puhelintaan. Siksi sivu ei saa lukittua vain toiseen asentoon.
Vasemmalla puhelin on käännetty vaaka-asentoon, mutta sivu on lukittu pystyasentoon: sisältö jää kyljelleen kapeaksi kaistaksi. Oikealla sivu kääntyy puhelimen mukana ja täyttää ruudun.


Osa käyttäjistä pitää laitetta kiinnitettynä yhteen asentoon, esimerkiksi pyörätuoliin kiinnitetyssä telineessä. Sivun pitää toimia sekä pysty- että vaaka-asennossa, eikä se saa pakottaa käyttäjää kääntämään laitetta. Poikkeus on sisältö, joka toimii vain yhdessä asennossa, kuten soittimen koskettimisto.
Ketä tämä koskee
Ihmiset, joiden laite on kiinnitetty paikalleen, kuten pyörätuolin telineeseen, sekä ne, joiden on vaikea kääntää laitetta.
Näin tarkistat itse
Avaa sivu puhelimella tai tabletilla ja käännä laitetta. Kääntyykö sivu mukana, vai jääkö se kyljelleen tai pyytääkö se kääntämään laitteen takaisin?
Mitä Sigila tarkistaa puolestasi
Sigila avaa sivun puhelimen kokoisena sekä pysty- että vaaka-asennossa ja tarkistaa, lukitseeko sivu näkymän vain toiseen asentoon.
Tekijälle: näin korjaat
Mikä on vialla
Sivu toimii vain toisessa asennossa: se lukitsee näytön asennon tai pyytää kääntämään laitteen.
Missä tätä tavallisesti näkee
Sivut ja sovellukset, jotka käyttävät näytön lukitusta (screen.orientation.lock), sekä asettelut, jotka on tehty vain pystyasentoon.
Korjaus
Älä lukitse näytön asentoa, ellei se ole toiminnolle välttämätöntä. Tee asettelusta joustava: suhteelliset leveydet, flex-wrap tai CSS Grid ja kuville max-width: 100%. Jos sivu näyttää toisessa asennossa ohjeen ”käännä laite”, poista ohje ja korjaa asettelu.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Selaimen pitää voida täyttää omat tiedot lomakkeeseenKun lomakkeen kentät kertovat koodissa, mitä niihin kuuluu, selain osaa täyttää nimen, sähköpostin ja osoitteen käyttäjän puolesta.
Vasemmalla kentät eivät kerro koodissa tarkoitustaan, joten selain ei osaa täyttää niitä. Oikealla jokaisella kentällä on autocomplete-merkintä, ja selain tarjoaa tiedot valmiiksi.

<input type="text" id="name">
<input type="email" id="email">
<input type="tel" id="phone">
<input type="text" id="address">

<input type="text" id="name" autocomplete="name">
<input type="email" id="email" autocomplete="email">
<input type="tel" id="phone" autocomplete="tel">
<input type="text" id="address" autocomplete="street-address">
Moni joutuu kirjoittamaan omat tietonsa lomakkeisiin yhä uudestaan. Jos kenttä kertoo koodissa tarkoituksensa, esimerkiksi että siihen kuuluu sähköpostiosoite, selain ja apuvälineet osaavat täyttää sen valmiiksi. Vaatimus koskee kenttiä, joihin käyttäjä kirjoittaa omia tietojaan, kuten nimeä, osoitetta, puhelinnumeroa ja sähköpostia. Merkintä ei muuta lomakkeen ulkoasua.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 1/299 sivustolta (0 %).
Ketä tämä koskee
Ihmiset, joille kirjoittaminen on hidasta tai vaikeaa, kuten liikuntarajoitteiset, sekä ne, joilla on muistin tai hahmottamisen vaikeuksia.
Näin tarkistat itse
Varmista, että selaimesi automaattinen täyttö on päällä ja omat tietosi on tallennettu siihen. Ala sitten täyttää sivuston yhteydenotto- tai tilauslomaketta. Tarjoaako selain tietojasi valmiiksi nimeen, sähköpostiin ja osoitteeseen?
Mitä Sigila tarkistaa puolestasi
Sigila löytää kentät, joihin kysytään nimeä, sähköpostia, puhelinnumeroa tai osoitetta, ja listaa ne, joilta merkintä puuttuu tai on kirjoitettu väärin.
Tekijälle: näin korjaat
Mikä on vialla
Kentistä, joihin käyttäjä kirjoittaa omia tietojaan, puuttuu tarkoituksen kertova autocomplete-merkintä, tai merkintä on kirjoitettu väärin.
Missä tätä tavallisesti näkee
Yhteydenotto-, tilaus-, rekisteröitymis- ja maksulomakkeet.
Korjaus
Lisää jokaiseen henkilötietokenttään autocomplete-määrite standardin mukaisella arvolla: <input type="email" autocomplete="email">. Nimelle arvo on name, etunimelle given-name, sukunimelle family-name, puhelinnumerolle tel, katuosoitteelle street-address, postinumerolle postal-code ja postitoimipaikalle address-level2. Merkintä ei muuta kentän ulkoasua. Kaikki arvot on lueteltu HTML-standardissa kohdassa ”autofill field names”.
Sigilan automaattiset mittarit tälle kriteerille
Kentän autocomplete-arvo on virheellinen
autocomplete-validKentän autocomplete-määritteessä on arvo, jota selaimet eivät tunne, joten automaattinen täyttö ei toimi.
Missä tavallisesti: Käsin kirjoitetut lomakkeet.
Korjaus: Käytä standardin arvoja, kuten
name,email,tel,street-address,postal-codejaaddress-level2. Esimerkiksi<input type="email" autocomplete="email">.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Tieto ei saa olla pelkän värin varassaJos linkki, pakollinen kenttä tai virhe erottuu vain värinsä perusteella, värisokea ei huomaa sitä.
Vasemmalla pakollinen kenttä ja virhe erottuvat vain punaisella värillä ja linkki vain sinisellä. Oikealla niissä on lisäksi tähti ja teksti, varoituskuvake ja alleviivaus.

.link { color: blue; text-decoration: none; }
<label style="color: red">Email</label>
<input style="border-color: red">

.link { text-decoration: underline; }
<label>Email <span aria-hidden="true">*</span> (Required)</label>
<span role="alert">Please enter a valid phone number.</span>
Väri on hyvä tapa korostaa, mutta sen lisäksi tarvitaan aina toinen merkki. Tekstin sisällä oleva linkki tarvitsee esimerkiksi alleviivauksen, pakollinen kenttä tähden tai sanan ”pakollinen” ja virheilmoitus tekstin tai kuvakkeen. Sama koskee kaavioita: jos sarjat erottuvat vain väreistä, niihin tarvitaan myös kuviot tai nimet.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 11/299 sivustolta (4 %).
Ketä tämä koskee
Värisokeat, heikkonäköiset ja kaikki, jotka katsovat näyttöä kirkkaassa valossa tai tulostavat sivun mustavalkoisena.
Näin tarkistat itse
Katso sivua harmaasävyisenä. Harmaasävyt saa päälle useimpien käyttöjärjestelmien näyttö- tai esteettömyysasetuksista. Erotatko yhä linkit tekstistä sekä pakolliset kentät ja virheet?
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti, erottuvatko tekstin sisällä olevat linkit muutenkin kuin värillä. Lomakkeiden ja kaavioiden värien käyttö on tarkistettava silmin.
Tekijälle: näin korjaat
Mikä on vialla
Jokin tieto erottuu pelkän värin perusteella: linkki tekstin seassa, pakollinen kenttä, virhe tai kaavion sarja.
Missä tätä tavallisesti näkee
Tekstin sisällä olevat linkit ilman alleviivausta, pakolliset kentät pelkällä punaisella, virheet pelkällä punaisella reunalla ja kaaviot, joiden selite perustuu väreihin.
Korjaus
Lisää värin rinnalle toinen merkki. Linkkiin alleviivaus: a { text-decoration: underline; }. Pakolliseen kenttään tähti tai sana ”pakollinen” kentän nimeen. Virheeseen virheteksti tai kuvake kentän viereen. Kaavioon sarjoille kuviot tai nimet suoraan viivojen viereen. Väri saa jäädä, kunhan se ei ole ainoa ero.
Sigilan automaattiset mittarit tälle kriteerille
Linkki erottuu tekstistä vain värillä
link-in-text-blockTekstin sisällä oleva linkki erottuu ympäröivästä tekstistä pelkän värin perusteella, ilman alleviivausta tai muuta merkkiä.
Missä tavallisesti: Artikkelit ja blogit, joissa linkkien alleviivaus on poistettu.
Korjaus: Palauta alleviivaus:
a { text-decoration: underline; }. Väri saa jäädä lisäksi.
Itsestään alkava ääni pitää voida pysäyttääJos sivu alkaa soittaa ääntä itsestään, ruudunlukijan käyttäjä ei enää kuule, mitä ruudunlukija sanoo.
Vasemmalla video alkaa soida itsestään, eikä siinä ole säätimiä, joten videon ääni ja ruudunlukijan puhe kuuluvat päällekkäin. Oikealla videossa on tauko- ja äänenvoimakkuuspainikkeet, joilla äänen saa pois tai hiljemmalle.

<video autoplay src="kettu.mp4"></video>
<!-- ei säätimiä -->

<video controls src="kettu.mp4"></video>
Sivun ei pitäisi alkaa soittaa ääntä itsestään. Jos se kuitenkin soittaa yli kolmen sekunnin ajan, sivulla pitää olla helposti löytyvä tapa pysäyttää ääni tai säätää sen voimakkuutta erikseen. Ongelma on suurin ruudunlukijan käyttäjälle: sivun ääni ja ruudunlukijan puhe menevät päällekkäin, eikä pysäytyspainiketta löydä, kun ruudunlukijaa ei kuule.
Ketä tämä koskee
Ruudunlukijan käyttäjät sekä ihmiset, joiden on vaikea keskittyä taustaäänen kanssa.
Näin tarkistat itse
Avaa sivut äänet päällä. Alkaako jokin soida itsestään? Jos alkaa, löytyykö helposti, mieluiten sivun alusta, painike, jolla äänen saa pois tai hiljemmalle?
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti, onko sivulla itsestään käynnistyvää ääntä ilman pysäytystapaa.
Tekijälle: näin korjaat
Mikä on vialla
Sivu alkaa soittaa ääntä itsestään yli kolmen sekunnin ajan, eikä äänen pysäyttämiseen tai hiljentämiseen ole helposti löytyvää keinoa.
Missä tätä tavallisesti näkee
Taustamusiikki, itsestään käynnistyvät videot äänellä ja mainokset.
Korjaus
Paras korjaus on poistaa automaattinen käynnistys: <video controls src="video.mp4"></video> ilman autoplay-määritettä, jolloin käyttäjä käynnistää videon itse. Jos video pyörii taustalla, se mykistetään: <video autoplay muted loop>. Taustamusiikille tarvitaan helposti löytyvä pysäytyspainike, mieluiten sivun alkuun, tai musiikki poistetaan. Upotetuissa soittimissa automaattinen toisto kytketään pois soittimen omista asetuksista.
Sigilan automaattiset mittarit tälle kriteerille
Ääni alkaa soida itsestään ilman pysäytystä
no-autoplay-audioSivun video- tai äänielementti soittaa ääntä itsestään yli kolmen sekunnin ajan, eikä sitä voi pysäyttää.
Missä tavallisesti: Taustamusiikki ja itsestään käynnistyvät videot.
Korjaus: Poista autoplay-määrite tai mykistä video:
<video autoplay muted>. Muussa tapauksessa lisää sivun alkuun näkyvä pysäytyspainike.
Tekstin pitää erottua taustastaanVaalea harmaa teksti valkoisella taustalla voi näyttää tyylikkäältä, mutta moni ei pysty lukemaan sitä.
Vasemmalla harmaa teksti uppoaa harmaaseen taustaan. Oikealla tumma teksti erottuu vaaleasta taustasta selvästi.


Tekstin ja taustan välillä pitää olla riittävä kirkkausero eli kontrasti. Kontrasti ilmoitetaan suhdelukuna: tavallisella tekstillä sen pitää olla vähintään 4,5:1 ja suurella tekstillä vähintään 3:1. Suureksi tekstiksi lasketaan noin 24 pikselin teksti tai noin 19 pikselin lihavoitu teksti. Logot, pelkkä koristeteksti sekä käytöstä poistetut painikkeet ja kentät ovat poikkeus.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 102/299 sivustolta (34 %).
Ketä tämä koskee
Käytännössä kaikki: riittävä kontrasti auttaa jokaista lukijaa kaikissa tilanteissa, ja heikkonäköisille ja iäkkäille se on välttämätön.
Näin tarkistat itse
Sigila mittaa tekstin kontrastin puolestasi, myös kuvan tai liukuvärin päällä olevan tekstin. Tarkista silmin teksti, joka on itse osa kuvaa, koska sitä mikään työkalu ei mittaa luotettavasti.
Mitä Sigila tarkistaa puolestasi
Sigila mittaa jokaisen sivulla näkyvän tekstin kontrastin ja kertoo mitatun suhdeluvun sekä värit. Kun teksti on kuvan, liukuvärin tai toisen elementin päällä, Sigila mittaa taustan sivun kuvasta täsmälleen tekstin alta.
Tekijälle: näin korjaat
Mikä on vialla
Tekstin ja taustan välinen kontrasti on alle vaaditun: tavallisella tekstillä alle 4,5:1 ja suurella tekstillä alle 3:1.
Missä tätä tavallisesti näkee
Vaaleanharmaa teksti valkoisella, valkoinen teksti kirkkailla painikkeilla, tekstit kuvien ja liukuvärien päällä sekä lomakkeiden vihjetekstit.
Korjaus
Tummenna tekstiä tai vaalenna taustaa, kunnes suhde on vähintään 4,5:1, suurella tekstillä 3:1. Esimerkiksi harmaa #767676 valkoisella on noin 4,5:1, kun taas #999999 on vain noin 2,8:1. Sigila kertoo jokaisen kohdan mitatun suhdeluvun ja värit. Kuvan päällä olevan tekstin alle auttaa tumma, osittain läpinäkyvä tausta. Alla on esimerkkejä yleisistä väreistä.
Esimerkkejä yleisistä väreistä. Jokainen rivi näkyy omissa väreissään, joten eron näkee suoraan.
Sigilan automaattiset mittarit tälle kriteerille
Tekstin kontrasti taustaan on liian pieni
color-contrastTekstin ja taustan kirkkausero on alle vaaditun: tavallisella tekstillä alle 4,5:1 ja suurella tekstillä alle 3:1.
Missä tavallisesti: Vaaleanharmaa teksti, valkoinen teksti kirkkailla painikkeilla ja lomakkeiden vihjetekstit.
Korjaus: Tummenna tekstiä tai vaalenna taustaa, kunnes suhde täyttyy. Sigila kertoo jokaisen kohdan mitatun suhdeluvun ja värit.
Tekstin pitää voida suurentaa kaksinkertaiseksiKun sivua suurennetaan 200 prosenttiin, kaiken pitää pysyä luettavana. Mikään ei saa leikkautua, kadota tai mennä päällekkäin.
Vasemmalla 200 prosentin suurennuksessa tuotekortin teksti ei mahdu korkeudeltaan lukittuun laatikkoon, ja loppu leikkautuu pois. Oikealla laatikko kasvaa tekstin mukana, ja kaikki näkyy.

.kortti { height: 180px; overflow: hidden; }

.kortti { min-height: 180px; }
Moni suurentaa sivua selaimen zoomilla, jotta teksti olisi helpompi lukea. Sivun pitää kestää suurennus 200 prosenttiin niin, että kaikki sisältö ja kaikki toiminnot ovat yhä käytettävissä. Tavallisin vika on laatikko, jonka korkeus on lukittu: kun teksti suurenee, osa siitä jää laatikon ulkopuolelle piiloon.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 12/299 sivustolta (4 %).
Ketä tämä koskee
Heikkonäköiset ja iäkkäät sekä kaikki, jotka lukevat pientä näyttöä.
Näin tarkistat itse
Suurenna sivu selaimessa 200 prosenttiin: paina Ctrl ja plus-näppäintä, Macissa Cmd ja plus. Näkyykö kaikki teksti yhä kokonaan, ja toimivatko valikot ja lomakkeet?
Mitä Sigila tarkistaa puolestasi
Sigila kuvaa sivun siinä leveydessä, joka tietokoneen näytölle jää 200 prosentin suurennuksessa, ja etsii tekstin, joka leikkautuu tai menee päällekkäin. Lisäksi Sigila tarkistaa, estääkö sivu suurentamisen puhelimessa.
Tekijälle: näin korjaat
Mikä on vialla
Kun sivua suurennetaan 200 prosenttiin, tekstiä leikkautuu, katoaa tai menee päällekkäin, tai jokin toiminto lakkaa toimimasta.
Missä tätä tavallisesti näkee
Laatikot, joiden korkeus on lukittu (height ja overflow: hidden), kiinteäkokoiset painikkeet ja puhelimen suurennuksen estävä viewport-asetus.
Korjaus
Korvaa lukittu korkeus vähimmäiskorkeudella, esimerkiksi height: 180px muotoon min-height: 180px, ja poista tekstiä sisältäviltä laatikoilta overflow: hidden. Älä estä suurentamista puhelimessa: <meta name="viewport" content="width=device-width, initial-scale=1"> ilman rajoituksia maximum-scale ja user-scalable=no. Pikseleinä annetut fonttikoot eivät sinänsä ole vika, koska selaimen zoom suurentaa myös ne.
Sigilan automaattiset mittarit tälle kriteerille
Sivu estää suurentamisen puhelimella
meta-viewportSivun viewport-asetus estää käyttäjää suurentamasta sivua puhelimella.
Missä tavallisesti: Vanhat mobiilioptimoinnit, joissa on
user-scalable=notaimaximum-scale=1.Korjaus: Käytä asetusta
<meta name="viewport" content="width=device-width, initial-scale=1">ilman suurennuksen rajoituksia. Suurentamisen salliminen ei riko asettelua.
Teksti pitää kirjoittaa tekstinä, ei kuvanaKuvaan kirjoitettu teksti sumenee suurennettaessa, eikä sen värejä tai kirjasinta voi vaihtaa luettavammiksi.
Vasemmalla otsikko on kuvatiedostossa ja sumenee suurennettaessa. Oikealla se on kirjoitettu tekstinä ja pysyy terävänä.

<img src="banneri.png" alt="Nordic Vases">
<!-- teksti on osa kuvaa -->

<h1>Nordic Vases</h1>
<p>Timeless Forms</p>
Bannerien otsikot, painikkeiden tekstit ja mainoslauseet tehdään joskus kuvatiedostoiksi. Silloin tekstiä ei voi suurentaa terävänä eikä sen värejä tai kirjasinta vaihtaa, ja ruudunlukija lukee sen vain, jos kuvalle on kirjoitettu kuvaus. Teksti pitää kirjoittaa sivulle tekstinä ja asetella tarvittaessa kuvan päälle. Poikkeuksia ovat logot ja tilanteet, joissa tekstin ulkoasu on itse asia, kuten fonttinäyte.
Ketä tämä koskee
Heikkonäköiset, jotka suurentavat sivua tai vaihtavat sen värejä, sekä ruudunlukijan käyttäjät.
Näin tarkistat itse
Yritä maalata hiirellä bannereiden ja painikkeiden tekstejä. Jos teksti ei maalaudu, se on luultavasti osa kuvaa. Onko kuva siinä todella välttämätön?
Mitä Sigila tarkistaa puolestasi
Tätä Sigila ei vielä tarkista raporteissa. Tarkistus, joka nostaa esiin kuvat, joiden kuvaus on lauseen mittainen, on kehitteillä. Käy bannerit ja kampanjakuvat toistaiseksi läpi itse.
Tekijälle: näin korjaat
Mikä on vialla
Teksti on osa kuvatiedostoa: bannerin otsikko, mainoslause tai painikkeen teksti on tehty kuvaksi.
Missä tätä tavallisesti näkee
Etusivun bannerit, kampanjakuvat, sivulle tuodut somekuvat ja kuvina tehdyt otsikot.
Korjaus
Kirjoita teksti HTML-tekstinä ja aseta kuva taustaksi: <section class="banneri"><h1>Kevään mallisto</h1></section> ja tyyleihin .banneri { background-image: url(kevat.jpg); }. Tekstin luettavuus kuvan päällä varmistetaan tummalla, osittain läpinäkyvällä taustalla. Logot ja tuotekuvat, joissa teksti on osa tuotetta, ovat poikkeus.
Sivun pitää mahtua kapeaan näkymäänKun sivua suurennetaan paljon, sisällön pitää asettua allekkain. Muuten jokaista riviä joutuu vierittämään sivulta toiselle.
Vasemmalla 400 prosenttiin suurennettu sivu jatkuu näytön reunan yli. Oikealla sisältö asettuu yhteen sarakkeeseen, ja sitä vieritetään vain alaspäin.

.wrapper { width: 1100px; }
<img width="520" height="320">

.wrapper { max-width: 1100px; width: 100%; }
img { max-width: 100%; height: auto; }
Heikkonäköinen suurentaa sivun usein moninkertaiseksi. Silloin tietokoneen näytöllekin mahtuu vain yhtä kapea kaista kuin pienen puhelimen ruudulle. Hyvin tehty sivu asettaa sisällön silloin yhteen sarakkeeseen, ja sitä luetaan vierittämällä vain alaspäin. Huonosti tehty sivu pysyy leveänä, ja jokaisen rivin lukeminen vaatii vierittämistä sivusuunnassa edestakaisin. Poikkeuksia ovat sisällöt, joita ei voi järkevästi kaventaa, kuten kartat, isot taulukot ja videot.
Ketä tämä koskee
Heikkonäköiset, jotka suurentavat sivua, ja kaikki, jotka käyttävät pientä puhelinta.
Näin tarkistat itse
Aseta selainikkuna noin 1280 pikselin levyiseksi ja suurenna sivu 400 prosenttiin: paina Ctrl ja plus-näppäintä, Macissa Cmd ja plus, kunnes suurennus on 400 %. Pystytkö lukemaan kaiken vierittämällä vain ylös ja alas?
Mitä Sigila tarkistaa puolestasi
Sigila kuvaa sivun samassa leveydessä, joka näytölle jää 400 prosentin suurennuksessa, ja mittaa, meneekö sisältö reunan yli. Jos menee, raportissa on kuva kohdasta, jossa sivu ei mahdu.
Tekijälle: näin korjaat
Mikä on vialla
Sivu ei mahdu 320 pikselin levyiseen näkymään, vaan vaatii vaakavieritystä. 320 pikseliä on se leveys, joka tavalliselle 1280 pikselin näytölle jää 400 prosentin suurennuksessa.
Missä tätä tavallisesti näkee
Sivun kehykselle asetettu kiinteä leveys (width: 1100px), leveät taulukot ja upotukset, kuvat ilman enimmäisleveyttä sekä rinnakkaiset palstat, jotka eivät taitu allekkain.
Korjaus
Anna sivun kehykselle enimmäisleveys kiinteän leveyden sijaan: .wrapper { max-width: 1100px; width: 100%; }. Kuville img { max-width: 100%; height: auto; }. Rinnakkaiset palstat saa taittumaan allekkain esimerkiksi määritteellä flex-wrap: wrap tai CSS Gridin minmax()-funktiolla. Leveä taulukko saa vieriä omassa laatikossaan (overflow-x: auto), kunhan muu sivu ei vieri. Sigila kertoo ylityksen pikseleinä ja näyttää kohdan kuvassa.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Kenttien, painikkeiden ja kuvakkeiden pitää erottua taustastaJos kentän reuna on liian haalea, heikkonäköinen ei löydä kohtaa, johon kirjoittaa.
Vasemmalla painikkeiden ja tuotekorttien himmeät reunat uppoavat tummaan taustaan. Oikealla ne erottuvat selvästi.


Kontrastivaatimus koskee tekstin lisäksi muitakin sivun osia, jotka käyttäjän pitää nähdä: lomakkeen kenttien reunoja, painikkeiden rajoja, valintaruutuja, näppäimistön kohdistuksen merkkiä sekä kuvakkeita ja kaavioiden osia, joista saa tietoa. Niiden kontrastin ympäristöönsä pitää olla vähintään 3:1. Pelkät koristeet ja käytöstä poistetut painikkeet ovat poikkeus.
Ketä tämä koskee
Heikkonäköiset ja kaikki, jotka katsovat näyttöä kirkkaassa valossa.
Näin tarkistat itse
Katso sivun lomakkeita ja painikkeita. Näetkö selvästi, mistä jokainen kenttä alkaa ja mihin se loppuu? Erottuvatko kuvakkeet ja kaavioiden osat taustasta?
Mitä Sigila tarkistaa puolestasi
Sigila mittaa lomakkeen kenttien reunojen ja taustojen kontrastin sivun tyyleistä ja näyttää suhdeluvut. Kuvakkeiden ja kaavioiden kontrasti on tarkistettava silmin.
Tekijälle: näin korjaat
Mikä on vialla
Lomakkeen kentän reuna, painikkeen raja, valintaruutu, kohdistuksen merkki tai tietoa välittävä kuvake erottuu ympäristöstään alle 3:1 kontrastilla.
Missä tätä tavallisesti näkee
Haaleat harmaat kenttien reunat vaalealla taustalla, tummien teemojen himmeät reunat, ohuet kuvakkeet ja kaavioiden vaaleat viivat.
Korjaus
Anna kentälle reuna tai taustaväri, jonka kontrasti ympäröivään taustaan on vähintään 3:1. Vaalealla taustalla sopii esimerkiksi reuna #767676, tummalla taustalla vaalea reuna, kuten #e8e8e8 taustalla #1a1a1a. Tarkista samalla kohdistuksen merkin ja kuvakkeiden kontrasti. Sigila mittaa kenttien reunat ja taustat sivun tyyleistä ja kertoo suhdeluvut.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Tekstin pitää kestää väljemmät rivi- ja kirjainvälitOsa lukijoista kasvattaa rivi- ja kirjainvälejä, jotta teksti olisi helpompi lukea. Silloin tekstiä ei saa jäädä piiloon.
Vasemmalla käyttäjä on väljentänyt tekstin välit, eikä teksti enää mahdu: loppu leikkautuu ruudun alareunasta. Oikealla samat välit ovat käytössä, ja teksti taittuu uudelleen ja näkyy kokonaan.

.luku { line-height: 20px; }
.luku { height: 320px; overflow: hidden; }

.luku { line-height: 1.5; }
.luku { min-height: 320px; }
Lukihäiriöiset ja heikkonäköiset kasvattavat usein tekstin välejä selaimen asetuksilla tai lisäosilla. Sivun pitää kestää tämä niin, ettei tekstiä katoa tai mene päällekkäin. WCAG antaa testiin tarkat arvot: riviväli 1,5 kertaa fonttikoko, kappaleväli 2 kertaa fonttikoko, kirjainväli 0,12 kertaa ja sanaväli 0,16 kertaa fonttikoko. Tavallisin vika on laatikko, jonka korkeus on lukittu.
Ketä tämä koskee
Lukihäiriöiset ja heikkonäköiset, jotka käyttävät lukemista helpottavia asetuksia.
Näin tarkistat itse
Ota selaimessa käyttöön tekstivälistyksen testityökalu. Ilmaisen työkalun löytää hakusanoilla ”text spacing bookmarklet”. Näkyykö kaikki teksti yhä kokonaan?
Mitä Sigila tarkistaa puolestasi
Sigila lisää sivulle WCAG:n mukaiset välit, kuvaa sivun ja listaa tekstin, joka leikkautuu, kuvan kanssa.
Tekijälle: näin korjaat
Mikä on vialla
Kun tekstin rivi-, kappale-, kirjain- ja sanavälejä kasvatetaan, tekstiä leikkautuu, katoaa tai menee päällekkäin.
Missä tätä tavallisesti näkee
Laatikot ja painikkeet, joiden korkeus on lukittu, pikseleinä annettu riviväli (line-height: 20px) ja style-määritteeseen lukitut välit.
Korjaus
Anna riviväli suhteellisena: line-height: 1.5. Korvaa lukitut korkeudet vähimmäiskorkeudella (height muotoon min-height) ja poista tekstiä sisältäviltä laatikoilta overflow: hidden. Älä lukitse välejä elementin style-määritteellä. Testaa WCAG:n arvoilla: riviväli 1,5 kertaa fonttikoko, kappaleväli 2 kertaa, kirjainväli 0,12 kertaa ja sanaväli 0,16 kertaa fonttikoko.
Sigilan automaattiset mittarit tälle kriteerille
Tekstin välit on lukittu niin, ettei lukija voi muuttaa niitä
avoid-inline-spacingRivi-, kirjain- tai sanaväli on lukittu elementin style-määritteeseen merkinnällä
!important, joten lukijan omat asetukset eivät muuta sitä.Missä tavallisesti: Tekstinkäsittelyohjelmista kopioidut tekstit ja upotukset.
Korjaus: Poista välit style-määritteestä ja anna ne tyylitiedostossa ilman
!important-merkintää.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Hiiren alle avautuvan sisällön pitää pysyä näkyvissäAlavalikko tai ohjeteksti ei saa kadota, kun hiiren vie sen päälle. Sen pitää myös sulkeutua, kun käyttäjä haluaa.
Vasemmalla alavalikko katoaa, kun hiirtä liikuttaa sitä kohti. Oikealla valikko pysyy auki, ja sen kohtiin pääsee.


Kun hiiri viedään jonkin kohdan päälle tai näppäimistö siirtyy siihen, sivulle voi avautua lisäsisältöä, kuten alavalikko tai pieni ohjeteksti. Tällaisen sisällön pitää täyttää kolme ehtoa. Sen saa suljettua, yleensä Esc-näppäimellä, siirtämättä hiirtä. Hiiren voi viedä sen päälle niin, ettei se katoa. Ja se pysyy näkyvissä, kunnes käyttäjä siirtyy pois tai sulkee sen. Sulkemisvaatimus koskee sisältöä, joka peittää muuta sivua, eikä se koske selaimen omia vihjetekstejä.
Ketä tämä koskee
Heikkonäköiset, jotka käyttävät suurennusta ja näkevät vain osan näytöstä kerrallaan, sekä ne, joiden käsi vapisee.
Näin tarkistat itse
Vie hiiri valikoiden ja ohjekuvakkeiden päälle. Saatko vietyä hiiren avautuneen sisällön päälle ilman, että se katoaa? Saatko sen suljettua siirtämättä hiirtä, esimerkiksi Esc-näppäimellä?
Mitä Sigila tarkistaa puolestasi
Sigila vie hiiren valikoiden ja muiden avautuvien kohtien päälle, katsoo, avautuuko sisältöä, ja kokeilee, sulkeutuuko se Esc-näppäimellä. Muut ehdot on tarkistettava itse.
Tekijälle: näin korjaat
Mikä on vialla
Hiiren alle tai kohdistukseen avautuva lisäsisältö, kuten alavalikko tai ohjeteksti, katoaa, kun hiirtä liikuttaa sen päälle, katoaa itsestään, tai muuta sivua peittävää sisältöä ei saa suljettua siirtämättä hiirtä.
Missä tätä tavallisesti näkee
Valikoiden alavalikot, kuvakkeiden ohjetekstit ja tuotekorttien pikatoiminnot.
Korjaus
Laita avaava kohta ja avautuva sisältö saman elementin sisään ja avaa sisältö sekä hiirellä että kohdistuksella: .valikko:hover .alavalikko, .valikko:focus-within .alavalikko { display: block; }. Silloin hiiren voi viedä avautuneen sisällön päälle ilman, että se katoaa. Sulje sisältö Esc-näppäimellä: document.addEventListener("keydown", e => { if (e.key === "Escape") sulje(); }). Älä sulje sisältöä ajastimella.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
2. Hallittava
Sivustoa pitää pystyä käyttämään monella tavalla: hiirellä, näppäimistöllä, kosketuksella tai puheella.
Kaiken pitää toimia pelkällä näppäimistölläKaikki eivät voi käyttää hiirtä. Jokaisen linkin, painikkeen ja kentän pitää toimia myös näppäimistöllä.
Vasemmalla alavalikko avautuu vain hiirellä: kun Vases-kohta valitaan Tab-näppäimellä, tuotteet jäävät piiloon. Oikealla alavalikko avautuu myös näppäimistöllä.

<div tabindex="0" onmouseover="avaa()">Vases</div>

<button onclick="avaa()" aria-expanded="true">Vases</button>
Moni käyttää tietokonetta ilman hiirtä: näppäimistöllä, ruudunlukijalla, puheohjauksella tai erityisellä ohjaimella, joka toimii näppäimistön tavoin. Siksi kaiken, mitä sivulla voi tehdä hiirellä, pitää onnistua myös näppäimistöllä. Tab-näppäin siirtää kohdistuksen eli näppäimistön valitseman kohdan seuraavaan linkkiin tai painikkeeseen, ja Enter tai välilyönti valitsee sen.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 1/299 sivustolta (0 %).
Ketä tämä koskee
Ruudunlukijan ja näppäimistön käyttäjät sekä kaikki, joiden on vaikea käyttää hiirtä.
Näin tarkistat itse
Laita hiiri sivuun. Liiku sivulla Tab-näppäimellä ja valitse kohtia Enterillä ja välilyönnillä. Pääsetkö jokaiseen linkkiin, painikkeeseen, valikkoon ja kenttään, ja toimivatko ne?
Mitä Sigila tarkistaa puolestasi
Sigila kulkee sivun läpi Tab-näppäimellä ja vertaa kohtia, joihin näppäimistö pääsee, kaikkiin sivun linkkeihin, painikkeisiin ja kenttiin. Kohdat, joihin näppäimistö ei päässyt, näytetään kuvassa. Lisäksi Sigila tarkistaa vieritettävät alueet ja kehykset, joihin näppäimistö ei pääse. Sitä, toimiiko itse rakennettu toiminto myös näppäimistöllä, on vielä kokeiltava itse.
Tekijälle: näin korjaat
Mikä on vialla
Jokin toiminto toimii hiirellä mutta ei näppäimistöllä, tai näppäimistö ei pääse johonkin sivun osaan lainkaan.
Missä tätä tavallisesti näkee
div- ja span-elementeistä tehdyt painikkeet, itse rakennetut valikot ja liukusäätimet, vieritettävät alueet ja kehysten (iframe) sisältö.
Korjaus
Käytä selaimen valmiita elementtejä: <button> painikkeille ja <a href> linkeille, jolloin ne toimivat näppäimistöllä itsestään. Esimerkiksi <div onclick="avaa()">Avaa valikko</div> korjataan muotoon <button onclick="avaa()">Avaa valikko</button>. Sivun päälle avautuvaan ikkunaan sopii <dialog>-elementti ja showModal(), jotka hoitavat näppäimistön toiminnan itse. Vieritettävälle alueelle lisätään tabindex="0" ja nimi, jotta sitä voi vierittää näppäimistöllä. Monimutkaisille itse tehdyille toiminnoille, kuten välilehdille ja yhdistelmäkentille, on valmiit mallit W3C:n ARIA Authoring Practices -oppaassa.
Sigilan automaattiset mittarit tälle kriteerille
Kehyksen sisältöön ei pääse näppäimistöllä
frame-focusable-contentKehys (
<iframe>) on poistettu näppäimistön ulottuvilta (tabindex="-1"), vaikka sen sisällä on linkkejä tai painikkeita.Missä tavallisesti: Upotetut kartat, lomakkeet ja pienoissovellukset.
Korjaus: Poista kehyksestä
tabindex="-1", jos sen sisältöä käytetään, tai varmista, ettei kehyksen sisällä ole käytettäviä kohtia.Vieritettävää aluetta ei voi vierittää näppäimistöllä
scrollable-region-focusableSivulla on oma vieritettävä alue, johon näppäimistö ei pääse, joten sen sisältöä ei voi lukea ilman hiirtä.
Missä tavallisesti: Vieritettävät tekstilaatikot, taulukot ja koodiesimerkit.
Korjaus: Lisää alueelle
tabindex="0"ja nimi:<div class="vieritys" tabindex="0" role="region" aria-label="Hinnasto">…</div>.Sivulla on vanhentunut palvelinpuolen kuvakartta
server-side-image-mapKuva käyttää palvelinpuolen kuvakarttaa (
ismap), jonka linkkejä ei voi käyttää näppäimistöllä eikä ruudunlukijalla.Missä tavallisesti: Hyvin vanhat sivustot.
Korjaus: Korvaa kuvakartta tavallisilla linkeillä tai selaimessa toimivalla kuvakartalla (
<map>ja<area>), jonka alueilla on alt-tekstit.
Näppäimistö ei saa jäädä jumiinJos kohdistus juuttuu esimerkiksi upotettuun karttaan, näppäimistön käyttäjä ei pääse sivulla enää eteenpäin.
Vasemmalla kohdistus jää jumiin avautuvaan ikkunaan, eikä Esc sulje sitä. Oikealla Tab kiertää ikkunan sisällä, Esc sulkee sen ja kohdistus palaa avanneeseen painikkeeseen.

<div class="modal">…</div> <!-- Tab jää sisään, ei ulospääsyä -->

<dialog id="ikkuna">…</dialog> ikkuna.showModal()
Näppäimistöansa syntyy, kun kohdistus eli näppäimistön valitsema kohta siirtyy johonkin sivun osaan, mutta sieltä ei pääse pois Tab-näppäimellä tai muulla tavallisella näppäimellä. Tyypillisiä paikkoja ovat sivun päälle avautuvat ikkunat, upotetut kartat, videosoittimet ja chat-ikkunat. Hiiren käyttäjä ei huomaa ongelmaa, mutta näppäimistön käyttäjälle sivu lakkaa toimimasta.
Ketä tämä koskee
Näppäimistön ja ruudunlukijan käyttäjät.
Näin tarkistat itse
Liiku sivulla Tab-näppäimellä ja kokeile jokaista avautuvaa ikkunaa, karttaa, videota ja chattia. Pääsetkö niistä aina pois Tabilla tai Esc-näppäimellä?
Mitä Sigila tarkistaa puolestasi
Sigila kulkee sivun läpi Tab-näppäimellä. Jos kohdistus ei liiku kolmella painalluksella, Sigila raportoi kohdan näppäimistöansana ja näyttää sen kuvassa.
Tekijälle: näin korjaat
Mikä on vialla
Kohdistus jää jumiin johonkin sivun osaan, eikä sieltä pääse pois Tab-näppäimellä, Esc-näppäimellä tai muulla tavallisella näppäimellä.
Missä tätä tavallisesti näkee
Itse tehdyt ponnahdusikkunat, upotetut kartat, videosoittimet, chat-ikkunat ja muut kolmansien osapuolten upotukset.
Korjaus
Sivun päälle avautuvaan ikkunaan sopii <dialog>-elementti: <dialog id="ikkuna">…</dialog> ja avaavaan painikkeeseen ikkuna.showModal(). Selain hoitaa silloin loput: kohdistus siirtyy ikkunaan, Esc sulkee sen ja kohdistus palaa avanneeseen painikkeeseen. Itse tehdyssä ikkunassa sama pitää ohjelmoida: Esc kutsuu sulkevaa funktiota, joka palauttaa kohdistuksen avanneeseen painikkeeseen. Jos upotus vangitsee kohdistuksen eikä sitä voi korjata, lisää ennen upotusta linkki, jolla sen ohi pääsee.
Yksittäinen kirjain ei saa käynnistää toimintoa vahingossaJos sivu reagoi pelkkään kirjainnäppäimeen, puheohjauksen käyttäjä voi käynnistää toimintoja huomaamattaan.
Vasemmalla mies sanelee puheohjauksella sanaa Done, ja sen ensimmäinen kirjain D avaa kuvankäsittelyohjelmassa Duplicate layer -ikkunan vahingossa. Oikealla toiminto vaatii näppäinyhdistelmän Ctrl + D, joten pelkkä kirjain ei tee mitään.

window.addEventListener("keydown", e => {
if (e.key === "d") monistaTaso(); // laukeaa pelkästä kirjaimesta
});

window.addEventListener("keydown", e => {
if (e.key === "d" && (e.ctrlKey || e.metaKey)) monistaTaso();
});
Osa sivustoista käyttää pikanäppäimiä, joissa yksi kirjain tai numero tekee jotain, esimerkiksi D poistaa viestin. Puheohjauksen käyttäjälle tämä on vaarallista: kun hän sanoo sanan, ohjelma voi tulkita sen kirjaimiksi, ja ne käynnistävät toimintoja. Yhden merkin pikanäppäimen pitää siksi olla kytkettävissä pois, vaihdettavissa yhdistelmäksi, kuten Ctrl ja D, tai toimia vain silloin, kun kyseinen osa sivua on valittuna.
Ketä tämä koskee
Puheohjauksen käyttäjät sekä ne, jotka painavat näppäimiä vahingossa, esimerkiksi käden vapinan takia.
Näin tarkistat itse
Klikkaa sivun tyhjää kohtaa ja paina muutamaa kirjainta ja numeroa. Tapahtuuko sivulla jotain? Jos tapahtuu, voiko pikanäppäimet kytkeä pois tai vaihtaa toiseen näppäinyhdistelmään asetuksista?
Mitä Sigila tarkistaa puolestasi
Sigila painaa muutamaa kirjainnäppäintä, kun mikään kenttä ei ole valittuna, ja kirjaa, reagoiko sivu. Tulos näytetään tarkistettavaksi, koska kone ei tiedä, voiko pikanäppäimen kytkeä pois.
Tekijälle: näin korjaat
Mikä on vialla
Sivu reagoi yksittäiseen kirjain-, numero- tai välimerkkinäppäimeen, vaikka mikään kenttä ei ole valittuna.
Missä tätä tavallisesti näkee
Sähköposti- ja chat-sovellusten pikanäppäimet (D poistaa, R vastaa), sivustojen omat pikanäppäimet ja upotetut soittimet.
Korjaus
Vaadi pikanäppäimeen Ctrl- tai Cmd-näppäin, jolloin pelkkä kirjain ei tee mitään: if (e.key === "d" && (e.ctrlKey || e.metaKey)) poista(); Vaihtonäppäin (Shift) ei riitä, koska iso kirjain on yhä merkki. Toinen tapa on antaa käyttäjän kytkeä pikanäppäimet pois tai vaihtaa ne asetuksista. Kolmas tapa on kuunnella näppäimiä vain silloin, kun kyseinen osa sivua on valittuna.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Aikaraja ei saa katkaista käyttäjän työtäJos lomake tyhjenee tai istunto päättyy varoittamatta, hitaasti lukeva tai kirjoittava menettää tekemänsä.
Vasemmalla hakemus tyhjenee 15 minuutin jälkeen varoittamatta. Oikealla sivu varoittaa ennen aikarajaa, ja lisäaikaa saa yhdellä painalluksella.

setTimeout(() => { tyhjennaLomake(); }, 15 * 60 * 1000);
<!-- ei varoitusta, ei lisäaikaa, ei tallennusta -->

setTimeout(() => avaaVaroitusDialogi(), 14 * 60 * 1000);
jatkaPainike.onclick = () => { paivitaAjastin(); suljeDialogi(); };
Joillakin sivuilla on aikaraja: kirjautuminen päättyy, varaus vanhenee tai lomake tyhjenee tietyn ajan jälkeen. Käyttäjän pitää voida joko kytkeä aikaraja pois, säätää sitä tai saada lisäaikaa. Lisäaikaa pitää tarjota varoituksella ennen kuin aika loppuu, ja sen pitää onnistua yhdellä yksinkertaisella toiminnolla, kuten painamalla painiketta. Yli 20 tunnin aikaraja on aina sallittu. Muita poikkeuksia ovat reaaliaikaiset tapahtumat, kuten huutokaupat, ja tilanteet, joissa aikaraja on toiminnalle välttämätön.
Ketä tämä koskee
Ihmiset, jotka lukevat, kirjoittavat tai liikkuvat hitaasti, kuten ruudunlukijan käyttäjät, liikuntarajoitteiset ja ne, joilla on lukemisen vaikeuksia.
Näin tarkistat itse
Onko sivustolla jotain ajastettua, kuten kirjautuminen, varaus tai pitkä lomake? Jätä se hetkeksi kesken. Varoittaako sivu ennen kuin aika loppuu, ja voitko jatkaa aikaa?
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti, päivittyykö sivu itsestään ajastimella. Kirjautumisten ja lomakkeiden aikarajat on tarkistettava itse.
Tekijälle: näin korjaat
Mikä on vialla
Sivulla on aikaraja, joka katkaisee käyttäjän tekemisen, kuten tyhjentää lomakkeen tai päättää istunnon, eikä aikaa voi säätää tai jatkaa.
Missä tätä tavallisesti näkee
Hakemus- ja tilauslomakkeet, verkkopankkien ja verkkokauppojen istunnot, varausjärjestelmät ja sivut, jotka päivittävät itsensä ajastimella (meta refresh).
Korjaus
Paras ratkaisu on välttää katkaisu tai tallentaa käyttäjän kirjoittamat tiedot, jotta mitään ei menetetä. Jos aikaraja on pakollinen, varoita ennen sen umpeutumista ja tarjoa lisäaikaa yhdellä painalluksella. Varoitusikkunaksi sopii <dialog>, jossa lukee ”Istuntosi päättyy minuutin kuluttua. Haluatko jatkaa?” ja painikkeet ”Jatka istuntoa” ja ”Kirjaudu ulos”. Ajastus: setTimeout(() => varoitus.showModal(), 14 * 60 * 1000), kun raja on 15 minuuttia, ja Jatka-painike nollaa ajastimen. WCAG vaatii, että varoitus tulee vähintään 20 sekuntia ennen katkaisua ja lisäaikaa voi pyytää vähintään kymmenen kertaa. Poista myös sivun automaattinen päivitys <meta http-equiv="refresh">.
Sigilan automaattiset mittarit tälle kriteerille
Sivu päivittää itsensä ajastimella
meta-refreshSivu latautuu uudelleen tai siirtyy toiselle sivulle ajastimella (
meta refresh), mikä keskeyttää lukemisen ja voi tyhjentää lomakkeen.Missä tavallisesti: Automaattiset uudelleenohjaukset ja itsestään päivittyvät sivut.
Korjaus: Poista
<meta http-equiv="refresh">. Uudelleenohjaus tehdään palvelimella (HTTP 301 tai 302), ja päivittämisestä annetaan käyttäjän päättää.
Liikkuva sisältö pitää voida pysäyttääItsestään vaihtuva karuselli tai liikkuva mainos vaikeuttaa lukemista. Sen pitää pysähtyä, kun käyttäjä haluaa.
Vasemmalla mainos liikkuu jatkuvasti uutisen vieressä, eikä sitä voi pysäyttää. Oikealla mainoksessa on tauko- ja sulkupainikkeet.

.mainos { animation: liuku 4s infinite; }
<!-- ei tauko- eikä sulkupainiketta -->

taukoPainike.onclick = () => mainos.classList.toggle("pysaytetty");
.pysaytetty { animation-play-state: paused; }
Jos sivulla on sisältöä, joka liikkuu, vilkkuu tai vierii yli viiden sekunnin ajan, käyttäjän pitää voida pysäyttää tai piilottaa se. Itsestään vaihtuva sisältö pitää voida pysäyttää, piilottaa tai sen tahtia säätää kestosta riippumatta. Tällaisia ovat esimerkiksi kuvakarusellit, uutisnauhat ja animoidut mainokset. Pysäytyksen pitää onnistua painikkeella, jota voi käyttää myös näppäimistöllä. Pelkkä pysähtyminen hiiren alla ei riitä.
Ketä tämä koskee
Ruudunlukijan käyttäjät, joiden lukemisen liike keskeyttää; sokeat ja heikkonäköiset, joille muuttuvaa sivua on vaikea hahmottaa; ja ihmiset, joiden on vaikea keskittyä liikkeen vieressä.
Näin tarkistat itse
Katso sivua hetki koskematta mihinkään. Liikkuuko tai vaihtuuko jokin itsestään? Jos liikkuu tai vaihtuu, löytyykö pysäytyspainike, ja toimiiko se myös näppäimistöllä?
Mitä Sigila tarkistaa puolestasi
Sigila etsii sivulta itsestään liikkuvan sisällön, kuten vaihtuvat karusellit, jatkuvat animaatiot ja itsestään käynnistyvät videot, sekä niiden pysäytyspainikkeet. Liike ilman pysäytyspainiketta raportoidaan todennäköisenä virheenä.
Tekijälle: näin korjaat
Mikä on vialla
Sivulla on sisältöä, joka liikkuu, vilkkuu tai vierii yli viiden sekunnin ajan tai vaihtuu itsestään, eikä sitä voi pysäyttää.
Missä tätä tavallisesti näkee
Kuvakarusellit, uutisnauhat, jatkuvat animaatiot, itsestään vaihtuvat mainokset sekä vanhat <marquee>- ja <blink>-elementit.
Korjaus
Lisää näkyvä pysäytyspainike (<button>), joka toimii myös näppäimistöllä. Pelkkä pysähtyminen hiiren alla ei riitä. Animaatiolle: tauko.onclick = () => mainos.classList.toggle("pysaytetty"); ja tyyleihin .pysaytetty { animation-play-state: paused; }. Karusellin vaihtuminen pysäytetään painikkeesta clearInterval-kutsulla, ja se pysähtyy myös silloin, kun karuselli saa kohdistuksen. Videolle controls-määrite. Kunnioita myös käyttäjän asetusta: @media (prefers-reduced-motion: reduce) { .mainos { animation: none; } }.
Sigilan automaattiset mittarit tälle kriteerille
Sivulla on vilkkuva blink-elementti
blinkSivulla on vanhentunut
<blink>-elementti, joka saa tekstin vilkkumaan.Missä tavallisesti: Hyvin vanhat sivustot.
Korjaus: Poista elementti. Jos huomiota tarvitaan, käytä paikallaan pysyvää korostusta.
Sivulla on liikkuva marquee-elementti
marqueeSivulla on vanhentunut
<marquee>-elementti, joka saa tekstin liikkumaan.Missä tavallisesti: Vanhat uutisnauhat.
Korjaus: Korvaa liikkuva teksti paikallaan pysyvällä tekstillä tai luettelolla.
Mikään ei saa välkkyä nopeastiNopea välkkyminen voi laukaista epileptisen kohtauksen. Raja on kolme välähdystä sekunnissa.
Vasemmalla mainos välähtää viisi kertaa sekunnissa, mikä voi laukaista epileptisen kohtauksen. Oikealla välähdyksiä on kaksi sekunnissa, joten tahti jää rajan alle.

.mainos { animation: valahdys 0.2s infinite; }
/* 5 välähdystä sekunnissa: yli raja-arvon */

.mainos { animation: valahdys 0.5s infinite; }
/* 2 välähdystä sekunnissa: alle raja-arvon */
Video, animaatio tai mainos, joka välähtää useammin kuin kolme kertaa sekunnissa, voi aiheuttaa valoherkälle ihmiselle epileptisen kohtauksen. Erityisen vaarallisia ovat kirkkaat ja punaiset välähdykset. Tämä on harvoja vaatimuksia, joissa virhe voi vahingoittaa käyttäjää fyysisesti, joten siitä ei pidä tinkiä. Hyvin pieni välkkyvä alue on poikkeus.
Ketä tämä koskee
Ihmiset, joilla on valoherkkä epilepsia tai muu valoherkkyys.
Näin tarkistat itse
Etsi sivulta vilkkuvat videot, animaatiot ja mainokset. Jos jokin välkkyy nopeasti, tarkista se välähdysten mittaamiseen tehdyllä työkalulla.
Mitä Sigila tarkistaa puolestasi
Sigila ei mittaa välähdyksiä automaattisesti.
Tekijälle: näin korjaat
Mikä on vialla
Sivulla jokin välähtää useammin kuin kolme kertaa sekunnissa, ja välkkyvä alue on suuri.
Missä tätä tavallisesti näkee
Mainosbannerit, huomiota hakevat animaatiot, videot ja pelit.
Korjaus
Hidasta animaatio niin, että välähdyksiä on enintään kolme sekunnissa. Turvallisinta on paljon hitaampi tahti. Vältä kirkkaan punaisen välkkymistä kokonaan. Kunnioita käyttäjän asetusta: @media (prefers-reduced-motion: reduce) { .mainos { animation: none; } }. Hyvin pieni välkkyvä alue on poikkeus. Videot tarkistetaan välähdysten mittaamiseen tehdyllä työkalulla ennen julkaisua.
Toistuvan valikon yli pitää päästä suoraan sisältöönIlman ohituslinkkiä näppäimistön käyttäjä joutuu käymään koko valikon läpi jokaisella sivulla ennen kuin pääsee itse asiaan.
Vasemmalla sisältöön pääsee vasta kahdeksan Tab-painalluksen jälkeen. Oikealla ensimmäinen Tab-painallus tuo esiin ohituslinkin, joka vie suoraan sisältöön.

<header><nav>… kaikki linkit aina ensin …</nav></header>

<a class="skip" href="#sisalto">Siirry sisältöön</a>
<main id="sisalto">…</main>
Useimpien sivujen yläosassa on sama valikko, jossa voi olla kymmeniä linkkejä. Hiiren käyttäjä ohittaa sen katseella, mutta näppäimistön käyttäjä kulkee jokaisen linkin läpi yksi kerrallaan. Siksi sivulla tarvitaan keino hypätä toistuvan osan yli. Tavallisin keino on ”Siirry sisältöön” -linkki, joka tulee näkyviin, kun Tab-näppäintä painetaan ensimmäisen kerran. Myös pääsisällön merkintä koodissa ja selkeät otsikot auttavat ruudunlukijan käyttäjiä.
Ketä tämä koskee
Näppäimistön ja ruudunlukijan käyttäjät.
Näin tarkistat itse
Avaa sivu ja paina Tab-näppäintä kerran, tai muutaman kerran, jos sivulla on ensin evästeilmoitus. Tuleeko näkyviin ”Siirry sisältöön” -linkki, ja viekö se suoraan sivun pääsisältöön, kun painat Enteriä?
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti, onko sivulla jokin keino ohittaa toistuva sisältö: ohituslinkki, pääsisällön merkintä tai otsikot.
Tekijälle: näin korjaat
Mikä on vialla
Sivulla ei ole keinoa ohittaa toistuvaa sisältöä, kuten ylävalikkoa, vaan näppäimistön käyttäjän pitää käydä se läpi joka sivulla.
Missä tätä tavallisesti näkee
Sivut, joilla on pitkä ylävalikko mutta ei ohituslinkkiä, pääsisällön merkintää (<main>) eikä otsikoita.
Korjaus
Lisää sivun alkuun ohituslinkki <a class="ohitus" href="#sisalto">Siirry sisältöön</a> ja pääsisältöön <main id="sisalto">. Linkin voi piilottaa näkyvistä, kunhan se tulee esiin saadessaan kohdistuksen: .ohitus { position: absolute; left: -9999px; } .ohitus:focus { left: 1rem; top: 1rem; }. Merkitse lisäksi sivun osat <header>-, <nav>-, <main>- ja <footer>-elementeillä, joiden avulla ruudunlukijan käyttäjä hyppää suoraan oikeaan kohtaan.
Sigilan automaattiset mittarit tälle kriteerille
Toistuvan sisällön ohi ei pääse
bypassSivulla ei ole ohituslinkkiä, pääsisällön merkintää eikä otsikoita, joten näppäimistön käyttäjä joutuu kulkemaan valikon läpi jokaisella sivulla.
Missä tavallisesti: Sivupohjat ilman
<main>-elementtiä ja ohituslinkkiä.Korjaus: Lisää sivun alkuun
<a href="#sisalto">Siirry sisältöön</a>ja pääsisältöön<main id="sisalto">.
Jokaisella sivulla pitää olla oma, kuvaava otsikkoSivun otsikko näkyy selaimen välilehdessä ja hakutuloksissa. Se on ensimmäinen asia, jonka ruudunlukija sanoo sivusta.
Vasemmalla kolmella välilehdellä on sama otsikko Welcome, joten välilehdistä ei tiedä, mikä sivu on mikin. Oikealla välilehden otsikko kertoo sivun aiheen ja sivuston: Housing allowance – City Services.

<title>Welcome</title> <!-- joka sivulla sama -->

<title>Housing allowance – City Services</title>
Sivun otsikko on teksti, joka näkyy selaimen välilehdessä, kirjanmerkeissä ja hakukoneen tuloksissa. Ruudunlukija lukee sen ensimmäisenä, kun sivu avautuu. Jokaisella sivulla pitää olla oma otsikko, joka kertoo, mistä sivulla on kyse, esimerkiksi ”Yhteystiedot – Yritys Oy”. Jos kaikilla sivuilla on sama otsikko, käyttäjä ei tiedä, millä sivulla on, ja avoimet välilehdet sekoittuvat.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 1/299 sivustolta (0 %).
Ketä tämä koskee
Ruudunlukijan käyttäjät ja kaikki, joilla on monta välilehteä auki.
Näin tarkistat itse
Avaa muutama sivustosi sivu eri välilehtiin. Kertooko jokaisen välilehden teksti, mikä sivu on kyseessä?
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti, onko sivulla otsikko. Sitä, kuvaako otsikko sivua hyvin, kone ei pysty arvioimaan.
Tekijälle: näin korjaat
Mikä on vialla
Sivulta puuttuu otsikko (<title>), tai kaikilla sivuilla on sama tai epämääräinen otsikko, kuten ”Etusivu” tai ”Tervetuloa”.
Missä tätä tavallisesti näkee
Sivupohjat, joissa otsikko ei vaihdu sivun mukaan, ja sovellukset, joissa otsikko ei päivity näkymän vaihtuessa.
Korjaus
Anna jokaiselle sivulle oma otsikko, jossa ensin sivun aihe ja sitten sivuston nimi: <title>Yhteystiedot – Yritys Oy</title>. Etusivulla sivuston nimi voi olla ensin. Next.js-sovelluksessa otsikko määritellään sivukohtaisesti metadata-objektilla tai generateMetadata-funktiolla. Yhden sivun sovelluksessa päivitä document.title aina, kun näkymä vaihtuu.
Sigilan automaattiset mittarit tälle kriteerille
Sivulta puuttuu otsikko
document-titleSivulta puuttuu otsikko (
<title>), joten selaimen välilehti ja ruudunlukija kertovat vain sivun osoitteen.Missä tavallisesti: Sivupohjat ja sovellukset, joissa otsikko on unohtunut.
Korjaus: Anna sivulle kuvaava otsikko:
<title>Tuotteet – Yritys Oy</title>.
Näppäimistön pitää edetä sivulla järkevässä järjestyksessäKun Tab-näppäintä painetaan, kohdistuksen pitää kulkea samassa järjestyksessä kuin sivua luetaan eikä hyppiä sinne tänne.
Vasemmalla kohdistus hyppii lomakkeella ristiin: etunimestä Jatka-painikkeeseen ja takaisin. Oikealla se kulkee ylhäältä alas kenttä kerrallaan.

<button tabindex="2">Jatka</button>
<input tabindex="1"> <!-- järjestysnumerot sotkevat kulun -->

<input> <input> <input> <!-- koodin järjestys = kulun järjestys -->
<button>Jatka</button>
Näppäimistön käyttäjä etenee sivulla Tab-näppäimellä kohdasta toiseen. Järjestyksen pitää säilyttää sivun merkitys: tavallisesti ylhäältä alas ja vasemmalta oikealle. Jos kohdistus hyppää yllättäen sivun alaosaan ja takaisin tai sivun päälle avautuva ikkuna ei saa kohdistusta, käyttäjä eksyy. Syy on yleensä se, että sivun koodi on eri järjestyksessä kuin sivu näytöllä tai koodiin on lisätty erilliset järjestysnumerot.
Ketä tämä koskee
Näppäimistön ja ruudunlukijan käyttäjät sekä suurennusta käyttävät, jotka näkevät vain osan sivusta kerrallaan.
Näin tarkistat itse
Liiku sivulla Tab-näppäimellä ja seuraa, missä kohdistus on. Eteneekö se järkevässä järjestyksessä? Kun avaat valikon tai ikkunan, siirtyykö kohdistus sen sisään?
Mitä Sigila tarkistaa puolestasi
Sigila kulkee sivun läpi Tab-näppäimellä ja piirtää jokaisen pysähdyksen numeroituna sivun kuvaan. Raportti kertoo, jos kohdistus hyppää toistuvasti ylöspäin tai koodiin on lisätty järjestysnumeroita. Onko järjestys järkevä, on ihmisen arvioitava kuvasta.
Tekijälle: näin korjaat
Mikä on vialla
Kohdistus etenee Tab-näppäimellä eri järjestyksessä kuin sivu luetaan, tai se katoaa ja ilmestyy yllättäviin paikkoihin.
Missä tätä tavallisesti näkee
Koodiin lisätyt positiiviset tabindex-arvot (tabindex="1" ja suuremmat), tyyleillä vaihdettu järjestys (order, float) ja sivun päälle avautuvat ikkunat, jotka eivät saa kohdistusta.
Korjaus
Kirjoita koodi samassa järjestyksessä kuin sivu luetaan, jolloin kohdistus kulkee oikein itsestään. Poista positiiviset tabindex-arvot ja käytä vain arvoja 0 (valittavissa normaalisti) ja -1 (valittavissa vain ohjelmallisesti). Kun avaat ikkunan tai valikon, siirrä kohdistus sen sisään, ja kun suljet sen, palauta kohdistus avanneeseen painikkeeseen.
Linkin tekstin pitää kertoa, minne linkki vieRuudunlukijan käyttäjä selaa usein pelkkiä linkkejä. Kymmenen ”Lue lisää” -linkkiä ei kerro hänelle mitään.
Vasemmalla korteissa on vain kuva, täyteteksti ja linkki Read more, joten linkistä tai sen ympäriltä ei selviä, minne linkki vie. Oikealla jokaisella kortilla on otsikko, ja linkki kertoo kohteensa itse: Read more about Lofoten hiking.

<a href="/artikkelit/1">Read more</a> <!-- ei otsikkoa, ei kuvausta -->

<h3>Hiking in Lofoten</h3>
<a href="/artikkelit/1">Read more about Lofoten hiking</a>
Linkin tarkoituksen pitää selvitä linkin omasta tekstistä tai sen ympäriltä: samasta lauseesta, luettelon kohdasta tai otsikosta. Ruudunlukijan käyttäjät hakevat usein esiin luettelon sivun kaikista linkeistä, jolloin ”Lue lisää”, ”Tästä” ja ”Klikkaa” kuulostavat kaikki samalta. Kuvalinkin tarkoitus kerrotaan kuvan kuvauksessa. ”Lue lisää” täyttää vaatimuksen, kun kohde selviää linkin ympäriltä, mutta linkki, joka kertoo kohteensa itse, toimii myös ruudunlukijan linkkilistassa.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 110/299 sivustolta (37 %).
Ketä tämä koskee
Ruudunlukijan käyttäjät, jotka liikkuvat linkistä linkkiin, sekä kaikki, jotka silmäilevät sivua.
Näin tarkistat itse
Lue jokainen linkki yhdessä sen lauseen, luettelon kohdan tai edeltävän otsikon kanssa. Selviääkö niistä, minne linkki vie? Katso erityisesti kuvalinkit ja kuvakkeet: onko niillä nimi?
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti linkit, joilla ei ole lainkaan tekstiä tai nimeä, kuten tyhjät kuva- ja kuvakelinkit. Sitä, kertooko olemassa oleva teksti tarpeeksi, kone ei vielä pysty arvioimaan.
Tekijälle: näin korjaat
Mikä on vialla
Linkin tekstistä tai sen ympäriltä ei selviä, minne se vie: esimerkiksi ”Lue lisää” ilman otsikkoa tai selittävää lausetta, tai tyhjä kuvalinkki ilman nimeä.
Missä tätä tavallisesti näkee
Uutislistat, tuotekortit, ”Lue lisää” -linkit ja kuvakkeina tehdyt linkit, kuten somekuvakkeet.
Korjaus
Kirjoita linkin tekstiksi kohde: <a href="/vuokraehdot">Vuokraehdot</a>. Jos ulkoasu vaatii lyhyen tekstin, lisää tarkennus näkymättömänä tekstinä: <a href="/uutiset/42">Lue lisää<span class="visually-hidden"> uutisesta Kevätmarkkinat</span></a>. Kuvalinkin nimi kirjoitetaan kuvan alt-tekstiin: <a href="/"><img src="logo.svg" alt="Yritys Oy, etusivu"></a>. Kuvakelinkille annetaan aria-label: <a href="https://facebook.com/yritys" aria-label="Yritys Oy Facebookissa">…</a>.
Sigilan automaattiset mittarit tälle kriteerille
Kuvakartan alueelta puuttuu teksti
area-altKuvakartan alueelta (
<area>) puuttuu alt-teksti, joten linkin kohde jää arvoitukseksi.Missä tavallisesti: Karttakuvat ja vanhat kuvana tehdyt valikot.
Korjaus: Lisää jokaiselle alueelle alt-teksti:
<area shape="rect" coords="…" href="/tuotteet" alt="Tuotteet">.Linkiltä puuttuu teksti tai nimi
link-nameLinkki on tyhjä tai sisältää pelkän kuvan tai kuvakkeen ilman nimeä, joten ruudunlukija sanoo vain ”linkki”.
Missä tavallisesti: Kuvakelinkit, kuten somekuvakkeet, ja kuvalinkit ilman alt-tekstiä.
Korjaus: Lisää linkkiin teksti tai kuvalle alt-teksti:
<a href="/"><img src="logo.svg" alt="Yritys Oy, etusivu"></a>. Kuvakelinkille annetaanaria-label:<a href="…" aria-label="Yritys Oy Facebookissa">…</a>.
Sivun pitää löytyä useammalla kuin yhdellä tavallaJoku löytää sivun valikosta, joku toinen haulla. Pelkkä valikko ei riitä kaikille.
Vasemmalla mustaan talvitakkiin pääsee vain etusivun tuotelistasta: sivulla ei ole hakua, valikkoa eikä sivukarttaa. Oikealla sen löytää kahdella tavalla: valikon kautta tai haulla.

<!-- vain etusivun tuotelista -->
<!-- ei hakua, ei sivukarttaa -->

<form role="search"><input type="search" aria-label="Haku"></form>
<nav>… kategoriat …</nav>
Sivustolla pitää olla vähintään kaksi tapaa löytää sivut, esimerkiksi valikko ja haku tai valikko ja sivukartta. Ihmiset etsivät tietoa eri tavoin: osa selaa valikkoa, osa kirjoittaa hakusanan, ja osalle pitkän valikkorakenteen muistaminen on liian raskasta. Poikkeuksena ovat sivut, jotka ovat vaihe jossain toiminnossa, kuten kassan vaiheet.
Ketä tämä koskee
Kaikki, erityisesti ne, joille valikkorakenteen muistaminen tai käyttö on vaikeaa, sekä ruudunlukijan käyttäjät.
Näin tarkistat itse
Valitse jokin sivu sivustosi syvältä. Löydätkö sen sekä valikon kautta että haulla tai sivukartasta?
Mitä Sigila tarkistaa puolestasi
Sigila etsii jokaiselta sivulta haun, valikon ja linkin sivukarttaan. Kaksi eri tapaa on kunnossa, yksi jää tarkistettavaksi, ja jos tapoja ei ole yhtään, se on todennäköinen puute.
Tekijälle: näin korjaat
Mikä on vialla
Sivuston sivut löytyvät vain yhtä reittiä, yleensä valikon kautta, eikä sivustolla ole hakua eikä sivukarttaa.
Missä tätä tavallisesti näkee
Pienet sivustot ilman hakua, suuret sivustot ilman sivukarttaa ja kampanjasivut, joille pääsee vain yhdestä linkistä.
Korjaus
Tarjoa vähintään kaksi tapaa: valikko ja sivuston haku tai valikko ja sivukartta. Haku: <form role="search" action="/haku"><label for="q">Haku</label><input id="q" type="search" name="q"></form>. Sivukartta voi olla yksinkertainen sivu, jolla on luettelo kaikista sivuista, ja linkki siihen sivun alatunnisteessa.
Otsikoiden ja kenttien nimien pitää kertoa, mistä on kyse”Lisää” ja ”Lähetä” eivät kerro, mitä lisätään tai mitä lähetetään. Selkeä nimi auttaa kaikkia.
Vasemmalla valikon kohta Info ja painike Click eivät kerro, mitä niiden takana on. Oikealla otsikot ja nimet kertovat heti, mistä on kyse: Stylish Home Essentials, Featured Products ja Shop home decor.

<a href="/info">Info</a>
<button>Click</button>

<h1>Stylish Home Essentials</h1> <h2>Featured Products</h2>
<button>Shop home decor</button>
Sivun otsikoiden pitää kertoa, mitä niiden alla on, ja lomakkeen kenttien ja painikkeiden nimien pitää kertoa, mitä niihin kirjoitetaan tai mitä ne tekevät. Vaatimus ei edellytä otsikoita tai nimiä, mutta jos niitä on, niiden pitää olla kuvaavia. Ruudunlukijan käyttäjä liikkuu usein otsikosta toiseen, joten epämääräinen otsikko johtaa hänet harhaan.
Ketä tämä koskee
Kaikki, erityisesti ruudunlukijan käyttäjät sekä ne, joilla on lukemisen tai hahmottamisen vaikeuksia.
Näin tarkistat itse
Lue sivun otsikot peräkkäin ilman muuta tekstiä. Kertovatko ne, mistä kussakin osassa on kyse? Kertovatko lomakkeen kenttien nimet, mitä niihin kirjoitetaan?
Mitä Sigila tarkistaa puolestasi
Tätä kone ei vielä pysty arvioimaan, koska otsikon hyvyys riippuu sisällöstä.
Tekijälle: näin korjaat
Mikä on vialla
Otsikot tai kenttien ja painikkeiden nimet eivät kerro, mistä on kyse: ”Lisää”, ”Lähetä”, ”Tiedot”.
Missä tätä tavallisesti näkee
Lomakkeiden lähetyspainikkeet, korttien toimintopainikkeet ja yleisluontoiset väliotsikot.
Korjaus
Kirjoita nimet niin, että ne ymmärtää ilman ympäröivää tekstiä: <button>Lähetä tilaus</button> eikä pelkkä ”Lähetä”, ja <h2>Aukioloajat</h2> eikä ”Tiedot”. Jos ulkoasu vaatii lyhyen näkyvän tekstin, aloita koodissa oleva nimi samalla tekstillä: <button aria-label="Tilaa uutiskirje">Tilaa</button>, jotta puheohjaus löytää painikkeen (vaatimus 2.5.3).
Näppäimistön käyttäjän pitää nähdä, missä kohdassa hän onKun Tab-näppäimellä liikutaan, valittu linkki tai painike pitää korostaa näkyvästi. Muuten käyttäjä ei tiedä, missä on.
Vasemmalla näppäimistön kohdistus on Shop now -painikkeessa, mutta mikään ei näytä sitä, joten käyttäjä ei tiedä, mitä Enter valitsee. Oikealla selkeä kehys kertoo, missä kohdistus on.

:focus { outline: none; } /* kehys poistettu, tilalla ei mitään */

:focus-visible { outline: 3px solid #1c6fd1; outline-offset: 2px; }
Hiiren käyttäjä näkee osoittimen, mutta näppäimistön käyttäjä näkee sijaintinsa vain kohdistuksen merkistä, yleensä kehyksestä valitun linkin tai painikkeen ympärillä. Selaimet piirtävät kehyksen itse, mutta moni sivusto poistaa sen ulkoasun vuoksi. Silloin näppäimistön käyttäjä painaa Tab-näppäintä sokkona eikä tiedä, mitä Enter valitsee.
Ketä tämä koskee
Näppäimistön käyttäjät sekä heikkonäköiset, jotka käyttävät näppäimistöä.
Näin tarkistat itse
Liiku sivulla Tab-näppäimellä. Näetkö joka kohdassa selvästi, mikä linkki, painike tai kenttä on valittuna?
Mitä Sigila tarkistaa puolestasi
Sigila kulkee sivun läpi Tab-näppäimellä ja vertaa jokaista kohtaa valittuna ja valitsemattomana. Jos ulkoasu ei muutu, kohta merkitään sivun kuvaan punaisella numerolla.
Tekijälle: näin korjaat
Mikä on vialla
Kohdistuksen merkki ei näy: selaimen oma kehys on poistettu tyyleillä, eikä tilalle ole tehty mitään.
Missä tätä tavallisesti näkee
Sivupohjat ja tyylitiedostot, joissa on :focus { outline: none; } tai outline: 0 ilman korvaavaa tyyliä.
Korjaus
Älä poista kohdistuksen kehystä korvaamatta sitä. Hyvä korvaaja on :focus-visible { outline: 3px solid #1c6fd1; outline-offset: 2px; }. Valitsin :focus-visible näyttää kehyksen näppäimistön käyttäjälle mutta ei hiirellä klikattaessa. Kehyksen kontrastin taustaan pitää olla vähintään 3:1 (vaatimus 1.4.11).
Valittu kohta ei saa jäädä kokonaan piiloonKiinteä yläpalkki, evästeilmoitus tai chat-painike voi peittää kohdan, johon näppäimistöllä siirryttiin. Silloin käyttäjä ei näe, missä on.
Kun näppäimistön käyttäjä siirtyy Tab-näppäimellä linkkiin, painikkeeseen tai kenttään, sen pitää näkyä ruudulla ainakin osittain. Vaatimus koskee sivun omia osia, jotka jäävät sisällön päälle: paikallaan pysyvää yläpalkkia, alareunan evästeilmoitusta ja kulmassa leijuvaa chat-painiketta. Jos valittu kohta liukuu kokonaan niiden alle, käyttäjä painaa Enteriä tietämättä, mitä valitsee. Kohdan 2.4.7 näkyvä kehys ei auta, jos koko kohta on piilossa.
Ketä tämä koskee
Näppäimistön käyttäjät sekä ne, jotka käyttävät kytkin- tai puheohjausta. Myös heikkonäköiset, jotka suurentavat sivua, koska suurennettuna kiinteä palkki peittää suuremman osan ruudusta.
Näin tarkistat itse
Liiku sivulla Tab-näppäimellä alusta loppuun, myös silloin, kun evästeilmoitus tai chat on auki. Näkyykö jokainen valittu kohta ainakin osittain, vai jääkö jokin kiinteän palkin alle? Toista sama, kun sivu on suurennettu 200 prosenttiin.
Mitä Sigila tarkistaa puolestasi
Tätä kone ei pysty tarkistamaan, joten se jää ihmisen arvioitavaksi.
Tekijälle: näin korjaat
Mikä on vialla
Paikallaan pysyvä tai leijuva osa, kuten yläpalkki, evästeilmoitus tai chat-painike, peittää kokonaan kohdan, johon näppäimistöllä siirryttiin.
Missä tätä tavallisesti näkee
Sivupohjat, joissa yläpalkilla on position: sticky tai position: fixed, sekä alareunan evästeilmoitukset ja chat-painikkeet.
Korjaus
Kerro selaimelle palkin korkeus, niin se vierittää valitun kohdan palkin alta näkyviin: html { scroll-padding-top: 80px; }, kun yläpalkki on 80 pikseliä korkea. Alareunan palkille sama onnistuu scroll-padding-bottom-määritteellä. Evästeilmoituksen voi tehdä niin, ettei se peitä sisältöä, tai sen pitää sulkeutua, ennen kuin käyttäjä jatkaa sivulla. Tarkista lopuksi Tab-näppäimellä myös 200 prosentin suurennuksella.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.2. Laki edellyttää vielä WCAG 2.1:tä, mutta syyskuussa 2026 julkaistu standardin EN 301 549 versio 4.1.1 ottaa mukaan myös tämän vaatimuksen. Suomenkielinen nimi on Sigilan käännös, koska WCAG 2.2:sta ei vielä ole virallista suomennosta.
Pyyhkäisyn ja nipistyksen lisäksi pitää riittää napautusKaikki eivät pysty tekemään monimutkaisia eleitä. Saman asian pitää onnistua yksinkertaisella napautuksella tai klikkauksella.
Vasemmalla kartan suurentaminen vaatii kahden sormen eleen. Oikealla sama onnistuu yhdellä sormella plus-painikkeesta.

<!-- suurennus vain nipistämällä -->

<button aria-label="Lähennä">+</button>
<!-- nipistys saa jäädä rinnalle -->
Osa toiminnoista vaatii eleen, kuten pyyhkäisyn, nipistyksen kahdella sormella tai tietyn reitin piirtämisen. Liikuntarajoitteiselle tai osoitinta suulla tai katseella ohjaavalle tällaiset eleet voivat olla mahdottomia. Siksi jokaiselle tällaiselle toiminnolle tarvitaan myös yksinkertainen tapa, kuten nuolipainikkeet karusellissa tai plus- ja miinuspainikkeet kartassa. Ele saa jäädä, kunhan vaihtoehto on olemassa. Poikkeus on toiminto, jossa ele on välttämätön, kuten allekirjoituksen piirtäminen.
Ketä tämä koskee
Ihmiset, joiden käsien liikkeet ovat rajoittuneet, sekä ne, jotka käyttävät suu- tai katseohjausta.
Näin tarkistat itse
Etsi sivulta karusellit, kartat ja muut kohdat, joita käytetään pyyhkäisyillä tai monen sormen eleillä. Toimiiko jokainen myös pelkillä napautuksilla tai painikkeilla?
Mitä Sigila tarkistaa puolestasi
Sigila etsii sivun koodista toimintoja, jotka reagoivat monisormisiin eleisiin tai pyyhkäisyihin, ja näyttää löydökset tarkistettaviksi. Kone ei pysty päättelemään, onko sivulla jo vaihtoehtoinen painike.
Tekijälle: näin korjaat
Mikä on vialla
Toiminto vaatii monisormisen eleen tai pyyhkäisyn, eikä samaa voi tehdä yksinkertaisella napautuksella tai klikkauksella.
Missä tätä tavallisesti näkee
Karusellit, joita voi vaihtaa vain pyyhkäisemällä ja kartat, joita voi suurentaa vain nipistämällä.
Korjaus
Lisää eleen rinnalle painikkeet: karuselliin edellinen- ja seuraava-painikkeet (<button aria-label="Seuraava kuva">›</button>) ja karttaan plus- ja miinuspainikkeet. Ele saa jäädä käyttöön.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Vahingossa aloitetun painalluksen pitää voida peruaToiminnon pitää käynnistyä vasta, kun sormi tai hiiren painike nostetaan. Silloin väärän painalluksen voi perua liu'uttamalla pois.
Vasemmalla tiedosto poistuu jo silloin, kun hiiren painike painetaan alas, joten perua ei voi. Oikealla poisto tapahtuu vasta, kun painike vapautetaan. Jos osoittimen liu'uttaa ensin pois, mitään ei tapahdu.

pointerdown → poistaTiedosto(); // laukeaa heti

click → poistaTiedosto(); // vain jos vapautus painikkeen päällä
Kun painiketta painetaan, toiminto käynnistyy yleensä vasta, kun sormi tai hiiren painike nostetaan. Jos käyttäjä huomaa painaneensa väärää kohtaa, hän voi liu'uttaa sormen tai osoittimen pois ennen nostamista, eikä mitään tapahdu. Jos toiminto käynnistyy heti painalluksen alussa, peruminen ei ole mahdollista. Selaimen tavalliset painikkeet ja linkit toimivat oikein itsestään.
Ketä tämä koskee
Ihmiset, joiden käsi vapisee tai joiden liikkeet ovat epätarkkoja, sekä ne, jotka painavat vahingossa väärää kohtaa.
Näin tarkistat itse
Paina sivun painike pohjaan, pidä painettuna, liu'uta sormi tai hiiri painikkeen ulkopuolelle ja nosta. Mitään ei pitäisi tapahtua.
Mitä Sigila tarkistaa puolestasi
Sigila etsii sivun koodista toimintoja, jotka käynnistyvät jo painalluksen alussa, ja näyttää löydökset tarkistettaviksi.
Tekijälle: näin korjaat
Mikä on vialla
Toiminto käynnistyy heti, kun painike painetaan alas, eikä sitä voi perua liu'uttamalla pois ennen nostamista.
Missä tätä tavallisesti näkee
Itse ohjelmoidut painikkeet, jotka kuuntelevat mousedown-, pointerdown- tai touchstart-tapahtumaa, sekä raahattavat käyttöliittymät.
Korjaus
Käynnistä toiminto click-tapahtumasta, joka laukeaa vasta nostettaessa ja vain, jos osoitin on yhä painikkeen päällä. Selaimen <button> ja <a> toimivat näin itsestään. Jos alas painamiseen on pakko reagoida, tee peruminen mahdolliseksi: toiminto viimeistellään vasta nostettaessa, ja liu'uttaminen pois peruu sen.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Painikkeen tai linkin näkyvän tekstin pitää sisältyä sen koodissa olevaan nimeenPuheohjauksen käyttäjä sanoo ääneen sen, minkä näkee. Jos painikkeen nimi koodissa on jotain muuta, ohjelma ei löydä painiketta.
Vasemmalla painikkeessa lukee Send message, mutta koodissa sen nimi on Submit. Puheohjauksen käyttäjä sanoo näkemänsä tekstin, eikä ohjelma löydä painiketta. Oikealla näkyvä teksti on myös painikkeen nimi, ja ruudunlukija sanoo Send message.

<button aria-label="Submit">Send message</button>

<button>Send message</button>
Painikkeella voi olla kaksi nimeä: teksti, joka näkyy ruudulla, ja koodiin erikseen kirjoitettu nimi, jonka apuvälineet lukevat. Puheohjauksen käyttäjä valitsee painikkeen sanomalla sen näkyvän tekstin, esimerkiksi ”Osta nyt”. Jos koodissa olevassa nimessä lukee jotain muuta, kuten ”Tilaa”, ohjelma ei tunnista painiketta. Siksi koodissa olevan nimen pitää sisältää näkyvä teksti, mieluiten heti alussa.
Ketä tämä koskee
Puheohjauksen käyttäjät sekä ruudunlukijan käyttäjät, jotka näkevät osittain.
Näin tarkistat itse
Kokeile sivun painikkeita ruudunlukijalla tai puheohjauksella. Sisältyykö ruudunlukijan sanomaan nimeen sama teksti, joka painikkeessa näkyy?
Mitä Sigila tarkistaa puolestasi
Sigila vertaa painikkeiden ja linkkien näkyvää tekstiä niiden koodissa olevaan nimeen ja listaa ne, joiden nimi ei sisällä näkyvää tekstiä.
Tekijälle: näin korjaat
Mikä on vialla
Painikkeen tai linkin koodissa oleva nimi ei sisällä tekstiä, joka näkyy ruudulla.
Missä tätä tavallisesti näkee
Painikkeet, joille on annettu aria-label eri sanoin kuin näkyvä teksti, sekä kampanjapainikkeet ja tekstilliset kuvakkeet.
Korjaus
Aloita koodissa oleva nimi näkyvällä tekstillä. Jos painikkeessa lukee ”Tilaa nyt”, nimi aria-label="Tilaa nyt, 30 päivää maksutta" on kunnossa, mutta aria-label="Kokeile" ei ole. Yksinkertaisin ratkaisu on jättää aria-label pois, jolloin näkyvä teksti on nimi.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Laitteen ravistaminen ei saa olla ainoa tapa käyttää toimintoaJos toiminto vaatii puhelimen ravistamista tai kallistamista, sitä ei voi käyttää, kun laite on kiinni telineessä.
Vasemmalla piirroksen kumoaminen vaatii laitteen ravistamista. Oikealla sama onnistuu Undo-painikkeesta yhdellä sormella.

window.addEventListener("devicemotion", () => kumoa());
<!-- ruudulla ei ole kumoa-painiketta -->

<button>Kumoa</button>
<!-- ravistus saa jäädä rinnalle -->
Joitakin toimintoja voi käyttää liikuttamalla laitetta, esimerkiksi ravistamalla puhelinta, jolloin kirjoitus kumoutuu. Saman toiminnon pitää onnistua myös tavallisella painikkeella, ja liikeohjauksen pitää olla kytkettävissä pois, jotta laite ei reagoi vahingossa. Poikkeus on toiminto, joka ei ole mahdollinen ilman liikettä, kuten askelmittari.
Ketä tämä koskee
Ihmiset, joiden laite on kiinnitetty telineeseen, sekä ne, jotka eivät pysty liikuttamaan laitetta tai joiden kädet vapisevat.
Näin tarkistat itse
Avaa sivu puhelimella ja ravista ja kallista laitetta. Tapahtuuko sivulla jotain? Jos tapahtuu, onnistuuko sama myös painikkeella, ja voiko liikeohjauksen kytkeä pois?
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa, kuunteleeko sivu laitteen liikettä, ja raportoi, jos jokin toimii vain ravistamalla tai kallistamalla.
Tekijälle: näin korjaat
Mikä on vialla
Toiminto käynnistyy vain laitteen liikkeestä, kuten ravistuksesta tai kallistuksesta, eikä liikeohjausta voi kytkeä pois.
Missä tätä tavallisesti näkee
Ravista ja kumoa -toiminnot, kallistamalla ohjattavat näkymät ja liikettä käyttävät pelit.
Korjaus
Tee sama toiminto myös painikkeella: <button>Kumoa</button>. Lisää asetuksiin kytkin, jolla liikeohjauksen saa pois, ja kuuntele devicemotion- ja deviceorientation-tapahtumia vain, kun kytkin on päällä.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Raahaamisen sijaan pitää riittää napautusKaikki eivät pysty painamaan ja liikuttamaan yhtä aikaa. Liukusäätimen, listan järjestyksen ja kartan pitää toimia myös napautuksilla.
Raahaaminen tarkoittaa, että käyttäjä painaa kohdan pohjaan, liikuttaa sitä ja vasta sitten päästää irti. Sitä käytetään esimerkiksi liukusäätimissä, listojen järjestämisessä, karttojen siirtämisessä ja tiedostojen pudottamisessa latausalueelle. Ihmiselle, jonka käsi vapisee tai joka ohjaa osoitinta suulla tai katseella, painaminen ja liikuttaminen yhtä aikaa voi olla mahdotonta. Siksi jokaiselle raahaamalla tehtävälle toiminnolle tarvitaan myös tapa, joka onnistuu yksittäisillä napautuksilla tai klikkauksilla, kuten nuolipainikkeet tai ”Siirrä ylös” -painike. Näppäimistöllä toimiva vaihtoehto ei yksin riitä, koska vaatimus koskee osoittimen käyttäjiä. Poikkeus on toiminto, jossa raahaaminen on välttämätöntä, kuten vapaa piirtäminen.
Ketä tämä koskee
Ihmiset, joiden käsi vapisee tai joiden liikkeet ovat rajoittuneet, sekä ne, jotka käyttävät suu- tai katseohjausta tai pallohiirtä.
Näin tarkistat itse
Etsi sivulta liukusäätimet, järjestettävät listat, kartat ja tiedostojen pudotusalueet. Onnistuuko jokainen pelkillä napautuksilla tai klikkauksilla, ilman että painiketta pitää pitää pohjassa liikkeen ajan?
Mitä Sigila tarkistaa puolestasi
Tätä kone ei pysty tarkistamaan, joten se jää ihmisen arvioitavaksi.
Tekijälle: näin korjaat
Mikä on vialla
Toiminto onnistuu vain raahaamalla, eli painamalla, liikuttamalla ja päästämällä irti, eikä samaa voi tehdä napautuksilla tai klikkauksilla.
Missä tätä tavallisesti näkee
Liukusäätimet, järjestettävät listat ja taulut, kartat, kuvien rajaustyökalut ja tiedostojen pudotusalueet.
Korjaus
Lisää raahaamisen rinnalle tapa, joka onnistuu yksittäisillä klikkauksilla. Liukusäätimeksi käy selaimen oma <input type="range">, joka liikkuu myös uraa klikkaamalla, tai plus- ja miinuspainikkeet. Listaan sopivat ”Siirrä ylös”- ja ”Siirrä alas” -painikkeet, karttaan nuolipainikkeet. Tiedostojen pudotusalueeseen riittää ”Valitse tiedosto” -painike (<input type="file">). Raahaus saa jäädä käyttöön.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.2. Laki edellyttää vielä WCAG 2.1:tä, mutta syyskuussa 2026 julkaistu standardin EN 301 549 versio 4.1.1 ottaa mukaan myös tämän vaatimuksen. Suomenkielinen nimi on Sigilan käännös, koska WCAG 2.2:sta ei vielä ole virallista suomennosta.
Painikkeiden ja linkkien pitää olla niin suuria, että niihin osuuPieneen ja toisen viereen ahdettuun kohtaan on vaikea osua. Väärä napautus voi viedä väärään paikkaan tai poistaa jotain.
Painikkeiden, linkkien ja muiden painettavien kohtien pitää olla vähintään 24 × 24 pikseliä. Pienempi kohta käy, jos sen ympärillä on niin paljon tyhjää, että sen keskelle piirretty 24 pikselin ympyrä ei osu toiseen kohtaan eikä sen ympyrään. Tekstin seassa olevat linkit on vapautettu, samoin selaimen omat säätimet, joiden kokoa sivusto ei ole muuttanut. Tyypillisiä liian pieniä kohtia ovat sulkemisruksit, sivunumerot, somekuvakkeet ja tiheät kuvakepainikkeet.
Ketä tämä koskee
Ihmiset, joiden käsi vapisee tai joiden liikkeet ovat epätarkkoja, liikkeellä puhelinta käyttävät ja kaikki, joilla on isot sormet.
Näin tarkistat itse
Kokeile sivua puhelimella. Osutko pieniin kohtiin, kuten sulkemisruksiin, kuvakkeisiin ja sivunumeroihin, ilman että sormi osuu viereiseen kohtaan?
Mitä Sigila tarkistaa puolestasi
Sigila mittaa sivun jokaisen painikkeen, linkin ja kentän ja listaa ne, jotka ovat alle 24 × 24 pikseliä ja joiden lähellä on toinen painettava kohta. Tekstin seassa olevat linkit jätetään pois, kuten WCAG sallii. Sitä, koskeeko jotain listattua kohtaa jokin muu poikkeus, kone ei pysty arvioimaan, joten löydökset näytetään tarkistettaviksi.
Tekijälle: näin korjaat
Mikä on vialla
Painettava kohta on alle 24 × 24 pikseliä, ja toinen painettava kohta on niin lähellä, että väärään on helppo osua.
Missä tätä tavallisesti näkee
Sulkemisruksit, sivunumerot, somekuvakkeet, kuvakepainikkeet, karusellin pisteet ja alatunnisteen tiheät linkkilistat.
Korjaus
Kasvata painettavaa aluetta, ei välttämättä näkyvää kuvaketta: .icon-button { min-width: 24px; min-height: 24px; } tai padding: 4px 16 pikselin kuvakkeen ympärille. Toinen tapa on väli: vaatimus täyttyy, kun jokaisen pienen kohdan keskelle piirretty 24 pikselin ympyrä ei osu toiseen kohtaan eikä sen ympyrään. AAA-tason kohta 2.5.5 suosittaa vielä suurempaa kokoa, 44 × 44 pikseliä.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.2. Laki edellyttää vielä WCAG 2.1:tä, mutta syyskuussa 2026 julkaistu standardin EN 301 549 versio 4.1.1 ottaa mukaan myös tämän vaatimuksen. Suomenkielinen nimi on Sigilan käännös, koska WCAG 2.2:sta ei vielä ole virallista suomennosta.
3. Ymmärrettävä
Sisällön ja sivuston toiminnan pitää olla selkeitä ja ennustettavia.
Sivun kielen pitää olla merkitty koodiinRuudunlukija valitsee ääntämisen sivun kielen perusteella. Väärällä kielellä luettu suomi kuulostaa käsittämättömältä.
Vasemmalla sivun kieltä ei ole merkitty koodiin, joten suomenkielinen ruudunlukija lukee englanninkielisen tekstin suomalaisittain: Ap-plüü foor a puil-dink per-mit. Oikealla koodiin on merkitty englannin kieli, ja ruudunlukija vaihtaa englantilaiseen ääntämykseen.

<html> <!-- kieltä ei kerrottu -->

<html lang="en">
Sivun koodin alkuun merkitään, millä kielellä sivu on kirjoitettu. Ruudunlukija valitsee sen perusteella ääntämissäännöt. Jos kieltä ei ole merkitty tai se on väärä, ruudunlukija voi lukea suomenkielisen tekstin englannin ääntämyksellä, jolloin siitä ei saa selvää. Merkintä auttaa myös selaimen käännöstoimintoa ja hakukoneita.
Ketä tämä koskee
Ruudunlukijan käyttäjät.
Näin tarkistat itse
Sigila tarkistaa kielimerkinnän puolestasi. Varmista, että merkitty kieli on sama kuin kieli, jolla sivu on kirjoitettu, etenkin jos sivustolla on useampi kieliversio.
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti, onko sivun kieli merkitty ja onko merkintä kelvollinen kielikoodi.
Tekijälle: näin korjaat
Mikä on vialla
Sivun kieltä ei ole merkitty koodiin, tai merkintä on väärä tai virheellinen kielikoodi.
Missä tätä tavallisesti näkee
Sivupohjat, joissa <html>-elementiltä puuttuu lang-määrite, ja kieliversiot, joissa merkintä on jäänyt alkuperäiseen kieleen.
Korjaus
Merkitse kieli sivun juurielementtiin: <html lang="fi">. Ruotsinkieliselle sivulle lang="sv" ja englanninkieliselle lang="en". Käytä standardin mukaisia kielikoodeja (BCP 47), esimerkiksi fi tai fi-FI, ei ”finnish”. Next.js-sovelluksessa lang lisätään juuritason layout-tiedoston <html>-elementtiin.
Sigilan automaattiset mittarit tälle kriteerille
Sivun kieli puuttuu
html-has-langSivun
<html>-elementiltä puuttuu lang-määrite, joten ruudunlukija ei tiedä, millä kielellä sivu pitää lukea.Missä tavallisesti: Sivupohjat.
Korjaus: Lisää kieli:
<html lang="fi">, ruotsinkieliselle sivullelang="sv".Sivun kielikoodi on virheellinen
html-lang-validSivun lang-määritteessä on kelvoton kielikoodi, esimerkiksi ”finnish”.
Missä tavallisesti: Käsin kirjoitetut sivupohjat.
Korjaus: Käytä standardin mukaista koodia, kuten fi, sv, en tai fi-FI.
Sivun kaksi kielimerkintää ovat ristiriidassa
html-xml-lang-mismatchSivun lang- ja xml:lang-määritteet kertovat eri kielen.
Missä tavallisesti: Vanhat XHTML-sivut.
Korjaus: Merkitse molempiin sama kieli:
<html lang="fi" xml:lang="fi">, tai poista xml:lang.
Toisella kielellä kirjoitetun tekstin kieli pitää merkitäKun suomenkielisellä sivulla on englanninkielinen lainaus, ruudunlukija ääntää sen oikein vain, jos kieli on merkitty.
Vasemmalla ranskankielinen lainaus luetaan englannin ääntämyksellä: Bon-joor, Paris voos attend. Oikealla lainaukselle on merkitty ranskan kieli, joten ruudunlukija vaihtaa ääntämyksen ranskaksi.

<p>”Bonjour, Paris vous attend !”</p>

<span lang="fr">Bonjour, Paris vous attend !</span>
Jos sivulla on kappale, lainaus tai otsikko eri kielellä kuin muu sivu, sen kieli merkitään koodiin erikseen. Silloin ruudunlukija vaihtaa ääntämisen oikeaan kieleen ja takaisin. Merkintää ei tarvita yksittäisille vierasperäisille sanoille, nimille tai teknisille termeille, jotka ovat vakiintuneet suomeen.
Ketä tämä koskee
Ruudunlukijan käyttäjät.
Näin tarkistat itse
Etsi sivustolta kohdat, jotka ovat eri kielellä kuin muu sivu, kuten lainaukset, toisen kielen tiivistelmät ja kieliversioiden linkit. Onko niiden kieli merkitty koodiin?
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti, ovatko sivulle merkityt kielikoodit kelvollisia. Merkitsemättömiä vieraskielisiä kohtia kone ei vielä löydä.
Tekijälle: näin korjaat
Mikä on vialla
Sivulla on eri kielellä kirjoitettu kohta, jonka kieltä ei ole merkitty, tai merkitty kielikoodi on virheellinen.
Missä tätä tavallisesti näkee
Englanninkieliset lainaukset ja iskulauseet suomenkielisellä sivulla, toisen kielen tiivistelmät ja kieliversioiden linkit.
Korjaus
Merkitse kieli kohtaan, jossa se vaihtuu: <p lang="en">Read our story</p> tai <blockquote lang="sv">…</blockquote>. Kieliversioiden linkkeihin: <a href="/sv" lang="sv" hreflang="sv">Svenska</a>. Yksittäisiin suomeen vakiintuneisiin sanoihin ja nimiin merkintää ei tarvita.
Sigilan automaattiset mittarit tälle kriteerille
Tekstin osan kielikoodi on virheellinen
valid-langSivun osaan merkitty kielikoodi ei ole kelvollinen.
Missä tavallisesti: Käsin merkityt lainaukset ja kieliversiot.
Korjaus: Korjaa koodi standardin mukaiseksi:
<p lang="en">The quick brown fox</p>.
Pelkkä kohtaan siirtyminen ei saa käynnistää mitäänKun näppäimistöllä siirrytään kenttään tai painikkeeseen, sivu ei saa vaihtua, lomake lähteä eikä ikkuna avautua itsestään.
Vasemmalla haku käynnistyy jo siitä, että kohdistus siirtyy Tab-näppäimellä Search-painikkeeseen, vaikka mitään ei painettu. Oikealla kohdistus vain korostaa painikkeen, eikä mitään tapahdu.

button.addEventListener("focus", () => hae());

<button>Search</button> <!-- toiminto vasta painalluksesta -->
Näppäimistön käyttäjä tutkii sivua siirtämällä kohdistusta kohdasta toiseen. Jos pelkkä kohdistuksen siirtyminen vaikkapa valikkoon tai kenttään saa sivun vaihtumaan, lomakkeen lähtemään tai uuden ikkunan aukeamaan, käyttäjä hämmentyy ja voi menettää tekemänsä. Toimintojen pitää käynnistyä vasta, kun käyttäjä valitsee ne.
Ketä tämä koskee
Näppäimistön ja ruudunlukijan käyttäjät sekä ne, joilla on hahmottamisen vaikeuksia.
Näin tarkistat itse
Liiku sivun kentissä, valikoissa ja painikkeissa Tab-näppäimellä valitsematta mitään. Tapahtuuko jotain pelkästä siirtymisestä?
Mitä Sigila tarkistaa puolestasi
Sigila kulkee sivun läpi Tab-näppäimellä. Jos pelkkä siirtyminen vaihtaa sivua tai avaa ikkunan, se raportoidaan todennäköisenä virheenä.
Tekijälle: näin korjaat
Mikä on vialla
Kun kohdistus siirtyy kenttään, painikkeeseen tai valikkoon, sivu tekee jotain isoa, kuten siirtyy toiselle sivulle, lähettää lomakkeen tai avaa ikkunan.
Missä tätä tavallisesti näkee
Valikot, jotka vaihtavat sivua jo kohdistuksen osuessa niihin, kentät, jotka lähettävät lomakkeen focus-tapahtumasta, ja ponnahdusikkunat.
Korjaus
Älä käynnistä isoja muutoksia focus-tapahtumasta. Kohdistus saa korostaa kohdan tai näyttää ohjeen, mutta siirtyminen, lähettäminen ja ikkunan avaaminen tehdään vasta, kun käyttäjä painaa painiketta tai Enteriä.
Valinnan tekeminen ei saa viedä toiselle sivulle yllättäenKun käyttäjä valitsee vaihtoehdon pudotusvalikosta, sivu ei saa vaihtua ennen kuin hän painaa painiketta.
Vasemmalla kohteen valitseminen pudotusvalikosta lataa tulokset heti, vaikka käyttäjä ei ehkä ollut vielä valmis. Oikealla valinta jää odottamaan, ja haku lähtee vasta Search-painikkeesta.

select.addEventListener("change", () => hae());

<button>Search</button> <!-- haku vasta painikkeesta -->
Kun käyttäjä kirjoittaa kenttään, valitsee vaihtoehdon pudotusvalikosta tai rastii valintaruudun, sivu ei saa tehdä odottamattomia isoja muutoksia, kuten siirtyä toiselle sivulle tai lähettää lomaketta. Jos muutos on tarkoituksellinen, siitä pitää kertoa käyttäjälle etukäteen. Näppäimistön käyttäjä selaa pudotusvalikon vaihtoehtoja nuolinäppäimillä, ja jokainen painallus voisi muuten viedä hänet uudelle sivulle.
Ketä tämä koskee
Ruudunlukijan ja näppäimistön käyttäjät sekä ne, joilla on hahmottamisen vaikeuksia.
Näin tarkistat itse
Vaihda sivun pudotusvalikoiden ja valintojen arvoja painamatta mitään painiketta. Siirtyykö sivu tai lähteekö jotain ilman varoitusta?
Mitä Sigila tarkistaa puolestasi
Sigila vaihtaa lomakkeiden ulkopuolisten pudotusvalikoiden arvoja nuolinäppäimillä ja raportoi, jos sivu vaihtuu. Lomakkeita Sigila ei koskaan lähetä.
Tekijälle: näin korjaat
Mikä on vialla
Kun käyttäjä vaihtaa valintaa tai kirjoittaa kenttään, sivu siirtyy toiselle sivulle tai lähettää lomakkeen kertomatta siitä etukäteen.
Missä tätä tavallisesti näkee
Kieli-, maa- ja kaupunkivalitsimet, jotka vaihtavat sivua heti, ja suodattimet, jotka lataavat sivun uudelleen jokaisesta valinnasta.
Korjaus
Tee valinnan käyttöönotosta erillinen painike: <select id="kieli">…</select><button>Vaihda kieli</button>. Jos muutoksen on pakko tapahtua heti, kerro siitä ennen valintaa, esimerkiksi ”Sivu päivittyy valinnan mukaan”, ja palauta kohdistus samaan kohtaan päivityksen jälkeen.
Valikon pitää pysyä samana kaikilla sivuillaKun valikko on joka sivulla samassa paikassa ja järjestyksessä, käyttäjä löytää asiat muistinsa varassa.
Vasemmalla matkatoimiston kolmella sivulla sama valikko on kolmessa eri järjestyksessä, joten käyttäjä joutuu etsimään kohdat joka kerta uudelleen. Oikealla järjestys on sama kaikilla sivuilla.

<!-- Etusivu: Home, Tours, Hotels, About, Contact -->
<!-- Tours-sivu: Tours, Hotels, Contact, Home, About -->

<nav>… sama valikko joka sivulla …</nav>
<!-- sama järjestys kaikkialla -->
Jos sivustolla on valikko tai muu navigointi, joka toistuu monella sivulla, sen kohtien pitää olla jokaisella sivulla samassa järjestyksessä. Kohtia saa lisätä tai poistaa, kunhan muiden järjestys pysyy samana. Ruudunlukijan käyttäjä ja heikkonäköinen oppivat, missä mikin on, ja vaihteleva järjestys pakottaa heidät etsimään joka kerta alusta.
Ketä tämä koskee
Heikkonäköiset, ruudunlukijan käyttäjät ja ne, joilla on muistin tai hahmottamisen vaikeuksia.
Näin tarkistat itse
Avaa useita sivustosi sivuja ja vertaa valikkoa. Ovatko kohdat samassa järjestyksessä ja samassa paikassa?
Mitä Sigila tarkistaa puolestasi
Kun Sigila skannaa useita sivuja, se vertaa jokaisen sivun päävalikkoa ensimmäiseen sivuun. Selvästi poikkeava valikko näytetään tarkistettavaksi.
Tekijälle: näin korjaat
Mikä on vialla
Toistuva valikko tai muu navigointi on eri sivuilla eri järjestyksessä tai eri paikassa.
Missä tätä tavallisesti näkee
Kampanja- ja laskeutumissivut, joilla on oma valikko, ja käsin kopioidut valikot.
Korjaus
Toteuta valikko yhtenä yhteisenä osana, jota kaikki sivut käyttävät, äläkä kopioi sitä sivuille käsin. Pidä kohdat samassa järjestyksessä kaikilla sivuilla. Kohtia saa lisätä tai poistaa, kunhan muiden järjestys säilyy.
Saman toiminnon pitää olla samanniminen kaikkiallaJos haku on yhdellä sivulla ”Haku” ja toisella ”Etsi”, käyttäjä joutuu arvaamaan, onko kyse samasta asiasta.
Vasemmalla matkatoimiston hakupainike on yhdellä sivulla Search ja toisella Find, joten käyttäjä joutuu arvaamaan, onko kyse samasta toiminnosta. Oikealla painikkeen nimi on molemmilla sivuilla Search.

<!-- Etusivu: <button>Search</button> -->
<!-- Toinen sivu: <button>Find</button> -->

<button>Search</button> <!-- joka sivulla -->
Sivustolla toistuvat toiminnot, kuten haku, ostoskori ja kirjautuminen, pitää nimetä ja merkitä samalla tavalla jokaisella sivulla. Sama koskee kuvakkeita: tulostamisen kuvake on joka sivulla sama. Hyvä käytäntö on myös, ettei sama kuvake tarkoita eri sivuilla eri asioita. Johdonmukaisuus auttaa erityisesti niitä, jotka tunnistavat toiminnot nimen perusteella, kuten ruudunlukijan ja puheohjauksen käyttäjiä.
Ketä tämä koskee
Ihmiset, joilla on hahmottamisen tai muistin vaikeuksia, sekä ruudunlukijan ja puheohjauksen käyttäjät.
Näin tarkistat itse
Vertaa toistuvien toimintojen nimiä ja kuvakkeita eri sivuilla. Onko haku, ostoskori ja yhteydenotto jokaisella sivulla samanniminen?
Mitä Sigila tarkistaa puolestasi
Maksullisessa skannauksessa Sigila vertaa toistuvien toimintojen nimiä sivujen välillä ja näyttää erot tarkistettaviksi.
Tekijälle: näin korjaat
Mikä on vialla
Sama toiminto on eri sivuilla eri nimellä tai eri kuvakkeella: ”Haku”, ”Etsi” ja ”Hae”.
Missä tätä tavallisesti näkee
Hakukentät, ostoskorit (”Kori”, ”Ostoskori”), kirjautumislinkit ja yhteydenottopainikkeet.
Korjaus
Päätä jokaiselle toistuvalle toiminnolle yksi nimi ja yksi kuvake ja käytä niitä kaikkialla: valikossa, painikkeissa ja otsikoissa. Kirjaa nimet sivuston tyyliohjeeseen. Maksullisessa skannauksessa Sigila vertaa toimintojen nimiä sivujen välillä ja kertoo erot.
Ohjeen ja yhteystietojen pitää löytyä joka sivulta samasta paikastaKun käyttäjä jää jumiin, hän etsii apua sieltä, mistä löysi sen viimeksi.
Jos sivustolla on apua, kuten puhelinnumero, sähköpostiosoite, yhteydenottolomake, chat tai ohjesivu, sen pitää olla jokaisella sivulla samassa kohdassa muuhun sisältöön nähden, esimerkiksi aina alatunnisteessa tai aina yläpalkin oikeassa reunassa. Vaatimus ei edellytä, että apua on tarjolla. Se edellyttää, että tarjolla oleva apu löytyy aina samasta paikasta. Puhelimessa paikka saa olla eri kuin tietokoneella, kunhan se on sama kaikilla sivuilla.
Ketä tämä koskee
Ihmiset, joilla on muistin tai hahmottamisen vaikeuksia, sekä kaikki, jotka jäävät jumiin ja etsivät apua.
Näin tarkistat itse
Avaa sivustolta useita sivuja, kuten etusivu, jokin palvelusivu ja lomake. Onko puhelinnumero, yhteydenottolinkki tai chat jokaisella samassa kohdassa?
Mitä Sigila tarkistaa puolestasi
Tätä kone ei pysty tarkistamaan, joten se jää ihmisen arvioitavaksi.
Tekijälle: näin korjaat
Mikä on vialla
Ohjeet tai yhteystiedot, kuten puhelinnumero, yhteydenottolinkki tai chat, ovat eri sivuilla eri kohdassa.
Missä tätä tavallisesti näkee
Sivustot, joilla yhteystiedot ovat etusivulla yläpalkissa mutta alasivuilla vain alatunnisteessa, sekä eri sivupohjalla tehdyt kampanja- ja lomakesivut.
Korjaus
Sijoita apu sivupohjaan, ei yksittäisille sivuille: esimerkiksi yhteystiedot aina alatunnisteeseen ja chat aina oikeaan alakulmaan. Kun apu on sivupohjassa, se pysyy kaikilla sivuilla samassa kohdassa itsestään.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.2. Laki edellyttää vielä WCAG 2.1:tä, mutta syyskuussa 2026 julkaistu standardin EN 301 549 versio 4.1.1 ottaa mukaan myös tämän vaatimuksen. Suomenkielinen nimi on Sigilan käännös, koska WCAG 2.2:sta ei vielä ole virallista suomennosta.
Lomakkeen pitää kertoa sanoin, missä virhe onPelkkä punainen reuna ei kerro värisokealle eikä ruudunlukijan käyttäjälle, mikä meni vikaan.
Vasemmalla virheellinen sähköpostiosoite on merkitty vain punaisella reunalla, eikä mikään kerro, mikä on väärin. Oikealla kentän alla lukee virhe tekstinä: Enter a valid email address.

.virhe { border-color: red; } <!-- vain väri, ei selitystä -->

<input aria-invalid="true" aria-describedby="v1">
<span id="v1" role="alert">Enter a valid email address</span>
Kun lomake huomaa virheen, esimerkiksi puuttuvan pakollisen tiedon tai väärin kirjoitetun sähköpostiosoitteen, sen pitää kertoa tekstillä, mikä kenttä on virheellinen ja mikä siinä on vialla. Värillä korostaminen saa olla mukana, mutta se ei riitä yksinään. Virheviesti kannattaa myös kytkeä kenttään koodissa, jotta ruudunlukija lukee sen, kun käyttäjä palaa kenttään.
Ketä tämä koskee
Ruudunlukijan käyttäjät ja värisokeat sekä ne, joilla on hahmottamisen vaikeuksia.
Näin tarkistat itse
Täytä lomake tahallaan väärin ja yritä lähettää se. Kertooko lomake tekstillä jokaisen virheellisen kentän kohdalla, mikä on vialla?
Mitä Sigila tarkistaa puolestasi
Sigila kirjoittaa lomakkeen tekstikenttiin tahallaan virheellisiä arvoja lähettämättä lomaketta ja katsoo, ilmestyykö kentän viereen virheilmoitus. Jos lomake tarkistaa tiedot vasta lähetettäessä, Sigila ei näe tulosta, ja kohta jää tarkistettavaksi. Sigila ei koskaan lähetä lomakkeita.
Tekijälle: näin korjaat
Mikä on vialla
Lomake hylkää syötteen kertomatta tekstillä, mikä kenttä on virheellinen ja miksi.
Missä tätä tavallisesti näkee
Kirjautumis-, yhteydenotto- ja tilauslomakkeet sekä lomakkeet, jotka näyttävät virheen vain punaisella reunalla tai sivun yläosassa.
Korjaus
Näytä virhe tekstinä kentän vieressä ja kytke se kenttään: <input id="email" aria-invalid="true" aria-describedby="email-virhe"> <p id="email-virhe">Sähköpostiosoitteesta puuttuu @-merkki.</p>. Määrite aria-invalid kertoo apuvälineelle, että kentässä on virhe, ja aria-describedby kytkee viestin kenttään, jolloin ruudunlukija lukee sen. Jos virheitä on monta, näytä lomakkeen alussa luettelo virheistä linkkeineen kenttiin ja siirrä kohdistus luetteloon.
Jokaisella kentällä pitää olla nimi ja tarvittaessa ohjeKäyttäjän pitää tietää ennen kirjoittamista, mitä kenttään kuuluu ja missä muodossa.
Vasemmalla kentällä on vain punainen tähti ja kentän sisällä vihjeteksti, joka katoaa kirjoitettaessa. Oikealla nimi Date of birth ja ohje Format: DD/MM/YYYY kertovat, mitä kenttään kirjoitetaan ja missä muodossa.

<span>*</span> <input placeholder="DD/MM/YYYY"> <!-- ei nimeä -->

<label for="syntyma">Date of birth</label>
<input id="syntyma" aria-describedby="ohje">
<span id="ohje">Format: DD/MM/YYYY</span>
Lomakkeen jokaisella kentällä pitää olla näkyvä nimi, esimerkiksi ”Sähköposti”, ja tarvittaessa ohje, kuten päivämäärän muoto pp.kk.vvvv. Pakolliset kentät pitää merkitä muullakin kuin värillä. Jos merkkinä on tähti, sen merkitys kerrotaan lomakkeen alussa. Kenttään kirjoitettu harmaa vihjeteksti ei korvaa nimeä, koska se katoaa, kun kenttään aletaan kirjoittaa.
Ketä tämä koskee
Kaikki, erityisesti ne, joilla on muistin tai hahmottamisen vaikeuksia, sekä ruudunlukijan käyttäjät.
Näin tarkistat itse
Lue sivustosi lomakkeet. Onko jokaisella kentällä näkyvä nimi? Kerrotaanko pakolliset kentät ja vaadittu muoto ennen kuin käyttäjä alkaa kirjoittaa?
Mitä Sigila tarkistaa puolestasi
Sigila tarkistaa automaattisesti, ettei kenttään ole kytketty useita ristiriitaisia nimiä. Nimen puuttuminen tarkistetaan kohdassa 4.1.2. Ohjeiden riittävyyden arvioi ihminen.
Tekijälle: näin korjaat
Mikä on vialla
Lomakkeen kentältä puuttuu näkyvä nimi tai tarvittava ohje.
Missä tätä tavallisesti näkee
Kentät, joissa on vain harmaa vihjeteksti (placeholder), pakolliset kentät pelkällä tähdellä ja ryhmittelemättömät valintapainikkeet.
Korjaus
Anna jokaiselle kentälle näkyvä nimi ja kytke se kenttään: <label for="pvm">Päivämäärä (pp.kk.vvvv)</label><input id="pvm">. Vihjeteksti ei korvaa nimeä, koska se katoaa kirjoitettaessa. Pakollisuus kerrotaan sanalla, kuten ”Sähköposti (pakollinen)”, tai tähdellä, jonka merkitys kerrotaan lomakkeen alussa. Valintapainikkeiden ryhmä nimetään <fieldset>- ja <legend>-elementeillä: <fieldset><legend>Toimitustapa</legend>…</fieldset>.
Sigilan automaattiset mittarit tälle kriteerille
Kentällä on useita nimiä
form-field-multiple-labelsLomakkeen kenttään on kytketty useampi nimi (
<label>), jolloin ruudunlukija voi lukea ne sekavasti.Missä tavallisesti: Lomakkeet, joihin nimi on lisätty kahteen kertaan.
Korjaus: Kytke kenttään yksi nimi:
<label for="email">Sähköposti</label>. Lisäohje kytketäänaria-describedby-määritteellä.
Virheilmoituksen pitää kertoa, miten virhe korjataanIlmoitus ”Virheellinen arvo” ei auta. Hyvä ilmoitus kertoo, mitä pitää muuttaa.
Vasemmalla puhelinnumerokentän virheilmoitus sanoo vain Invalid value eikä kerro, mikä olisi oikein. Oikealla ilmoitus antaa esimerkin oikeasta muodosta: +44 20 1234 5678.

<span>Invalid value</span> <!-- ei ehdotusta -->

<span>Enter a phone number with country code, for example: +44 20 1234 5678</span>
Kun lomake huomaa virheen ja tietää, miten sen voi korjata, sen pitää kertoa se käyttäjälle, esimerkiksi ”Sähköpostiosoitteesta puuttuu @-merkki” tai ”Kirjoita päivämäärä muodossa pp.kk.vvvv”. Poikkeus on tilanne, jossa ehdotus vaarantaisi turvallisuuden, kuten salasanan vihjaaminen.
Ketä tämä koskee
Ihmiset, joilla on lukemisen, muistin tai hahmottamisen vaikeuksia, sekä kaikki, jotka tekevät kirjoitusvirheitä.
Näin tarkistat itse
Kirjoita lomakkeeseen päivämäärä ja sähköpostiosoite tahallaan väärässä muodossa. Kertooko ilmoitus, miten ne korjataan?
Mitä Sigila tarkistaa puolestasi
Kun Sigila saa lomakkeelta virheilmoituksen, se tarkistaa, kertooko ilmoitus, miten virhe korjataan, ja näyttää tuloksen tarkistettavaksi.
Tekijälle: näin korjaat
Mikä on vialla
Virheilmoitus kertoo, että jotain on vialla, mutta ei kerro, miten se korjataan, vaikka korjaus olisi tiedossa.
Missä tätä tavallisesti näkee
Sähköposti-, päivämäärä-, puhelinnumero- ja henkilötunnuskentät.
Korjaus
Kerro ilmoituksessa, mitä pitää muuttaa, ja anna esimerkki: ”Sähköpostiosoitteesta puuttuu @-merkki, esimerkiksi maija@yritys.fi”. Hyväksy sama tieto mahdollisuuksien mukaan monessa muodossa, esimerkiksi päivämäärä sekä muodossa 5.10.2026 että 05.10.2026. Älä toista salasanaa tai muuta arkaluonteista tietoa virheilmoituksessa.
Tilaus, maksu tai sopimus pitää voida tarkistaa ennen lähettämistäKun lähetyksellä on rahallisia tai oikeudellisia seurauksia, käyttäjän pitää voida tarkistaa, korjata tai perua se.
Vasemmalla maksu lähtee suoraan lomakkeelta ilman tarkistusta. Oikealla ennen maksua on tarkistusvaihe, jossa kaikki tiedot näkyvät ja painikkeina ovat Go back and edit ja Confirm and pay €1,240.

<button>Pay €1,240</button> <!-- heti lomakkeelta -->

<button>Go back and edit</button>
<button>Confirm and pay €1,240</button>
Vaatimus koskee lomakkeita, joilla tehdään sitovia asioita: tilauksia, maksuja, sopimuksia, varauksia sekä tallennettujen tietojen muuttamista ja poistamista. Niissä pitää olla ainakin yksi kolmesta: lähetyksen voi perua jälkikäteen, tiedot tarkistetaan ja virheistä ilmoitetaan, tai käyttäjä näkee tiedot vielä kerran ja vahvistaa ne ennen lähettämistä. Yleisin ratkaisu on tarkistusvaihe kassan lopussa.
Ketä tämä koskee
Kaikki, erityisesti ne, joilla on lukemisen tai hahmottamisen vaikeuksia, sekä ne, jotka painavat helposti vahingossa väärää kohtaa.
Näin tarkistat itse
Käy läpi sivustosi tilaus-, maksu- ja varauslomakkeet. Näetkö ennen lopullista lähettämistä yhteenvedon, josta voi vielä korjata tiedot, tai voiko lähetyksen perua jälkikäteen?
Mitä Sigila tarkistaa puolestasi
Sigila tunnistaa lomakkeet, joilla tilataan, maksetaan tai tehdään sopimus, ja näyttää ne tarkistettaviksi. Sitä, onko tarkistusvaihe olemassa, kone ei pysty todentamaan, koska Sigila ei koskaan lähetä lomakkeita.
Tekijälle: näin korjaat
Mikä on vialla
Käyttäjä voi lähettää tilauksen, maksun, sopimuksen, tietojen muutoksen tai poiston ilman mahdollisuutta tarkistaa, korjata tai perua sitä.
Missä tätä tavallisesti näkee
Verkkokauppojen kassat, varaus- ja hakemuslomakkeet, sopimusten hyväksynnät ja tietojen poistotoiminnot.
Korjaus
Toteuta ainakin yksi kolmesta. Peruttavuus: lähetyksen voi perua tietyn ajan, esimerkiksi 15 minuutin, kuluessa. Tarkistus: lomake tarkistaa tiedot ja antaa korjata virheet ennen lähettämistä. Vahvistus: ennen lopullista lähettämistä käyttäjä näkee yhteenvedon ja voi palata muokkaamaan, esimerkiksi painikkeilla ”Palaa muokkaamaan” ja ”Vahvista tilaus”. Kassalle suositus on yhteenvetovaihe ja painike, jonka teksti kertoo, mitä tapahtuu, kuten ”Vahvista ja maksa”.
Kerran annettua tietoa ei saa kysyä uudelleenJos lomake kysyy samaa osoitetta kahteen kertaan, se kuormittaa muistia ja altistaa virheille.
Kun käyttäjä täyttää monivaiheista lomaketta, kuten tilausta tai hakemusta, jo kerran annettua tietoa ei saa pyytää kirjoittamaan uudelleen. Tiedon pitää olla valmiiksi täytetty tai valittavissa, esimerkiksi valintaruudulla ”Laskutusosoite on sama kuin toimitusosoite”. Poikkeuksia on kolme: uudelleen kirjoittaminen on välttämätöntä, kuten muistipelissä, se tarvitaan turvallisuuden vuoksi, kuten uuden salasanan vahvistaminen, tai aiempi tieto ei ole enää voimassa.
Ketä tämä koskee
Ihmiset, joilla on muistin tai hahmottamisen vaikeuksia, sekä ne, joille kirjoittaminen on hidasta tai raskasta, kuten puheohjauksen käyttäjät.
Näin tarkistat itse
Täytä sivustosi monivaiheinen lomake, kuten tilaus tai hakemus, alusta loppuun. Pyydetäänkö jossain vaiheessa kirjoittamaan uudelleen jotain, minkä annoit jo aiemmin?
Mitä Sigila tarkistaa puolestasi
Tätä kone ei pysty tarkistamaan, joten se jää ihmisen arvioitavaksi.
Tekijälle: näin korjaat
Mikä on vialla
Monivaiheinen lomake pyytää kirjoittamaan uudelleen tiedon, jonka käyttäjä antoi jo aiemmassa vaiheessa.
Missä tätä tavallisesti näkee
Verkkokauppojen kassat (toimitus- ja laskutusosoite), hakemukset ja ajanvaraukset, joissa yhteystiedot kysytään useaan kertaan.
Korjaus
Täytä aiemmin annettu tieto valmiiksi tai tarjoa se valittavaksi: <label><input type="checkbox" checked> Laskutusosoite on sama kuin toimitusosoite</label>. Selaimen automaattisesta täytöstä (autocomplete) on apua, mutta älä luota pelkästään siihen: lomakkeen pitää itse muistaa, mitä samassa asioinnissa on jo kerrottu.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.2. Laki edellyttää vielä WCAG 2.1:tä, mutta syyskuussa 2026 julkaistu standardin EN 301 549 versio 4.1.1 ottaa mukaan myös tämän vaatimuksen. Suomenkielinen nimi on Sigilan käännös, koska WCAG 2.2:sta ei vielä ole virallista suomennosta.
Kirjautuminen ei saa vaatia muistamista tai pulmien ratkaisemistaSalasanan ja kertakoodin pitää voida liittää kenttään tai täyttää salasanan hallintaohjelmalla. Muuten kirjautuminen voi olla monelle mahdotonta.
Kirjautuminen ei saa edellyttää, että käyttäjä muistaa jotain, kopioi sen käsin tai ratkaisee tehtävän, ellei tarjolla ole helpompaa tapaa. Salasana käy, kun selain tai salasanan hallintaohjelma voi täyttää sen ja sen voi liittää kenttään. Kertakoodi käy, kun sen voi liittää. Helpompi tapa voi olla myös kirjautumislinkki sähköpostiin tai pankkitunnukset. Varmistustehtävä, jossa tunnistetaan esineitä kuvista, on tällä tasolla sallittu, mutta vääristyneen tekstin kirjoittaminen tai laskutehtävä tarvitsee vaihtoehdon. Yleisin virhe on kenttä, joka estää liittämisen.
Ketä tämä koskee
Ihmiset, joilla on muistin, lukemisen tai hahmottamisen vaikeuksia, kuten lukihäiriö, sekä kaikki, jotka käyttävät salasanan hallintaohjelmaa.
Näin tarkistat itse
Kirjaudu sivustolle. Täyttääkö selain tai salasanan hallintaohjelma tunnukset? Voitko liittää salasanan ja kertakoodin kenttään? Jos sivulla on varmistustehtävä, onko sille vaihtoehto?
Mitä Sigila tarkistaa puolestasi
Tätä kone ei pysty tarkistamaan, joten se jää ihmisen arvioitavaksi.
Tekijälle: näin korjaat
Mikä on vialla
Kirjautuminen vaatii muistamista, käsin kopioimista tai tehtävän ratkaisemista, eikä helpompaa tapaa ole: liittäminen on estetty, salasanan hallintaohjelma ei osaa täyttää kenttiä tai varmistustehtävällä ei ole vaihtoehtoa.
Missä tätä tavallisesti näkee
Kirjautumis- ja rekisteröitymislomakkeet, yhden merkin ruutuihin jaetut kertakoodikentät ja varmistustehtävät (CAPTCHA).
Korjaus
Älä estä liittämistä: poista esimerkiksi onpaste="return false". Merkitse kentät, jotta salasanan hallintaohjelma tunnistaa ne: <input type="email" autocomplete="username"> ja <input type="password" autocomplete="current-password">, kertakoodille autocomplete="one-time-code". Jos koodi on jaettu ruutuihin, liittämisen pitää täyttää kaikki ruudut kerralla. Tarjoa varmistustehtävälle vaihtoehto tai käytä tapaa, joka ei vaadi käyttäjältä mitään.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.2. Laki edellyttää vielä WCAG 2.1:tä, mutta syyskuussa 2026 julkaistu standardin EN 301 549 versio 4.1.1 ottaa mukaan myös tämän vaatimuksen. Suomenkielinen nimi on Sigilan käännös, koska WCAG 2.2:sta ei vielä ole virallista suomennosta.
4. Toimintavarma
Sivun koodin pitää olla sellaista, että selaimet ja apuvälineet osaavat lukea sen oikein.
Sivun koodin pitää olla virheetöntäTämä vaatimus on nykyään käytännössä aina täytetty. Sen kattamat ongelmat tarkistetaan muissa kohdissa.
Vasemmalla lomakkeen kahdella kentällä on sama tunniste email, joten toisen kentän nimi kytkeytyy väärään kenttään. Oikealla kummallakin kentällä on oma tunniste, ja nimet kytkeytyvät oikein.

<label for="email">Email</label> <input id="email">
<label for="email">Confirm email</label> <input id="email"> <!-- sama tunniste -->

<label for="email">Email</label> <input id="email">
<label for="email-confirm">Confirm email</label> <input id="email-confirm">
Vaatimus edellytti alun perin, ettei sivun koodissa ole rakennevirheitä, kuten samaa tunnistetta kahdesti tai sulkematta jääneitä merkintöjä, koska ne saattoivat sekoittaa apuvälineet. Nykyiset selaimet korjaavat tällaiset virheet itse. Siksi W3C on linjannut, että HTML-sivuilla vaatimus katsotaan aina täytetyksi, ja WCAG 2.2 poisti sen kokonaan.
Ketä tämä koskee
Apuvälineiden käyttäjät.
Näin tarkistat itse
Erillistä tarkistusta ei tarvita. Ne virheet, joilla on yhä merkitystä, tulevat esiin kohdissa 1.3.1 ja 4.1.2.
W3C:n virallinen tulkinta: HTML-sivuilla tämä vaatimus katsotaan aina täytetyksi, ja WCAG 2.2 poisti sen. Sen kattamat ongelmat tarkistetaan kohdissa 1.3.1 Informaatio ja suhteet sekä 4.1.2 Nimi, rooli, arvo.
Mitä Sigila tarkistaa puolestasi
Sigila ei tarkista tätä erikseen. Merkitykselliset virheet näkyvät kohdissa 1.3.1 ja 4.1.2.
Tekijälle: näin korjaat
Mikä on vialla
Koodissa on rakennevirheitä, kuten sama id-tunniste kahdesti tai sulkematta jääneitä elementtejä.
Missä tätä tavallisesti näkee
Käsin kopioidut HTML-palat, sisällönhallinnan lisäosat ja vanhat sivupohjat.
Korjaus
Nykyiset selaimet korjaavat rakennevirheet itse, joten W3C katsoo vaatimuksen HTML-sivuilla täytetyksi. Merkitystä on yhä niillä id-tunnisteilla, joihin viitataan: jos esimerkiksi aria-labelledby tai label for osoittaa id:hen, joka on sivulla kahdesti, apuväline voi lukea väärän tekstin. Pidä id-tunnisteet yksilöllisinä. Koodin voi tarkistaa W3C:n validaattorilla.
Jokaisen painikkeen ja kentän pitää kertoa, mikä se onRuudunlukija kertoo käyttäjälle, onko kohta painike, linkki vai valintaruutu ja onko se päällä. Tämä tieto tulee sivun koodista.
Vasemmalla valintaruudun vieressä lukee Subscribe to newsletter, mutta tekstiä ei ole kytketty ruutuun koodissa, joten ruudunlukija ei kerro, mihin ruutu liittyy. Oikealla ruudulla on nimi koodissa, ja ruudunlukija sanoo nimen, tyypin ja tilan.

<input type="checkbox"> <!-- ei nimeä -->

<input type="checkbox" id="newsletter" name="newsletter"
aria-label="Subscribe to newsletter">
<!-- vielä parempi: <label><input type="checkbox"> Subscribe to newsletter</label> -->
Näkevä käyttäjä näkee kytkimestä heti, mikä se on ja onko se päällä. Ruudunlukijan käyttäjä saa saman tiedon vain, jos se on kirjoitettu sivun koodiin. Tietoa on kolmea lajia: nimi eli mitä kohta tekee, tyyppi eli onko se painike, linkki, valintaruutu tai valikko, ja tila eli onko se päällä vai pois, auki vai kiinni. Selaimen omat painikkeet ja kentät kertovat nämä itsestään. Ongelmat syntyvät, kun painike tai valikko on rakennettu itse ja näyttää painikkeelta vain ulkoisesti.
Kuinka yleistä tämä on
- Kuntien etusivut, syyskuu 2026: automaattitarkistus löysi tämän sääntörikkeen 172/299 sivustolta (58 %).
Ketä tämä koskee
Ruudunlukijan käyttäjät ja puheohjauksen käyttäjät, jotka ohjaavat sivua sanomalla painikkeen nimen ääneen.
Näin tarkistat itse
Kokeile sivua ruudunlukijalla. Macissa se on VoiceOver (Cmd + F5), Windowsissa Lukija (Ctrl + Windows + Enter). Siirry valikoihin, välilehtiin ja kytkimiin: sanooko ruudunlukija jokaisen kohdan nimen, tyypin ja tilan?
Mitä Sigila tarkistaa puolestasi
Sigila löytää painikkeet, linkit ja kentät, joilta puuttuu nimi, sekä koodin, jossa tyyppi tai tila on merkitty väärin. Itse rakennettujen toimintojen käytös pitää silti kokeilla ruudunlukijalla.
Tekijälle: näin korjaat
Mikä on vialla
Painikkeelta, linkiltä tai kentältä puuttuu nimi, tai itse rakennettu toiminto ei kerro tyyppiään tai tilaansa. Ruudunlukija sanoo silloin pelkän ”painike” tai ei mitään.
Missä tätä tavallisesti näkee
Kuvakepainikkeet ilman tekstiä (sulje, hae, valikko), div- ja span-elementeistä rakennetut kytkimet ja valikot sekä haitarit ja välilehdet, joiden auki- tai kiinni-tila ei päivity koodiin.
Korjaus
Käytä ensisijaisesti selaimen valmiita elementtejä: <button>, <a href>, <input type="checkbox"> ja <select>. Ne kertovat nimen, tyypin ja tilan itse. Kuvakepainike tarvitsee nimen: <button aria-label="Sulje">✕</button>. Jos toiminto on pakko rakentaa itse, kerro tyyppi ja tila ARIA-määritteillä eli lisätiedoilla, joilla koodi kertoo apuvälineille, mikä elementti on, ja päivitä tila aina, kun se muuttuu: <button role="switch" aria-checked="true">Muistutukset</button>. Haitarin avaavalle painikkeelle aria-expanded="true" tai "false" sen mukaan, onko osio auki.
Sigilan automaattiset mittarit tälle kriteerille
Kuvakartan alueelta puuttuu teksti
area-altKuvakartan alueelta (
<area>) puuttuu alt-teksti, joten linkin kohde jää arvoitukseksi.Missä tavallisesti: Karttakuvat ja vanhat kuvana tehdyt valikot.
Korjaus: Lisää jokaiselle alueelle alt-teksti:
<area shape="rect" coords="…" href="/tuotteet" alt="Tuotteet">.Elementillä on ARIA-määrite, joka ei kuulu sille
aria-allowed-attrElementillä on ARIA-määrite, jota sen rooli ei salli, joten apuväline ohittaa sen tai tulkitsee sen väärin.
Missä tavallisesti: Itse rakennetut toiminnot ja kopioidut koodiesimerkit.
Korjaus: Poista ylimääräinen määrite tai korjaa elementin rooli. Sallitut määritteet on lueteltu WAI-ARIA-määrityksessä.
Pistekirjoitusta varten annettu teksti on puutteellinen
aria-braille-equivalentElementillä on pistekirjoitusnäytölle tarkoitettu teksti (
aria-braillelabel), mutta siltä puuttuu tavallinen nimi.Missä tavallisesti: Harvinaiset erikoistoteutukset.
Korjaus: Anna elementille aina myös tavallinen nimi, esimerkiksi
aria-label, tai poista pistekirjoitusmerkinnät.Painikkeelta tai linkiltä puuttuu nimi
aria-command-namePainikkeeksi, linkiksi tai valikon kohdaksi merkityllä elementillä (
role="button", "link" tai "menuitem") ei ole nimeä.Missä tavallisesti: Kuvakkeilla tehdyt itse rakennetut painikkeet.
Korjaus: Anna nimi:
<div role="button" tabindex="0" aria-label="Sulje">✕</div>. Parempi ratkaisu on selaimen oma painike:<button aria-label="Sulje">✕</button>.ARIA-määritettä käytetään väärässä yhteydessä
aria-conditional-attrElementillä on ARIA-määrite, jonka sen rooli sallii vain tietyissä tilanteissa, eikä tilanne täyty. Esimerkiksi selaimen omalle valintaruudulle lisätty aria-checked voi olla ristiriidassa sen todellisen tilan kanssa.
Missä tavallisesti: Selaimen valmiit elementit, joihin on lisätty ARIA-tila, sekä taulukot ja puurakenteet.
Korjaus: Poista määrite, jos selain hoitaa tilan itse, kuten
<input type="checkbox">. Muissa tapauksissa käytä määritettä vain siinä roolissa, jossa se on sallittu.Elementti käyttää vanhentunutta ARIA-roolia
aria-deprecated-roleElementillä on rooli, joka on poistettu ARIA-määrityksestä, joten apuvälineet eivät välttämättä tunnista sitä.
Missä tavallisesti: Vanhat käyttöliittymäkirjastot.
Korjaus: Vaihda rooli nykyiseen tai korvaa elementti selaimen valmiilla elementillä.
Koko sivu on piilotettu apuvälineiltä
aria-hidden-bodySivun runko (
<body>) on merkitty piilotetuksi (aria-hidden="true"), joten ruudunlukija ei löydä sivulta mitään.Missä tavallisesti: Harvinainen mutta vakava vika. Yleensä syynä on ponnahdusikkuna- tai animaatiokirjasto, joka jättää merkinnän päälle.
Korjaus: Poista aria-hidden body-elementistä heti. Jos merkinnän lisää kirjasto, tarkista kirjaston asetukset tai vaihda kirjastoa. Tämä vika tekee koko sivusta ruudunlukijan käyttäjälle tyhjän.
Piilotetun osan sisällä on valittavia kohtia
aria-hidden-focusSivun osa on piilotettu apuvälineiltä (
aria-hidden="true"), mutta sen sisällä on linkkejä tai painikkeita, joihin näppäimistö pääsee. Ruudunlukija on silloin hiljaa, vaikka kohdistus on piilotetussa osassa.Missä tavallisesti: Suljetut valikot ja paneelit sekä ponnahdusikkunan taakse jäävä sivu.
Korjaus: Piilota suljettu osa kokonaan määritteellä
display: nonetaiinert-määritteellä, jolloin näppäimistö ei pääse sinne.inertsopii myös ponnahdusikkunan taustalle.Itse rakennetulta kentältä puuttuu nimi
aria-input-field-nameKentäksi merkityllä elementillä, esimerkiksi
role="combobox"tairole="textbox", ei ole nimeä.Missä tavallisesti: Itse rakennetut hakukentät ja valitsimet.
Korjaus: Anna nimi:
<div role="combobox" aria-label="Valitse kunta">…</div>, tai käytä selaimen valmista kenttää ja<label>-elementtiä.Elementillä on ARIA-määrite, jota sen rooli ei salli
aria-prohibited-attrElementillä on määrite, jota sen rooli ei salli, esimerkiksi
aria-labeltavallisessa tekstikappaleessa tai<span>-elementissä. Apuvälineet jättävät sen huomiotta.Missä tavallisesti: Koodi, jossa
aria-labelon lisätty elementteihin, joilla ei ole roolia.Korjaus: Poista määrite ja kirjoita teksti näkyviin, tai anna elementille rooli, jolle nimi kuuluu.
Elementiltä puuttuu sen roolin vaatima ARIA-määrite
aria-required-attrElementin rooli vaatii määritteen, jota ei ole. Esimerkiksi liukusäätimeltä (
role="slider") puuttuuaria-valuenow, joten ruudunlukija ei kerro sen arvoa.Missä tavallisesti: Itse rakennetut liukusäätimet, valintaruudut ja kytkimet.
Korjaus: Lisää vaaditut määritteet, liukusäätimelle
aria-valuenow,aria-valueminjaaria-valuemax. Usein helpompaa on käyttää selaimen valmista elementtiä:<input type="range">.ARIA-rooli on tuntematon tai kirjoitettu väärin
aria-rolesElementin role-määritteessä on rooli, jota ei ole olemassa, esimerkiksi kirjoitusvirhe
role="buton".Missä tavallisesti: Käsin kirjoitettu koodi.
Korjaus: Korjaa roolin nimi tai poista rooli, jos selaimen valmis elementti, kuten
<button>tai<nav>, riittää.Välilehdeltä puuttuu nimi
aria-tab-nameVälilehdeksi merkityllä elementillä (
role="tab") ei ole nimeä.Missä tavallisesti: Itse rakennetut välilehdet.
Korjaus: Kirjoita välilehden nimi sen sisään tai anna sille
aria-label:<button role="tab">Aukioloajat</button>.Kytkimeltä tai valintaruudulta puuttuu nimi
aria-toggle-field-nameKytkimeksi tai valintaruuduksi merkityllä elementillä (
role="switch", "checkbox" tai "radio") ei ole nimeä.Missä tavallisesti: Kuvakkeilla tehdyt itse rakennetut kytkimet.
Korjaus: Anna nimi:
<button role="switch" aria-checked="true">Sähköpostimuistutukset</button>, tai käytä selaimen valmista elementtiä<input type="checkbox">ja<label>-elementtiä.Ohjetekstiltä puuttuu sisältö
aria-tooltip-nameOhjetekstiksi merkityllä elementillä (
role="tooltip") ei ole tekstiä tai nimeä.Missä tavallisesti: Itse tehdyt ohjetekstit.
Korjaus: Kirjoita ohjeteksti elementin sisään.
ARIA-määritteen nimi on kirjoitettu väärin
aria-valid-attrARIA-määritteen nimessä on kirjoitusvirhe, esimerkiksi
aria-labeledby, kun oikea muoto onaria-labelledby, joten selain jättää sen huomiotta.Missä tavallisesti: Käsin kirjoitettu koodi.
Korjaus: Korjaa nimi oikeaksi, kuten
aria-label,aria-labelledbytaiaria-describedby.ARIA-määritteen arvo on virheellinen
aria-valid-attr-valueARIA-määritteen arvo on kelvoton. Esimerkiksi
aria-labelledbyviittaa id:hen, jota sivulla ei ole, taiaria-expandedon muuta kuintruetaifalse.Missä tavallisesti: Koodi, josta on poistettu elementtejä, joihin viitattiin.
Korjaus: Korjaa viittaukset olemassa oleviin id-tunnisteisiin ja käytä määritteen sallittuja arvoja.
Painikkeelta puuttuu teksti tai nimi
button-namePainike on tyhjä tai sisältää pelkän kuvakkeen ilman nimeä, joten ruudunlukija sanoo vain ”painike”.
Missä tavallisesti: Sulje-, haku-, valikko- ja jakopainikkeet, joissa on pelkkä kuvake.
Korjaus: Anna painikkeelle nimi:
<button aria-label="Sulje ikkuna">✕</button>. Näkyvä teksti on aina paras nimi.Sama id-tunniste on sivulla useaan kertaan
duplicate-id-ariaId-tunniste, johon ARIA-määrite tai kentän nimi viittaa, on sivulla useammin kuin kerran, joten apuväline voi lukea väärän tekstin.
Missä tavallisesti: Toistuvat osat, kuten korttien ja lomakkeiden kopiot.
Korjaus: Tee id-tunnisteista yksilöllisiä, esimerkiksi haku-1 ja haku-2.
Kehykseltä puuttuu nimi
frame-titleKehyksellä (
<iframe>) ei ole title-määritettä, joten ruudunlukija ei kerro, mitä kehyksessä on.Missä tavallisesti: Upotetut kartat, videot ja lomakkeet.
Korjaus: Lisää kuvaava nimi:
<iframe src="…" title="Toimipisteen sijainti kartalla"></iframe>.Kehyksillä on sama nimi
frame-title-uniqueUseammalla kehyksellä on sama title-määrite, joten ruudunlukijan käyttäjä ei erota niitä toisistaan.
Missä tavallisesti: Sivut, joilla on useampi samanlainen upotus, kuten kaksi karttaa.
Korjaus: Anna jokaiselle kehykselle oma nimi, esimerkiksi ”Helsingin toimipiste kartalla” ja ”Tampereen toimipiste kartalla”.
Painikekentältä puuttuu teksti
input-button-namePainikkeeksi tehdyllä kentällä (
<input type="submit">, "button" tai "reset") ei ole tekstiä.Missä tavallisesti: Vanhat lomakkeet.
Korjaus: Lisää painikkeen teksti value-määritteeseen:
<input type="submit" value="Lähetä tilaus">.Kuvapainikkeelta puuttuu teksti
input-image-altLomakkeen kuvana tehdyllä painikkeella (
<input type="image">) ei ole alt-tekstiä, joten ruudunlukijan käyttäjä ei tiedä, mitä painike tekee.Missä tavallisesti: Kuvina tehdyt haku- ja lähetyspainikkeet.
Korjaus: Kirjoita painikkeen toiminto alt-tekstiin:
<input type="image" src="haku.png" alt="Hae">. Vielä parempi on tavallinen painike, jossa on teksti:<button>Hae</button>.Lomakkeen kentältä puuttuu nimi
labelLomakkeen kentällä ei ole nimeä, joten ruudunlukija ei kerro, mitä kenttään kirjoitetaan.
Missä tavallisesti: Hakukentät, uutiskirjeen tilauskentät ja nopeasti lisätyt kentät.
Korjaus: Kytke kenttään nimi:
<label for="email">Sähköposti</label><input id="email" type="email">. Jos nimeä ei haluta näkyviin, käytäaria-label-määritettä tai piilota nimi vain näkyvistä tyyleillä.Linkiltä puuttuu teksti tai nimi
link-nameLinkki on tyhjä tai sisältää pelkän kuvan tai kuvakkeen ilman nimeä, joten ruudunlukija sanoo vain ”linkki”.
Missä tavallisesti: Kuvakelinkit, kuten somekuvakkeet, ja kuvalinkit ilman alt-tekstiä.
Korjaus: Lisää linkkiin teksti tai kuvalle alt-teksti:
<a href="/"><img src="logo.svg" alt="Yritys Oy, etusivu"></a>. Kuvakelinkille annetaanaria-label:<a href="…" aria-label="Yritys Oy Facebookissa">…</a>.Painike tai linkki on toisen painikkeen tai linkin sisällä
nested-interactivePainike tai linkki on toisen painikkeen tai linkin sisällä, joten näppäimistö ja ruudunlukija eivät käsittele niitä oikein.
Missä tavallisesti: Klikattavat kortit, joiden sisällä on erillinen painike tai linkki.
Korjaus: Siirrä sisäkkäiset kohdat vierekkäin, tai tee kortista yksi linkki, jonka sisällä ei ole muita käytettäviä kohtia.
Pudotusvalikolta puuttuu nimi
select-namePudotusvalikolla (
<select>) ei ole nimeä, joten ruudunlukija ei kerro, mitä valitaan.Missä tavallisesti: Suodattimet ja tilauslomakkeet.
Korjaus: Kytke valikkoon nimi:
<label for="maa">Maa</label><select id="maa">…</select>.Avattavan osion otsikko puuttuu
summary-nameAvattavan osion (
<details>) otsikko (<summary>) on tyhjä, joten käyttäjä ei tiedä, mitä osio sisältää.Missä tavallisesti: Itse tehdyt avattavat osiot, joiden otsikkona on pelkkä kuvake.
Korjaus: Kirjoita otsikkoon osion sisältö:
<summary>Toimitusehdot</summary>.
Ilmoitusten pitää kuulua myös ruudunlukijalleKun sivu kertoo ”Tuote lisätty koriin” tai ”12 hakutulosta”, ruudunlukijan pitää lukea viesti, vaikka käyttäjä ei siirry sen kohdalle.
Vasemmalla hakutulosten määrä ilmestyy sivulle tavallisena tekstinä, joten ruudunlukija ei kerro siitä. Oikealla viesti on viestialueella, ja ruudunlukija lukee 12 results found heti, kun se ilmestyy.

<p>12 results</p> <!-- ei viestialuetta -->

<div role="status" aria-live="polite">12 results found</div>
Sivu ilmoittaa usein toiminnon tuloksesta näyttämällä lyhyen viestin, esimerkiksi ”Tallennettu”, ”Tuote lisätty koriin” tai ”Haku löysi 12 tulosta”. Näkevä huomaa viestin, mutta ruudunlukija ei lue sitä, jos viestiä ei ole merkitty koodissa tilaviestiksi. Silloin sokea käyttäjä ei tiedä, onnistuiko toiminto. Merkinnän ansiosta ruudunlukija lukee viestin automaattisesti siirtämättä käyttäjää sen kohdalle.
Ketä tämä koskee
Ruudunlukijan käyttäjät.
Näin tarkistat itse
Ota ruudunlukija käyttöön ja tee sivulla haku, suodata tuloksia tai lisää tuote koriin. Kertooko ruudunlukija lopputuloksen?
Mitä Sigila tarkistaa puolestasi
Jos sivulla on hakukenttä, Sigila tekee haun ja katsoo, onko ilmestyvä viesti merkitty ruudunlukijalle luettavaksi. Muut tilaviestit, kuten ostoskorin ilmoitukset, on tarkistettava itse.
Tekijälle: näin korjaat
Mikä on vialla
Sivu näyttää tilaviestin, kuten ”Tuote lisätty koriin” tai hakutulosten määrän, mutta ruudunlukija ei lue sitä, koska viestiä ei ole merkitty koodiin.
Missä tätä tavallisesti näkee
Hakutulosten määrä, ostoskorin ilmoitukset, tallennusilmoitukset ja samalla sivulla näkyvä lomakkeen lähetyksen vahvistus.
Korjaus
Lisää sivulle valmiiksi tyhjä viestialue, jonka ruudunlukija lukee aina, kun sen sisältö muuttuu: <div role="status" id="ilmoitus"></div>, ja kirjoita viesti siihen: ilmoitus.textContent = "Tuote lisätty koriin". Alue voi olla näkymätön, jos viesti näkyy muualla. Kiireellisille virheille sopii role="alert", joka keskeyttää ruudunlukijan heti. Alueen pitää olla sivulla jo ennen viestiä, muuten osa ruudunlukijoista ei huomaa sitä.
Tämä vaatimus tuli WCAG-ohjeisiin versiossa 2.1.
Hyvä käytäntö
Nämä eivät ole WCAG:n A- ja AA-tason vaatimuksia vaan suosituksia ja AAA-tason sääntöjä. Mukana on myös axe-coren oma mittari WCAG 2.2:n kohdalle 2.5.8, jonka Sigila mittaa omalla tarkistuksellaan. Ne helpottavat käyttöä, ja Sigila listaa ne raportissa tekijälle varsinaisten tulosten alle. Niitä ei ympyröidä sivun kuvaan.
Pikanäppäinten pitää olla yksilöllisiä
Vasemmalla haulla ja ohjeella on sama pikanäppäin S, joten näppäimistön käyttäjä ei tiedä, kumman näppäin avaa. Oikealla ohjeella on oma pikanäppäin H, ja kumpikin näppäin vie yhteen paikkaan.

<a accesskey="s">Search</a> <a accesskey="s">Help</a>

<a accesskey="s">Search</a> <a accesskey="h">Help</a>
Jos kahdella elementillä on sama accesskey-pikanäppäin, näppäimistön käyttäjä ei tiedä, kumpi niistä toimii.
accesskeys
ARIA-roolin pitää sopia elementille
Vasemmalla tuoteluettelolle on annettu painikkeen rooli, joten ruudunlukija sanoo pelkän ”Button” eikä kerro, että kyseessä on kolmen kohdan luettelo. Oikealla luettelo on tavallinen luettelo, ja ruudunlukija sanoo ”List, 3 items”.

<ul role="button"> <li>Vases</li> … </ul>

<ul> <li>Vases</li> … </ul>
Elementille on annettu rooli, joka ei sovi sille, esimerkiksi painikkeelle linkin rooli. Apuvälineet voivat tulkita sen väärin.
aria-allowed-role
Avautuvalla ikkunalla pitää olla nimi
Vasemmalla sivun päälle avautuneella ikkunalla ei ole nimeä, joten ruudunlukija sanoo vain ”Dialog”. Oikealla ikkuna saa nimensä otsikostaan, ja ruudunlukija sanoo ”Save your list? Dialog”.

<div role="dialog"> … </div>

<div role="dialog" aria-labelledby="dialog-title">
Sivun päälle avautuvalla ikkunalla (role="dialog" tai "alertdialog") pitää olla nimi, jotta ruudunlukija kertoo, mikä ikkuna avautui.
aria-dialog-name
Tekstiksi merkityn elementin sisällä ei saa olla valittavia kohtia
Vasemmalla linkki delivery guide on tekstiksi merkityn alueen sisällä, joten kohdistus voi siirtyä siihen ilman, että ruudunlukija kertoo sitä linkiksi. Oikealla linkki on alueen ulkopuolella ja kuuluu omana, nimettynä linkkinään.

<span role="text">Read our <a href="/delivery-guide">delivery guide.</a></span>

<span role="text">Read our</span> <a href="/delivery-guide">delivery guide.</a>
Elementti on merkitty pelkäksi tekstiksi (role="text"), mutta sen sisällä on linkki tai painike, jota ruudunlukija ei silloin tunnista.
aria-text
Puurakenteen kohdalla pitää olla nimi
Vasemmalla kansiopuun yhdellä kohdalla on pelkkä kansion kuvake ilman nimeä, joten ruudunlukija sanoo vain ”Tree item”. Oikealla kohdalla on nimi Invoices, ja ruudunlukija sanoo ”Invoices, tree item”.

<li role="treeitem"><svg aria-hidden="true">…</svg></li>

<li role="treeitem"><svg aria-hidden="true">…</svg> Invoices</li>
Puumaisen valikon tai kansiorakenteen kohdalla (role="treeitem") pitää olla nimi.
aria-treeitem-name
Tekstin kontrastin kannattaa täyttää myös parannettu tasoAAA-taso, kohta 1.4.6
Vasemmalla tuotekuvauksen harmaa teksti on valkoisella 4,54:1. Se täyttää AA-tason mutta ei parannettua AAA-tasoa. Oikealla tummempi harmaa antaa 7,00:1, joka täyttää myös AAA-tason.

color: #767676; /* 4,54:1 valkoisella */

color: #595959; /* 7,00:1 valkoisella */
AAA-tason vaatimus: tavallisen tekstin kontrastin pitää olla vähintään 7:1 ja suuren tekstin 4,5:1. Sitä ei vaadita AA-tasolla, mutta se auttaa heikkonäköisiä entisestään.
color-contrast-enhanced
Otsikko ei saa olla tyhjä
Vasemmalla otsikon Forest walks alla on tyhjä toisen tason otsikko, ja ruudunlukija ilmoittaa otsikon sanomatta mitään. Oikealla otsikossa on teksti Choose your route.
![Nainen kuulokkeet päässä lukee sivua Forest walks. Sivulla on tyhjä h2-otsikko, ja ruudunlukija sanoo Heading level 2: [empty].](/rulebook/bp-empty-heading-wrong.jpg)
<h2></h2>

<h2>Choose your route</h2>
Sivulla on otsikkoelementti ilman tekstiä. Ruudunlukija ilmoittaa sen otsikkona mutta ei sano mitään.
empty-heading
Taulukon otsikkosolu ei saa olla tyhjä
Vasemmalla toimitustaulukon keskimmäisen sarakkeen otsikkosolu on tyhjä, joten ruudunlukija ei voi kertoa, mitä 3 days ja 1 day tarkoittavat. Oikealla sarakkeen otsikko on Delivery time.

<th></th>

<th>Delivery time</th>
Taulukon otsikkosolussa ei ole tekstiä, joten ruudunlukija ei voi kertoa, mitä sarake tai rivi sisältää.
empty-table-header
Kehyksen sisältö pitää tarkistaa erikseen
Vasemmalla museon sivulle upotettu varauslomake on kehyksessä, jonka sisältöä automaattinen tarkistus ei päässyt tutkimaan, joten se jäi tarkistamatta. Oikealla kehyksen sisältö on tarkistettu erikseen.

<iframe src="https://booking.example/…"></iframe>

<!-- kehyksen osoite tarkistetaan omana sivunaan -->
Sivulla on kehys (iframe), jonka sisältöä automaattinen tarkistus ei päässyt tutkimaan. Kehyksen sisältö on tarkistettava erikseen.
frame-tested
Otsikkotasojen pitää edetä järjestyksessä
Vasemmalla pääotsikon jälkeen tulee suoraan kolmannen tason otsikko, joten ruudunlukijan käyttäjä voi luulla, että välistä puuttuu jotain. Oikealla otsikot etenevät järjestyksessä h1, h2 ja h3.

<h1>Photography guide</h1> <h3>Exposure</h3> <h4>Aperture</h4>

<h1>Photography guide</h1> <h2>Exposure</h2> <h3>Aperture</h3>
Otsikkotasot hyppäävät yli, esimerkiksi pääotsikosta (h1) suoraan kolmannen tason otsikkoon (h3). Ruudunlukijan käyttäjä voi luulla, että osa sisällöstä puuttuu.
heading-order
Samannimisten linkkien pitää viedä samaan paikkaanAAA-taso, kohta 2.4.9
Sivulla on samalla tekstillä olevia linkkejä, jotka vievät eri paikkoihin. Käyttäjä ei erota niitä toisistaan.
identical-links-same-purpose
Kuvan kuvaus ei saa toistaa viereistä tekstiä
Vasemmalla Home-linkin kuvakkeen kuvaus on sama kuin linkin teksti, joten ruudunlukija sanoo ”Home Home, link”. Oikealla kuvake on merkitty koristeeksi tyhjällä alt-tekstillä, ja ruudunlukija sanoo ”Home, link”.

<a href="/"><img alt="Home"> Home</a>

<a href="/"><img alt=""> Home</a>
Kuvan alt-teksti on sama kuin sen vieressä oleva teksti, joten ruudunlukija lukee saman asian kahdesti.
image-redundant-alt
Kentällä pitää olla näkyvä nimi
Vasemmalla sähköpostikentän ainoa nimi on title-määrite, joka näkyy vain, kun hiiri viedään kentän päälle. Oikealla kentällä on näkyvä nimi Email address, joka on liitetty kenttään.

<input type="email" title="Email address">

<label for="email">Email address</label> <input id="email" type="email">
Lomakkeen kentän ainoa nimi on title-määrite, joka näkyy vain hiiren alla. Kentälle tarvitaan näkyvä nimi.
label-title-only
Sivun ylätunniste ei saa olla toisen sivualueen sisällä
Sivun ylätunniste (banner) on merkitty toisen sivualueen sisään, mikä sekoittaa ruudunlukijan käyttäjän käsityksen sivun rakenteesta.
landmark-banner-is-top-level
Sivun alatunniste ei saa olla toisen sivualueen sisällä
Vasemmalla sivun alatunniste (CONTENTINFO) on pääsisällön (MAIN) sisällä. Oikealla alatunniste on pääsisällön jälkeen, sivun ylimmällä tasolla.

<main> … <footer>…</footer> </main>

<main> … </main> <footer>…</footer>
Sivun alatunniste (contentinfo) on merkitty toisen sivualueen sisään.
landmark-contentinfo-is-top-level
Pääsisältö ei saa olla toisen sivualueen sisällä
Vasemmalla pääsisältö (MAIN) on navigaation (NAVIGATION) sisällä. Oikealla pääsisältö on oma alueensa navigaation jälkeen, sivun ylimmällä tasolla.

<nav> … <main>…</main> </nav>

<nav>…</nav> <main>…</main>
Sivun pääsisällön alue (main) on merkitty toisen sivualueen sisään.
landmark-main-is-top-level
Sivulla saa olla vain yksi ylätunniste
Vasemmalla sivulla on kaksi ylätunnisteeksi (BANNER) merkittyä aluetta. Oikealla ylätunniste on yksi, ja sen lisäksi sivulla on pääsisältö ja alatunniste.

<div role="banner">…</div> <div role="banner">…</div>

<header>…</header> <main>…</main> <footer>…</footer>
Sivulla on useampi ylätunnisteeksi (banner) merkitty alue.
landmark-no-duplicate-banner
Sivulla saa olla vain yksi alatunniste
Vasemmalla sivulla on kaksi alatunnisteeksi (CONTENTINFO) merkittyä aluetta. Oikealla alatunniste on yksi.

<div role="contentinfo">…</div> <div role="contentinfo">…</div>

<footer>…</footer>
Sivulla on useampi alatunnisteeksi (contentinfo) merkitty alue.
landmark-no-duplicate-contentinfo
Sivulla saa olla vain yksi pääsisällön alue
Vasemmalla sivulla on kaksi pääsisällöksi (MAIN) merkittyä aluetta, New collection ja Popular products. Oikealla molemmat ovat saman pääsisällön alueen sisällä.

<main>New collection…</main> <main>Popular products…</main>

<main> <section>New collection…</section> <section>Popular products…</section> </main>
Sivulla on useampi pääsisällöksi (main) merkitty alue.
landmark-no-duplicate-main
Sivulla pitää olla pääsisällön alue
Vasemmalla sivulta puuttuu pääsisällön merkintä, joten ruudunlukijan käyttäjä ei voi hypätä suoraan asiaan. Oikealla pääsisältö on merkitty main-elementillä.

<div class="content">…</div>

<main>…</main>
Sivulta puuttuu pääsisällön merkintä (<main>), jonka avulla ruudunlukijan käyttäjä hyppää suoraan asiaan.
landmark-one-main
Samanlaisilla sivualueilla pitää olla eri nimet
Vasemmalla sivulla on kaksi navigaatiota ilman nimeä, joten ruudunlukijan käyttäjä ei tiedä, kumpi on kumpi. Oikealla ne on nimetty: Primary ja Product categories.

<nav>…</nav> <nav>…</nav>

<nav aria-label="Primary">…</nav> <nav aria-label="Product categories">…</nav>
Sivulla on useampi samantyyppinen alue, esimerkiksi kaksi valikkoa, ilman erottavaa nimeä. Ruudunlukijan käyttäjä ei tiedä, kumpi on kumpi.
landmark-unique
Sivu ei saa päivittyä ajastimella lainkaanAAA-taso, kohdat 2.2.4 ja 3.2.5
Vasemmalla hakemussivu päivittyy itsestään kolmen sekunnin päästä, ja kesken kirjoitettu viesti voi kadota. Oikealla sivu päivittyy vain, kun käyttäjä painaa Refresh-painiketta.

<meta http-equiv="refresh" content="3">

<button type="button">Refresh</button>
Sivu päivittyy tai siirtyy toiselle sivulle ajastimella. AAA-tasolla tämä on kielletty kokonaan.
meta-refresh-no-exceptions
Sivun pitää sallia suurentaminen puhelimella vähintään viisinkertaiseksi
Vasemmalla sivun asetus rajoittaa suurentamisen puhelimella kaksinkertaiseksi, joten teksti jää pieneksi. Oikealla suurentamista ei ole rajoitettu, ja tekstin voi suurentaa vähintään viisinkertaiseksi.

<meta name="viewport" content="width=device-width, maximum-scale=2">

<meta name="viewport" content="width=device-width, initial-scale=1">
Sivun asetukset rajoittavat suurentamista puhelimella, joten tekstiä ei voi suurentaa tarpeeksi.
meta-viewport-large
Sivulla pitää olla pääotsikko
Vasemmalla sivun nimi Forest walks on tehty div-elementillä, joten sivulla ei ole pääotsikkoa. Oikealla se on h1-otsikko.

<div class="title">Forest walks</div>

<h1>Forest walks</h1>
Sivulta puuttuu ensimmäisen tason otsikko (h1), joka kertoo sivun aiheen.
page-has-heading-one
Koristeeksi merkityn elementin pitää pysyä koristeena
Vasemmalla lehtikuva on merkitty koristeeksi, mutta sillä on tabindex="0", joten näppäimistön kohdistus pysähtyy siihen turhaan. Oikealla koristeella ei ole kohdistusta, ja ruudunlukija ohittaa sen.

<img role="presentation" tabindex="0" src="leaf.svg">

<img role="presentation" alt="" src="leaf.svg">
Elementti on merkitty pelkäksi koristeeksi, mutta sillä on ominaisuuksia, kuten kohdistus tai nimi, joiden vuoksi selain näyttää sen silti apuvälineille.
presentation-role-conflict
Kaiken sisällön pitää olla jonkin sivualueen sisällä
Vasemmalla aukioloajat ovat kaikkien sivualueiden ulkopuolella, joten ruudunlukijan käyttäjä voi ohittaa ne huomaamattaan. Oikealla ne ovat pääsisällön sisällä.

</main> <p>Opening hours: 9–17</p> <footer>

<main> … <p>Opening hours: 9–17</p> </main>
Osa sivun sisällöstä on sivualueiden, kuten ylätunnisteen, pääsisällön ja alatunnisteen, ulkopuolella. Ruudunlukijan käyttäjä voi ohittaa sen huomaamattaan.
region
Taulukon scope-määritettä pitää käyttää oikein
Vasemmalla taulukon otsikkosolun scope-määritteen arvo on column, jota ei ole olemassa. Oikealla arvo on col, ja Product on sarakkeen otsikko.

<th scope="column">Product</th>

<th scope="col">Product</th>
Taulukon otsikkosolun scope-määritteellä on väärä arvo, tai se on väärässä paikassa.
scope-attr-valid
Ohituslinkin kohteen pitää olla olemassa
Vasemmalla ohituslinkki Skip to content osoittaa kohtaan #main-content, jota sivulla ei ole, joten linkki ei vie mihinkään. Oikealla kohde on olemassa, ja kohdistus siirtyy tuotteisiin.

<a href="#main-content">Skip to content</a>

<main id="main-content" tabindex="-1">
Sivulla on ohituslinkki, mutta sen osoittamaa kohtaa ei ole tai sinne ei voi siirtyä.
skip-link
Positiivisia tabindex-arvoja ei pidä käyttää
Vasemmalla positiiviset tabindex-arvot pakottavat järjestyksen Email, Message, Name, joten Tab-näppäin hyppii lomakkeella. Oikealla tabindex-arvoja ei ole, ja Tab etenee luonnollisessa järjestyksessä ylhäältä alas.

<input tabindex="3"> <input tabindex="1"> <textarea tabindex="2">

<input id="name"> <input id="email"> <textarea id="message">
Elementillä on tabindex-arvo, joka on suurempi kuin nolla. Se muuttaa näppäimistön kulkujärjestystä ja yleensä sekoittaa sen.
tabindex
Taulukon otsikko ja tiivistelmä eivät saa olla samat
Vasemmalla taulukon otsikko (caption) ja tiivistelmä (summary) ovat samat, joten ruudunlukija lukee ”Delivery options” kahdesti. Oikealla tiivistelmä kertoo, mitä taulukossa on: toimitustavat, toimitusajat ja hinnat.

<table summary="Delivery options"><caption>Delivery options</caption>

<table summary="Methods, delivery times and prices."><caption>Delivery options</caption>
Taulukon otsikko (caption) ja tiivistelmä (summary) ovat samat, joten ruudunlukija lukee saman tekstin kahdesti.
table-duplicate-name
Painikkeiden ja linkkien pitää olla riittävän suuriaWCAG 2.2, taso AA, kohta 2.5.8
Vasemmalla varauslomakkeen kalenteri-, miinus- ja pluspainikkeet ovat 16 × 16 pikseliä ja lähellä toisiaan, joten niihin on vaikea osua sormella. Oikealla painikkeet ovat vähintään 24 × 24 pikseliä.

button { width: 16px; height: 16px; }

button { min-width: 24px; min-height: 24px; }
WCAG 2.2:n vaatimus: painettavan kohdan pitää olla vähintään 24 × 24 pikseliä, tai sen ympärillä pitää olla riittävästi tyhjää tilaa. Pieniin kohtiin on vaikea osua.
target-size
Tekstit ovat Sigilan omia, selkeällä kielellä kirjoitettuja tiivistelmiä. Virallinen teksti on W3C:n WCAG 2.1 -suositus ja sen suomennos, josta ovat myös kriteerien viralliset nimet. WCAG 2.2:n uusien vaatimusten virallinen teksti on WCAG 2.2 -suositus. Niiden suomenkieliset nimet ovat Sigilan käännöksiä, koska virallista suomennosta ei vielä ole. Automaattiset tarkistukset tekevät avoimen lähdekoodin axe-core 4.13.0 ja Sigilan omat tarkistukset.