
SVG et accessibilité : valider title, desc et structure sans casser l'optimisation
Icônes décoratives vs informatives : règles WCAG, balises title/desc et validation rapide en ligne.
Pourquoi l'accessibilité SVG compte avant l'optimisation
Un SVG optimisé à −60 % ne sert à rien si un lecteur d'écran annonce « image » sans contexte, ou si une icône décorative pollue la navigation vocale. Les règles WCAG distinguent les SVG décoratifs (masqués aux technologies d'assistance) des SVG informatifs (titre ou description requis). L'validateur SVG en ligne de FastMinify vérifie la syntaxe, la présence de viewBox et l'absence de <title> / <desc> — avec des avertissements conseillés, pas un audit WCAG complet. Le tout tourne dans le navigateur sur le hub outils SVG, en amont ou après optimize SVG. Pour le contexte presets SVGO, voir l'article SVGO presets expliqués.
Exemples concrets : icônes UI et inline
Un bouton « Supprimer » avec une poubelle SVG à gauche du texte : le SVG reçoit <code>aria-hidden="true"</code>, pas de title. validate-svg affichera un warning title/desc — attendu. L'accessibilité repose sur le texte du bouton, pas sur l'icône.
Avant optimisation
Après optimisation
Un badge « succès » ou « erreur » représenté uniquement par un SVG doit avoir <code><title>Succès</title></code> ou un <code>aria-label</code> explicite sur le composant. validate-svg confirme la présence du texte ; testez ensuite au clavier et au lecteur d'écran.
Bonnes pratiques : WCAG, optimize et design system
Intégrez validate-svg dans votre revue d'assets — surtout pour les icônes livrées par des designers sans test AT.
Le preset aggressive peut fusionner des paths ou retirer des IDs — rarement title/desc, mais toujours comparer visuellement. svg-to-jsx conserve le markup ; vérifiez que title/desc restent premiers enfants du <svg> dans le composant React.
FastMinify validate-svg est un filet de sécurité structurel, pas un substitut à un audit accessibilité de page entière. Contrastes, focus clavier, ordre de tabulation et alternatives longues restent votre responsabilité ou celle d'outils dédiés.
Quand l'outil navigateur suffit
Pas besoin d'installer svgo-cli ou un linter a11y lourd pour vérifier un export Figma avant merge.
Compléter avec la CI et les audits AT
Les tests automatisés de page (Pa11y, axe-core en CI, Lighthouse accessibility) couvrent le DOM rendu — pas seulement le fichier SVG source. Gardez validate-svg en amont sur les assets ; ajoutez des tests E2E avec lecteur d'écran pour les parcours critiques.
Utilisez le même preset SVGO en preview navigateur et en CI. Après optimize en pipeline, extrayez un échantillon et passez-le dans validate-svg manuellement — voir <a href="/fr/blog/svgo-presets-optimiser-svg-web" class="text-primary hover:underline">SVGO presets</a> et le <a href="/fr/blog/guide-optimisation-svg-web" class="text-primary hover:underline">guide optimisation SVG</a>.
Outils complémentaires
FastMinify validate-svg cible le markup SVG source. D'autres outils couvrent la page rendue ou des normes plus larges.
FastMinify validate-svg
Syntaxe XML, viewBox, title/desc — navigateur, sans compte.
Avantages :
Inconvénients :
axe DevTools / WAVE
Extensions navigateur pour audit accessibilité DOM.
Avantages :
Inconvénients :
SVGO + validate manuel
Pipeline CLI classique sans validate-svg.
Avantages :
Inconvénients :
Décoratif vs informatif : les règles de base
Une icône à côté d'un libellé visible (« Enregistrer », « Fermer ») n'apporte pas d'information supplémentaire : elle est purement visuelle. WCAG recommande de la masquer aux lecteurs d'écran avec <code>aria-hidden="true"</code> sur le <code><svg></code>, ou un <code>role="presentation"</code> équivalent. Dans ce cas, <code><title></code> et <code><desc></code> sont inutiles — voire contre-productifs s'ils doublonnent le texte adjacent.
Un pictogramme seul (statut erreur sans texte, graphique inline, logo lien sans alt texte) doit transmettre son sens. Options : <code><title></code> et optionnellement <code><desc></code> comme premiers enfants du <code><svg></code>, ou <code>role="img"</code> + <code>aria-label</code> / <code>aria-labelledby</code> sur l'élément SVG ou son wrapper React.
L'outil parse le markup XML, exige une racine <code><svg></code>, signale un <code>viewBox</code> manquant (warning) et l'absence de texte dans <code><title></code> ou <code><desc></code> (warning). Ce sont des contrôles structurels de base — pas une simulation lecteur d'écran, pas de contraste couleur, pas de validation ARIA complexe. Pour un audit complet, complétez avec axe DevTools ou WAVE en plus du validateur navigateur.
Workflow FastMinify : valider, corriger, optimiser
Ouvrez l'outil validate SVG, collez votre markup ou chargez un fichier .svg. Les erreurs bloquent la livraison (XML invalide) ; les warnings vous invitent à ajouter viewBox ou texte descriptif selon le cas d'usage.
Pour une icône informative, ajoutez par exemple <title>Erreur</title> juste après l'ouverture du <svg>. Si width/height existent sans viewBox, déduisez-en un (viewBox="0 0 24 24") ou passez par resize-svg sur le hub. Le beautifier SVG aide à relire la structure après édition.
Une fois la structure validée, passez à l'optimiseur SVGO (preset safe ou default pour les icônes UI). FastMinify préserve <title> et <desc> sur les trois presets — relancez validate-svg après optimize pour confirmer. Le minificateur SVG rapide ne touche qu'aux espaces et commentaires.
Conclusion
L'accessibilité SVG commence par une décision claire : décoratif (aria-hidden, pas de title) ou informatif (title/desc ou aria-label). validate-svg vous aide à sécuriser la syntaxe et la structure avant optimize SVGO — sans prétendre remplacer un audit complet. Enchaînez validation, optimisation et re-validation sur le hub SVG pour livrer des icônes légères et utilisables par tous.
Articles connexes

Convertissez vos icônes SVG en composants React/JSX, optimisez-les avec SVGO et intégrez-les proprement dans votre design system.

Safe, default ou aggressive ? Choisissez le bon preset SVGO, optimisez vos SVG pour la prod et évitez les régressions visuelles.

Vérifiez la structure de vos `compose.yml` et `.env` avant `docker compose up` — validation locale dans le navigateur, sans installer d'outils.