Que sont les Core Web Vitals ?
Les Core Web Vitals sont 3 métriques essentielles définies par Google pour mesurer l'expérience utilisateur réelle d'un site web : vitesse de chargement, interactivité et stabilité visuelle.
Pourquoi Google a créé les Core Web Vitals
Problème : Métriques techniques traditionnelles (temps chargement complet) ne reflètent pas expérience utilisateur perçue.
Solution : 3 métriques centrées utilisateur :
- LCP : "Quand puis-je voir le contenu principal ?"
- INP : "Quand puis-je interagir avec la page ?"
- CLS : "Les éléments bougent-ils de manière gênante ?"
Impact Business :
- 📉 100ms LCP supplémentaires = -1% conversion (Amazon)
- 📈 LCP amélioré de 4s → 2s = +15-20% conversions
- 🚀 Sites Core Web Vitals "Good" = 24% moins d'abandons page
Les 3 Core Web Vitals Détaillés
1. LCP (Largest Contentful Paint)
Définition : Temps nécessaire pour que le plus grand élément de contenu visible soit complètement affiché à l'écran.
Éléments LCP typiques
- Image hero/banner principal
- Vidéo thumbnail
- Bloc de texte principal (article, product description)
- Image background large avec texte
Seuils de Performance
| Statut | Temps LCP | Couleur Google |
|---|---|---|
| Good (Bon) | ≤ 2.5 secondes | 🟢 Vert |
| Needs Improvement | 2.5 - 4.0 secondes | 🟠 Orange |
| Poor (Mauvais) | > 4.0 secondes | 🔴 Rouge |
Causes LCP Lent
- Temps réponse serveur lent (TTFB élevé)
- Images non optimisées (taille fichier massive, format ancien)
- Render-blocking JavaScript/CSS
- Fonts custom non optimisées
- Ressources tierces lentes (analytics, ads, widgets)
Solutions Optimisation LCP
1. Optimiser Images
- ✅ Format moderne : WebP ou AVIF (30-50% plus léger que JPEG/PNG)
- ✅ Compression : Squoosh.app, TinyPNG, ImageOptim
- ✅ Dimensions appropriées : Ne pas charger 4000×3000px si affichage 800×600px
- ✅ Lazy loading SAUF LCP :
<img loading="eager">pour image LCP - ✅ Preload image LCP :
<link rel="preload" as="image" href="hero.webp"> - ✅ Responsive images :
srcsetpour différentes tailles écran
2. Optimiser Serveur
- ✅ CDN : Cloudflare, AWS CloudFront (serveurs proches utilisateurs)
- ✅ Cache : Browser cache, server-side cache (Redis, Varnish)
- ✅ TTFB <600ms : Optimiser database queries, hosting performant
- ✅ HTTP/2 ou HTTP/3 : Multiplexing amélioré
3. Éliminer Render-Blocking
- ✅ CSS critique inline : Critical CSS dans
<head> - ✅ Defer JavaScript :
<script defer>ou<script async> - ✅ Minify CSS/JS : Supprimer espaces, commentaires
4. Fonts Optimisées
- ✅ Font-display: swap : Afficher texte immédiatement (fallback font)
- ✅ Preload fonts critiques :
<link rel="preload" as="font"> - ✅ WOFF2 : Format moderne compressé
- ✅ Subset fonts : Uniquement caractères nécessaires
2. INP (Interaction to Next Paint)
Définition : Mesure réactivité page aux interactions utilisateur (clics, touches clavier, taps). Remplace progressivement FID depuis 2024.
Différence INP vs FID
- FID (First Input Delay) : Mesurait UNIQUEMENT première interaction
- INP : Mesure TOUTES les interactions durant vie de page (plus représentatif)
Seuils Performance INP
| Statut | Temps INP |
|---|---|
| Good | ≤ 200ms |
| Needs Improvement | 200 - 500ms |
| Poor | > 500ms |
Causes INP Élevé
- JavaScript bloquant main thread (long tasks)
- Event handlers lourds
- Layout recalculations complexes
- Scripts tiers excessifs (ads, analytics, chat widgets)
Solutions Optimisation INP
1. Minimiser JavaScript
- ✅ Code splitting : Charger uniquement JS nécessaire par page
- ✅ Tree shaking : Supprimer code inutilisé (Webpack, Rollup)
- ✅ Defer non-critical JS
- ✅ Web Workers : Déplacer calculs lourds hors main thread
2. Optimiser Event Handlers
- ✅ Debounce/Throttle : Limiter fréquence exécution (scroll, resize)
- ✅ Passive event listeners :
addEventListener('scroll', handler, {passive: true}) - ✅ Yield to main thread :
setTimeout(() => {}, 0)pour long tasks
3. Audit Scripts Tiers
- ✅ Charger async : Google Analytics, Facebook Pixel en asynchrone
- ✅ Lazy load non-critiques : Chat widgets après 5s inactivité
- ✅ Supprimer inutiles : 1 analytics suffit (pas 5 simultanés)
4. Utiliser RequestIdleCallback
// Exécuter tâches non-urgentes pendant temps libre navigateur
if ('requestIdleCallback' in window) {
requestIdleCallback(() => {
// Code non-critique (analytics, prefetch)
});
} else {
setTimeout(() => {
// Fallback
}, 1000);
}
3. CLS (Cumulative Layout Shift)
Définition : Mesure stabilité visuelle page. Combien d'éléments bougent de manière inattendue durant chargement ?
Expérience CLS Mauvais (frustration utilisateur)
- Commence lire article → Image charge → texte saute 300px vers bas
- Veut cliquer bouton "Acheter" → Publicité apparaît → clique sur pub par erreur
- Remplit formulaire → Élément se déplace → perd focus input
Seuils Performance CLS
| Statut | Score CLS |
|---|---|
| Good | ≤ 0.1 |
| Needs Improvement | 0.1 - 0.25 |
| Poor | > 0.25 |
Causes CLS Élevé
- Images sans dimensions (width/height non spécifiés)
- Ads/embeds/iframes sans espace réservé
- Fonts web causant FOIT/FOUT (Flash of Invisible/Unstyled Text)
- Contenu injecté dynamiquement (JavaScript ajoute éléments)
- Animations CSS mal configurées
Solutions Optimisation CLS
1. Dimensions Explicites Images/Vidéos
<!-- ❌ MAUVAIS : Pas de dimensions -->
<img src="photo.jpg" alt="Photo">
<!-- ✅ BON : Dimensions explicites -->
<img src="photo.jpg" alt="Photo" width="800" height="600">
<!-- ✅ BON : Responsive avec aspect-ratio -->
<img src="photo.jpg" alt="Photo"
style="width: 100%; height: auto; aspect-ratio: 16/9;">
2. Réserver Espace Ads/Embeds
<!-- ❌ MAUVAIS : Iframe sans dimensions -->
<iframe src="video.html"></iframe>
<!-- ✅ BON : Container avec dimensions fixes -->
<div style="width: 100%; aspect-ratio: 16/9;">
<iframe src="video.html" style="width: 100%; height: 100%;"></iframe>
</div>
3. Optimiser Fonts
/* ❌ MAUVAIS : FOIT (texte invisible) */
@font-face {
font-family: 'CustomFont';
src: url('font.woff2');
}
/* ✅ BON : font-display swap (texte visible immédiatement) */
@font-face {
font-family: 'CustomFont';
src: url('font.woff2');
font-display: swap;
}
4. Éviter Injection Contenu Above-Fold
- ❌ Ne pas insérer banners/popups au-dessus contenu existant
- ✅ Réserver espace avec
min-heightsi nécessaire - ✅ Injecter contenu en bas page uniquement
5. Utiliser CSS transform/opacity pour Animations
/* ❌ MAUVAIS : Anime top/left (trigger layout) */
.element {
transition: top 0.3s;
}
/* ✅ BON : Anime transform (pas de layout shift) */
.element {
transition: transform 0.3s;
transform: translateY(20px);
}
Outils de Mesure et Diagnostic
Toolkit Core Web Vitals
1. PageSpeed Insights (Google - Gratuit)
URL : pagespeed.web.dev
Fonctionnalités :
- Scores Core Web Vitals (LCP, INP, CLS)
- Données field (utilisateurs réels) + lab (simulation)
- Recommandations optimisation spécifiques
- Mobile ET desktop séparés
Quand utiliser : Audit initial, suivi mensuel
2. Chrome DevTools (Gratuit)
Lighthouse tab :
- Audit complet (Performance, Accessibility, SEO, Best Practices)
- Core Web Vitals scores
- Diagnostics détaillés avec screenshots
Performance tab :
- Recording timeline détaillé
- Identifier long tasks (>50ms)
- Layout shifts visualisés
3. Google Search Console (Gratuit)
Rapport Core Web Vitals :
- Données utilisateurs réels (Field Data) par page
- Groupes URLs avec problèmes similaires
- Évolution temporelle
- Mobile vs Desktop séparé
Avantage : Données réelles trafic, pas simulation
4. Chrome UX Report (CrUX) (Gratuit)
Dashboard : Looker Studio CrUX
Données agrégées Chrome anonymes, par site ou origine
5. WebPageTest (Gratuit)
URL : webpagetest.org
Points forts :
- Tests depuis multiples locations mondiales
- Throttling connexion (3G, 4G, etc.)
- Filmstrip visuel chargement
- Waterfall détaillé toutes ressources
6. GTmetrix (Freemium)
URL : gtmetrix.com
Avantages :
- Interface user-friendly
- Tests automatisés planifiés
- Comparaisons historiques
- Alertes email si dégradation
7. SpeedCurve / Calibre (Payant)
Usage : Monitoring continu entreprise
- Surveillance 24/7
- Alertes dégradation temps réel
- Budgets performance (alertes si dépassés)
- Comparaisons concurrence
Prix : 20-200$/mois selon volume
Checklist Optimisation Complète
Plan d'Action Performance
Semaine 1 : Audit
- PageSpeed Insights (mobile + desktop)
- Google Search Console - Rapport Core Web Vitals
- Identifier pages prioritaires (trafic élevé)
- Lister problèmes critiques par métrique
Semaine 2 : Quick Wins LCP
- Compresser images (WebP/AVIF)
- Preload image LCP
- Activer compression GZIP/Brotli serveur
- Implémenter CDN
- Minify CSS/JS
Semaine 3 : Optimisations INP
- Audit scripts tiers (supprimer inutiles)
- Defer JavaScript non-critique
- Code splitting (charger uniquement nécessaire)
- Debounce event handlers lourds
Semaine 4 : Fix CLS
- Ajouter width/height toutes images
- Réserver espace ads/embeds
- Font-display: swap pour fonts custom
- Éviter injection contenu above-fold
Maintenance Continue
- Monitoring mensuel Google Search Console
- Audit performance après chaque déploiement majeur
- Budgets performance (alertes si LCP >2.5s)
- Tests sur connexion lente (throttling 3G)
Conclusion : Performance = SEO + UX + Conversions
Optimiser les Core Web Vitals n'est pas qu'une question de ranking Google — c'est un investissement direct dans conversions et satisfaction utilisateur. Un site rapide génère plus de revenus, point final.
ROI Optimisation Performance
Études de cas réels
- Vodafone : LCP -31% → Ventes +8%
- Renault : LCP -1s → Conversions +14%
- Trainline : LCP optimisé → Revenus +£11M/an
- COOK : LCP -1.9s → Conversions +7%, Bounce -7%
Objectifs Cibles par Industrie
| Industrie | LCP Cible | Priorité |
|---|---|---|
| E-commerce | < 2.0s | Critique |
| Média/Actualités | < 2.5s | Élevée |
| SaaS B2B | < 3.0s | Moyenne |
| Blog/Contenu | < 2.5s | Élevée |
Rappelez-vous : Google utilise données RÉELLES utilisateurs (Field Data) pour ranking, pas simulations lab. Priorisez optimisations ayant impact mesurable sur expérience réelle.