{"id":3889,"date":"2026-10-09T11:43:07","date_gmt":"2026-10-09T09:43:07","guid":{"rendered":"https:\/\/mantenimientoweb.pro\/blog\/como-migrar-todas-las-imagenes-de-una-web-html-a-formatos-de-nueva-generacion-webp-avif\/"},"modified":"2026-10-09T11:43:09","modified_gmt":"2026-10-09T09:43:09","slug":"como-migrar-todas-las-imagenes-de-una-web-html-a-formatos-de-nueva-generacion-webp-avif","status":"publish","type":"post","link":"https:\/\/mantenimientoweb.pro\/blog\/como-migrar-todas-las-imagenes-de-una-web-html-a-formatos-de-nueva-generacion-webp-avif\/","title":{"rendered":"\u00bfC\u00f3mo migrar todas las im\u00e1genes de una web HTML a formatos de nueva generaci\u00f3n (WebP, AVIF)?"},"content":{"rendered":"<p><main><\/p>\n<article>\n<header>\n<p>\n      <span>\ud83d\ude80 Rendimiento web<\/span><br \/>\n      <span>\ud83d\uddbc\ufe0f WebP y AVIF<\/span><br \/>\n      <span>\ud83d\udd10 Mantenimiento t\u00e9cnico<\/span><br \/>\n      <span>\ud83d\udcc8 SEO t\u00e9cnico<\/span>\n    <\/p>\n<p>    C\u00f3mo migrar todas las im\u00e1genes de una web HTML a formatos de nueva generaci\u00f3n: WebP y AVIF<\/p>\n<p>\n      Una web lenta no siempre grita. A veces susurra: una imagen de 2 MB aqu\u00ed, un banner olvidado all\u00e1, un PNG heroico cargando como si a\u00fan vivi\u00e9ramos en 2009. Migrar im\u00e1genes a WebP y AVIF no es una moda est\u00e9tica; es una operaci\u00f3n quir\u00fargica sobre el peso, la velocidad y la experiencia de usuario de un sitio web.\n    <\/p>\n<\/header>\n<p>\n    Hay algo casi tierno en una p\u00e1gina HTML antigua cargando fotograf\u00edas enormes, como un burro noble arrastrando un piano por una cuesta. Funciona, s\u00ed. Pero a qu\u00e9 precio. En una \u00e9poca en la que los usuarios abandonan una p\u00e1gina si tarda demasiado y Google mide el rendimiento con una severidad de notario cansado, seguir sirviendo im\u00e1genes pesadas en JPEG o PNG sin estrategia es una forma muy educada de perder tr\u00e1fico.\n  <\/p>\n<p>\n    WebP y AVIF son formatos de imagen modernos dise\u00f1ados para reducir el tama\u00f1o de los archivos manteniendo una calidad visual alta. Dicho sin incienso t\u00e9cnico: permiten que tu web cargue m\u00e1s r\u00e1pido, consuma menos ancho de banda y mejore m\u00e9tricas como el <strong>LCP<\/strong>, uno de los indicadores clave de los <strong>Core Web Vitals<\/strong>. Pero migrar todas las im\u00e1genes de una web HTML no consiste en \u201cconvertir archivos y rezar\u201d. La fe mueve monta\u00f1as, pero no actualiza rutas relativas ni configura cabeceras HTTP.\n  <\/p>\n<h2>Mapa r\u00e1pido del proceso \ud83e\udded<\/h2>\n<ol>\n<li>Auditar todas las im\u00e1genes actuales.<\/li>\n<li>Decidir qu\u00e9 formatos usar: WebP, AVIF o ambos.<\/li>\n<li>Crear una copia de seguridad completa.<\/li>\n<li>Convertir las im\u00e1genes con herramientas fiables.<\/li>\n<li>Actualizar el HTML con <code>&lt;picture&gt;<\/code>, <code>srcset<\/code> o sustituci\u00f3n directa.<\/li>\n<li>Configurar fallback para navegadores y casos especiales.<\/li>\n<li>Optimizar cach\u00e9, CDN, lazy loading y dimensiones.<\/li>\n<li>Validar calidad visual, SEO, accesibilidad y rendimiento.<\/li>\n<li>Automatizar el flujo para futuras im\u00e1genes.<\/li>\n<\/ol>\n<h2>Por qu\u00e9 migrar im\u00e1genes a WebP y AVIF no es un capricho<\/h2>\n<p>\n    En muchos sitios web, las im\u00e1genes representan la mayor parte del peso total de una p\u00e1gina. No es raro encontrar homepages donde el HTML pesa menos que una carta breve y, sin embargo, las im\u00e1genes pesan como una mudanza completa. La paradoja es deliciosa y cruel: optimizamos min\u00fasculos fragmentos de JavaScript mientras una foto de cabecera, indiferente como una ballena dormida, ocupa 4 MB.\n  <\/p>\n<p>\n    Los formatos modernos atacan exactamente ese problema. <strong>WebP<\/strong>, desarrollado por Google, ofrece compresi\u00f3n con p\u00e9rdida y sin p\u00e9rdida, transparencia y animaci\u00f3n. En pruebas ampliamente citadas por Google, WebP con p\u00e9rdida puede ser alrededor de un <strong>25 % a 34 % m\u00e1s peque\u00f1o que JPEG<\/strong> a calidad comparable, mientras que WebP sin p\u00e9rdida puede reducir el tama\u00f1o frente a PNG en torno a un <strong>26 %<\/strong>, aunque los resultados reales dependen much\u00edsimo del contenido.\n  <\/p>\n<p>\n    <strong>AVIF<\/strong>, basado en el c\u00f3dec AV1, suele lograr compresiones todav\u00eda m\u00e1s agresivas, especialmente en fotograf\u00edas, degradados y escenas complejas. Puede producir archivos m\u00e1s peque\u00f1os que WebP con una calidad visual excelente. La contrapartida \u2014porque la tecnolog\u00eda tambi\u00e9n cobra peaje\u2014 es que la codificaci\u00f3n AVIF suele ser m\u00e1s lenta y no siempre conviene para flujos de trabajo masivos sin planificaci\u00f3n.\n  <\/p>\n<table>\n<thead>\n<tr>\n<th>Formato<\/th>\n<th>Ventajas<\/th>\n<th>Desventajas<\/th>\n<th>Uso recomendado<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>JPEG<\/strong><\/td>\n<td>Compatibilidad universal, adecuado para fotograf\u00edas.<\/td>\n<td>No soporta transparencia, compresi\u00f3n menos eficiente que formatos modernos.<\/td>\n<td>Fallback o archivos originales hist\u00f3ricos.<\/td>\n<\/tr>\n<tr>\n<td><strong>PNG<\/strong><\/td>\n<td>Transparencia, calidad sin p\u00e9rdida, bueno para gr\u00e1ficos simples.<\/td>\n<td>Puede ser muy pesado en fotograf\u00edas o im\u00e1genes grandes.<\/td>\n<td>Logos, capturas, gr\u00e1ficos con transparencia si no se usa WebP\/AVIF.<\/td>\n<\/tr>\n<tr>\n<td><strong>WebP<\/strong><\/td>\n<td>Muy buena compresi\u00f3n, transparencia, animaci\u00f3n, soporte amplio en navegadores modernos.<\/td>\n<td>Puede no superar a AVIF en m\u00e1xima compresi\u00f3n; requiere fallback en estrategias conservadoras.<\/td>\n<td>Formato moderno principal para producci\u00f3n general.<\/td>\n<\/tr>\n<tr>\n<td><strong>AVIF<\/strong><\/td>\n<td>Compresi\u00f3n excelente, gran calidad en bajo peso, soporte HDR y profundidad de color avanzada.<\/td>\n<td>Codificaci\u00f3n m\u00e1s lenta, algunos entornos antiguos no lo soportan.<\/td>\n<td>Im\u00e1genes grandes, hero images, fotograf\u00edas cr\u00edticas para rendimiento.<\/td>\n<\/tr>\n<tr>\n<td><strong>SVG<\/strong><\/td>\n<td>Vectorial, escalable, ideal para iconos y logotipos simples.<\/td>\n<td>No sirve para fotograf\u00eda; puede implicar riesgos si contiene scripts maliciosos.<\/td>\n<td>Mantener como SVG cuando sea vector real.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Idea central:<\/strong> no se trata de sustituir todo ciegamente. Se trata de servir la mejor imagen posible al navegador adecuado, en el tama\u00f1o adecuado, con el peso adecuado. Esa palabra, \u201cadecuado\u201d, parece aburrida. En rendimiento web es oro puro.<\/p>\n<h2>Antes de tocar nada: inventario, copia de seguridad y sentido com\u00fan<\/h2>\n<p>\n    La primera migraci\u00f3n seria no ocurre en el servidor. Ocurre en una hoja de c\u00e1lculo, en un listado, en un mapa humilde de lo que existe. Yo aprend\u00ed esto hace a\u00f1os con una web est\u00e1tica de un peque\u00f1o museo local: convertimos im\u00e1genes, limpiamos carpetas, celebramos demasiado pronto\u2026 y descubrimos que una visita virtual depend\u00eda de archivos JPEG llamados desde un JavaScript escrito por alguien que probablemente ya cultivaba tomates en otra provincia. La web no se rompi\u00f3 del todo, que es una forma elegante de decir que s\u00ed se rompi\u00f3.\n  <\/p>\n<p>\n    Antes de convertir, conviene localizar todas las im\u00e1genes:\n  <\/p>\n<ul>\n<li>Im\u00e1genes referenciadas en etiquetas <code>&lt;img&gt;<\/code>.<\/li>\n<li>Fondos declarados en CSS con <code>background-image<\/code>.<\/li>\n<li>Im\u00e1genes cargadas desde JavaScript.<\/li>\n<li>Iconos, favicons, logos y sprites.<\/li>\n<li>Im\u00e1genes usadas en metadatos sociales: <code>og:image<\/code>, <code>twitter:image<\/code>.<\/li>\n<li>Archivos incluidos en feeds, sitemaps o datos estructurados.<\/li>\n<li>Im\u00e1genes duplicadas en carpetas antiguas, subdirectorios y backups p\u00fablicos \u2014s\u00ed, esos cementerios digitales tan discretos.<\/li>\n<\/ul>\n<h3>Comandos \u00fatiles para auditar una web HTML<\/h3>\n<p>\n    Si trabajas en Linux, macOS o un servidor con herramientas Unix, puedes empezar con b\u00fasquedas simples:\n  <\/p>\n<pre><code>find . -type f \\( -iname \"*.jpg\" -o -iname \"*.jpeg\" -o -iname \"*.png\" -o -iname \"*.gif\" \\)<\/code><\/pre>\n<p>\n    Para localizar referencias dentro de HTML, CSS y JavaScript:\n  <\/p>\n<pre><code>grep -RInE \"\\.(jpg|jpeg|png|gif|webp|avif)\" . --include=\"*.html\" --include=\"*.css\" --include=\"*.js\"<\/code><\/pre>\n<p>\n    Y para obtener tama\u00f1os de archivo ordenados, algo bastante revelador:\n  <\/p>\n<pre><code>find . -type f \\( -iname \"*.jpg\" -o -iname \"*.jpeg\" -o -iname \"*.png\" \\) -exec du -h {} + | sort -hr | head -50<\/code><\/pre>\n<p>\n    Ese listado suele ser una escena de crimen: aparecen banners olvidados, capturas duplicadas, fotograf\u00edas subidas directamente desde una c\u00e1mara r\u00e9flex y alg\u00fan PNG gigantesco que alguien, en un arrebato de optimismo, llam\u00f3 <code>icono-final-final-bueno.png<\/code>.\n  <\/p>\n<h3>Copia de seguridad: el seguro contra el entusiasmo<\/h3>\n<p>\n    Haz una copia completa antes de empezar:\n  <\/p>\n<ul>\n<li>Archivos HTML, CSS, JS e im\u00e1genes.<\/li>\n<li>Configuraciones del servidor: <code>.htaccess<\/code>, Nginx, reglas de CDN.<\/li>\n<li>Sitemaps, robots.txt y assets sociales.<\/li>\n<li>Repositorio Git, si existe. Si no existe, quiz\u00e1 este sea el momento de admitir que la aventura necesita cintur\u00f3n de seguridad.<\/li>\n<\/ul>\n<pre><code>tar -czf backup-web-antes-migracion-imagenes.tar.gz \/ruta\/de\/tu\/web<\/code><\/pre>\n<p>\n    Si usas Git:\n  <\/p>\n<pre><code>git checkout -b migracion-webp-avif\ngit add .\ngit commit -m \"Backup antes de migrar im\u00e1genes a WebP y AVIF\"<\/code><\/pre>\n<h2>Elegir estrategia: WebP, AVIF o ambos<\/h2>\n<p>\n    La estrategia m\u00e1s robusta para una web HTML es servir <strong>AVIF primero<\/strong>, <strong>WebP despu\u00e9s<\/strong> y mantener el formato original como fallback. Es una peque\u00f1a monarqu\u00eda de eficiencia: el formato m\u00e1s moderno toma la delantera, el m\u00e1s compatible le cubre la espalda, y el viejo JPEG queda como abuelo respetable en la esquina.\n  <\/p>\n<p>\n    En HTML, esto se hace con la etiqueta <code>&lt;picture&gt;<\/code>:\n  <\/p>\n<pre><code>&lt;picture&gt;\n  &lt;source srcset=\"\/img\/foto.avif\" type=\"image\/avif\"&gt;\n  &lt;source srcset=\"\/img\/foto.webp\" type=\"image\/webp\"&gt;\n  &lt;img src=\"\/img\/foto.jpg\" alt=\"Descripci\u00f3n clara de la imagen\" width=\"1200\" height=\"800\" loading=\"lazy\"&gt;\n&lt;\/picture&gt;<\/code><\/pre>\n<p>\n    El navegador evaluar\u00e1 las fuentes en orden. Si entiende AVIF, usar\u00e1 AVIF. Si no, probar\u00e1 WebP. Si tampoco, cargar\u00e1 el <code>src<\/code> original. Elegante. Casi civilizado.\n  <\/p>\n<p>\ud83d\udca1 <strong>Recomendaci\u00f3n pr\u00e1ctica:<\/strong> para proyectos profesionales, conserva los originales aunque no los sirvas por defecto. Te servir\u00e1n para regenerar versiones futuras, cambiar calidades, crear tama\u00f1os responsive o corregir conversiones defectuosas.<\/p>\n<h2>Qu\u00e9 im\u00e1genes debes convertir y cu\u00e1les no<\/h2>\n<p>\n    Convertir todo a WebP o AVIF sin pensar es como pintar una biblioteca con rodillo industrial: r\u00e1pido, uniforme y ligeramente criminal. Hay casos en los que conviene conservar el formato original.\n  <\/p>\n<table>\n<thead>\n<tr>\n<th>Tipo de archivo<\/th>\n<th>\u00bfConvertir?<\/th>\n<th>Comentario t\u00e9cnico<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Fotograf\u00edas JPEG<\/td>\n<td>S\u00ed<\/td>\n<td>Son candidatas ideales para WebP y AVIF. Controla la calidad para evitar artefactos.<\/td>\n<\/tr>\n<tr>\n<td>PNG con transparencia<\/td>\n<td>S\u00ed, con pruebas<\/td>\n<td>WebP soporta transparencia. AVIF tambi\u00e9n, pero revisa bordes, sombras y compatibilidad.<\/td>\n<\/tr>\n<tr>\n<td>Logos vectoriales SVG<\/td>\n<td>No necesariamente<\/td>\n<td>Si el SVG est\u00e1 limpio y optimizado, suele ser mejor mantenerlo.<\/td>\n<\/tr>\n<tr>\n<td>Iconos peque\u00f1os<\/td>\n<td>Depende<\/td>\n<td>A veces la ganancia es m\u00ednima. Un SVG o sprite puede ser m\u00e1s eficiente.<\/td>\n<\/tr>\n<tr>\n<td>GIF animados<\/td>\n<td>S\u00ed, con cuidado<\/td>\n<td>Animated WebP puede reducir mucho peso. AVIF animado existe, pero el soporte pr\u00e1ctico debe verificarse.<\/td>\n<\/tr>\n<tr>\n<td>Favicons<\/td>\n<td>No como sustituci\u00f3n principal<\/td>\n<td>Mant\u00e9n <code>.ico<\/code>, PNG y SVG seg\u00fan compatibilidad. No todos los contextos usan WebP\/AVIF.<\/td>\n<\/tr>\n<tr>\n<td>Im\u00e1genes legales, certificados, documentaci\u00f3n<\/td>\n<td>Con cautela<\/td>\n<td>Evita degradar texto peque\u00f1o. Usa compresi\u00f3n sin p\u00e9rdida o calidad alta.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Herramientas profesionales para convertir im\u00e1genes<\/h2>\n<p>\n    Existen herramientas visuales, librer\u00edas de l\u00ednea de comandos y servicios externos. La elecci\u00f3n depende del tama\u00f1o del sitio, el nivel de automatizaci\u00f3n y el control que necesites.\n  <\/p>\n<h3>1. cwebp y avifenc: control directo desde terminal<\/h3>\n<p>\n    <code>cwebp<\/code> forma parte de las herramientas oficiales de WebP. Para convertir un JPEG:\n  <\/p>\n<pre><code>cwebp -q 82 imagen.jpg -o imagen.webp<\/code><\/pre>\n<p>\n    Para PNG con transparencia:\n  <\/p>\n<pre><code>cwebp -q 85 imagen.png -o imagen.webp<\/code><\/pre>\n<p>\n    Para AVIF, una herramienta habitual es <code>avifenc<\/code>, incluida en libavif:\n  <\/p>\n<pre><code>avifenc --min 25 --max 35 --speed 6 imagen.jpg imagen.avif<\/code><\/pre>\n<p>\n    En AVIF, valores m\u00e1s bajos de cuantizaci\u00f3n suelen significar m\u00e1s calidad y m\u00e1s peso; adem\u00e1s, la velocidad de codificaci\u00f3n influye en tiempo y eficiencia. No hay un n\u00famero m\u00e1gico universal. Quien lo prometa vende humo con embalaje brillante.\n  <\/p>\n<h3>2. ImageMagick: vers\u00e1til, aunque conviene verificar soporte<\/h3>\n<p>\n    ImageMagick puede convertir im\u00e1genes si fue compilado con soporte para WebP y AVIF:\n  <\/p>\n<pre><code>magick imagen.jpg -quality 82 imagen.webp\nmagick imagen.jpg -quality 50 imagen.avif<\/code><\/pre>\n<p>\n    Comprueba primero:\n  <\/p>\n<pre><code>magick -list format | grep -Ei \"WEBP|AVIF\"<\/code><\/pre>\n<h3>3. Sharp: ideal para automatizaci\u00f3n con Node.js<\/h3>\n<p>\n    <code>sharp<\/code> es una de las librer\u00edas m\u00e1s usadas para procesamiento de im\u00e1genes en entornos Node.js. Es r\u00e1pida, automatizable y apropiada para pipelines de build.\n  <\/p>\n<pre><code>npm install sharp<\/code><\/pre>\n<pre><code>const sharp = require(\"sharp\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst inputDir = \".\/img\";\nconst outputDir = \".\/img-optimizada\";\n\nfs.mkdirSync(outputDir, { recursive: true });\n\nconst files = fs.readdirSync(inputDir).filter(file =>\n  \/\\.(jpg|jpeg|png)$\/i.test(file)\n);\n\n(async () => {\n  for (const file of files) {\n    const inputPath = path.join(inputDir, file);\n    const name = path.parse(file).name;\n\n    await sharp(inputPath)\n      .webp({ quality: 82 })\n      .toFile(path.join(outputDir, `${name}.webp`));\n\n    await sharp(inputPath)\n      .avif({ quality: 50, effort: 6 })\n      .toFile(path.join(outputDir, `${name}.avif`));\n\n    console.log(`Convertido: ${file}`);\n  }\n})();<\/code><\/pre>\n<h3>4. Squoosh, TinyPNG, ShortPixel, Cloudinary y CDN inteligentes<\/h3>\n<p>\n    Para lotes peque\u00f1os, herramientas como Squoosh pueden ser magn\u00edficas. Para proyectos grandes, servicios como Cloudinary, Imgix, Bunny Optimizer, Cloudflare Images o similares permiten transformaci\u00f3n din\u00e1mica, redimensionado y negociaci\u00f3n de formato seg\u00fan navegador. Son c\u00f3modos, s\u00ed. Tambi\u00e9n introducen dependencia externa, coste recurrente y cierta sensaci\u00f3n de estar alquilando la llave de tu propia despensa.\n  <\/p>\n<h2>Conversi\u00f3n masiva desde terminal<\/h2>\n<p>\n    Si tu web tiene cientos o miles de im\u00e1genes, necesitas un flujo repetible. La improvisaci\u00f3n sirve para una sobremesa; para migraciones t\u00e9cnicas, mejor scripts.\n  <\/p>\n<h3>Convertir todos los JPEG y PNG a WebP<\/h3>\n<pre><code>find .\/img -type f \\( -iname \"*.jpg\" -o -iname \"*.jpeg\" -o -iname \"*.png\" \\) | while read img; do\n  output=\"${img%.*}.webp\"\n  cwebp -q 82 \"$img\" -o \"$output\"\ndone<\/code><\/pre>\n<h3>Convertir todos los JPEG y PNG a AVIF<\/h3>\n<pre><code>find .\/img -type f \\( -iname \"*.jpg\" -o -iname \"*.jpeg\" -o -iname \"*.png\" \\) | while read img; do\n  output=\"${img%.*}.avif\"\n  avifenc --min 25 --max 35 --speed 6 \"$img\" \"$output\"\ndone<\/code><\/pre>\n<h3>Evitar reconvertir archivos ya procesados<\/h3>\n<pre><code>find .\/img -type f \\( -iname \"*.jpg\" -o -iname \"*.jpeg\" -o -iname \"*.png\" \\) | while read img; do\n  webp=\"${img%.*}.webp\"\n  avif=\"${img%.*}.avif\"\n\n  if [ ! -f \"$webp\" ]; then\n    cwebp -q 82 \"$img\" -o \"$webp\"\n  fi\n\n  if [ ! -f \"$avif\" ]; then\n    avifenc --min 25 --max 35 --speed 6 \"$img\" \"$avif\"\n  fi\ndone<\/code><\/pre>\n<p>\u26a0\ufe0f <strong>No borres los originales inmediatamente.<\/strong> Primero verifica visualmente, revisa rutas, prueba en navegadores reales y mide rendimiento. Borrar originales antes de validar es esa clase de valent\u00eda que luego se pronuncia \u201cincidente\u201d.<\/p>\n<h2>Actualizar el HTML: tres enfoques posibles<\/h2>\n<p>\n    Aqu\u00ed empieza la parte delicada. Convertir im\u00e1genes es mec\u00e1nico; integrarlas bien exige criterio. Una web HTML puede usar rutas relativas, rutas absolutas, plantillas, includes, fragmentos repetidos, c\u00f3digo viejo o una mezcla de todo eso, como un caj\u00f3n de cables que nadie se atreve a ordenar.\n  <\/p>\n<h3>Enfoque 1: sustituci\u00f3n directa del <code>src<\/code><\/h3>\n<p>\n    Cambiar esto:\n  <\/p>\n<pre><code>&lt;img src=\"\/img\/producto.jpg\" alt=\"Producto artesanal de cer\u00e1mica\"&gt;<\/code><\/pre>\n<p>\n    Por esto:\n  <\/p>\n<pre><code>&lt;img src=\"\/img\/producto.webp\" alt=\"Producto artesanal de cer\u00e1mica\" width=\"800\" height=\"600\" loading=\"lazy\"&gt;<\/code><\/pre>\n<p>\n    Es simple, pero tiene una desventaja: si un navegador, bot, cliente de correo o sistema incrustado no soporta WebP, no hay alternativa. Hoy WebP tiene soporte muy amplio en navegadores modernos, pero en proyectos corporativos, institucionales o con audiencias imprevisibles conviene ser m\u00e1s prudente.\n  <\/p>\n<h3>Enfoque 2: usar <code>&lt;picture&gt;<\/code> con AVIF, WebP y fallback<\/h3>\n<p>\n    Es la opci\u00f3n m\u00e1s segura y profesional:\n  <\/p>\n<pre><code>&lt;picture&gt;\n  &lt;source srcset=\"\/img\/producto.avif\" type=\"image\/avif\"&gt;\n  &lt;source srcset=\"\/img\/producto.webp\" type=\"image\/webp\"&gt;\n  &lt;img src=\"\/img\/producto.jpg\" alt=\"Producto artesanal de cer\u00e1mica\" width=\"800\" height=\"600\" loading=\"lazy\"&gt;\n&lt;\/picture&gt;<\/code><\/pre>\n<p>\n    Adem\u00e1s, puedes combinarlo con im\u00e1genes responsive:\n  <\/p>\n<pre><code>&lt;picture&gt;\n  &lt;source\n    type=\"image\/avif\"\n    srcset=\"\/img\/hero-480.avif 480w, \/img\/hero-960.avif 960w, \/img\/hero-1440.avif 1440w\"\n    sizes=\"(max-width: 768px) 100vw, 1440px\"&gt;\n\n  &lt;source\n    type=\"image\/webp\"\n    srcset=\"\/img\/hero-480.webp 480w, \/img\/hero-960.webp 960w, \/img\/hero-1440.webp 1440w\"\n    sizes=\"(max-width: 768px) 100vw, 1440px\"&gt;\n\n  &lt;img\n    src=\"\/img\/hero-1440.jpg\"\n    srcset=\"\/img\/hero-480.jpg 480w, \/img\/hero-960.jpg 960w, \/img\/hero-1440.jpg 1440w\"\n    sizes=\"(max-width: 768px) 100vw, 1440px\"\n    alt=\"Vista principal del alojamiento rural al amanecer\"\n    width=\"1440\"\n    height=\"810\"\n    fetchpriority=\"high\"&gt;\n&lt;\/picture&gt;<\/code><\/pre>\n<p>\n    Observa el detalle de <code>fetchpriority=\"high\"<\/code>. Puede ser \u00fatil para la imagen principal visible al cargar, especialmente si afecta al <strong>Largest Contentful Paint<\/strong>. No lo pongas en todas partes. Si todo es prioritario, nada lo es; vieja lecci\u00f3n de oficina, aplicable tambi\u00e9n a los navegadores.\n  <\/p>\n<h3>Enfoque 3: negociaci\u00f3n autom\u00e1tica desde servidor<\/h3>\n<p>\n    Otra estrategia consiste en dejar el HTML apuntando a <code>.jpg<\/code> o <code>.png<\/code> y configurar el servidor para entregar WebP o AVIF si el navegador los acepta mediante la cabecera <code>Accept<\/code>. Es limpio para el HTML, pero requiere una configuraci\u00f3n m\u00e1s delicada de cach\u00e9 y CDN.\n  <\/p>\n<p>\n    En Apache, una aproximaci\u00f3n con <code>.htaccess<\/code> podr\u00eda ser:\n  <\/p>\n<pre><code>&lt;IfModule mod_rewrite.c&gt;\n  RewriteEngine On\n\n  RewriteCond %{HTTP_ACCEPT} image\/avif\n  RewriteCond %{REQUEST_FILENAME}.avif -f\n  RewriteRule ^(.+)\\.(jpe?g|png)$ $1.$2.avif [T=image\/avif,E=accept:1]\n\n  RewriteCond %{HTTP_ACCEPT} image\/webp\n  RewriteCond %{REQUEST_FILENAME}.webp -f\n  RewriteRule ^(.+)\\.(jpe?g|png)$ $1.$2.webp [T=image\/webp,E=accept:1]\n\n  Header append Vary Accept env=accept\n&lt;\/IfModule&gt;<\/code><\/pre>\n<p>\n    Sin embargo, este ejemplo depende de c\u00f3mo nombres los archivos. Si generas <code>foto.jpg.webp<\/code>, la regla cambia. Si generas <code>foto.webp<\/code>, cambia tambi\u00e9n. La configuraci\u00f3n del servidor no perdona suposiciones: es un espejo, no una madre.\n  <\/p>\n<p>\n    En Nginx, se suele usar <code>map<\/code> para detectar soporte:\n  <\/p>\n<pre><code>map $http_accept $modern_image_suffix {\n    default \"\";\n    \"~image\/avif\" \".avif\";\n    \"~image\/webp\" \".webp\";\n}\n\nserver {\n    location ~* ^(.+)\\.(jpg|jpeg|png)$ {\n        add_header Vary Accept;\n        try_files $uri$modern_image_suffix $uri =404;\n    }\n}<\/code><\/pre>\n<p>\u26a0\ufe0f <strong>Cuidado con la cach\u00e9:<\/strong> si sirves diferentes formatos desde la misma URL, aseg\u00farate de enviar <code>Vary: Accept<\/code> y de que tu CDN respete esa cabecera. De lo contrario, podr\u00edas entregar AVIF a un navegador que no lo soporta. Muy moderno todo, hasta que aparece una imagen rota.<\/p>\n<h2>Im\u00e1genes en CSS: el rinc\u00f3n olvidado<\/h2>\n<p>\n    Muchas migraciones fallan porque solo actualizan etiquetas <code>&lt;img&gt;<\/code>. Pero las im\u00e1genes decorativas suelen vivir en CSS:\n  <\/p>\n<pre><code>.hero {\n  background-image: url(\"\/img\/cabecera.jpg\");\n}<\/code><\/pre>\n<p>\n    Para servir formatos modernos en CSS, puedes usar <code>image-set()<\/code>:\n  <\/p>\n<pre><code>.hero {\n  background-image: image-set(\n    url(\"\/img\/cabecera.avif\") type(\"image\/avif\"),\n    url(\"\/img\/cabecera.webp\") type(\"image\/webp\"),\n    url(\"\/img\/cabecera.jpg\") type(\"image\/jpeg\")\n  );\n}<\/code><\/pre>\n<p>\n    Tambi\u00e9n puedes combinarlo con media queries para no enviar im\u00e1genes gigantes a m\u00f3viles:\n  <\/p>\n<pre><code>.hero {\n  background-image: image-set(\n    url(\"\/img\/cabecera-mobile.avif\") type(\"image\/avif\"),\n    url(\"\/img\/cabecera-mobile.webp\") type(\"image\/webp\"),\n    url(\"\/img\/cabecera-mobile.jpg\") type(\"image\/jpeg\")\n  );\n}\n\n@media (min-width: 900px) {\n  .hero {\n    background-image: image-set(\n      url(\"\/img\/cabecera-desktop.avif\") type(\"image\/avif\"),\n      url(\"\/img\/cabecera-desktop.webp\") type(\"image\/webp\"),\n      url(\"\/img\/cabecera-desktop.jpg\") type(\"image\/jpeg\")\n    );\n  }\n}<\/code><\/pre>\n<p>\n    La diferencia entre servir una imagen de 1800 p\u00edxeles a un m\u00f3vil y servir una versi\u00f3n ajustada es la diferencia entre abrir una ventana y derribar la pared. Ambas cosas dejan entrar aire, pero una de ellas cuesta bastante menos.\n  <\/p>\n<h2>Calidad de compresi\u00f3n: n\u00fameros orientativos que s\u00ed sirven<\/h2>\n<p>\n    No existe una calidad universal. La imagen de un plato de comida, un retrato corporativo y una captura de software no responden igual a la compresi\u00f3n. Aun as\u00ed, hay rangos razonables para empezar:\n  <\/p>\n<table>\n<thead>\n<tr>\n<th>Tipo de imagen<\/th>\n<th>WebP recomendado<\/th>\n<th>AVIF recomendado<\/th>\n<th>Observaciones<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Fotograf\u00eda general<\/td>\n<td>Calidad 75\u201385<\/td>\n<td>Calidad 45\u201360 o cuantizaci\u00f3n media<\/td>\n<td>Revisa pieles, cielos y sombras.<\/td>\n<\/tr>\n<tr>\n<td>Imagen hero o cabecera<\/td>\n<td>Calidad 80\u201390<\/td>\n<td>Calidad 55\u201370<\/td>\n<td>Debe verse impecable; afecta percepci\u00f3n y LCP.<\/td>\n<\/tr>\n<tr>\n<td>Miniaturas<\/td>\n<td>Calidad 70\u201380<\/td>\n<td>Calidad 40\u201355<\/td>\n<td>El tama\u00f1o peque\u00f1o tolera mayor compresi\u00f3n.<\/td>\n<\/tr>\n<tr>\n<td>Capturas de interfaz<\/td>\n<td>Calidad 85\u201395 o sin p\u00e9rdida<\/td>\n<td>Calidad alta<\/td>\n<td>El texto peque\u00f1o revela defectos enseguida.<\/td>\n<\/tr>\n<tr>\n<td>Logos rasterizados<\/td>\n<td>Sin p\u00e9rdida o calidad muy alta<\/td>\n<td>Con pruebas visuales<\/td>\n<td>Mejor SVG si es posible.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\n    Mi m\u00e9todo preferido es crear tres versiones de prueba por tipo de imagen y compararlas no solo en monitor grande, sino tambi\u00e9n en m\u00f3vil. El m\u00f3vil es cruel, pero honesto. Muestra artefactos como una l\u00e1mpara de interrogatorio.\n  <\/p>\n<h2>SEO t\u00e9cnico: no rompas lo que ya posiciona<\/h2>\n<p>\n    Migrar im\u00e1genes tambi\u00e9n tiene implicaciones SEO. Google puede indexar WebP y otros formatos modernos, pero eso no significa que debas cambiar URLs sin pensar. Si tus im\u00e1genes reciben tr\u00e1fico desde Google Im\u00e1genes o est\u00e1n enlazadas externamente, las rutas importan.\n  <\/p>\n<h3>Buenas pr\u00e1cticas SEO al migrar im\u00e1genes<\/h3>\n<ul>\n<li><strong>Mant\u00e9n atributos <code>alt<\/code> descriptivos<\/strong>. La compresi\u00f3n no sustituye la accesibilidad.<\/li>\n<li><strong>No cambies nombres \u00fatiles por c\u00f3digos opacos<\/strong>. <code>mesa-roble-artesanal.webp<\/code> dice m\u00e1s que <code>IMG_8392.webp<\/code>.<\/li>\n<li><strong>Actualiza el sitemap de im\u00e1genes<\/strong> si lo usas.<\/li>\n<li><strong>Revisa metadatos Open Graph<\/strong>. Algunas plataformas sociales pueden comportarse de forma desigual con formatos modernos; JPEG o PNG siguen siendo apuestas seguras para <code>og:image<\/code>.<\/li>\n<li><strong>Evita errores 404<\/strong>. Si cambias URLs, crea redirecciones cuando sea necesario.<\/li>\n<li><strong>Conserva dimensiones declaradas<\/strong> con <code>width<\/code> y <code>height<\/code> para reducir CLS.<\/li>\n<li><strong>Usa nombres coherentes<\/strong> para versiones responsive: <code>producto-480.webp<\/code>, <code>producto-960.webp<\/code>, <code>producto-1440.webp<\/code>.<\/li>\n<\/ul>\n<p>\n    Si reemplazas directamente <code>\/img\/foto.jpg<\/code> por <code>\/img\/foto.webp<\/code>, Google tendr\u00e1 que descubrir la nueva URL. No es grave, pero conviene preverlo. Si mantienes fallback con <code>&lt;picture&gt;<\/code>, el <code>&lt;img src&gt;<\/code> original sigue presente, lo cual puede ser \u00fatil para continuidad.\n  <\/p>\n<h2>Rendimiento: WebP y AVIF son solo una parte de la historia<\/h2>\n<p>\n    Una imagen moderna mal dimensionada sigue siendo una mala imagen. M\u00e1s peque\u00f1a, quiz\u00e1. Pero mala. Optimizar formato sin optimizar dimensiones es como poner neum\u00e1ticos de competici\u00f3n a un carro oxidado: mejora algo, pero no cambia la naturaleza del problema.\n  <\/p>\n<h3>Acciones imprescindibles junto con la migraci\u00f3n<\/h3>\n<ul>\n<li><strong>Redimensiona im\u00e1genes<\/strong>. No sirvas 3000 px si se muestran a 600 px.<\/li>\n<li><strong>Genera versiones responsive<\/strong> con <code>srcset<\/code> y <code>sizes<\/code>.<\/li>\n<li><strong>Activa lazy loading<\/strong> en im\u00e1genes fuera del primer viewport: <code>loading=\"lazy\"<\/code>.<\/li>\n<li><strong>Prioriza la imagen LCP<\/strong> con <code>fetchpriority=\"high\"<\/code> cuando corresponda.<\/li>\n<li><strong>Define <code>width<\/code> y <code>height<\/code><\/strong> para evitar saltos visuales.<\/li>\n<li><strong>Configura cach\u00e9 larga<\/strong> para assets versionados.<\/li>\n<li><strong>Usa CDN<\/strong> si tienes audiencia geogr\u00e1ficamente distribuida.<\/li>\n<li><strong>Elimina im\u00e1genes no usadas<\/strong>, pero solo despu\u00e9s de auditar dependencias.<\/li>\n<\/ul>\n<h3>Cabeceras de cach\u00e9 recomendadas<\/h3>\n<p>\n    Para archivos versionados o con nombres \u00fanicos, puedes usar cach\u00e9 agresiva:\n  <\/p>\n<pre><code>Cache-Control: public, max-age=31536000, immutable<\/code><\/pre>\n<p>\n    Si sustituyes archivos manteniendo el mismo nombre, cuidado: los usuarios podr\u00edan ver versiones antiguas hasta que expire la cach\u00e9. Lo profesional es versionar:\n  <\/p>\n<pre><code>\/img\/producto.v2.webp\n\/img\/producto.2025-optimizado.avif<\/code><\/pre>\n<p>\n    O usar hashes generados por tu pipeline:\n  <\/p>\n<pre><code>\/assets\/producto.a8f93c.webp<\/code><\/pre>\n<h2>Seguridad y mantenimiento: el lado menos glamuroso, o sea, el importante<\/h2>\n<p>\n    Las im\u00e1genes parecen inofensivas. Un paisaje, un logo, una foto de equipo. Pero cualquier sistema que procesa archivos debe tratarse con respeto. Las librer\u00edas de imagen han tenido vulnerabilidades hist\u00f3ricas; los SVG pueden contener scripts; los metadatos EXIF pueden revelar ubicaci\u00f3n GPS; los permisos mal configurados pueden exponer directorios completos.\n  <\/p>\n<h3>Recomendaciones de seguridad<\/h3>\n<ul>\n<li><strong>Actualiza herramientas<\/strong> como ImageMagick, libwebp, libavif, sharp o dependencias del sistema.<\/li>\n<li><strong>No proceses archivos no confiables<\/strong> sin validaci\u00f3n, especialmente si usuarios suben im\u00e1genes.<\/li>\n<li><strong>Elimina metadatos sensibles<\/strong> si no son necesarios.<\/li>\n<li><strong>Sanitiza SVG<\/strong> antes de publicarlos.<\/li>\n<li><strong>Evita permisos 777<\/strong> en carpetas de im\u00e1genes.<\/li>\n<li><strong>Bloquea listados de directorio<\/strong> si el servidor los muestra.<\/li>\n<li><strong>Escanea archivos antiguos<\/strong> en sitios heredados.<\/li>\n<\/ul>\n<p>\n    Para eliminar metadatos con ImageMagick:\n  <\/p>\n<pre><code>magick imagen.jpg -strip imagen-limpia.jpg<\/code><\/pre>\n<p>\n    En conversiones con Sharp, por defecto no se conservan todos los metadatos salvo que se indique lo contrario, lo cual suele ser conveniente. Pero confirma tu flujo; la confianza ciega en herramientas autom\u00e1ticas es una forma muy moderna de tropezar con una piedra antigua.\n  <\/p>\n<h2>Automatizar la actualizaci\u00f3n del HTML sin destruirlo<\/h2>\n<p>\n    Si tienes diez p\u00e1ginas, puedes editar a mano. Si tienes mil, editar a mano es una penitencia medieval con teclado mec\u00e1nico. Pero cuidado: sustituir rutas con expresiones regulares sobre HTML complejo puede generar da\u00f1os sutiles.\n  <\/p>\n<p>\n    Para una web est\u00e1tica sencilla, podr\u00edas usar un script que reemplace etiquetas <code>&lt;img&gt;<\/code> por estructuras <code>&lt;picture&gt;<\/code>. Pero lo m\u00e1s seguro es:\n  <\/p>\n<ol>\n<li>Trabajar en una rama Git.<\/li>\n<li>Procesar solo patrones controlados.<\/li>\n<li>Generar un informe de cambios.<\/li>\n<li>Revisar diferencias con <code>git diff<\/code>.<\/li>\n<li>Probar con un crawler local.<\/li>\n<\/ol>\n<p>\n    Una alternativa pragm\u00e1tica consiste en migrar primero las im\u00e1genes cr\u00edticas: cabecera, productos, galer\u00edas, banners principales. Despu\u00e9s, abordar el resto por carpetas. La perfecci\u00f3n total en el primer intento suele ser enemiga de una mejora real esta semana.\n  <\/p>\n<h2>C\u00f3mo validar que la migraci\u00f3n funciona<\/h2>\n<p>\n    La validaci\u00f3n debe ser visual, t\u00e9cnica y anal\u00edtica. No basta con que \u201cse vea bien en mi navegador\u201d, esa frase encantadora que ha inaugurado tantos desastres peque\u00f1os.\n  <\/p>\n<h3>Checklist de pruebas \ud83e\uddea<\/h3>\n<ul>\n<li>\u2705 Abrir p\u00e1ginas principales en Chrome, Firefox, Safari y Edge actualizados.<\/li>\n<li>\u2705 Probar al menos un m\u00f3vil iOS y uno Android si el proyecto lo justifica.<\/li>\n<li>\u2705 Revisar DevTools &gt; Network para confirmar que se sirven AVIF\/WebP.<\/li>\n<li>\u2705 Comprobar que no hay errores 404 en im\u00e1genes.<\/li>\n<li>\u2705 Validar que las im\u00e1genes sociales siguen funcionando.<\/li>\n<li>\u2705 Revisar que <code>alt<\/code>, <code>width<\/code> y <code>height<\/code> no se han perdido.<\/li>\n<li>\u2705 Medir antes y despu\u00e9s con Lighthouse, PageSpeed Insights o WebPageTest.<\/li>\n<li>\u2705 Verificar Core Web Vitals, especialmente LCP y CLS.<\/li>\n<li>\u2705 Revisar logs del servidor tras publicar.<\/li>\n<li>\u2705 Pasar un crawler como Screaming Frog, Sitebulb o una alternativa CLI.<\/li>\n<\/ul>\n<h3>Comprobar formatos servidos en DevTools<\/h3>\n<p>\n    En Chrome o Edge:\n  <\/p>\n<ol>\n<li>Abre DevTools.<\/li>\n<li>Ve a la pesta\u00f1a <strong>Network<\/strong>.<\/li>\n<li>Filtra por <strong>Img<\/strong>.<\/li>\n<li>Recarga la p\u00e1gina sin cach\u00e9.<\/li>\n<li>Revisa la columna <strong>Type<\/strong> y el tama\u00f1o transferido.<\/li>\n<\/ol>\n<p>\n    Si ves AVIF en navegadores compatibles y WebP como segunda opci\u00f3n, vas por buen camino. Si ves JPEG gigantes carg\u00e1ndose con la solemnidad de un tren de vapor, toca volver al taller.\n  <\/p>\n<h2>Errores frecuentes al migrar im\u00e1genes a WebP y AVIF<\/h2>\n<table>\n<thead>\n<tr>\n<th>Error<\/th>\n<th>Consecuencia<\/th>\n<th>Soluci\u00f3n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Borrar originales demasiado pronto<\/td>\n<td>No puedes regenerar ni ofrecer fallback.<\/td>\n<td>Conserva originales en almacenamiento seguro.<\/td>\n<\/tr>\n<tr>\n<td>No actualizar im\u00e1genes en CSS<\/td>\n<td>Fondos pesados siguen ralentizando la web.<\/td>\n<td>Audita CSS y usa <code>image-set()<\/code> o rutas optimizadas.<\/td>\n<\/tr>\n<tr>\n<td>Olvidar <code>width<\/code> y <code>height<\/code><\/td>\n<td>Aumenta el CLS por saltos de dise\u00f1o.<\/td>\n<td>Declara dimensiones reales o proporcionales.<\/td>\n<\/tr>\n<tr>\n<td>Comprimir demasiado<\/td>\n<td>Artefactos visuales, mala percepci\u00f3n de marca.<\/td>\n<td>Define calidades por tipo de imagen.<\/td>\n<\/tr>\n<tr>\n<td>No configurar <code>Vary: Accept<\/code><\/td>\n<td>Problemas de cach\u00e9 con formatos servidos din\u00e1micamente.<\/td>\n<td>Ajusta servidor y CDN correctamente.<\/td>\n<\/tr>\n<tr>\n<td>Convertir SVG a WebP sin necesidad<\/td>\n<td>P\u00e9rdida de escalabilidad y nitidez.<\/td>\n<td>Mant\u00e9n SVG optimizado cuando sea vectorial.<\/td>\n<\/tr>\n<tr>\n<td>No medir antes y despu\u00e9s<\/td>\n<td>No sabes si la migraci\u00f3n tuvo impacto real.<\/td>\n<td>Registra m\u00e9tricas previas y posteriores.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Plan profesional de migraci\u00f3n paso a paso<\/h2>\n<p>\n    Para que el proceso sea ordenado, puedes seguir este plan. No es espectacular. Precisamente por eso funciona.\n  <\/p>\n<h3>Fase 1: Auditor\u00eda<\/h3>\n<ul>\n<li>Crear inventario de im\u00e1genes.<\/li>\n<li>Identificar las m\u00e1s pesadas.<\/li>\n<li>Detectar rutas en HTML, CSS y JS.<\/li>\n<li>Separar im\u00e1genes cr\u00edticas, decorativas, sociales y heredadas.<\/li>\n<\/ul>\n<h3>Fase 2: Preparaci\u00f3n<\/h3>\n<ul>\n<li>Hacer backup completo.<\/li>\n<li>Crear rama Git o entorno staging.<\/li>\n<li>Definir nomenclatura: <code>imagen.webp<\/code>, <code>imagen.avif<\/code>, versiones responsive, hashes.<\/li>\n<li>Elegir calidades por tipo de imagen.<\/li>\n<\/ul>\n<h3>Fase 3: Conversi\u00f3n<\/h3>\n<ul>\n<li>Generar WebP para compatibilidad amplia.<\/li>\n<li>Generar AVIF para m\u00e1xima eficiencia donde aporte valor.<\/li>\n<li>Redimensionar im\u00e1genes sobredimensionadas.<\/li>\n<li>Eliminar metadatos innecesarios.<\/li>\n<\/ul>\n<h3>Fase 4: Integraci\u00f3n<\/h3>\n<ul>\n<li>Actualizar etiquetas <code>&lt;img&gt;<\/code> a <code>&lt;picture&gt;<\/code> cuando convenga.<\/li>\n<li>Actualizar CSS con <code>image-set()<\/code>.<\/li>\n<li>Revisar metadatos sociales.<\/li>\n<li>Configurar cach\u00e9 y cabeceras.<\/li>\n<\/ul>\n<h3>Fase 5: Validaci\u00f3n<\/h3>\n<ul>\n<li>Probar navegadores y dispositivos.<\/li>\n<li>Revisar errores 404.<\/li>\n<li>Comparar peso total antes y despu\u00e9s.<\/li>\n<li>Medir LCP, CLS, Speed Index y tiempo de carga.<\/li>\n<\/ul>\n<h3>Fase 6: Publicaci\u00f3n y seguimiento<\/h3>\n<ul>\n<li>Publicar en horas de bajo tr\u00e1fico si el sitio es cr\u00edtico.<\/li>\n<li>Purgar cach\u00e9 de CDN con cuidado.<\/li>\n<li>Monitorizar logs y Search Console.<\/li>\n<li>Documentar el nuevo flujo para futuras im\u00e1genes.<\/li>\n<\/ul>\n<h2>Ejemplo de estructura de carpetas recomendada<\/h2>\n<p>\n    En webs HTML peque\u00f1as o medianas, una estructura clara ayuda a no perderse:\n  <\/p>\n<pre><code>\/img\/\n  \/originales\/\n    producto.jpg\n    cabecera.png\n\n  \/webp\/\n    producto.webp\n    cabecera.webp\n\n  \/avif\/\n    producto.avif\n    cabecera.avif\n\n  \/responsive\/\n    producto-480.webp\n    producto-960.webp\n    producto-1440.webp\n    producto-480.avif\n    producto-960.avif\n    producto-1440.avif<\/code><\/pre>\n<p>\n    Otra opci\u00f3n es mantener versiones juntas:\n  <\/p>\n<pre><code>\/img\/producto.jpg\n\/img\/producto.webp\n\/img\/producto.avif\n\/img\/producto-480.webp\n\/img\/producto-480.avif<\/code><\/pre>\n<p>\n    Lo importante no es el dogma, sino la consistencia. Una estructura mediocre pero coherente suele ser mejor que una estructura brillante aplicada solo los martes.\n  <\/p>\n<h2>\u00bfY si la web HTML es muy antigua?<\/h2>\n<p>\n    Las webs antiguas tienen una personalidad propia. A veces encantadora, a veces vengativa. Puede haber tablas de maquetaci\u00f3n, rutas con may\u00fasculas mezcladas, espacios en nombres de archivo, acentos en URLs, im\u00e1genes llamadas desde scripts inline y p\u00e1ginas duplicadas con peque\u00f1as variaciones. No juzguemos demasiado: todos hemos dejado alguna vez una carpeta llamada <code>nuevo-definitivo-real<\/code>.\n  <\/p>\n<p>\n    En estos casos:\n  <\/p>\n<ul>\n<li>Empieza por las p\u00e1ginas con m\u00e1s tr\u00e1fico.<\/li>\n<li>No intentes automatizar lo que no entiendes todav\u00eda.<\/li>\n<li>Usa un crawler para descubrir rutas reales.<\/li>\n<li>Evita renombrados masivos sin redirecciones.<\/li>\n<li>Documenta excepciones.<\/li>\n<li>Haz despliegues peque\u00f1os y reversibles.<\/li>\n<\/ul>\n<p>\n    La migraci\u00f3n puede ser tambi\u00e9n una oportunidad para limpiar deuda t\u00e9cnica: eliminar duplicados, mejorar atributos <code>alt<\/code>, a\u00f1adir dimensiones, corregir nombres y ordenar carpetas. Es curioso: uno empieza queriendo aligerar im\u00e1genes y termina arqueologizando su propio sitio web, como quien levanta una alfombra y encuentra monedas, polvo y decisiones de 2014.\n  <\/p>\n<h2>Cu\u00e1ndo no merece la pena usar AVIF en todas partes<\/h2>\n<p>\n    AVIF es potente, pero no siempre imprescindible. Para miniaturas diminutas, iconos, im\u00e1genes simples o flujos donde el tiempo de generaci\u00f3n importa mucho, WebP puede ofrecer el equilibrio ideal. AVIF brilla especialmente en fotograf\u00edas grandes y recursos cr\u00edticos donde cada kilobyte cuenta.\n  <\/p>\n<p>\n    Adem\u00e1s, la codificaci\u00f3n AVIF puede ser lenta en servidores modestos. Si generas im\u00e1genes bajo demanda, debes evaluar CPU, cach\u00e9 y tiempos de respuesta. Servir una imagen ultracomprimida despu\u00e9s de hacer esperar al usuario como si estuviera renovando un pasaporte no parece una victoria.\n  <\/p>\n<h2>M\u00e9tricas que deber\u00edas comparar antes y despu\u00e9s \ud83d\udcca<\/h2>\n<p>\n    Una migraci\u00f3n profesional se demuestra con datos:\n  <\/p>\n<ul>\n<li><strong>Peso total de la p\u00e1gina<\/strong>: especialmente bytes transferidos de im\u00e1genes.<\/li>\n<li><strong>N\u00famero de solicitudes<\/strong>: no siempre debe aumentar innecesariamente.<\/li>\n<li><strong>LCP<\/strong>: la imagen principal suele influir directamente.<\/li>\n<li><strong>CLS<\/strong>: debe mantenerse bajo gracias a dimensiones definidas.<\/li>\n<li><strong>Tiempo hasta primera carga visual<\/strong>.<\/li>\n<li><strong>Consumo en m\u00f3vil<\/strong> con red 4G simulada.<\/li>\n<li><strong>Errores 404<\/strong> de assets.<\/li>\n<li><strong>Indexaci\u00f3n de im\u00e1genes<\/strong> en Google Search Console.<\/li>\n<\/ul>\n<p>\n    Herramientas \u00fatiles:\n  <\/p>\n<ul>\n<li>Google PageSpeed Insights.<\/li>\n<li>Lighthouse en Chrome DevTools.<\/li>\n<li>WebPageTest.<\/li>\n<li>GTmetrix.<\/li>\n<li>Screaming Frog SEO Spider.<\/li>\n<li>Chrome DevTools Coverage y Network.<\/li>\n<li>Logs del servidor o anal\u00edtica de CDN.<\/li>\n<\/ul>\n<h2>Flujo recomendado para nuevas im\u00e1genes<\/h2>\n<p>\n    Migrar una vez est\u00e1 bien. Evitar que el problema vuelva es mejor. La optimizaci\u00f3n de im\u00e1genes debe convertirse en rutina, no en ritual de emergencia cada dos a\u00f1os.\n  <\/p>\n<ul>\n<li>\ud83d\udce5 Subir siempre una imagen original de calidad.<\/li>\n<li>\u2702\ufe0f Redimensionar al tama\u00f1o m\u00e1ximo real necesario.<\/li>\n<li>\ud83e\uddfc Eliminar metadatos innecesarios.<\/li>\n<li>\ud83d\uddbc\ufe0f Generar WebP y AVIF autom\u00e1ticamente.<\/li>\n<li>\ud83d\udcf1 Crear variantes responsive.<\/li>\n<li>\ud83e\uddfe A\u00f1adir <code>alt<\/code>, <code>width<\/code>, <code>height<\/code> y, si procede, <code>loading=\"lazy\"<\/code>.<\/li>\n<li>\ud83d\ude80 Publicar con cach\u00e9 adecuada.<\/li>\n<li>\ud83d\udd0d Revisar en staging antes de producci\u00f3n.<\/li>\n<\/ul>\n<p>\n    Si usas un generador est\u00e1tico como Eleventy, Astro, Hugo, Jekyll o Next.js exportado como HTML, integra la conversi\u00f3n en el proceso de build. Si la web es HTML artesanal, crea al menos un script reproducible. El futuro t\u00fa lo agradecer\u00e1; y el futuro t\u00fa, como sabemos, suele tener menos paciencia que el presente.\n  <\/p>\n<h2>Una receta pr\u00e1ctica para una migraci\u00f3n equilibrada<\/h2>\n<p>\n    Si tuviera que resumir una estrategia profesional, aplicable a la mayor\u00eda de webs HTML, ser\u00eda esta:\n  <\/p>\n<ol>\n<li><strong>Audita todo<\/strong>: im\u00e1genes en HTML, CSS, JS y metadatos.<\/li>\n<li><strong>Optimiza primero lo visible<\/strong>: hero images, banners, productos, galer\u00edas principales.<\/li>\n<li><strong>Genera WebP para todas las im\u00e1genes relevantes<\/strong>.<\/li>\n<li><strong>Genera AVIF para im\u00e1genes grandes o cr\u00edticas<\/strong>.<\/li>\n<li><strong>Usa <code>&lt;picture&gt;<\/code><\/strong> en contenido principal.<\/li>\n<li><strong>Usa <code>image-set()<\/code><\/strong> para fondos CSS.<\/li>\n<li><strong>Mant\u00e9n originales como fallback y archivo maestro<\/strong>.<\/li>\n<li><strong>Declara dimensiones<\/strong> para evitar CLS.<\/li>\n<li><strong>Mide antes y despu\u00e9s<\/strong>, sin autoenga\u00f1os.<\/li>\n<li><strong>Documenta el proceso<\/strong> para que no dependa de la memoria de nadie.<\/li>\n<\/ol>\n<p>\n    La migraci\u00f3n a WebP y AVIF no es solo una operaci\u00f3n de compresi\u00f3n. Es una forma de modernizar la relaci\u00f3n entre tu web y quienes la visitan. Menos espera, menos datos consumidos, menos fricci\u00f3n. Frente al viejo internet pesado, brillante y algo despilfarrador, aparece una web m\u00e1s ligera, casi anfibia: capaz de adaptarse al navegador, a la pantalla, a la red.\n  <\/p>\n<p>\n    Y ah\u00ed est\u00e1 la ant\u00edtesis que conviene recordar: una imagen puede ser hermosa y eficiente; una web puede ser rica sin ser lenta; la t\u00e9cnica puede ser invisible y, precisamente por eso, memorable. Migrar bien no se nota como una fanfarria. Se nota como se nota una puerta bien engrasada: porque nadie piensa en ella al pasar.\n  <\/p>\n<p>\n    Empieza por una copia de seguridad. Sigue con una auditor\u00eda honesta. Convierte con criterio. Sirve con fallback. Mide con herramientas serias. Y no olvides mirar las im\u00e1genes con ojos humanos, no solo con gr\u00e1ficos de rendimiento. Porque al final, incluso en la optimizaci\u00f3n m\u00e1s t\u00e9cnica, hay una peque\u00f1a promesa est\u00e9tica: que la web cargue r\u00e1pido, s\u00ed, pero que al llegar no parezca que le han robado el alma para ahorrar 40 kilobytes. \ud83d\uddbc\ufe0f\u26a1\n  <\/p>\n<\/article>\n<p><\/main><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\ude80 Rendimiento web \ud83d\uddbc\ufe0f WebP y AVIF \ud83d\udd10 Mantenimiento t\u00e9cnico \ud83d\udcc8 SEO t\u00e9cnico C\u00f3mo migrar<\/p>\n","protected":false},"author":1,"featured_media":3888,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-3889","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mantenimiento"],"_links":{"self":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3889","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/comments?post=3889"}],"version-history":[{"count":1,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3889\/revisions"}],"predecessor-version":[{"id":3890,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3889\/revisions\/3890"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/media\/3888"}],"wp:attachment":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/media?parent=3889"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/categories?post=3889"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/tags?post=3889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}