VulCode
Blog

Deklaracja dostępności strony internetowej krok po kroku

Kogo dotyczy, co musi zawierać i jak ją opublikować, żeby przeszła kontrolę: sekcje w wymaganej kolejności, obowiązkowe brzmienia i identyfikatory a11y według warunków technicznych Ministerstwa Cyfryzacji w wersji 2.0. Do tego obowiązki sklepów internetowych z Polskiego Aktu o Dostępności.

VulCodeVulCode16 min czytania
Deklaracja dostępności strony internetowej krok po kroku - VulCode
Co zbudujeszHTML, 9 kroków
  1. Stan dostępnościBadanieSamoocena listą kontrolną albo audyt.
  2. Sekcje i wzoryTreśćObowiązkowe brzmienia i kolejność.
  3. Identyfikatory a11yHTML14 obowiązkowych, każdy raz.
  4. Link w stopcePublikacjaŁatwo dostępny z każdej podstrony.

Poradnik w skrócie

Deklaracja dostępności to oświadczenie podmiotu publicznego o tym, jaki standard dostępności spełnia jego strona, w jakim stopniu, które treści są niedostępne i dlaczego oraz jak zgłosić problem. Obowiązek publikacji wynika z art. 10, a obowiązek przeglądu i aktualizacji z art. 11 ustawy o dostępności cyfrowej.

Deklaracja dostępności krok po kroku

Grupa
Strony i SEO
Poziom
podstawowy
Czas czytania
około 16 min
Kod
HTML

Pliki: deklaracja.html, stopka.html.

Kroki
9 kroków

W 8 z nich kod albo polecenia do skopiowania.

Sprawdzenie
Skrypt sprawdzający

sprawdz-deklaracje.mjs: Wynik dla szablonu z poradnika: obowiązkowe: 14/14, brak: nic; powtórzone: brak.

Dokumentacja
4 oficjalne dokumenty

Warunki techniczne publikacji i struktura deklaracji dostępności (wersja 2.0); Dostępność cyfrowa: najczęściej zadawane pytania; Deklaracja dostępności serwisu Dostępność cyfrowa (przykład); Obowiązki informacyjne w Polskim Akcie o Dostępności

Z naszego kodu
kontrast WCAG

src/pages/Wiedza/tools/live/color.ts

Zanim zaczniesz

Struktura deklaracji nie jest dowolna. Ministerstwo Cyfryzacji określa ją w warunkach technicznych: kolejność sekcji, obowiązkowe brzmienie części zdań i identyfikatory HTML, po których deklaracje są sprawdzane automatycznie. Od 1 sierpnia 2024 r. nową deklarację przygotowuje się według wersji 2.0 tych warunków i według niej jest ten poradnik.

Co musisz mieć
Deklaracja dostępności krok po kroku
Wiedza, czy obowiązek Cię dotyczy
Ustawa z 4 kwietnia 2019 r. dotyczy podmiotów publicznych. Deklaracja musi być na wszystkich ich stronach, także w Biuletynie Informacji Publicznej. Sklepy internetowe mają od 28 czerwca 2025 r. osobne obowiązki z Polskiego Aktu o Dostępności, opisane w pytaniach na dole.
Wynik badania dostępności
Status deklaracji musi wynikać z badania: samooceny, na przykład z Listą kontrolną do badania dostępności cyfrowej strony internetowej v. 2.2 od Ministerstwa, audytu zewnętrznego albo oświadczenia wykonawcy strony.
Dane kontaktowe i opis siedziby
Osoba albo komórka do zgłoszeń z adresem e-mail i telefonem, kierownictwo, do którego trafiają skargi, oraz opis dostępności architektonicznej siedziby głównej i dostępności tłumacza języka migowego.
Daty
Data publikacji strony i data jej ostatniej istotnej aktualizacji. Istotna to taka, która może mieć poważny wpływ na dostępność: nowy wygląd, nowa funkcja, zmiana menu. Nowy artykuł nią nie jest.

Sekcje deklaracji w wymaganej kolejności

SekcjaPoziomStatus
Deklaracja dostępności: wstęp i daty1wymagana, obowiązkowe brzmienie
Stan dostępności cyfrowej2wymagana, obowiązkowe brzmienie
Niedostępne treści2wymagana przy zgodności częściowej lub niezgodności
Przygotowanie deklaracji dostępności2wymagana
Udogodnienia, ograniczenia i inne informacje2dobrowolna
Skróty klawiszowe2wymagana, gdy są niestandardowe skróty
Informacje zwrotne i dane kontaktowe2wymagana
Obsługa wniosków i skarg związanych z dostępnością2wymagana
Pozostałe informacje: aplikacje, architektura, komunikacja2 i 3wymagana, aplikacje opcjonalnie

Krok po kroku

9 kroków. Okno obok pokazuje plik albo pola kroku, który właśnie czytasz.

Zbadaj stronę i wybierz stan zgodności

Możliwe są trzy stany. W pełni zgodna: strona spełnia wszystkie wymagania z załącznika do ustawy. Częściowo zgodna: spełnia większość i nie ma błędów, które uniemożliwiają odczyt istotnych treści albo skorzystanie z usług, także z technologiami wspomagającymi. Niezgodna: nie spełnia większości wymagań albo ma takie błędy.

Podmiot publiczny może zbadać stronę sam. Ministerstwo przygotowało do tego listę kontrolną, a jego własna deklaracja dla gov.pl/web/dostepnosc-cyfrowa podaje jako podstawę samoocenę z tą listą i narzędzie WAVE.

Wpisz tytuł i oświadczenie wstępne

Tytuł "Deklaracja dostępności" i oświadczenie wstępne mają obowiązkowe brzmienie. Uzupełniasz tylko nazwę podmiotu i adres strony, który musi być linkiem. Oświadczenie obejmuje znacznik z identyfikatorem a11y-wstep, a w środku są a11y-podmiot, a11y-zakres i a11y-url.

Dodaj daty publikacji i aktualizacji

Obie daty są wymagane i zapisuje się je w znaczniku time: w treści słownie, na przykład "5 lutego 2020 r.", a w atrybucie datetime w formacie rrrr-mm-dd. Jeśli strona nie była istotnie aktualizowana od publikacji, obie daty są takie same.

Opisz stan dostępności i niedostępne treści

Śródtytuł "Stan dostępności cyfrowej" i zdanie ze stanem mają obowiązkowe brzmienie, z identyfikatorem a11y-status. Przy zgodności częściowej lub niezgodności dodajesz sekcję "Niedostępne treści" z najwyżej trzema grupami: Niezgodność z załącznikiem, Treści nieobjęte przepisami i Nadmierne koszty.

Każdy błąd opisujesz prostym, nietechnicznym językiem: który element, na której podstronie, na czym polega problem i jak można dostać tę treść inaczej. Przy nadmiernych kosztach dołączasz wyniki oceny z art. 8 ust. 3 albo link do nich, z identyfikatorem a11y-ocena.

Podaj, kiedy i na jakiej podstawie przygotowano deklarację

Data sporządzenia ma identyfikator a11y-data-sporzadzenie. Data ostatniego przeglądu, a11y-data-przeglad, staje się obowiązkowa od pierwszego przeglądu. Do tego jedno zdanie o podstawie: samoocena, audyt zewnętrzny z linkiem do raportu albo oświadczenie wykonawcy.

Wpisz kontakt i procedurę zgłoszeń

Sekcja "Informacje zwrotne i dane kontaktowe" podaje osobę albo komórkę do zgłoszeń (a11y-kontakt), e-mail (a11y-email) i telefon (a11y-telefon). Numer w linku tel: telefon wybierze jednym dotknięciem, a numer komórkowy pozwala osobom Głuchym napisać SMS, co warunki techniczne opisują jako dobrą praktykę.

Opis procedury musi mówić, jak zgłosić problem, w jakim terminie podmiot odpowie i jak zareaguje. Wzór podaje termin 7 dni, możliwość przedłużenia do najwyżej 2 miesięcy i dostęp alternatywny.

Opisz procedurę skargową

Blok "Obsługa wniosków i skarg związanych z dostępnością" ma identyfikator a11y-procedura. Opisuje skargę z art. 18 ust. 7 i 8 ustawy, podaje, do kogo ją składać, i linkuje do strony Rzecznika Praw Obywatelskich.

Dodaj dostępność architektoniczną i komunikacyjną

"Pozostałe informacje" to wymagany tytuł. Pod nim opisujesz dostępność architektoniczną siedziby głównej (a11y-architektura) i komunikacyjno-informacyjną, w tym tłumacza języka migowego (a11y-komunikacja). Ten opis jest wymagany w każdej deklaracji, także na stronie, która nie służy kontaktowi z urzędem.

Jeśli podmiot ma aplikacje mobilne, dodajesz podsekcję z linkami do nich i do ich deklaracji, z identyfikatorem a11y-aplikacje.

Opublikuj deklarację i podlinkuj ją w stopce

Deklarację publikuje się jako HTML, w pełni dostępny cyfrowo, nawet jeśli reszta strony dostępna nie jest. Pisze się ją w języku strony. Link do niej musi być łatwo dostępny podczas nawigacji, na przykład w stopce. Identyfikatorów nie tłumaczy się i nie dodaje do nich polskich liter, a każdy występuje tylko raz.

Okno kodukrok 1 z 9
Stan zgodności3 pola
W pełni zgodnastan 1 z 3
Strona spełnia wszystkie wymagania z załącznika do ustawy.
Częściowo zgodnastan 2 z 3
Spełnia większość wymagań i nie ma błędów, które uniemożliwiają odczyt istotnych treści albo skorzystanie z usług, także z technologiami wspomagającymi.
Niezgodnastan 3 z 3
Nie spełnia większości wymagań albo ma takie błędy.
deklaracja.htmlNowy plik, 9 linii
<h1>Deklaracja dostępności</h1> <section id="a11y-wstep">  <p><span id="a11y-podmiot">[Nazwa podmiotu]</span> zobowiązuje się zapewnić dostępność swojej  <span id="a11y-zakres">strony internetowej</span> zgodnie z ustawą z dnia 4 kwietnia 2019 r.  o dostępności cyfrowej stron internetowych i aplikacji mobilnych podmiotów publicznych.</p>  <p>Deklaracja dostępności dotyczy strony  <a href="https://[adres-strony]" id="a11y-url">[adres-strony]</a>.</p></section>
deklaracja.htmlZmiana w pliku: 6 linii
<ul>  <li>Data publikacji strony internetowej:    <time id="a11y-data-publikacja" datetime="2024-03-12">12 marca 2024 r.</time></li>  <li>Data ostatniej istotnej aktualizacji:    <time id="a11y-data-aktualizacja" datetime="2026-09-01">1 września 2026 r.</time></li></ul>
deklaracja.htmlZmiana w pliku: 7 linii
<h2>Stan dostępności cyfrowej</h2><p id="a11y-status">Ta strona internetowa jest częściowo zgodna z załącznikiem do ustawyo dostępności cyfrowej z dnia 4 kwietnia 2019 r. o dostępności cyfrowej stron internetowychi aplikacji mobilnych podmiotów publicznych z powodu niezgodności wymienionych poniżej.</p> <h2>Niedostępne treści</h2><h3>Niezgodność z załącznikiem</h3><ul>  <li>[Element, adres podstrony, opis błędu prostym językiem, sposób alternatywnego dostępu]</li></ul>
deklaracja.htmlZmiana w pliku: 5 linii
<h2>Przygotowanie deklaracji dostępności</h2><ul>  <li>Data sporządzenia deklaracji:    <time id="a11y-data-sporzadzenie" datetime="2026-10-06">6 października 2026 r.</time></li></ul><p>Deklarację sporządziliśmy na podstawie samooceny w oparciu o Listę kontrolnądo badania dostępności cyfrowej strony internetowej v. 2.2.</p>
deklaracja.htmlZmiana w pliku: 19 linii
<h2>Informacje zwrotne i dane kontaktowe</h2><p>Wszystkie problemy z dostępnością cyfrową tej strony internetowej możesz zgłosić do<span id="a11y-kontakt">[osoba albo komórka]</span> mejlowo<a id="a11y-email" href="mailto:[adres]">[adres]</a> lub telefonicznie<a id="a11y-telefon" href="tel:+48000000000">[numer]</a>.</p><p>Każdy ma prawo wystąpić z żądaniem zapewnienia dostępności cyfrowej tej stronyinternetowej lub jej elementów.</p><p>Zgłaszając takie żądanie podaj:</p><ul>  <li>swoje imię i nazwisko,</li>  <li>swoje dane kontaktowe (np. numer telefonu, e-mail),</li>  <li>dokładny adres strony internetowej, na której jest niedostępny cyfrowo element lub treść,</li>  <li>opis na czym polega problem i jaki sposób jego rozwiązania byłby dla Ciebie najwygodniejszy.</li></ul><p>Na Twoje zgłoszenie odpowiemy najszybciej jak to możliwe, nie później niż w ciągu 7 dniod jego otrzymania.</p><p>Jeżeli ten termin będzie dla nas zbyt krótki poinformujemy Cię o tym. W tej informacjipodamy nowy termin, do którego poprawimy zgłoszone przez Ciebie błędy lub przygotujemyinformacje w alternatywny sposób. Ten nowy termin nie będzie dłuższy niż 2 miesiące.</p><p>Jeżeli nie będziemy w stanie zapewnić dostępności cyfrowej strony internetowej lub treści,wskazanej w Twoim żądaniu, zaproponujemy Ci dostęp do nich w alternatywny sposób.</p>
deklaracja.htmlZmiana w pliku: 12 linii
<section id="a11y-procedura">  <h2>Obsługa wniosków i skarg związanych z dostępnością</h2>  <p>Jeżeli w odpowiedzi na Twój wniosek o zapewnienie dostępności cyfrowej, odmówimy  zapewnienia żądanej przez Ciebie dostępności cyfrowej, a Ty nie zgadzasz się z tą odmową,  masz prawo złożyć skargę.</p>  <p>Skargę masz prawo złożyć także, jeśli nie zgadzasz się na skorzystanie z alternatywnego  sposobu dostępu, który zaproponowaliśmy Ci w odpowiedzi na Twój wniosek o zapewnienie  dostępności cyfrowej.</p>  <p>Ewentualną skargę złóż listownie lub mailem do kierownictwa: [osoba, adres, e-mail].</p>  <p>Możesz także poinformować o tej sytuacji  <a href="https://bip.brpo.gov.pl/">Rzecznika Praw Obywatelskich</a>  i poprosić o interwencję w Twojej sprawie.</p></section>
deklaracja.htmlZmiana w pliku: 10 linii
<h2>Pozostałe informacje</h2> <h3>Dostępność architektoniczna</h3><div id="a11y-architektura">  <p>[Wejścia do budynku, windy, toalety, miejsca parkingowe, pies asystujący,  pętla indukcyjna, oznaczenia w alfabecie Braille'a]</p></div> <h3>Dostępność komunikacyjno-informacyjna</h3><div id="a11y-komunikacja">  <p>[Tłumacz języka migowego: jak go zamówić i z jakim wyprzedzeniem]</p></div>
stopka.htmlNowy plik, 3 linie
<footer>  <a href="/deklaracja-dostepnosci">Deklaracja dostępności</a></footer>

Sprawdź, czy działa

Szablon z kroków powyżej sprawdziliśmy 6 października 2026 r. skryptem, który szuka czternastu obowiązkowych identyfikatorów z tabeli w warunkach technicznych 2.0 i powtórzeń. Wszystkie czternaście jest na miejscu, żaden się nie powtarza, a trzy daty mają atrybut datetime. Ten sam skrypt uruchomisz na swojej opublikowanej deklaracji po zapisaniu jej kodu HTML do pliku.

sprawdz-deklaracje.mjsts, 14 linii
import { readFileSync } from 'node:fs'; const html = readFileSync('deklaracja.html', 'utf8');const required = [  'a11y-wstep', 'a11y-podmiot', 'a11y-zakres', 'a11y-url',  'a11y-data-publikacja', 'a11y-data-aktualizacja', 'a11y-status',  'a11y-kontakt', 'a11y-email', 'a11y-telefon', 'a11y-procedura',  'a11y-data-sporzadzenie', 'a11y-architektura', 'a11y-komunikacja',];const ids = [...html.matchAll(/id="(a11y-[a-z-]+)"/g)].map(match => match[1]);const missing = required.filter(id => !ids.includes(id));const repeated = [...new Set(ids.filter((id, index) => ids.indexOf(id) !== index))];console.log(`obowiązkowe: ${required.length - missing.length}/${required.length}, brak: ${missing.join(', ') || 'nic'}`);console.log(`powtórzone: ${repeated.join(', ') || 'brak'}`);

Wynik dla szablonu z poradnika: obowiązkowe: 14/14, brak: nic; powtórzone: brak.

Po czym poznasz, że działa u Ciebie

  • Tytuł, oświadczenie wstępne i zdanie ze stanem są w obowiązkowym brzmieniu.
  • Wszystkie 14 obowiązkowych identyfikatorów występuje dokładnie raz.
  • Daty są w znacznikach time z atrybutem datetime.
  • Link do deklaracji jest w stopce każdej podstrony.

Najczęstsze błędy

Ta sama droga co w "Co zbudujesz" na górze strony, z miejscami, w których praca staje najczęściej. Przy każdym błędzie: objaw, przyczyna i co zrobić.

Gdzie staje i dlaczego

Stan dostępności

Badanie

Samoocena listą kontrolną albo audyt.

    Sekcje i wzory

    Treść

    Obowiązkowe brzmienia i kolejność.

    • Zatrzymuje się: Zmienione zdanie o stanie zgodności

      Przeredagowany wzór albo pozostawione nawiasy kwadratowe. Co zrobić: Odwzoruj wzór wiernie; z opcji w nawiasach wybierz właściwą albo usuń same nawiasy, gdy dotyczą obie.

    • Zatrzymuje się: Brak opisu siedziby na stronie tematycznej

      Założenie, że strona bez kontaktu z urzędem tego nie potrzebuje. Co zrobić: Opis dostępności architektonicznej jest wymagany w każdej deklaracji podmiotu.

    Identyfikatory a11y

    HTML

    14 obowiązkowych, każdy raz.

    • Zatrzymuje się: Automatyczny monitoring nie znajduje deklaracji

      Brak identyfikatorów, identyfikatory przetłumaczone albo z polskimi literami. Co zrobić: Użyj identyfikatorów dokładnie w brzmieniu z tabeli, na przykład a11y-data-sporzadzenie, nie a11y-data-sporządzenie.

    • Zatrzymuje się: Identyfikator występuje dwa razy

      Na przykład a11y-email przy dwóch adresach kontaktowych. Co zrobić: Każdy identyfikator stosuj raz; drugi adres podaj bez niego.

    Link w stopce

    Publikacja

    Łatwo dostępny z każdej podstrony.

    • Zatrzymuje się: Deklaracja opublikowana jako PDF

      Plik zamiast strony HTML. Co zrobić: Opublikuj deklarację jako HTML, w pełni dostępny cyfrowo.

    Jak to robimy u siebie

    Ten sam temat w kodzie, który utrzymujemy: kontrast WCAG.

    Kontrast, który sprawdzisz przed deklaracją

    Jednym z najczęstszych błędów, które trafiają do sekcji "Niedostępne treści", jest za słaby kontrast tekstu. Nasze darmowe narzędzie kontrast WCAG liczy współczynnik według definicji WCAG: względna luminancja obu kolorów i stosunek (L1 + 0,05) / (L2 + 0,05).

    Szary #7c8599 na białym tle ma 3,70:1, a zwykły tekst wymaga co najmniej 4,5:1 na poziomie AA. Narzędzie podpowiada też najbliższy kolor, który próg spełnia, więc błąd poprawisz, zanim trafi do deklaracji.

    src/pages/Wiedza/tools/live/color.tsts, 15 linii
    const linear = (channel: number) => {  const c = channel / 255;  return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;}; export const relativeLuminance = ({ r, g, b }: Rgb) =>  0.2126 * linear(r) + 0.7152 * linear(g) + 0.0722 * linear(b); export const contrastRatio = (a: Rgb, b: Rgb) => {  const la = relativeLuminance(a);  const lb = relativeLuminance(b);  return (Math.max(la, lb) + 0.05) / (Math.min(la, lb) + 0.05);}; // #7c8599 na białym tle: 3,70:1, za mało na zwykły tekst (AA wymaga 4,5:1)

    Funkcja kontrastu z naszego narzędzia na tej stronie.

    Powiązane strony i źródła

    Usługa, narzędzia i hasła, do których odsyła ten poradnik, i kolejne poradniki.

    Oficjalna dokumentacja

    Wolisz, żeby zrobił to ktoś, kto już to robił?

    Opisz swój system. Odpiszemy w godzinę z planem integracji i wyceną.

    Pytania