Langue par défaut
La langue par défaut d'une page web est la langue principale dans laquelle son contenu est rédigé. On la déclare en HTML avec l'attribut lang sur l'élément racine du document. Sans cette déclaration, les lecteurs d'écran ne savent pas quelles règles de prononciation appliquer et lisent le texte avec l'accent de la langue configurée sur le système de l'utilisateur.
Un site français sans lang="fr" sur sa balise <html>. Le lecteur d'écran lit tout le contenu avec les règles phonétiques de la langue configurée sur le système de l'utilisateur. Chaque mot français, prononcé comme de l'anglais.
#Ce que fait l'attribut lang
L'attribut lang sur <html> indique aux navigateurs et aux technologies d'assistance dans quelle langue le contenu est rédigé. Quand un lecteur d'écran comme NVDA ou VoiceOver rencontre lang="fr", il charge les règles de prononciation françaises. Les afficheurs braille, eux, appliquent les tables de contraction correspondantes. Côté navigateur, cet attribut détermine les guillemets pour <q>, le format de date dans les champs de saisie et la langue de correction orthographique.
La mise en œuvre tient en un attribut :
<html lang="fr">Le code utilise la norme BCP 47 : fr pour le français, en pour l'anglais, de pour l'allemand.
#Un critère de niveau A, toujours négligé
Le critère 3.1.1 des WCAG exige que la langue par défaut de chaque page puisse être déterminée par programmation. Niveau A : le strict minimum. Le RGAA reprend cette exigence aux critères 8.3 et 8.4.
L'absence de langue déclarée figure parmi les 6 erreurs les plus fréquentes détectées par le WebAIM Million 2025 sur un million de pages d'accueil.
#L'erreur que personne ne voit
Mettre lang sur <body> au lieu de <html>. Le <head> n'est pas couvert. Or le <title> de la page, souvent le premier élément lu par un lecteur d'écran, se trouve dans le <head>.
<!-- ❌ Ne couvre pas le <head> -->
<html>
<head><title>Mon site</title></head>
<body lang="fr">...</body>
</html>
<!-- ✅ Couvre tout le document -->
<html lang="fr">
<head><title>Mon site</title></head>
<body>...</body>
</html>Autre piège : les codes de langue ne sont pas les codes pays. Le luxembourgeois, c'est lb, pas lu (qui désigne le luba-katanga). Et fr-FR n'est utile que pour distinguer le français de France du français du Canada (fr-CA). Pour la plupart des sites, fr suffit.
#En résumé
Ajoutez lang sur <html>, pas sur <body>. Utilisez un code BCP 47 valide. Une ligne de code, un critère de niveau A, et l'une des corrections d'accessibilité les plus rapides à déployer.