Améliorer l’accessibilité d’un site existant : retour d’expérience chez JoliCode
Malgré des avancées réglementaires importantes, l’accessibilité numérique reste largement sous-estimée dans de nombreux projets web. Depuis le 28 juin 2025, l’European Accessibility Act (EAA) étend les obligations d’accessibilité à de nombreux services numériques privés. Pourtant, la réalité est encore loin des objectifs fixés : selon l’Observatoire du respect des obligations d’accessibilité numérique, seuls 44 sites sur 7 560 contrôlés déclarent être totalement conformes au référentiel général d’amélioration de l’accessibilité (RGAA), soit 0,58 % de l’échantillon analysé.
Atteindre un bon niveau d’accessibilité demande généralement un travail de fond sur la conception, le contenu et les développements du site. Cependant, certaines améliorations simples, peu coûteuses et rapides à mettre en œuvre permettent déjà d’offrir une expérience plus inclusive à l’ensemble de vos visiteurs.
Dans cet article, je partage les premières actions que j’ai mises en place sur le site de JoliCode. Ces améliorations ont permis de corriger plusieurs problèmes courants et constituent une première étape vers une expérience plus accessible pour toutes et tous.
Section intitulée l-etat-des-lieuxL’état des lieux
La première étape consiste à réaliser ce qu’on appelle un audit d’accessibilité. Il permet de tester l’ensemble des 106 critères constitutifs du RGAA. Pour cela, l’outil ARA développé par la direction interministérielle du numérique (DINUM) propose une interface en ligne et la génération de rapport et de déclaration de conformité.
Pour ma part, armée de la liste des critères, j’ai passé en revue un échantillon de pages représentatif : la page d’accueil, la page contact, la page blog et une page article. L’objectif était également de mieux connaître les critères du RGAA et les différentes méthodes permettant de les évaluer. La navigation au clavier, l’utilisation d’un lecteur d’écran et quelques extensions de navigateur m’ont permis d’identifier rapidement plusieurs problèmes d’accessibilité. Même si l’accessibilité est prise en compte dès le début de nos projets, les mises à jour et maintenances successives, ainsi que les diverses contributions, ont introduit au fil du temps des erreurs fréquentes et faciles à corriger.
Pour structurer les corrections issues de cet audit, j’ai commencé par regrouper les problèmes identifiés dans un tableau de suivi. L’objectif était de relier chaque point à son critère RGAA et de pouvoir suivre facilement les corrections à mettre en place sur le site. Le format du tableau était le suivant :
| Type | Correction à faire | Critère correspondant | Statut | Images |
|---|---|---|---|---|
| « Navigation » ou « Contrastes » | Description de la correction à appliquer | Lien vers le critère RGAA correspondant | ✅, 🔜 ou ❌ avec un lien vers la pull request si elle existe | Capture d’écran du problème constaté |
Section intitulée ameliorer-la-lisibilite-des-contenusAméliorer la lisibilité des contenus
Parmi les erreurs les plus fréquentes, on retrouve souvent des problèmes de contrastes insuffisants. C’est l’un des éléments qui doit être anticipé dès la phase de conception d’un site. Il existe pourtant des outils simples en ligne (et même des plugins Figma) permettant de vérifier le contraste entre une couleur d’arrière-plan et d’avant-plan. Sur le site de JoliCode la couleur rose ainsi qu’un niveau de gris, avaient un contraste insuffisant (sur fond blanc et noir pour le rose, sur fond blanc pour le gris). J’ai utilisé l’outil de Tanaguru permettant de trouver des couleurs similaires respectant les critères de contraste. L’usage du rose a été limité au fond blanc, les liens sur section sombres s’affichant désormais en jaune. Cette modification n’a pas eu d’impact sur l’identité visuelle du site tout en améliorant la lisibilité des contenus.

Info
Critère 3.2 : Dans chaque page web, le contraste entre la couleur du texte et la couleur de son arrière-plan est-il suffisamment élevé ?
Section intitulée faciliter-la-navigationFaciliter la navigation
Section intitulée corriger-la-navigation-principaleCorriger la navigation principale
Le menu de navigation principal comportait plusieurs problèmes :
- Il n’utilisait pas les bons attributs ARIA
- Il n’était pas totalement utilisable au clavier
- Le menu actif était indiqué uniquement par un changement de couleur
Pour corriger la structure du menu, je me suis basée sur le pattern “Disclosure Navigation Menu” du guide de la Web Accessibility Initiative (WAI). Pour ne pas toucher au design mais permettre l’utilisation des sous-menus au clavier, un bouton s’affiche désormais lors de la tabulation et permet d’y accéder. La barre jaune initialement affichée uniquement au survol permet désormais d’indiquer le menu actif, permettant une meilleure visibilité aux personnes qui distinguent difficilement certaines couleurs.

Info
Critère 3.1 : Dans chaque page web, l’information ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?
Critère 10.14 : Dans chaque page web, les contenus additionnels apparaissant via les styles CSS uniquement peuvent-ils être rendus visibles au clavier et par tout dispositif de pointage ?
Section intitulée ajouter-un-lien-d-evitementAjouter un lien d’évitement
S’il est important que le menu de navigation soit accessible, il faut également permettre à l’utilisateur d’accéder facilement au contenu du site, sans forcément avoir à parcourir tout le menu. Ainsi, j’ai ajouté un lien d’accès rapide accessible via la touche tabulation dès l’arrivée sur le site. Il permet aux utilisateurs naviguant au clavier ou avec un lecteur d’écran d’accéder directement au contenu du site.

Info
Critère 12.7 : Dans chaque page web, un lien d’évitement ou d’accès rapide à la zone de contenu principal est-il présent ?
Section intitulée structurer-l-informationStructurer l’information
L’utilisation de titres au sein d’une page web est essentielle pour structurer l’information. Elle rend la lecture plus agréable, permet de mettre des mots clés en avant d’un point de vue SEO et certains utilisateurs et utilisatrices s’en servent pour naviguer. Sur ce dernier point il est donc important d’avoir une hiérarchie de titres cohérente : éviter les sauts de titre (passer d’un h2 à un h4 par exemple) et surtout un ordre incohérent (passer d’un h1 à un h3 puis un h2). Pour cela je vous conseille l’extension headings map qui permet de visualiser simplement une erreur dans la hiérarchie de vos titres.

Sur le site de JoliCode, un titre avait été balisé de manière à prendre un certain style mais l’ordre n’était plus cohérent. Le balisage a été changé et le style géré via une classe CSS.
Info
Critère 9.1 : Dans chaque page web, l’information est-elle structurée par l’utilisation appropriée de titres ?
Section intitulée donner-du-sens-aux-imagesDonner du sens aux images
Vient le sujet majeur de l’accessibilité des images et son fameux attribut alt. On en a tellement entendu parler que certains contributeurs se mettent désormais à le remplir, même quand ce n’est pas nécessaire.
Voici ce qu’il faut retenir :
- une image qui n’apporte pas d’information supplémentaire doit avoir un attribut alt vide. Cela signifie que même si l’image est porteuse d’information, si cette information est présente dans le texte à côté de l’image, il est inutile de l’indiquer dans l’attribut alt. Le lecteur d’écran risquerait de lire deux fois la même information, générant du bruit inutile. Le mieux est l’ennemi du bien.
- En revanche, si l’image est essentielle à la compréhension, il faut remplir l’attribut alt pour la décrire.
Demandez-vous simplement : si on retire l’image, est-ce que l’information reste compréhensible dans son entièreté ? Ou au contraire est-ce que l’on perd de l’information ? Si retirer l’image ne change rien alors elle n’est pas porteuse de sens et l’attribut alt doit être présent, mais vide.
En partant de ce constat, plusieurs attributs alt ont été corrigés, même si, nombre d’entre eux étant contribués dans les pages article, il en reste sûrement à améliorer.
Les SVG méritent également une attention particulière. Pour les SVG en ligne, il faut là aussi, dissocier ceux qui sont porteurs d’information et ceux qui ne le sont pas. Dans le premier cas, il est nécessaire de fournir une alternative textuelle directement dans le SVG, par exemple à l’aide d’un élément <title>.
<svg role="img">
<title>texte de description</title>
...
</svg>
Dans le deuxième cas, l’attribut aria-hidden="true" doit être ajouté à la balise.
<svg aria-hidden="true">
…
</svg>
Astuce
L’attribut focusable="false" n’est plus nécessaire sur les SVG inline non porteurs de sens à moins que vous ne souhaitiez supporter les navigateurs Internet Explorer et Edge avant 2020 (avant le passage à Chromium).
Info
Critère 4.8 : Chaque média non temporel a-t-il, si nécessaire, une alternative ?
Critère 4.9 : Pour chaque média non temporel ayant une alternative, cette alternative est-elle pertinente ?
Section intitulée rendre-les-formulaires-plus-explicitesRendre les formulaires plus explicites
Lier un champ de formulaire à un libellé est globalement maîtrisé. Mais sur le site de JoliCode, il y a un cas que nous n’avions pas forcément anticipé. Sur la page blog, le formulaire de recherche possède un champ avec un libellé non visible.

Si un label est bien présent dans le code et accessible aux technologies d’assistance grâce à une classe sr-only, il ne satisfait pas le critère 11.1.3 du RGAA :
Info
Chaque champ de formulaire ayant une étiquette dont le contenu n’est pas visible ou à proximité (masqué, aria-label) ou qui n’est pas accolé au champ (aria-labelledby), vérifie-t-il une de ses conditions ?
- Le champ de formulaire possède un attribut
titledont le contenu permet de comprendre la nature de la saisie attendue ; - Le champ de formulaire est accompagné d’un passage de texte accolé au champ qui devient visible à la prise de focus permettant de comprendre la nature de la saisie attendue ;
- Le champ de formulaire est accompagné d’un passage de texte visible accolé au champ permettant de comprendre la nature de la saisie attendue.
Même si le champ possède un placeholder, celui-ci disparaissant au focus, le référentiel demande qu’un autre texte visible indique la fonction du champ de formulaire. Afin d’éviter un changement graphique, j’ai ajouté un attribut title pour répondre au critère.
Section intitulée enseignements-et-perspectivesEnseignements et perspectives
Ces différentes corrections représentent finalement peu d’efforts et de lignes de code pour un gain non négligeable pour de nombreuses personnes. Elles correspondent à des erreurs parmi les plus fréquemment rencontrées :
- le respect des contrastes de couleurs,
- la bonne gestion des alternatives textuelles des images et des SVG,
- une navigation entièrement utilisable au clavier,
- l’ajout d’un lien d’évitement,
- et une meilleure explicitation des formulaires.
Pour autant, ce travail ne suffit pas à rendre un site conforme au RGAA. L’accessibilité reste un sujet transversal qui concerne aussi bien la conception, le design, le développement que la production de contenu. Ces premières améliorations constituent donc moins une finalité qu’un point de départ vers une démarche d’amélioration continue.
Commentaires et discussions
Ces clients ont profité de notre expertise
L’équipe d’Alain Afflelou a choisi JoliCode comme référent technique pour le développement de son nouveau site internet. Ce site web-to-store incarne l’image premium de l’enseigne, met en valeur les collections et offre aux clients de nouvelles expériences et fonctionnalités telles que l’e-réservation, le store locator, le click & collect et l’essayage…
Refonte complète de la plateforme d’annonces immobilières de Cushman & Wakefield France. Connecté aux outils historiques, cette nouvelle vitrine permet une bien meilleure visibilité SEO et permet la mise en avant d’actifs qui ne pouvaient pas l’être auparavant.
Dans le cadre du renouveau de sa stratégie digitale, Orpi France a fait appel à JoliCode afin de diriger la refonte du site Web orpi.com et l’intégration de nombreux nouveaux services. Pour effectuer cette migration, nous nous sommes appuyés sur une architecture en microservices à l’aide de PHP, Symfony, RabbitMQ, Elasticsearch et Docker.