Panduan Responsive Images (srcset)

cara sajikan responsive images dengan srcset dan sizes attributes dan picture element, ketika untuk gunakan setiap, dan bagaimana responsive images perbaiki LCP dan CLS tanpa menjadi sebuah direct sinyal peringkat.

Pertama kali diterbitkan: 2 Jul 2026 · Terakhir diperbarui: 3 Agu 2026 · Lanjutan

Responsive images let browser (melalui srcset + sizes) atau author (melalui <picture>) sajikan right-sized image per device. srcset/sizes adalah resolution switching (sama image, browser picks — sebuah suggestion); <picture> adalah art direction atau format switching (author-dictated crops/formats — sebuah command). sebagian besar situs hanya perlu srcset/sizes. ini adalah tidak sebuah direct sinyal peringkat dan ini tidak perubahan apa Google indeks — Google indeks src URL — tetapi ini adalah concrete perbaiki Lighthouse recommends untuk oversized images (-nya "Properly size images" _(terjemahan)_ “Properly size images” audit fails di sebuah 4KiB kesenjangan) dan, paired dengan jelas width/height, ini adalah bagaimana Anda mencegah CLS. pertahankan teks alt identical dan image URLs stable di seluruh breakpoints untuk pengindeksan mobile-pertama. I reuse tepat srcset + width/height pattern dari my Ahrefs CLS artikel. Nests di bawah Image SEO hub.

TL;DR — Dua jobs, satu syntax family. srcset/sizes pada <img> = resolution switching (sama image, browser picks best-fit — sebuah suggestion); <picture> = art direction atau format switching (author-dictated crops/formats — sebuah command). sebagian besar situs hanya perlu pertama. Responsive images adalah tidak sebuah direct sinyal peringkat dan jangan perubahan apa Google indeks — Google indeks src URL, so pertahankan alt text, filenames, dan image URLs stable di seluruh breakpoints (pengindeksan mobile-pertama). nyata payoff adalah Core Web Vitals: right-sizing images adalah perbaiki behind Lighthouse’s “Properly size images” (terjemahan) “Properly size images” audit (fails di sebuah 4KiB kesenjangan), dan width/height (atau aspect-ratio) — tidak srcset — adalah apa mencegah CLS. jangan lazy-muat LCP image. I reuse tepat srcset + width/height pattern dari my Ahrefs CLS piece.

Bukti untuk klaim ini The HTML responsive-image features srcset, sizes, and picture let browsers select an appropriate image candidate. Cakupan: Current HTML responsive image behavior. Tingkat keyakinan: tinggi · Diverifikasi: WHATWG HTML: Responsive images Bukti untuk klaim ini Google can process responsive images and recommends src as a fallback while using srcset or picture for responsive delivery. Cakupan: Current Google Images responsive-image guidance. Tingkat keyakinan: tinggi · Diverifikasi: Google Search Central: Responsive images

Dua berbeda jobs, satu syntax family

Semuanya di ini topic collapses ke dua mechanisms, dan half confusion out di sana muncul dari mixing them up:

  1. Resolution switching — yang sama image di berbeda sizes atau pixel densities. Anda memberikan browser sebuah menu dengan srcset dan sizes pada <img>, dan * browser* decides yang file untuk fetch berdasarkan viewport dan screen density. ini adalah umum case.
  2. Art direction — sebuah genuinely berbeda image per condition: sebuah wide crop pada desktop, sebuah tight vertical crop pada mobile, atau sebuah berbeda file format entirely. Di sini Anda dictate pilihan dengan <picture> element.

web.dev Learn: Responsive images course frames perbedaan persis right: dengan srcset browser mendapatkan suggestions, whereas “itu picture element memberikan commands.” (terjemahan) “ tidak terdefinisi element memberikan commands.” dan cakupan-setting line worth tattooing pada wall, juga dari web.dev: “Anda probably tidak akan perlu untuk gunakan itu picture element untuk paling dari Anda responsive images — itu srcset dan sizes attributes pada itu img element cover a lot dari gunakan cases.” (terjemahan) “Anda probably tidak akan perlu untuk gunakan tidak terdefinisi element untuk sebagian besar dari Anda responsive images — tidak terdefinisi dan tidak terdefinisi attributes pada tidak terdefinisi element cover sebuah lot dari gunakan cases.” Reach untuk <picture> hanya ketika Anda sebenarnya perlu sebuah berbeda image, tidak sebuah berbeda size dari yang sama satu.

srcset dan sizes — resolution switching

w-descriptors vs. x-descriptors

srcset takes sebuah comma-separated list dari candidate files, setiap tagged dengan sebuah descriptor. ada dua jenis:

  • Width descriptors (w) — Anda state setiap file’s intrinsic pixel width (puppy-2000.jpg 2000w). browser combines itu dengan Anda sizes nilai untuk berfungsi out yang file best fits space dan device’s pixel density. ini adalah flexible option dan apa Anda’ll gunakan sebagian besar dari time.
  • Pixel-density descriptors (x) — Anda state yang file adalah untuk yang device pixel ratio (logo.png 1x, logo@2x.png 2x). gunakan ini untuk fixed-size images (sebuah avatar, sebuah logo) di mana displayed size tidak pernah perubahan; Anda tidak perlu sizes dengan x descriptors.

aturan dari thumb: fluid, konten-width images → w descriptors + sizes; fixed-size UI images → x descriptors.

Mengapa sizes penting (dan apa happens jika Anda skip ini)

dengan w descriptors, sizes tidak opsional cosmetics — ini adalah bagaimana browser knows bagaimana big image akan render so ini dapat choose sebelum layout. Per web.dev, sizes “tells itu browser apa size Anda expect itu image untuk menjadi displayed di under berbeda conditions,” (terjemahan) “tells browser apa size Anda expect image untuk menjadi displayed di di bawah berbeda conditions,” sebagai sebuah comma-separated list dari media conditions dan widths:

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

Baca ini sebagai: “jika itu viewport adalah 600px atau lebih sempit, itu image akan menjadi tentang 480px wide; jika tidak, tentang 1000px.” (terjemahan) “jika viewport adalah 600px atau lebih sempit, image akan menjadi tentang 480px wide; jika tidak, tentang 1000px.” Omit sizes dan browser assumes image fills penuh viewport width (100vw) — so pada sebuah wide screen ini dapat pull Anda largest file untuk sebuah image itu’s sebenarnya rendering di 400px, diam-diam defeating seluruh poin. Missing sizes adalah single sebagian besar umum srcset mistake.

jangan guess di itu width nilai dari layout di Anda head — periksa image’s sebenarnya dirender CSS width di browser (DevTools → Elements → computed width dari <img> box) di setiap breakpoint Anda care tentang, dan set sizes untuk match. sebuah sizes nilai itu tidak match nyata dirender width masih penyebab browser untuk select wrong candidate bahkan though markup adalah syntactically correct — syntax validation alone tidak akan catch itu; see currentSrc periksa di bawah untuk konfirmasi apa sebenarnya dimuat.

Worked contoh (my reusable pattern)

ini adalah tepat pattern dari my Ahrefs piece, Apa adalah Cumulative Layout Shift (CLS) & cara meningkatkan ini, expanded dengan 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" />

setiap piece adalah muat-bearing: src adalah fallback dan URL Google indeks; srcset lists candidates dengan w descriptors; sizes tells browser dirender width; width/height reserve space ( CLS perbaiki — lebih di bawah); alt tetap identical Tidak penting yang file memuat.

picture element — art direction dan format switching

Ketika Anda sebenarnya perlu ini

gunakan <picture> untuk dua hal srcset dapat’t melakukan:

  1. Art direction — sebuah berbeda crop per breakpoint. web.dev’s contoh: pada sebuah sempit phone Anda mungkin sajikan tall, tight crop; pada sebuah wide desktop, sebuah pendek, wide satu. sama subject, dengan sengaja berbeda framing.
  2. Format switching — offer AVIF/WebP dengan sebuah JPEG fallback melalui <sumber jenis="…">, letting browser take pertama format ini mendukung. ini ties straight back untuk format guidance pada Image SEO hub.

syntax (dan fallback aturan)

<picture> element wraps satu atau lebih <source> elements dan selalu ends dengan sebuah 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. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian empat puluh empat, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

melakukan srcset help SEO? Direct vs. indirect

Di sini’s framing setiap competing guide fumbles, so I’ll menjadi blunt.

Secara langsung: Tidak. Responsive-image markup adalah tidak sebuah sinyal peringkat cara teks alt atau filenames adalah untuk pencarian gambar. menambahkan srcset tidak lift Anda positions, dan ini tidak perubahan apa muncul di Google Images. Google indeks image referenced di src; srcset/<picture> variants adalah sebuah pengiriman mechanism, tidak secara terpisah dapat diindeks assets. pertahankan alt text, filename, dan data terstruktur attached untuk itu utama src image.

Indirectly: Ya, dan ini adalah satu dari biggest levers Anda memiliki. Right-sized images adalah paling effective concrete perbaiki untuk dua Core Web Vitals — LCP dan CLS — yang feed Google’s halaman-experience sinyal. itu’s seluruh payoff. ini adalah yang sama shape sebagai WebP/AVIF story pada Image SEO hub: Tidak boost untuk format itself, win adalah speed.

Responsive images dan LCP

Oversized images adalah satu dari paling umum penyebab dari sebuah slow Largest Contentful Paint, dan responsive images adalah Lighthouse’s recommended perbaiki. Lighthouse “Properly size images” (terjemahan) “Properly size images” audit lists “all images in your page that aren’t appropriately sized, along with the potential savings” (terjemahan) “semua images di Anda halaman itu tidak appropriately sized, along dengan potential savings” — apa pun bigger daripada ini perlu untuk menjadi “just results in wasted bytes and slows down page load time.” (terjemahan) “hanya hasil di wasted bytes dan slows down pemuatan halaman time.” -nya perbaiki, 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.” (terjemahan) “dengan responsive images, Anda generate multiple versi dari setiap image, dan lalu specify yang versi untuk gunakan di Anda HTML atau CSS menggunakan media kueri, viewport dimensions, dan so pada.”

Dua specifics worth knowing:

«- 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.

  • 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. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima puluh dua, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

jangan lazy-muat LCP image

ini adalah aturan orang break sebagian besar. srcset pada Anda hero adalah fine — tetapi tidak pernah pair ini dengan lazy memuat pada LCP element. largest di atas—fold image seharusnya muat eagerly dengan fetchpriority="high", persis sebagai Image SEO hub covers. dan ketika Anda bangun responsive <picture> hero, pertahankan tukar logic native: Google warns itu ini “tidak akan load konten itu requires user interactions” (terjemahan) “tidak akan muat konten itu memerlukan pengguna interactions” like swiping atau clicking, so sebuah JS scheme itu hanya memuat nyata image setelah interaction hides ini dari Google.

Responsive images dan CLS

Di sini’s trap: srcset alone melakukan tidak ada apa pun untuk layout shift. Resolution switching decides yang file memuat; ini tidak reserve space untuk ini. Left tanpa dimensions, per web.dev’s mengoptimalkan CLS guide, “sebagai images load, text shifts down itu halaman untuk membuat room untuk them” (terjemahan) “sebagai images muat, text shifts down halaman untuk membuat room untuk them” — karena space “tidak dapat menjadi allocated untuk it until itu browser dimulai untuk download it dan dapat determine its dimensions.” (terjemahan) “dapat’t menjadi allocated untuk ini until browser dimulai untuk download ini dan dapat determine -nya dimensions.”

perbaiki adalah jelas dimensions, dan ini composes dengan responsive markup:

  • Set width dan height attributes pada <img>. Modern browser “set itu default aspect ratio dari images based pada an image’s width dan height attributes,” (terjemahan) “atur default aspect ratio dari images berdasarkan sebuah image’s tidak terdefinisi dan tidak terdefinisi attributes,” so itu dua angka reserve right box sebelum apa pun srcset variant downloads. (web.dev)
  • Pair them dengan height: auto di CSS untuk fluid containers. ini adalah bagian itu looks contradictory tetapi tidak: web.dev’s own guidance adalah untuk “gunakan CSS untuk resize itu image untuk itu width dari itu container” (terjemahan) “gunakan CSS untuk resize image untuk width dari container” dan “set height: auto; untuk avoid menggunakan a fixed value untuk itu image height.” (terjemahan) “set tidak terdefinisi untuk hindari menggunakan sebuah fixed nilai untuk image height.” HTML attributes atur intrinsic aspect ratio; CSS lets image scale fluidly. Together mereka mencegah CLS dan stay responsive.
  • atau gunakan CSS aspect-ratio untuk reserve space ketika Anda dapat’t set attributes.

Yang kills sebuah persistent myth: width/height attributes jangan break fluid layouts. Attributes + height: auto adalah correct combo, tidak sebuah conflict. I walk melalui penuh layout-shift mechanics di my Ahrefs CLS artikel; pendek versi adalah “reserve the space so that there’s no shift” (terjemahan) “reserve space so itu ada Tidak shift” dan let image fill ini.

pengindeksan mobile-pertama implications

Google indeks primarily mobile versi dari Anda halaman, so dua aturan penting lebih daripada mereka digunakan untuk ketika Anda’re serving 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. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian enam puluh dua, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.) «- 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. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian enam puluh dua, bagian kecil dua: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

Google’s own summary dari mengapa untuk bother adalah plain: “designing responsive web pages leads to better user experience, since people can access them across a plethora of device types.” (terjemahan) “designing responsive halaman web leads untuk better pengguna experience, since orang dapat access them di seluruh sebuah plethora dari device jenis.”

Apa tentang Bing?

ada Tidak Bing-spesifik guidance pada srcset, sizes, atau <picture> element — Bing’s publik documentation tidak address responsive-image markup di semua. So jangan justify responsive images dengan sebuah Bing algorithm hook; case adalah performa dan UX, yang Bing (like Google) memperlakukan sebagai halaman-experience quality alih-alih sesuatu Anda dapat poin di sebuah terdokumentasi responsive-images aturan untuk.

umum mistakes

  • Forgetting sizes dengan w descriptors — browser assumes 100vw dan dapat fetch Anda biggest file untuk sebuah kecil slot.
  • Dropping fallback src pada <picture> — sebuah spec violation Google explicitly flags, dan ini adalah URL crawler indeks.
  • Mismatched width/height ratio vs. sebenarnya-disajikan image — masih penyebab shift.
  • Lazy-memuat LCP hero — delays LCP untuk Tidak alasan; muat ini eagerly dengan fetchpriority="high".
  • Regenerating image URLs per permintaan — breaks Google’s caching dan mobile-pertama “stable URL” (terjemahan) “stable URL” aturan.
  • Reaching untuk <picture> ketika srcset/sizes akan melakukan — unnecessary complexity; web.dev says sebagian besar situs jangan perlu ini.

Di mana ini sits

ini adalah sizing-dan-pengiriman deep dive di bawah lebih luas Image SEO hub — performa half dari image SEO, parallel untuk bagaimana teks alt guide menangani image-penelusuran half. untuk layout-shift mechanics di penuh, see my Ahrefs CLS artikel; untuk LCP, fetchpriority, dan memuat strategy, itu’s Core Web Vitals berfungsi wearing sebuah image hat.

Tambahkan catatan pakar

Sematkan kutipan pakar

Orang baru? Buat profilnya yang belum diklaim di /admin/experts/ → Sematkan kutipan pakar terlebih dahulu.