Trois factures, un seul code, zéro surcoût
Table des matières
Le socle commun
En 1997, Tim Berners-Lee, l'inventeur du World Wide Web, lançait l'initiative d'accessibilité du W3C avec cette phrase : "The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect."
Près de trente ans plus tard, cette universalité a trois noms dans les équipes techniques : accessibilité, performance et référencement. Trois scores dans Lighthouse. Trois colonnes dans les tableaux de bord. Trois budgets dans les plans projet. Trois équipes qui travaillent souvent en silos.
Sauf que les trois reposent sur le même socle : un HTML propre, sémantique, léger. Les pratiques qui rendent un site accessible le rendent aussi rapide. Les pratiques qui le rendent rapide le rendent aussi indexable. Et les pratiques qui le rendent indexable le rendent aussi accessible.
L'inverse est tout aussi vrai : chaque raccourci qui dégrade l'un dégrade les deux autres.
Une <div> stylée en bouton ? Le lecteur d'écran ne la comprend pas (accessibilité), le
navigateur charge du JavaScript supplémentaire pour le faire fonctionner (performance), et
le crawler ne sait pas que c'est un élément interactif
(référencement). Un seul mauvais choix, trois factures.
Le même HTML, trois victoires
Le HTML sémantique est le point de convergence des trois disciplines. Chaque élément natif utilisé correctement sert simultanément l'accessibilité, la performance et le référencement. Sans une ligne de code supplémentaire.
Les titres
<!-- ❌ Une div stylée — invisible pour les trois -->
<div class="big-bold-text">Nos tarifs</div>
<!-- ✅ Un h2 — visible pour les trois -->
<h2>Nos tarifs</h2>Le <h2> est annoncé par le lecteur d'écran comme titre de niveau 2. L'utilisateur peut
sauter dessus avec un raccourci clavier. Le navigateur le rend nativement sans JavaScript
ni CSS supplémentaire. Google
l'utilise pour comprendre la structure de la page et extraire des
featured snippets. Les LLM
qui alimentent le GEO
s'en servent pour structurer leurs réponses.
La <div> stylée en gras ? Aucun des trois n'y voit un titre.
Les landmarks
<header>...</header>
<nav aria-label="Navigation principale">...</nav>
<main>...</main>
<aside>...</aside>
<footer>...</footer>Cinq éléments HTML. Le lecteur d'écran les annonce comme régions navigables. Le navigateur
les rend sans script. Google y reconnaît la structure de la page. Le contenu principal
dans <main>, la navigation dans <nav>, le contenu secondaire dans <aside>. Chaque
<div>retiré pour porter le style, chaque class CSS porté directement par un élément sémantique allège le DOM, accélère le rendu, et enrichit
l'arbre d'accessibilité et l'indexation.
Les boutons
Un <button> pèse 0 octet de JavaScript maison pour fonctionner au clavier, au clic, au toucher,
et avec un lecteur d'écran. Une <div role="button" tabindex="0"> avec un gestionnaire
click, un gestionnaire keydown pour Entrée
et Espace, et un style de focus manuel pèse des dizaines de lignes. Et reste moins fiable
sur chacun des trois axes.
Les images, triple enjeu
On a vu dans les deux vies d'une image comment le texte alternatif sert l'accessibilité. Mais chaque attribut d'une image sert aussi la performance et le référencement :
<img
src="product.webp"
alt="Casque audio sans fil à arceaux, coussinets enveloppants, noir mat"
width="800"
height="600"
loading="lazy"
>| Attribut | Accessibilité | Performance | Référencement |
|---|---|---|---|
alt | Le lecteur d'écran décrit l'image | Le texte s'affiche si l'image ne charge pas | Google indexe le contenu, les LLM le citent |
width / height | — | Le navigateur réserve l'espace → zéro décalage (CLS) | — |
loading="lazy" | — | Les images hors écran ne chargent qu'au défilement → meilleur LCP | Le crawl consomme moins de bande passante |
| Format WebP/AVIF | — | Fichier plus léger → chargement plus rapide | Google recommande les formats modernes |
Quatre attributs. Zéro JavaScript. Les trois scores s'améliorent.
Le coût caché du JavaScript
Chaque fois que JavaScript modifie le DOM, le navigateur recalcule trois choses : le rendu visuel, le layout, et l'arbre d'accessibilité. Sur mobile, la réalité de 60% du trafic web mondial, chaque recalcul coûte du temps, surtout sur les appareils moins puissants et les connexions moins fiables.
Un site qui charge 2 Mo de JavaScript pour afficher une page statique paie trois fois :
- Performance : le navigateur parse, compile et exécute le script avant d'afficher quoi que ce soit. Le LCP explose.
- Accessibilité : le lecteur d'écran attend que l'arbre d'accessibilité se stabilise. Pendant ce temps, l'utilisateur entend soit rien, soit un état intermédiaire incohérent.
- Référencement : le crawler a un budget de rendu limité. Plus ton JavaScript est lourd, plus il risque d'indexer une page vide ou incomplète.
La solution n'est pas de bannir JavaScript. C'est de l'utiliser comme couche d'enrichissement, pas comme fondation. Le progressive enhancement et le server-side rendering (SSR) garantissent que le HTML arrive complet au navigateur : le lecteur d'écran peut lire immédiatement, le moteur de recherche indexe le contenu réel, et l'utilisateur voit la page avant que le JavaScript ne finisse de charger.
Les préférences utilisateur
Le CSS offre des media queries qui détectent les préférences de l'utilisateur au niveau du système d'exploitation. Chacune sert l'accessibilité et la performance :
prefers-reduced-motion : l'utilisateur a désactivé les animations dans ses réglages
système. Ça peut être un trouble vestibulaire, de l'épilepsie, une migraine, ou
simplement un appareil bas de gamme qui rame sur les animations CSS. Plutôt que de
supprimer des animations après coup, la meilleure approche est de ne les activer que pour
ceux qui les demandent :
/* Uniquement si l'utilisateur accepte les animations */
@media (prefers-reduced-motion: no-preference) {
.card {
animation: fade-in var(--duration) ease-out;
}
}Le résultat est le même visuellement pour ceux qui acceptent les animations. Mais pour tous les autres, le navigateur n'a rien à calculer. Pas d'animation créée puis écrasée. Moins de CSS, moins de calculs, accessible et performant dès le départ.
prefers-contrast : l'utilisateur demande un contraste renforcé. C'est un besoin
d'accessibilité visuelle, mais c'est aussi un indicateur que l'utilisateur navigue
peut-être en conditions dégradées. Écran en plein soleil ou moniteur vieillissant par exemple.
prefers-color-scheme : le mode sombre réduit la luminosité de l'écran, diminue la
fatigue oculaire, et sur les écrans OLED, réduit la consommation de batterie. Accessibilité,
confort et performance matérielle en une seule media query.
Ces trois réglages existent déjà dans le système de tes utilisateurs. Il suffit de les écouter.
Mesurer les trois d'un coup
Ouvre Lighthouse dans les outils de développement de ton navigateur (F12 → onglet Lighthouse). Lance un audit. En une passe, tu obtiens quatre scores : Performance, Accessibility, Best Practices, SEO.
Les problèmes qui font chuter un score font souvent chuter les autres :
- Des images sans
alt→ le score accessibilité baisse, le score SEO aussi. Attention tout de même à ne pas bourrer lealtde mots-clés sur des images décoratives, c'est du hidden text pour Google. - Des images sans dimensions → le CLS augmente : le score performance baisse, et le classement Google avec lui (Core Web Vitals)
- Des titres qui sautent des niveaux → le score accessibilité baisse, et la structure devient illisible pour les crawlers
- Un DOM trop profond : des
<div>imbriquées sur dix niveaux juste pour positionner un élément → le recalcul de l'arbre d'accessibilité ralentit (performance) et le crawler se perd dans la structure (SEO)
Un seul audit, trois diagnostics. Et les corrections sont souvent les mêmes. Du HTML sémantique, des attributs complets, moins de JavaScript.
Lighthouse ne remplace pas un test avec un lecteur d'écran, un audit SEO approfondi, ou un test de charge. Mais c'est le premier signal d'alerte et il montre en un coup d'œil que les trois disciplines convergent.
Sources
- Tim Berners-Lee — W3C Web Accessibility Initiative launch (1997)
- Marcy Sutton — Accessibility and Performance
- Deque — 7 tactics that benefit both accessibility and SEO
- Hooked on Code — Performance is accessibility
- eseospace — How WCAG compliance impacts Core Web Vitals
- web.dev — Core Web Vitals
- Google — Lighthouse accessibility scoring
- MDN — Using media queries for accessibility
- MDN — prefers-reduced-motion
- Statista — Mobile share of website traffic worldwide