Imágenes Responsivas (srcset)

Cómo servir imágenes responsivas con los atributos srcset y sizes y el elemento picture, cuándo usar cada uno, y cómo las imágenes responsivas corrigen LCP y CLS sin ser una señal de clasificación directa.

Publicado por primera vez: 2 jul 2026 · Última actualización: 13 ago 2026 · Avanzado
Idiomas

Las imágenes responsivas permiten que el navegador (mediante srcset + sizes) o el autor (mediante <picture>) sirvan la imagen del tamaño adecuado según el dispositivo. srcset/sizes es cambio de resolución (misma imagen, el navegador elige — una sugerencia); <picture> es dirección de arte o cambio de formato (recortes o formatos dictados por el autor — un comando). La mayoría de los sitios solo necesitan srcset/sizes. Esto no es una señal de clasificación directa y no cambia lo que Google indexa — Google indexa la URL src — pero es la solución concreta que Lighthouse recomienda para imágenes sobredimensionadas (su auditoría "Properly size images" falla con una diferencia de 4KiB) y, junto con width/height explícitos, es cómo se previene el CLS. Mantén el texto alternativo idéntico y las URLs de las imágenes estables entre puntos de interrupción para la indexación móvil. Reutilizo el patrón exacto de srcset + width/height de mi artículo sobre CLS en Ahrefs. Se anida bajo el centro de SEO de Imágenes.

TL;DR — Dos trabajos, una familia de sintaxis. srcset/sizes en <img> = cambio de resolución (misma imagen, el navegador elige la mejor opción — una sugerencia); <picture> = dirección de arte o cambio de formato (recortes/formato dictados por el autor — un comando). La mayoría de los sitios solo necesitan la primera. Las imágenes responsive no son una señal de posicionamiento directa y no cambian lo que Google indexa — Google indexa la URL src, así que mantén el texto alt, los nombres de archivo y las URLs de imagen estables en todos los puntos de interrupción (indexación móvil primero). El beneficio real son los Core Web Vitals: dimensionar correctamente las imágenes es la solución detrás de la auditoría “Properly size images” de Lighthouse (falla con una brecha de 4 KiB), y width/height (o aspect-ratio) — no srcset — es lo que previene el CLS. No cargues de forma diferida la imagen LCP. Reutilizo el patrón exacto de srcset + width/height de mi artículo sobre CLS en Ahrefs.

Evidence for this claim The HTML responsive-image features srcset, sizes, and picture let browsers select an appropriate image candidate. Scope: Current HTML responsive image behavior. Confidence: high · Verified: WHATWG HTML: Responsive images Evidence for this claim Google can process responsive images and recommends src as a fallback while using srcset or picture for responsive delivery. Scope: Current Google Images responsive-image guidance. Confidence: high · Verified: Google Search Central: Responsive images

Dos trabajos diferentes, una familia de sintaxis

Todo en este tema se reduce a dos mecanismos, y la mitad de la confusión que hay por ahí viene de mezclarlos:

  1. Cambio de resolución — la misma imagen en diferentes tamaños o densidades de píxeles. Le das al navegador un menú con srcset y sizes en el <img>, y el navegador decide qué archivo descargar según la ventana gráfica y la densidad de pantalla. Este es el caso común.
  2. Dirección de arte — una imagen genuinamente diferente por condición: un recorte ancho en escritorio, un recorte vertical ajustado en móvil, o un formato de archivo completamente distinto. Aquí dictas la elección con el elemento <picture>.

El curso web.dev Learn: Responsive images plantea la diferencia exactamente bien: con srcset el navegador recibe sugerencias, mientras que “el elemento picture da comandos.” Y la frase que define el alcance y que vale la pena tatuarse en la pared, también de web.dev: “You probably won’t need to use the picture element for most of your responsive images — the srcset and sizes attributes on the img element cover a lot of use cases.” (traducción) «Probablemente no necesitarás usar el elemento picture para la mayoría de tus imágenes responsivas — los atributos srcset y sizes en el elemento img cubren muchos casos de uso.» Recurre a <picture> solo cuando realmente necesites una imagen diferente, no un tamaño diferente de la misma.

srcset y sizes — cambio de resolución

Descriptores w frente a descriptores x

srcset acepta una lista separada por comas de archivos candidatos, cada uno etiquetado con un descriptor. Hay dos tipos:

  • Descriptores de ancho (w) — indicas el ancho de píxeles intrínseco de cada archivo (puppy-2000.jpg 2000w). El navegador combina eso con tu valor de sizes para determinar qué archivo se ajusta mejor al espacio y a la densidad de píxeles del dispositivo. Esta es la opción flexible y la que usarás la mayor parte del tiempo.
  • Descriptores de densidad de píxeles (x) — indicas qué archivo es para cada relación de píxeles del dispositivo (logo.png 1x, logo@2x.png 2x). Úsalos para imágenes de tamaño fijo (un avatar, un logo) donde el tamaño mostrado nunca cambia; no necesitas sizes con descriptores x.

Regla general: imágenes fluidas de ancho de contenido → descriptores w + sizes; imágenes de interfaz de tamaño fijo → descriptores x.

Por qué importa sizes (y qué pasa si lo omites)

Con descriptores w, sizes no es cosmética opcional — es cómo el navegador sabe qué tan grande se renderizará la imagen para poder elegir antes del layout. Según web.dev, sizes “tells the browser what size you expect the image to be displayed at under different conditions,” (traducción) «indica al navegador a qué tamaño esperas que se muestre la imagen en distintas condiciones», como una lista separada por comas de condiciones de medios y anchos:

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

Léelo como: “si la ventana gráfica es de 600px o menos, la imagen tendrá unos 480px de ancho; de lo contrario, unos 1000px.” Omite sizes y el navegador asume que la imagen llena todo el ancho de la ventana gráfica (100vw) — así que en una pantalla ancha puede descargar tu archivo más grande para una imagen que en realidad se renderiza a 400px, anulando silenciosamente todo el propósito. Faltar sizes es el error de srcset más común.

No adivines esos valores de ancho desde el layout en tu cabeza — verifica el ancho CSS real renderizado de la imagen en el navegador (DevTools → Elements → el ancho calculado de la caja del <img>) en cada punto de interrupción que te importe, y configura sizes para que coincida. Un valor de sizes que no coincide con el ancho renderizado real aún hace que el navegador seleccione el candidato incorrecto aunque el marcado sea sintácticamente correcto — la validación de sintaxis por sí sola no detectará eso; consulta la verificación de currentSrc abajo para confirmar qué se cargó realmente.

Ejemplo práctico (mi patrón reutilizable)

Este es el patrón exacto de mi artículo en Ahrefs, What Is Cumulative Layout Shift (CLS) & How To Improve It, expandido con 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" />

Cada pieza es esencial: src es el respaldo y la URL que Google indexa; srcset lista los candidatos con descriptores w; sizes le dice al navegador el ancho renderizado; width/height reservan espacio (la solución para CLS, más abajo); alt permanece idéntico sin importar qué archivo se cargue.

El elemento picture: dirección de arte y cambio de formato

Cuándo realmente lo necesitas

Usa <picture> para dos cosas que srcset no puede hacer:

  1. Dirección de arte: un recorte diferente por punto de interrupción. El ejemplo de web.dev: en un teléfono estrecho podrías servir un recorte alto y ajustado; en un escritorio ancho, uno corto y ancho. Mismo sujeto, encuadre deliberadamente diferente.
  2. Cambio de formato: ofrece AVIF/WebP con un respaldo JPEG mediante <source type="…">, dejando que el navegador tome el primer formato que soporte. Esto se conecta directamente con la guía de formatos en el centro de SEO de imágenes.

La sintaxis (y la regla del respaldo)

El elemento <picture> envuelve uno o más elementos <source> y siempre termina con un <img> simple:

<!-- 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>

Ese <img src> final no es opcional. Google lo afirma directamente: según la sección 4.8.1 del estándar HTML, “make sure that you provide an img element as a fallback with a src attribute when using the picture element.” (traducción) «Asegúrate de proporcionar un elemento img como respaldo con un atributo src cuando uses el elemento picture». Es el archivo al que recurren los navegadores antiguos y los rastreadores, y, de nuevo, el que Google indexa.

¿Ayuda srcset al SEO? Directo vs. indirecto

Aquí está el enfoque que todas las guías competidoras fallan, así que seré directo.

Directamente: no. El marcado de imágenes responsivas no es una señal de clasificación como lo son el texto alt o los nombres de archivo para la búsqueda de imágenes. Agregar srcset no eleva tus posiciones, y no cambia lo que aparece en Google Imágenes. Google indexa la imagen referenciada en src; las variantes srcset/<picture> son un mecanismo de entrega, no activos indexables por separado. Mantén tu texto alt, nombre de archivo y datos estructurados adjuntos a esa imagen src principal.

Indirectamente: sí, y es una de las mayores palancas que tienes. Las imágenes con el tamaño correcto son la solución concreta más efectiva para dos Core Web Vitals: LCP y CLS, que alimentan las señales de experiencia de página de Google. Ese es todo el beneficio. Tiene la misma forma que la historia de WebP/AVIF en el centro de SEO de imágenes: sin impulso para el formato en sí, la ganancia es velocidad.

Imágenes responsivas y LCP

Las imágenes sobredimensionadas son una de las causas más comunes de un Largest Contentful Paint lento, y las imágenes responsivas son la solución recomendada por Lighthouse. La auditoría de Lighthouse “Properly size images” lista “all images in your page that aren’t appropriately sized, along with the potential savings” (traducción) «todas las imágenes en tu página que no tienen el tamaño adecuado, junto con los ahorros potenciales» — cualquier cosa más grande de lo necesario “just results in wasted bytes and slows down page load time.” (traducción) «solo resulta en bytes desperdiciados y ralentiza el tiempo de carga de la página». Su solución, textualmente: “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.” (traducción) «Con imágenes responsivas, generas múltiples versiones de cada imagen y luego especificas qué versión usar en tu HTML o CSS mediante consultas de medios, dimensiones de viewport, etc.»

Dos detalles que vale la pena conocer:

  • El umbral de fallo es 4KiB. Lighthouse solo marca una imagen cuando “the rendered size is at least 4KiB smaller than the actual size.” (traducción) «el tamaño renderizado es al menos 4KiB más pequeño que el tamaño real». Los excesos pequeños no cuentan; servir un archivo de 3000px en un espacio de 400px sí.
  • Un atajo de herramientas. Google recomienda RespImageLint, “a helpful bookmarklet for identifying the optimal srcset and sizes values for your images.” (traducción) «un bookmarklet útil para identificar los valores óptimos de srcset y sizes para tus imágenes». Ejecútalo antes de calcular manualmente los puntos de interrupción.

No cargues perezosamente la imagen LCP

Esta es la regla que la gente más incumple. srcset en tu hero está bien, pero nunca lo combines con carga diferida en el elemento LCP. La imagen más grande visible sin desplazamiento debe cargarse de forma eager con fetchpriority="high", exactamente como cubre el centro de SEO de imágenes. Y cuando construyas un hero responsivo con <picture>, mantén la lógica de intercambio nativa: Google advierte que “no cargará contenido que requiera interacciones del usuario” como deslizar o hacer clic, por lo que un esquema JS que solo carga la imagen real después de la interacción la oculta de Google.

Imágenes responsivas y CLS

Aquí está la trampa: srcset por sí solo no hace nada por el desplazamiento del diseño. El cambio de resolución decide qué archivo se carga; no reserva espacio para él. Sin dimensiones, según la guía de Optimización de CLS de web.dev, “a medida que las imágenes se cargan, el texto se desplaza hacia abajo en la página para hacerles espacio” — porque el espacio “no se puede asignar hasta que el navegador comienza a descargarlo y puede determinar sus dimensiones.”

La solución son dimensiones explícitas, y se combina con el marcado responsivo:

  • Establece los atributos width y height en el <img>. Los navegadores modernos “establecen la relación de aspecto predeterminada de las imágenes basándose en los atributos width y height de la imagen”, por lo que esos dos números reservan el cuadro correcto antes de que se descargue cualquier variante de srcset. (web.dev)
  • Combínalos con height: auto en CSS para contenedores fluidos. Esta es la parte que parece contradictoria pero no lo es: la propia guía de web.dev es “usar CSS para redimensionar la imagen al ancho del contenedor” y “establecer height: auto; para evitar usar un valor fijo para la altura de la imagen.” Los atributos HTML establecen la relación de aspecto intrínseca; el CSS permite que la imagen se escale fluidamente. Juntos previenen el CLS y siguen siendo responsivos.
  • O usa aspect-ratio en CSS para reservar el espacio cuando no puedas establecer atributos.

Lo que acaba con un mito persistente: los atributos width/height no rompen los diseños fluidos. Atributos + height: auto es la combinación correcta, no un conflicto. Explico la mecánica completa del desplazamiento del diseño en mi artículo de CLS de Ahrefs; la versión corta es “reserva el espacio para que no haya desplazamiento” y deja que la imagen lo llene.

Implicaciones de la indexación móvil primero

Google indexa principalmente la versión móvil de tus páginas, por lo que dos reglas importan más que antes cuando sirves variantes responsivas:

El propio resumen de Google de por qué molestarse es claro: “diseñar páginas web responsivas conduce a una mejor experiencia de usuario, ya que las personas pueden acceder a ellas en una gran variedad de tipos de dispositivos.”

¿Y Bing?

No existe una guía específica de Bing sobre srcset, sizes o el elemento <picture> — la documentación pública de Bing no aborda el marcado de imágenes responsivas en absoluto. Así que no justifiques las imágenes responsivas con un gancho de algoritmo de Bing; el caso es el rendimiento y la UX, que Bing (como Google) trata como calidad de experiencia de página en lugar de algo que puedas señalar a una regla documentada de imágenes responsivas.

Errores comunes

  • Olvidar sizes con descriptores w — el navegador asume 100vw y puede descargar tu archivo más grande para un espacio pequeño.
  • Omitir el src de respaldo en <picture> — una violación de especificación que Google señala explícitamente, y es la URL que los rastreadores indexan.
  • Proporción width/height desajustada vs. la imagen realmente servida — sigue causando desplazamiento.
  • Carga diferida del hero LCP — retrasa el LCP sin razón; cárgalo de forma eager con fetchpriority="high".
  • Regenerar URLs de imagen por solicitud — rompe el caché de Google y la regla de “URL estable” mobile-first.
  • Recurrir a <picture> cuando srcset/sizes bastarían — complejidad innecesaria; web.dev dice que la mayoría de los sitios no lo necesitan.

Dónde encaja esto

Esta es la inmersión profunda en dimensionamiento y entrega bajo el hub más amplio de SEO de imágenes — la mitad de rendimiento del SEO de imágenes, en paralelo a cómo la guía de texto alternativo maneja la mitad de búsqueda de imágenes. Para los mecanismos completos de desplazamiento de diseño, consulta mi artículo de Ahrefs sobre CLS; para LCP, fetchpriority y la estrategia de carga, eso es trabajo de Core Web Vitals con sombrero de imagen.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.