Un logo mal intégré en HTML, c’est souvent invisible sur mobile, flou sur écran Retina, ou absent des résultats de recherche d’images. Pourtant, placer un logo dans une page web semble simple — une balise, un fichier image, et c’est parti. La réalité est un peu plus nuancée dès qu’on cherche à bien faire les choses.
Trois grandes approches coexistent : la balise <img> classique, le SVG intégré directement dans le HTML, et le logo affiché via CSS. Chacune a ses cas d’usage, ses contraintes de performance et ses implications SEO. Voici comment choisir — et surtout comment éviter les erreurs qui traînent dans beaucoup de codebases.
La balise <img> : la méthode par défaut
Structure de base et attributs obligatoires
C’est le réflexe naturel de tout développeur débutant, et ce n’est pas une mauvaise chose. La balise <img> reste la solution la plus simple pour afficher un logo HTML :
<img src="logo.svg" alt="Nom de l'entreprise" width="200" height="60">
Trois attributs sont non négociables. Le src pointe vers le fichier. Le alt décrit le logo pour les moteurs de recherche et les lecteurs d’écran — ne le laisse pas vide si le logo est le seul élément de navigation. Les attributs width et height préviennent le Cumulative Layout Shift (CLS), ce décalage visuel qui pénalise le score Core Web Vitals.
Format SVG ou PNG : lequel choisir ?
Le format compte autant que la balise. Pour un logo, SVG gagne presque à tous les coups :
- Rendu parfait à toutes les tailles, y compris sur écrans 4K ou Retina
- Fichier souvent bien plus léger qu’un PNG équivalent (parfois 10× moins)
- Modifiable par CSS (couleur, opacité) sans créer un second fichier
- Indexable par Google en tant que fichier image
Le PNG reste utile pour des logos avec effets complexes, ombres portées ou dégradés difficiles à vectoriser. Dans ce cas, préfère un PNG en 2× (double résolution) servi via l’attribut srcset pour les écrans haute densité.
Le SVG inline : contrôle total, complexité accrue
Intégrer le code SVG directement dans le HTML supprime une requête HTTP et ouvre des possibilités stylistiques impossibles autrement. Le logo devient manipulable par JavaScript et CSS comme n’importe quel élément DOM.
Concrètement, tu remplaces la balise <img> par le contenu brut du fichier SVG :
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 60" aria-label="Nom de l'entreprise" role="img">
<!-- chemins du logo -->
</svg>
Les attributs aria-label et role="img" reproduisent l’accessibilité de l’attribut alt. Sans eux, les lecteurs d’écran ignorent le SVG. C’est l’oubli le plus fréquent sur cette méthode.
Côté inconvénients : le SVG inline n’est pas mis en cache par le navigateur (il fait partie du HTML), et il alourdit visuellement le code source. Pour un logo utilisé sur chaque page, une balise <img src="logo.svg"> classique sera mieux mise en cache. Le SVG inline se justifie surtout quand on veut animer le logo ou changer ses couleurs au hover.
Le logo via CSS : usage et limites
Certains développeurs affichent le logo comme background-image d’un élément vide ou d’un lien :
.logo {
display: block;
width: 200px;
height: 60px;
background: url('logo.svg') no-repeat center;
background-size: contain;
text-indent: -9999px; / masque le texte alternatif /
}
Cette technique était populaire il y a dix ans. Elle pose deux problèmes majeurs aujourd’hui. D’abord, un logo en background CSS n’est pas indexé par Google Images. Ensuite, l’accessibilité repose sur des hacks fragiles. Sauf contrainte technique précise, mieux vaut l’éviter pour un logo principal.
Placer le logo dans le header HTML
Le logo d’une marque vit presque toujours dans l’en-tête de page. La structure sémantique recommandée associe un <header>, un lien vers l’accueil et la balise image :
<header>
<a href="/" aria-label="Retour à l'accueil">
<img src="logo.svg" alt="Nom de l'entreprise" width="200" height="60">
</a>
</header>
Deux points importants ici. Le lien enveloppe le logo — c’est une convention UX que les utilisateurs attendent. L’aria-label sur le lien évite la redondance avec l’alt de l’image lorsque le lien ne contient que le logo. Google interprète ce lien comme le lien de navigation principal vers la page d’accueil : sa présence aide le crawl.
La question de la balise <h1> autour du logo se pose parfois sur la page d’accueil. Sur la page d’accueil uniquement, certains référenceurs la recommandent — mais c’est discutable si un vrai titre H1 textuel existe plus bas. Sur les autres pages, surtout pas de H1 autour du logo.
Logo HTML et identité de marque numérique
Un logo en HTML ne vit pas en vase clos. Il doit coexister avec ses déclinaisons sur toutes les surfaces numériques : favicon, Open Graph, applis mobiles. Le fichier SVG source du logo sert souvent de base à toutes ces déclinaisons.
Les logos numériques ont une histoire et une logique propres, notamment sur les plateformes sociales. Si tu veux comprendre comment les grandes marques gèrent leurs identités visuelles en ligne, le dossier Logos des réseaux sociaux : histoire, évolution et usages offre un éclairage concret sur les contraintes de format et les évolutions graphiques imposées par chaque plateforme.
La favicon mérite une attention particulière. Elle se déclare dans le <head> du HTML :
<link rel="icon" href="favicon.ico">pour les navigateurs legacy<link rel="icon" type="image/svg+xml" href="favicon.svg">pour les navigateurs modernes<link rel="apple-touch-icon" href="apple-touch-icon.png">pour iOS
Un SVG comme favicon s’adapte automatiquement aux thèmes sombre/clair du système d’exploitation via une media query intégrée dans le fichier. C’est l’une des rares situations où la complexité supplémentaire vaut vraiment le coup.
Performances et SEO : ce qui change vraiment
Les moteurs de recherche lisent l’alt du logo, mais ils lui accordent un poids sémantique faible — ce n’est pas là que se joue le référencement d’une page. Ce qui compte davantage, c’est la performance de chargement.
Quelques règles simples font une vraie différence :
- Ajouter
loading="lazy"uniquement sur les logos hors viewport initial (footer, partenaires) — jamais sur le logo du header, qui doit se charger immédiatement - Optimiser le SVG avec un outil comme SVGO avant de le mettre en production (réduction souvent de 30 à 60% du poids)
- Précharger le logo du header via
<link rel="preload" as="image" href="logo.svg">si la police ou d’autres ressources bloquent son affichage - Servir le fichier avec un en-tête
Cache-Controllongue durée (1 an) et un fingerprint dans le nom de fichier
La gestion de la présence visuelle d’une marque sur le web dépasse le simple logo HTML. Les stratégies éditoriales sur les Réseaux sociaux, par exemple, imposent des formats d’image et des contraintes de recadrage que le fichier SVG source doit anticiper dès la phase de design.
Un dernier point souvent négligé : le mode sombre. Un logo noir sur fond blanc devient illisible quand l’utilisateur active le thème sombre de son OS. La solution la plus propre utilise une media query CSS :
@media (prefers-color-scheme: dark) {
.logo img {
filter: invert(1);
}
}
Cette approche fonctionne pour les logos monochrome. Pour les logos polychromes, mieux vaut prévoir deux versions du fichier et les switcher via la balise <picture> avec une source conditionnelle sur la media query.
Questions fréquentes
Quelle taille recommander pour un logo en HTML ?
Il n’existe pas de taille universelle, mais la plupart des headers desktop affichent un logo entre 150 et 250 px de largeur pour 40 à 80 px de hauteur. Ce qui compte surtout, c’est de renseigner les attributs width et height dans la balise <img> pour que le navigateur réserve l’espace avant le chargement et évite les décalages de mise en page (CLS). Avec un SVG, la taille d’affichage se contrôle librement par CSS sans perte de qualité.
Est-ce que l’attribut alt du logo influence le référencement ?
Oui, mais de façon marginale pour le SEO de page. L’attribut alt du logo est surtout utile pour l’accessibilité (lecteurs d’écran) et pour l’indexation dans Google Images. Il doit contenir le nom de la marque ou de l’entreprise, sans bourrage de mots-clés. Google identifie le logo d’un site via le balisage Schema.org Organization avec la propriété logo, ce qui a plus d’impact sur le Knowledge Panel que l’attribut alt seul.
Comment déclarer le logo d’un site dans les données structurées ?
Google recommande d’ajouter un script JSON-LD avec le type Organization dans le <head> de la page d’accueil. La propriété logo pointe vers l’URL absolue du fichier image. Par exemple : "logo": "https://exemple.fr/logo.png". Ce balisage aide Google à afficher le logo dans le Knowledge Panel et dans les résultats enrichis. L’image doit faire au moins 112 × 112 pixels et être accessible publiquement.
Peut-on animer un logo SVG intégré en HTML ?
Oui, c’est précisément l’avantage du SVG inline. On peut animer les chemins, couleurs ou opacités via CSS (@keyframes) ou JavaScript sans dépendre d’un GIF ou d’une vidéo. Les animations CSS sur SVG sont légères et fluides. En revanche, un SVG chargé via <img src> ou background-image ne peut pas être animé par le CSS de la page : seules les animations internes au fichier SVG (<animate>) fonctionnent dans ce cas.
Comment gérer un logo en mode sombre avec HTML et CSS ?
Deux approches : pour un logo monochrome, un simple filter: invert(1) dans une media query prefers-color-scheme: dark suffit. Pour un logo polychrome, la balise <picture> permet de servir une version claire ou sombre selon le thème détecté — on déclare une source avec la media (prefers-color-scheme: dark) pointant vers une variante du fichier. Cette seconde méthode est plus propre graphiquement mais nécessite de maintenir deux fichiers.