Aby zadeklarować, że treść dokumentu HTML jest w języku polskim, należy zapisać
<html lang="pl">
<body charset="pl">
<meta lang="pl">
<html language="polish">
Język dokumentu deklaruje się atrybutem lang znacznika <html>: <html lang="pl">. Wartość to kod języka według normy, dla polskiego pl, dla angielskiego en, a z wariantem regionalnym np. en-GB. Atrybut na elemencie głównym obejmuje całą stronę.
Z deklaracji korzystają czytniki ekranu, które wybierają właściwą wymowę, przeglądarki proponujące tłumaczenie, wyszukiwarki i reguły CSS, np. dzielenie wyrazów hyphens: auto;. Fragment w innym języku oznacza się tym samym atrybutem na mniejszym elemencie: <span lang="en">deadline</span>. Walidator W3C ostrzega, gdy <html> nie ma atrybutu lang.
Brak tego atrybutu nie psuje wyglądu strony, ale pogarsza jej dostępność.
Łatwo pomylić język dokumentu z kodowaniem znaków, bo oba dotyczą polskich liter. Kodowanie, np. UTF-8, ustawia <meta charset="UTF-8"> w sekcji <head>. Atrybut charset nie istnieje dla <body>, a pl nie jest nazwą kodowania.
Znacznik <meta> nie ma atrybutu lang, który ustawiałby język strony. Metadane podaje się w nim parami name i content albo atrybutem charset.
Zapis <html language="polish"> wygląda logicznie, ale HTML nie zna atrybutu language, a nazwę języka podaje się dwuliterowym kodem, nie pełnym słowem. Poprawny jest tylko krótki atrybut lang z wartością pl na elemencie <html>.
Atrybut lang wolno umieścić na dowolnym elemencie, ale język całej strony ustawia się na html.
Kod języka musi być zgodny z normą BCP 47, dlatego piszesz pl, a nie pol czy polish.