Cómo desactivar las imágenes -scaled de WordPress (big_image_size_threshold)
Arregla las imágenes borrosas de WordPress subiendo o eliminando el límite de 2560px con el filtro big_image_size_threshold, y descubre por qué el paso que todos se saltan es volver a subirlas.
Publicada
Añade un filtro sobre big_image_size_threshold que devuelva false y WordPress dejará de crear copias -scaled al subir. Devuelve un número en su lugar y subirás el límite en vez de eliminarlo. Ambos van en functions.php o en un pequeño mu-plugin, y ambos solo afectan a las subidas hechas después de que el filtro esté activo.
// Disable the cap entirely — no -scaled copies at all.
add_filter( 'big_image_size_threshold', '__return_false' );
// Or just raise it. Longest edge, in pixels.
add_filter( 'big_image_size_threshold', function () {
return 3840;
} );
Qué está haciendo WordPress en realidad
Desde WordPress 5.3, cada subida se mide por su lado más largo. Si ese lado supera big_image_size_threshold —2560px de fábrica—, WordPress recodifica la imagen hasta ese límite, la guarda como tu-foto-scaled.jpg y reescribe los metadatos del adjunto para que el tamaño full apunte ahora a la copia escalada.
Tu original no se borra. Se queda en el disco con su nombre de archivo original, registrado en los metadatos del adjunto y accesible desde PHP mediante wp_get_original_image_path(). Pero nada del front end lo sirve. Ni el editor de bloques, ni srcset, ni la vista previa de la biblioteca de medios. Está ahí como copia de archivo.
Todo lo que viene después se genera a partir del archivo escalado, no de lo que subiste:
| Tamaño | Origen a partir del que se genera |
|---|---|
full | la copia -scaled |
large, medium_large, medium, thumbnail | la copia -scaled |
Tamaños personalizados de add_image_size | la copia -scaled |
Tamaños de temas y plugins, p. ej. woocommerce_thumbnail | la copia -scaled |
Candidatas de srcset | la copia -scaled |
Ese único detalle es el que pilla desprevenida a tanta gente.
Por qué esta es la causa habitual de “mi imagen nítida se ve borrosa”
Pasan dos cosas a la vez, y solo una es evidente.
La evidente es la resolución. Subes una foto de 4000px para una cabecera a todo el ancho. WordPress le entrega al navegador 2560px. En una pantalla normal que llena un contenedor de 1600px, nadie lo nota. En una pantalla retina 2x ese contenedor pide unos 3200 píxeles reales, recibe 2560 y el navegador estira lo que falta. Bordes blandos, detalle pastoso, texto dentro de la imagen que se vuelve difuso.
La menos evidente es la recodificación. La copia -scaled no es un recorte sin pérdidas de tu archivo. WordPress decodifica tu subida, la redimensiona y la vuelve a comprimir con su propio ajuste de calidad JPEG. Si tu original ya era un JPEG comprimido salido de Lightroom o de un móvil, eso es una codificación de segunda generación: artefactos de compresión sobre artefactos de compresión. El detalle fino, el grano y los degradados planos son los que peor lo llevan. Se nota incluso cuando las dimensiones en píxeles parecen suficientes.
Confírmalo antes de cambiar nada. Abre la imagen en una pestaña nueva y lee el nombre de archivo en la URL. -scaled.jpg significa que el límite se disparó. Un sufijo de dimensiones como -1536x1024.jpg significa otra cosa: srcset eligió una intermedia demasiado pequeña, y ahí el filtro del umbral no te va a ayudar.
En el servidor:
find wp-content/uploads -name '*-scaled.*' | wc -l
Si ese número es alto, el límite lleva tiempo dando forma a toda tu biblioteca.
También puedes soltar un archivo en la herramienta para desactivar imágenes scaled y ver si un origen concreto superaría el umbral y con qué dimensiones acabaría la copia escalada, antes de comprometerte con un ajuste.
El equilibrio real
Casi todos los artículos te dicen que desactivar el límite cuesta espacio en disco. Es al revés, y merece la pena precisarlo.
El uso de disco por imagen baja ligeramente. Con el umbral activo, WordPress guarda tu original y una copia grande escalada. Con él apagado, te quedas solo con el original. Un archivo en lugar de dos.
El ancho de banda y el peso de la página suben, a veces mucho. Con el límite desactivado, full es tu subida sin tocar. Cualquier cosa que enlace o muestre el tamaño completo —una lightbox, un plugin de galería, un enlace de “ver original”, un tema que pide full para las cabeceras— sirve ahora un archivo que puede pesar 6MB en vez de 900KB. En móvil eso es un problema real de Largest Contentful Paint, y los CDN de imágenes no siempre te salvan porque algunos dejan pasar los archivos por encima de cierto tamaño.
La memoria durante la subida sube. Redimensionar una imagen de 6000px en PHP consume bastante más memoria que una de 2560px. En un alojamiento compartido barato con poco límite de memoria de PHP, desactivar el tope es una forma bastante plausible de empezar a tener subidas fallidas o miniaturas generadas a medias. Subir el umbral a 3840 en vez de eliminarlo es la versión segura del mismo cambio.
Por eso lo razonable en la mayoría de sitios es subir el número, no quitarlo. Quitarlo es lo correcto cuando sirves imágenes que de verdad necesitan resolución completa: galerías con calidad de impresión, zoom de producto, fotografía de arquitectura, cualquier cosa donde se espere que el usuario inspeccione el original.
Cómo aplicar el cambio bien
1. Pon el filtro donde sobreviva. El functions.php de un tema hijo sirve. Un mu-plugin de un solo archivo es mejor, porque un cambio de tema no puede deshacerlo en silencio.
<?php
/**
* Plugin Name: Raise big image threshold
*/
add_filter( 'big_image_size_threshold', function () {
return 3840;
} );
2. Vuelve a subir las imágenes afectadas. Este es el paso que la gente se salta para luego concluir que el filtro no funcionó. El umbral se evalúa una sola vez, al subir. Los adjuntos existentes conservan sus metadatos antiguos para siempre. Borra el adjunto, súbelo otra vez y luego corrige las referencias en tus entradas.
3. No esperes que regenerar las miniaturas rescate nada. wp media regenerate con WP-CLI reconstruye los tamaños intermedios a partir de lo que los metadatos llamen archivo completo, que en una imagen ya recortada es la copia -scaled. No puede restaurar detalle que ya se descartó. Es útil como limpieza después de volver a subir. Inútil como solución por sí solo.
4. Comprueba el resultado, no lo des por hecho. Después de volver a subir, abre la imagen en el front end y lee otra vez el nombre de archivo. Si no aparece -scaled, el filtro está funcionando.
Cuándo desactivarlo es la decisión equivocada
Si tus imágenes de origen ya están por debajo de 2560px y aun así se ven borrosas, el umbral nunca estuvo implicado. El problema es que la caja donde se muestran es más grande que los píxeles disponibles, y la solución es un archivo de origen más grande o un contenedor más pequeño, no este filtro.
Si el nombre de archivo servido lleva un sufijo de dimensiones en lugar de -scaled, srcset eligió una candidata pequeña. Eso suele ser un desajuste entre el ancho de contenido que declara tu tema y la caja en la que realmente se muestra la imagen. Apagar el límite no cambia nada de eso.
Y si un plugin está reescribiendo tu src hacia un optimizador o un proxy de CDN, nada de esto aplica hasta que compruebes qué está sirviendo ese proxy. Compara lo que WordPress debería estar generando con lo que el navegador carga de verdad; cuando no coinciden, mira lo que hay en medio.
FAQ
Preguntas
¿Cómo desactivo las imágenes scaled en WordPress?
Añade un filtro sobre big_image_size_threshold que devuelva false. Ponlo en functions.php o en un pequeño mu-plugin. Devolver false apaga el límite por completo, así que las subidas conservan sus dimensiones originales y no se crea ninguna copia -scaled. Devolver un número en su lugar, por ejemplo 3840, sube el límite en vez de eliminarlo.
¿Qué es el sufijo -scaled en el nombre de archivo de WordPress?
Señala una copia recodificada que WordPress creó porque tu subida superaba los 2560px en su lado más largo. Esa copia pasa a ser el tamaño completo en todo tu sitio. Tu archivo original sigue en el disco con su nombre normal, pero nada del front end enlaza a él, y todas las miniaturas y candidatas de srcset se generan a partir de la copia escalada.
¿Desactivar las imágenes scaled consume más espacio en disco?
Por imagen suele consumir algo menos, porque WordPress deja de escribir un segundo archivo grande junto a tu original. El coste real es el ancho de banda, no el almacenamiento. Con el límite desactivado, cualquier cosa que enlace al tamaño completo sirve tu subida sin tocar, que pueden ser varios megabytes en una conexión móvil.
¿Desactivar el umbral arreglará las imágenes que ya están borrosas?
No. El filtro solo afecta a las subidas nuevas. Las imágenes que ya están en la biblioteca conservan metadatos que apuntan a su copia escalada, y regenerar las miniaturas reconstruye los tamaños a partir de ese mismo archivo recortado. Para recuperar la resolución tienes que borrar el adjunto y volver a subirlo con el filtro ya activo.
¿Es 2560px el umbral adecuado?
Para la mayoría de sitios de contenido, sí. Un origen de 2560px cubre una caja de 1280px a densidad de píxeles 2x, que es el caso habitual. Súbelo a 3840 si usas cabeceras a sangre completa, zoom de producto o galerías fotográficas. Desactívalo del todo solo cuando de verdad necesites servir originales sin tocar.