Guide : Responsive Images (srcset)

Comment servir responsive images avec le srcset et sizes attributs et le picture element, quand à utiliser chaque, et comment responsive images corriger LCP et CLS sans étant a direct classement signal.

Première publication : 2 juil. 2026 · Dernière mise à jour : 3 août 2026 · Avancé

Responsive images let le navigateur (via srcset + sizes) or le author (via <picture>) servir le right-sized image per device. srcset/sizes est resolution switching (même image, navigateur picks — a suggestion); <picture> est art direction or format switching (author-dictated crops/formats — a command). La plupart sites seulement besoin srcset/sizes. Ce n’est pas a direct classement signal et il ne fait pas modifier ce que Google indexes — Google indexes le src URL — mais c’est le concrete corriger Lighthouse recommends pour oversized images (son "Properly size images" audit fails à a 4KiB gap) et, paired avec explicit width/height, c’est comment vous empêcher CLS. Garder texte alternatif identical et image URLs stable à travers breakpoints pour indexation mobile-premier. Je reuse le exact srcset + width/height modèle depuis mon Ahrefs CLS article. Nests sous le Image SEO hub.

TL;DR — Deux jobs, un syntax family. srcset/sizes on <img> = resolution switching (même image, navigateur picks meilleur-fit — a suggestion); <picture> = art direction or format switching (author-dictated crops/formats — a command). La plupart sites seulement besoin le premier. Responsive images sont pas a direct classement signal et ne pas modifier ce que Google indexes — Google indexes le src URL, donc garder alt texte, filenames, et image URLs stable à travers breakpoints (indexation mobile-premier). Le réel payoff est Core Web Vitals: right-sizing images est le corriger behind Lighthouse’s “Properly size images” audit (fails à a 4KiB gap), et width/height (or aspect-ratio) — pas srcset — est ce que empêche CLS. ne pas lazy-charger le LCP image. Je reuse le exact srcset + width/height modèle depuis mon Ahrefs CLS piece.

Preuve à l’appui de cette affirmation The HTML responsive-image features srcset, sizes, and picture let browsers select an appropriate image candidate. Portée : Current HTML responsive image behavior. Niveau de confiance : élevé · Vérifié : WHATWG HTML: Responsive images Preuve à l’appui de cette affirmation Google can process responsive images and recommends src as a fallback while using srcset or picture for responsive delivery. Portée : Current Google Images responsive-image guidance. Niveau de confiance : élevé · Vérifié : Google Search Central: Responsive images

Two différent jobs, un syntax family

Tout dans ce topic collapses dans deux mechanisms, et half le confusion out là comes depuis mixing les up:

  1. Resolution switching — le même image à différent sizes or pixel densities. Vous donner le navigateur a menu avec srcset et sizes on le <img>, et le navigateur decides qui fichier à récupérer fondé on le viewport et screen density. Ce est le courant cas.
  2. Art direction — a genuinely différent image per condition: a wide crop on desktop, a tight vertical crop on mobile, or a différent fichier format entirely. Ici vous dictate le choice avec le <picture> element.

Le web.dev Apprendre: Responsive images course frames le difference exactly correct: avec srcset le navigateur obtient suggestions, whereas “le picture element donne commands.” Et le scope-paramètre line worth tattooing on le wall, aussi depuis web.dev: “Vous probably ne va pas besoin à utiliser le picture element pour la plupart de votre responsive images — le srcset et sizes attributs on le img element cover a lot de utiliser cas.” Reach pour <picture> seulement quand vous en réalité besoin a différent image, pas a différent size de le même un.

srcset et sizes — resolution switching

«### w-descriptors vs. x-descriptors » (Traduction) (Résumé en français de la section vingt-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«srcset takes a comma-separated list of candidate files, each tagged with a descriptor. There are two kinds: » (Traduction) (Résumé en français de la section vingt-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«- Width descriptors (w) — you state each file’s intrinsic pixel width (puppy-2000.jpg 2000w). The browser combines that with your sizes value to work out which file best fits the space and the device’s pixel density. This is the flexible option and what you’ll use most of the time. » (Traduction) (Résumé en français de la section vingt-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Pixel-density descriptors (x) — you state which file is for which device pixel ratio (logo.png 1x, logo@2x.png 2x). Use these for fixed-size images (an avatar, a logo) where the displayed size never changes; you don’t need sizes with x descriptors. » (Traduction) (Résumé en français de la section vingt-six, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)

«Rule of thumb: fluid, content-width images → w descriptors + sizes; fixed-size UI images → x descriptors. » (Traduction) (Résumé en français de la section vingt-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Pourquoi sizes matters (and ce que se produit si vous skip it)

Avec w descriptors, sizes n’est pas optional cosmetics — c’est comment le navigateur knows comment big le image va rendre donc il peut choisir avant layout. Per web.dev, sizes “indique le navigateur ce que size vous expect le image à être affiché à sous différent conditions,” as a comma-separated liste de media conditions et widths:

sizes="(max-width: 600px) 480px, 1000px"

Lire il as: “si le viewport est 600px or narrower, le image va être à propos de 480px wide; sinon, à propos de 1000px.” Omit sizes et le navigateur assumes le image fills le complet viewport width (100vw) — donc on a wide screen il peut pull votre largest fichier pour an image c’est en réalité rendu à 400px, quietly defeating le entier point. Manquant sizes est le unique la plupart courant srcset mistake.

ne pas guess à ceux width valeurs depuis le layout dans votre head — vérifier le image’s réel rendu CSS width dans le navigateur (DevTools → Elements → le computed width de le <img> box) à chaque breakpoint vous care à propos de, et définir sizes à match. A sizes valeur que ne fait pas match le réel rendu width encore causes le navigateur à sélectionner le incorrect candidate même though le markup est syntactically correct — syntax validation alone ne va pas catch que; voir le currentSrc vérifier ci-dessous à confirmer ce que en réalité chargé.

Worked exemple (my reusable pattern)

Ce est le exact modèle depuis mon Ahrefs piece, Ce que Est Décalage cumulatif de mise en page (CLS) & Comment Améliorer Il, expanded avec sizes:

<img
  src="puppy-1000.jpg"
  srcset="puppy-1000.jpg 1000w,
          puppy-2000.jpg 2000w,
          puppy-3000.jpg 3000w"
  sizes="(max-width: 600px) 480px, 1000px"
  width="1000" height="1000"
  alt="Puppy with balloons" />

Chaque piece est charger-bearing: src est le fallback et l’URL Google indexes; srcset listes le candidates avec w descriptors; sizes indique le navigateur le rendu width; width/height reserve space (le CLS corriger — plus ci-dessous); alt stays identical aucun matter qui fichier charge.

Le picture element — art direction et format switching

Quand vous en réalité besoin it

Utiliser <picture> pour two choses srcset can’t do:

  1. Art direction — a différent crop per breakpoint. web.dev’s exemple: on a narrow phone vous pourrait servir a tall, tight crop; on a wide desktop, a court, wide un. Même subject, deliberately différent framing.
  2. Format switching — offer AVIF/WebP avec a JPEG fallback via <source type="…">, letting le navigateur prendre le premier format il prend en charge. Ce ties straight back à le format guidance on le Image SEO hub.

Le syntax (et le fallback règle)

Le <picture> element wraps un or plus <source> elements et toujours ends avec a plain <img>:

<!-- Art direction: different crop per breakpoint -->
<picture>
  <source media="(max-width: 600px)" srcset="hero-crop-mobile.jpg">
  <img src="hero-crop-desktop.jpg" width="1200" height="675"
       alt="Product hero shot">
</picture>

<!-- Format switching: modern format with a fallback -->
<picture>
  <source type="image/avif" srcset="hero.avif">
  <source type="image/webp" srcset="hero.webp">
  <img src="hero.jpg" width="1200" height="675" alt="Product hero shot">
</picture>

«That trailing <img src> is not optional. Google states it directly: per section 4.8.1 of the HTML Standard, “make sure that you provide an img element as a fallback with a src attribute when using the picture element.” It’s the file older browsers and crawlers fall back to — and, again, the one Google indexes. » (Traduction) (Résumé en français de la section quarante-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Fait srcset aider SEO? Direct vs. indirect

Ici’s le framing chaque competing guide fumbles, donc je vais être blunt.

«Directly: no. Responsive-image markup is not a ranking signal the way alt text or filenames are for image search. Adding srcset doesn’t lift your positions, and it doesn’t change what appears in Google Images. Google indexes the image referenced in src; the srcset/<picture> variants are a delivery mechanism, not separately indexable assets. Keep your alt text, filename, and structured data attached to that primary src image. » (Traduction) (Résumé en français de la section quarante-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Indirectly: yes, and it’s one of the biggest levers you have. Right-sized images are the most effective concrete fix for two Core Web Vitals — LCP and CLS — which feed Google’s page-experience signals. That’s the whole payoff. It’s the same shape as the WebP/AVIF story on the Image SEO hub: no boost for the format itself, the win is speed. » (Traduction) (Résumé en français de la section quarante-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«## Responsive images and LCP » (Traduction) (Résumé en français de la section quarante-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Oversized images are one of the most common causes of a slow Largest Contentful Paint, and responsive images are Lighthouse’s recommended fix. The Lighthouse “Properly size images” audit lists “all images in your page that aren’t appropriately sized, along with the potential savings” — anything bigger than it needs to be “just results in wasted bytes and slows down page load time.” Its fix, verbatim: “With responsive images, you generate multiple versions of each image, and then specify which version to use in your HTML or CSS using media queries, viewport dimensions, and so on.” » (Traduction) (Résumé en français de la section cinquante, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Two specifics worth knowing: » (Traduction) (Résumé en français de la section cinquante et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«- The failure threshold is 4KiB. Lighthouse only flags an image when “the rendered size is at least 4KiB smaller than the actual size.” Small overshoots don’t count; serving a 3000px file into a 400px slot does. » (Traduction) (Résumé en français de la section cinquante-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- A tooling shortcut. Google recommends RespImageLint, “a helpful bookmarklet for identifying the optimal srcset and sizes values for your images.” Run it before you hand-calculate breakpoints. » (Traduction) (Résumé en français de la section cinquante-deux, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)

«### Don’t lazy-load the LCP image » (Traduction) (Résumé en français de la section cinquante-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«This is the rule people break most. srcset on your hero is fine — but never pair it with lazy loading on the LCP element. The largest above-the-fold image should load eagerly with fetchpriority="high", exactly as the Image SEO hub covers. And when you build a responsive <picture> hero, keep the swap logic native: Google warns that it “won’t load content that requires user interactions” like swiping or clicking, so a JS scheme that only loads the real image after interaction hides it from Google. » (Traduction) (Résumé en français de la section cinquante-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«## Responsive images and CLS » (Traduction) (Résumé en français de la section cinquante-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Here’s the trap: srcset alone does nothing for layout shift. Resolution switching decides which file loads; it doesn’t reserve space for it. Left without dimensions, per web.dev’s Optimize CLS guide, “as images load, text shifts down the page to make room for them” — because the space “can’t be allocated for it until the browser starts to download it and can determine its dimensions.” » (Traduction) (Résumé en français de la section cinquante-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Le corriger est explicit dimensions, et il composes avec responsive markup:

  • Définir width et height attributs on le <img>. Modern navigateurs “définir le par défaut aspect ratio de images fondé on an image’s width et height attributs,” donc ceux deux numbers reserve le correct box avant quelconque srcset variant downloads. (web.dev)
  • Pair les avec height: auto dans CSS pour fluid containers. Ce est le partie que semble contradictory mais n’est pas: web.dev’s propre guidance est à “utiliser CSS à resize le image à le width de le container” et “définir height: auto; à éviter en utilisant a fixed valeur pour le image height.” Le HTML attributs définir le intrinsic aspect ratio; le CSS lets le image scale fluidly. Ensemble ils empêcher CLS et stay responsive.
  • Or utiliser CSS aspect-ratio à reserve le space quand vous pouvez’t définir attributs.

«Which kills a persistent myth: width/height attributes don’t break fluid layouts. Attributes + height: auto is the correct combo, not a conflict. I walk through the full layout-shift mechanics in my Ahrefs CLS article; the short version is “reserve the space so that there’s no shift” and let the image fill it. » (Traduction) (Résumé en français de la section cinquante-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Indexation mobile-first implications

Google indexes primarily le mobile version de votre pages, donc deux règles matter plus que ils utilisé à quand vous êtes diffusion responsive variants:

«- Keep alt text identical across breakpoints. Google’s mobile-first indexing best practices say to “make sure that the mobile site has the same alt text for images as the desktop site.” An art-directed mobile crop must not drop context Google needs. » (Traduction) (Résumé en français de la section soixante-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Keep image URLs stable. Don’t use URLs that change every time the page loads for images. This dovetails with Google’s Image SEO guidance to consistently reference the image with the same URL so it can cache and reuse it. Responsive CDNs that mint a fresh URL per request break this — pin stable URLs for your variants. » (Traduction) (Résumé en français de la section soixante-deux, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)

Google’s propre summary of pourquoi to bother is plain: “designing responsive web pages leads to meilleur utilisateur experience, since personnes peut accès les à travers a plethora of device types.”

Ce que à propos de Bing?

il y a aucun Bing-spécifique guidance on srcset, sizes, or le <picture> element — Bing’s public documentation ne fait pas adresse responsive-image markup à tout. Donc ne pas justify responsive images avec a Bing algorithm hook; le cas est performances et UX, qui Bing (comme Google) treats as page-experience qualité plutôt que quelque chose vous peut point à a documented responsive-images règle pour.

Erreurs fréquentes

  • Forgetting sizes avec w descriptors — le navigateur assumes 100vw et peut récupérer votre biggest fichier pour a petit slot.
  • Dropping le fallback src on <picture> — a spec violation Google explicitly flags, et c’est l’URL robots d’exploration indexer.
  • Mismatched width/height ratio vs. le actually-servi image — encore causes shift.
  • Lazy-loading le LCP hero — delays LCP pour aucun raison; charger il eagerly avec fetchpriority="high".
  • Regenerating image URLs per requête — breaks Google’s mise en cache et le mobile-premier “stable URL” règle.
  • Reaching pour <picture> quand srcset/sizes voudrait faire — unnecessary complexity; web.dev dit la plupart sites ne pas besoin il.

Où ce sits

Ce est le sizing-et-delivery deep dive sous le broader Image SEO hub — le performances half de image SEO, parallel à comment le texte alternatif guide handles le image-recherche half. Pour le layout-shift mechanics dans complet, voir mon Ahrefs CLS article; pour LCP, fetchpriority, et le chargement stratégie, c’est Core Web Vitals fonctionner wearing an image hat.

Ajouter une note d’expert

Épingler une citation d’expert

Nouvelle personne ? Créez son profil non revendiqué à /admin/experts/ → Épingler une citation d’expert d’abord.