ITSkillsCenter
Design & UX

Comment optimiser les images pour le web (WebP, AVIF)

11 min de lecture

Pourquoi l’optimisation des images est critique pour vos performances web

Les images représentent en moyenne 50-70% du poids total d’une page web. Un site de 3 Mo dont 2 Mo sont des images met 8-12 secondes à charger sur une connexion 3G — la réalité de beaucoup d’utilisateurs au Sénégal en dehors de Dakar. Google a confirmé que la vitesse de chargement est un facteur de classement SEO direct, et que 53% des visiteurs mobiles abandonnent une page qui met plus de 3 secondes à charger.

Optimiser vos images correctement peut réduire le poids de votre site de 60-80% sans perte de qualité visible. Le retour sur investissement est immédiat : pages plus rapides, meilleur SEO, moins de data consommée par vos visiteurs, et une meilleure expérience utilisateur.

Les formats d’image modernes : JPEG, WebP, AVIF

JPEG — Le format historique

Créé en 1992, le JPEG reste le format le plus universel. Il utilise une compression avec perte (lossy) : chaque compression dégrade légèrement l’image. Support : 100% des navigateurs et appareils.

Quand l’utiliser : En fallback pour les navigateurs anciens, pour les emails (compatibilité universelle), et quand WebP/AVIF ne sont pas supportés.

Qualité optimale : 75-85% pour le web. En dessous de 70%, les artefacts de compression deviennent visibles (blocs, halos autour du texte). Au-dessus de 85%, le gain de qualité est imperceptible mais le fichier grossit significativement.

WebP — Le standard moderne

Développé par Google, WebP offre une compression 25-35% meilleure que JPEG à qualité visuelle équivalente. Il supporte aussi la transparence (comme PNG) et l’animation (comme GIF), le tout dans un seul format.

Support navigateur : 97%+ en 2025 (Chrome, Firefox, Safari, Edge, Opera). Seuls les très anciens navigateurs ne le supportent pas.

Comparaison concrète :

Photo produit 1920×1080 :
- JPEG qualité 80% : 245 Ko
- WebP qualité 80% : 165 Ko (-33%)
- WebP qualité 75% : 128 Ko (-48%, qualité visuellement identique)

Image avec transparence :
- PNG : 890 Ko
- WebP : 210 Ko (-76%)

Quand l’utiliser : Pour toutes les images de votre site web. C’est le format par défaut recommandé en 2025.

AVIF — La nouvelle génération

AVIF (AV1 Image File Format) offre une compression 50% meilleure que JPEG et 20% meilleure que WebP. Basé sur le codec vidéo AV1, c’est le format le plus efficace disponible aujourd’hui.

Support navigateur : ~92% en 2025 (Chrome, Firefox, Opera, Edge). Safari supporte AVIF depuis iOS 16 / macOS Ventura. Le support grandit rapidement.

Comparaison concrète :

Photo produit 1920×1080 :
- JPEG qualité 80% : 245 Ko
- WebP qualité 80% : 165 Ko
- AVIF qualité 80% : 105 Ko (-57% vs JPEG, -36% vs WebP)

Résultat : la même image pèse 2.3x moins en AVIF qu'en JPEG

Inconvénients : L’encodage AVIF est plus lent (2-5x plus lent que WebP), ce qui peut poser problème pour le traitement en temps réel de beaucoup d’images. Certains outils de design ne l’ouvrent pas encore nativement.

PNG — Pour la transparence et les graphiques

Le PNG utilise une compression sans perte (lossless). Chaque pixel est préservé exactement. C’est le format idéal pour les logos, icônes, captures d’écran et illustrations avec des aplats de couleur et du texte.

Quand l’utiliser : Logos sur fond transparent (mais préférez SVG si possible), captures d’écran avec du texte, images où chaque pixel compte. Pour les photos, le PNG est toujours surdimensionné — utilisez WebP ou AVIF.

SVG — Le vectoriel pour le web

Le SVG n’est pas un format d’image bitmap mais un format vectoriel basé sur du XML. Il est infiniment redimensionnable sans perte de qualité et pèse souvent moins de 5 Ko.

Utilisation idéale : Logos, icônes, illustrations simples, graphiques, animations légères. Un logo en SVG de 3 Ko remplace un PNG de 50 Ko et reste net sur un écran 4K.

La stratégie d’optimisation complète

Étape 1 : Dimensionner correctement

C’est l’optimisation la plus impactante et la plus négligée. Une image de 4000×3000px affichée en 800×600px gaspille 96% de ses pixels. Le navigateur télécharge un fichier 25 fois plus gros que nécessaire.

Règle : L’image doit être dimensionnée à 2x sa taille d’affichage maximale (pour les écrans Retina). Si votre image s’affiche en 400px de large, exportez-la en 800px.

Tailles recommandées par usage :
- Hero/Banner pleine largeur : 1920px (max 2560px pour 4K)
- Image dans le contenu : 800-1200px
- Miniature/card : 400-600px
- Avatar : 200-300px
- Favicon : 32×32 et 192×192 (pour PWA)

Étape 2 : Choisir le bon format

Arbre de décision :

L'image est-elle un logo, icône ou illustration simple ?
  → OUI → SVG (vectoriel, < 5Ko, redimensionnable)
  → NON ↓

L'image nécessite-t-elle une transparence ?
  → OUI → WebP avec transparence (ou PNG en fallback)
  → NON ↓

C'est une photo ou image complexe ?
  → OUI → AVIF en premier choix, WebP en fallback, JPEG en dernier recours
  → NON ↓

C'est une capture d'écran avec du texte ?
  → OUI → PNG (préserve la netteté du texte) ou WebP lossless
  → NON → WebP par défaut

Étape 3 : Servir le format optimal avec <picture>

L'élément HTML <picture> permet de proposer plusieurs formats et laisser le navigateur choisir le meilleur :

<picture>
  <!-- Le navigateur essaie AVIF d'abord -->
  <source srcset="image.avif" type="image/avif">
  <!-- Puis WebP -->
  <source srcset="image.webp" type="image/webp">
  <!-- Fallback JPEG pour les vieux navigateurs -->
  <img src="image.jpg" alt="Description de l'image" 
       width="800" height="600" loading="lazy">
</picture>

Le navigateur télécharge uniquement le premier format qu'il supporte. Pas de téléchargement superflu.

Étape 4 : Images responsives avec srcset

Servez différentes tailles selon l'écran du visiteur. Un mobile n'a pas besoin d'une image de 1920px :

<img 
  srcset="image-400.webp 400w,
          image-800.webp 800w,
          image-1200.webp 1200w,
          image-1920.webp 1920w"
  sizes="(max-width: 600px) 100vw,
         (max-width: 1200px) 50vw,
         800px"
  src="image-800.webp"
  alt="Description"
  width="800" height="600"
  loading="lazy"
>

Explication : Sur un mobile (< 600px), l'image occupe 100% de la largeur : le navigateur choisit image-400.webp. Sur une tablette, 50% de la largeur : image-800.webp. Sur desktop : image-800.webp (taille fixe de 800px).

Étape 5 : Lazy loading

Le lazy loading retarde le chargement des images hors écran. L'utilisateur ne télécharge que ce qu'il voit :

<!-- Natif HTML — aucun JavaScript nécessaire -->
<img src="image.webp" alt="..." loading="lazy" width="800" height="600">

<!-- IMPORTANT : ne PAS mettre loading="lazy" sur les images above-the-fold -->
<!-- (hero, logo, première image visible) — elles doivent charger immédiatement -->

<!-- Pour les images critiques above-the-fold, utilisez plutôt : -->
<img src="hero.webp" alt="..." loading="eager" fetchpriority="high">

Impact : Sur une page avec 20 images, le lazy loading réduit le chargement initial de 60-80%. Le visiteur voit la page instantanément et les images se chargent au fur et à mesure du scroll.

Outils d'optimisation : du gratuit au professionnel

Outils en ligne gratuits

  • Squoosh.app (Google) — Le meilleur outil gratuit. Comparaison avant/après en temps réel, tous les formats (JPEG, WebP, AVIF, PNG), contrôle granulaire de la qualité. Fonctionne 100% dans le navigateur — aucun upload sur un serveur
  • TinyPNG / TinyJPG — Compression automatique drag-and-drop. Supporte PNG, JPEG et WebP. Gratuit pour 20 images/jour (max 5 Mo chacune). API disponible pour l'automatisation
  • SVGOMG — Optimisation de fichiers SVG. Réduit la taille de 30-60% en supprimant les métadonnées et en simplifiant les chemins

Outils en ligne de commande

# Sharp (Node.js) — Le plus rapide et polyvalent
npm install sharp

# Script de conversion batch
const sharp = require('sharp');
const fs = require('fs');
const path = require('path');

async function optimizeImages(inputDir, outputDir) {
  const files = fs.readdirSync(inputDir);
  
  for (const file of files) {
    if (!/.(jpg|jpeg|png)$/i.test(file)) continue;
    
    const input = path.join(inputDir, file);
    const name = path.parse(file).name;
    
    // WebP
    await sharp(input)
      .resize(1920, null, { withoutEnlargement: true })
      .webp({ quality: 80 })
      .toFile(path.join(outputDir, name + '.webp'));
    
    // AVIF
    await sharp(input)
      .resize(1920, null, { withoutEnlargement: true })
      .avif({ quality: 65 })
      .toFile(path.join(outputDir, name + '.avif'));
    
    // JPEG optimisé (fallback)
    await sharp(input)
      .resize(1920, null, { withoutEnlargement: true })
      .jpeg({ quality: 80, mozjpeg: true })
      .toFile(path.join(outputDir, name + '.jpg'));
  }
}

optimizeImages('./images/raw', './images/optimized');

Plugins WordPress

Si votre site est sur WordPress (comme beaucoup de sites sénégalais), ces plugins automatisent l'optimisation :

  • ShortPixel — Compression automatique à l'upload. Conversion WebP/AVIF avec fallback automatique. 100 crédits/mois gratuits. Le meilleur rapport qualité/prix pour WordPress
  • Imagify — Par les créateurs de WP Rocket. Interface simple, 3 niveaux de compression (normal, agressif, ultra). 20 Mo/mois gratuits
  • Smush — Gratuit avec compression illimitée (mais limitée en agressivité). Version Pro ajoute WebP et CDN. Bon pour les petits budgets
  • EWWW Image Optimizer — Optimisation locale (pas d'envoi vers un serveur externe). Idéal pour la confidentialité des images. Conversion WebP incluse dans la version gratuite

Optimisations avancées

CDN d'images (Image CDN)

Un CDN d'images optimise, redimensionne et sert vos images automatiquement depuis des serveurs proches de vos visiteurs :

  • Cloudflare Images — Inclus dans le plan gratuit de Cloudflare (Polish + WebP automatique). Si votre site utilise déjà Cloudflare (recommandé pour tout site sénégalais), activez simplement Polish dans les paramètres
  • Cloudinary — Transformations d'images à la volée via l'URL. Redimensionnement, format, qualité, effets — tout se contrôle dans l'URL. 25 000 transformations/mois gratuites
  • imgix — CDN d'images performant avec des paramètres d'URL puissants. Utilisé par des sites à fort trafic. Payant mais très rapide
Exemple Cloudinary — une URL fait tout :
https://res.cloudinary.com/monsite/image/upload/
  w_800,        // Largeur 800px
  q_auto,       // Qualité automatique
  f_auto,       // Format automatique (AVIF/WebP/JPEG selon le navigateur)
  c_fill,       // Recadrage intelligent
  g_auto        // Point focal automatique (détection de visage)
  /mon-image.jpg

Placeholder et chargement progressif

Pendant le chargement des images, l'utilisateur voit un espace vide. Améliorez l'expérience avec des placeholders :

  • LQIP (Low Quality Image Placeholder) — Une version minuscule (20-30px de large, ~200 octets) de l'image, floutée et affichée en grand. L'utilisateur voit un aperçu coloré au lieu du vide
  • BlurHash — Un hash de 20-30 caractères qui encode une version ultra-compacte de l'image. Parfait pour les apps et SPAs : stockez le hash en base de données, décodez côté client instantanément
  • Couleur dominante — Extrayez la couleur dominante de l'image et utilisez-la comme fond du placeholder. Simple et efficace
  • Skeleton loading — Un rectangle gris animé avec un effet de pulsation. L'approche la plus simple, sans traitement d'image nécessaire

Attributs width et height : éviter le CLS

Spécifiez TOUJOURS les attributs width et height sur vos images. Sans eux, le navigateur ne connaît pas la taille de l'image avant son chargement, ce qui cause un décalage de layout (CLS — Cumulative Layout Shift) pénalisé par Google :

<!-- MAUVAIS — cause un layout shift -->
<img src="photo.webp" alt="Photo">

<!-- BON — le navigateur réserve l'espace -->
<img src="photo.webp" alt="Photo" width="800" height="600">

<!-- BON — avec CSS responsive -->
<style>
img {
  max-width: 100%;
  height: auto; /* Respecte le ratio grâce à width/height */
}
</style>
<img src="photo.webp" alt="Photo" width="800" height="600">

<!-- MODERNE — aspect-ratio CSS -->
<style>
.hero-image {
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
}
</style>

Checklist d'optimisation rapide

  • ☐ Toutes les images sont dimensionnées à 2x leur taille d'affichage max
  • ☐ Format WebP par défaut, AVIF si possible, JPEG en fallback
  • ☐ Qualité : 75-80% pour WebP, 60-70% pour AVIF, 80-85% pour JPEG
  • ☐ Logos et icônes en SVG (pas en PNG)
  • ☐ loading="lazy" sur toutes les images sauf above-the-fold
  • ☐ fetchpriority="high" sur l'image hero/LCP
  • ☐ Attributs width et height sur toutes les images
  • ☐ Balise <picture> avec sources AVIF → WebP → JPEG
  • ☐ srcset pour les images responsives
  • ☐ Plugin WordPress d'optimisation installé et configuré
  • ☐ Score Lighthouse Performance > 90

L'optimisation des images est probablement l'action avec le meilleur retour sur investissement pour la performance de votre site web. En 30 minutes de configuration (plugin WordPress + quelques règles CSS), vous pouvez réduire le poids de vos pages de 50-70%. Pour vos visiteurs sénégalais sur mobile, c'est la différence entre un site qui charge en 2 secondes et un qui met 10 secondes — et entre un visiteur qui reste et un qui part chez la concurrence.

#images #optimisation #webp
Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 350.000 FCFA
Parlons de Votre Projet
Publicité

Articles Similaires