Datos GPS en fotos: lo que WordPress entrega con imágenes pequeñas y cómo eliminarlos
Una foto de la fiesta de verano en tu propio jardín puede llevar dentro del archivo las coordenadas de tu casa. WordPress no siempre las elimina: las fotos de hasta 2.560 píxeles se sirven como el original subido, y cuando el servidor las reduce con Imagick, también las versiones reducidas conservan los datos. Lo hemos medido en WordPress 7.1.3, archivo por archivo.
Las cámaras y los móviles escriben en un archivo de imagen más que la imagen: fabricante y modelo, hora de la toma, exposición y, si la ubicación está activada, el lugar de la foto como latitud y longitud. Todo eso está en el bloque EXIF, al principio del archivo. Quien carga la foto carga también el bloque.
WordPress no muestra estos datos en ningún sitio. En la base de datos guarda cámara, apertura, tiempo de exposición y hora de la toma, y las coordenadas no están entre los campos que lee. Eso tranquiliza demasiado pronto, porque las coordenadas están en el archivo, y el archivo llega a cada visitante.
El fallo del que trata este artículo también estaba en nuestro propio plugin de galerías. Hasta la versión 1.2.5, Heckgalerie solo limpiaba el archivo a tamaño completo cuando WordPress lo había creado por su cuenta, por ejemplo como -scaled en las fotos grandes. Por eso las fotos pequeñas salían con GPS, por ejemplo en la lightbox, y en servidores con Imagick también los tamaños intermedios. La versión 1.2.6 corrige ambas cosas. Para este artículo medimos primero lo que WordPress entrega sin ningún plugin.
Cómo lo medimos
WordPress 7.1.3 con PHP 8.3 en WordPress Playground, el 12 de octubre de 2026. La foto de prueba es un JPEG generado por nosotros con un bloque EXIF: fabricante de la cámara, modelo, hora de la toma y coordenadas GPS en Hamburgo. La subimos con el mismo procesamiento en el servidor que se ejecuta al subir a la biblioteca de medios, en dos tamaños: 1.600 × 1.200 píxeles, por debajo del umbral, y 4.000 × 3.000 píxeles. Después leímos cada archivo de la carpeta de subidas dos veces, con la función de PHP exif_read_data y con un lector propio que recorre el bloque EXIF byte a byte. Los dos dieron el mismo resultado en todos los archivos.
Una aclaración sobre el editor de imágenes. WordPress procesa las imágenes con la extensión de PHP GD o con Imagick, y elige Imagick cuando ambas están disponibles. En Playground la elección recae en GD, porque allí la extensión Imagick no informa de ningún número de versión y no pasa la comprobación de WordPress. Para la columna de Imagick forzamos por eso el editor Imagick del propio WordPress y solo nos saltamos esa comprobación. El trabajo lo hizo ImageMagick 7.1.1.
Lo que entrega WordPress
| Archivo | con GD | con Imagick |
|---|---|---|
| Foto pequeña (1.600 px), tamaño completo: el original | GPS | GPS |
| Foto pequeña, cinco tamaños intermedios | limpio | GPS |
Foto grande (4.000 px), -scaled de 2.560 px | limpio | GPS |
| Foto grande, seis tamaños intermedios | limpio | GPS |
| Foto grande, original de 4.000 px (está al lado, sin enlace en el HTML) | GPS | GPS |
GPS significa que latitud y longitud seguían sin cambios en el archivo. Limpio significa que ya no quedaba bloque EXIF.
La primera fila es el núcleo de este artículo. Si el lado largo de una foto no supera los 2.560 píxeles, WordPress no crea una versión reducida con el sufijo -scaled. El archivo a tamaño completo es entonces la foto tal como se subió, sea cual sea el editor. En el código, el umbral se llama big_image_size_threshold y viene fijado en 2.560. Una foto de 12 megapíxeles (4.032 × 3.024) queda por encima, mientras que una reducida o recortada antes de subirla puede quedar por debajo. Que los metadatos sobrevivan a esa reducción depende del programa.
El segundo hallazgo está en la columna de Imagick. El editor Imagick de WordPress elimina perfiles al reducir, pero excluye cinco de forma expresa: icc e icm para los colores, iptc para los derechos de autor, xmp para los derechos de uso y exif para la orientación. El GPS está en el bloque EXIF, así que se conserva en todos los tamaños. El filtro image_strip_meta solo activa o desactiva esa limpieza. Medimos las dos opciones y el resultado fue el mismo. GD descarta los perfiles de todos modos: así lo dice el código fuente de WordPress, y así lo vimos en la medición.
Con GD encontramos una excepción: una foto pequeña que solo se ve derecha gracias a una instrucción de giro en su EXIF la gira WordPress al subirla y la guarda de nuevo como -rotated. Esa versión estaba limpia. El original también se queda aquí al lado.
image_strip_meta no devuelva false. Así que por esta vía los tamaños intermedios no llevan GPS ni siquiera en servidores con Imagick. El original lo sube el editor sin cambios, de modo que para las fotos pequeñas no cambia nada. Esta vía no la medimos, la leímos en el código fuente.Dónde aparece el original en tu web
Un original en la carpeta de subidas sería la mitad de grave si nada apuntara a él. Con la foto pequeña, WordPress apunta a él en varios sitios, sin que nadie elija a propósito el tamaño completo. Medimos el HTML que WordPress genera para un bloque de imagen:
- srcset: Aunque insertes la imagen más pequeña, por ejemplo con 1.024 píxeles de ancho, WordPress incluye el original en el
srcsetcomo versión de 1.600 píxeles. Hasta 2.048 píxeles de ancho mete ahí el tamaño completo (filtromax_srcset_image_width). Qué archivo descarga el navegador depende del ancho de pantalla y de la densidad de píxeles. Cómo fija WordPress elsrcsety los tamaños de imagen lo explicamos en nuestro artículo sobre la carga diferida en WordPress. - Agrandar al hacer clic: La lightbox del bloque de imagen carga el archivo a tamaño completo, es decir, con la foto pequeña, el original.
- Enlace al archivo multimedia: Tanto en un bloque de imagen como en una galería, el enlace lleva al tamaño completo.
- Tamaño completo: Quien inserta la imagen así incrusta directamente el original.
Con la foto grande, el srcset solo incluía tamaños intermedios de hasta 2.048 píxeles, y la lightbox apuntaba al archivo -scaled. WordPress no enlaza en ningún sitio del HTML el original de 4.000 píxeles. Pero está en la misma carpeta, y su dirección es la del archivo -scaled sin ese sufijo. Quien conoce una conoce las dos. El nombre de archivo lo da incluso el propio WordPress: la API REST pública en /wp-json/wp/v2/media lo indica en el campo original_image, en nuestra medición también para visitantes sin sesión iniciada.
Qué cambia Heckgalerie 1.2.6
Heckgalerie es nuestro plugin de galerías en el directorio de WordPress. Tiene el filtro EXIF desde la versión 1.0.0. Se aplica a todo JPEG que entra en la biblioteca de medios, no solo a las imágenes de galería, y viene activado de serie. La versión 1.2.6 está en el directorio desde el 12 de octubre de 2026. En qué se diferencia Heckgalerie de otros plugins de galería lo explica nuestra comparativa de alternativas a NextGEN Gallery.
Si una foto queda por debajo del umbral, Heckgalerie coloca ahora junto al original una copia limpia con el sufijo -web y la convierte en el archivo a tamaño completo, igual que hace WordPress con -scaled. A partir de ahí, el srcset, la lightbox del bloque de imagen, las galerías de Heckgalerie y las imágenes que insertes de nuevo apuntan a la copia. El archivo -scaled y todos los tamaños intermedios los limpia en el sitio, también en servidores cuyo editor arrastra los metadatos.
Repetimos la misma medición con el paquete del directorio de Heckgalerie 1.2.6, con GD y con Imagick. Después, ningún archivo servido llevaba GPS. La vía del navegador, la del recuadro sobre el editor de bloques, no la medimos con Heckgalerie. La copia de la foto pequeña pesaba 309 bytes menos que el original: justo el bloque EXIF y un comentario que GD había escrito al crear la foto de prueba. Los datos de imagen que vienen detrás eran idénticos byte a byte. Heckgalerie no vuelve a calcular nada, solo deja fuera las secciones de metadatos.
Qué se queda y qué no está en el código fuente. Se quedan el perfil de color y la marca de Adobe sin la que las imágenes CMYK muestran colores equivocados. Se eliminan EXIF, XMP, IPTC y los comentarios, además de las imágenes de vista previa y secundarias que algunos móviles añaden detrás de la foto y que pueden llevar sus propios datos GPS.
Hay tres límites:
- Solo JPEG. PNG y WebP pasan sin cambios.
- El original se queda. Heckgalerie no toca el archivo subido. Sigue en la carpeta de subidas, en el caso de la foto pequeña con el nombre sin
-web. En las subidas nuevas, el HTML de la página ya no remite a él. La API REST sigue dando su nombre en el campooriginal_image, y cualquiera que conozca la dirección puede descargarlo. - Se puede desactivar. El interruptor está en los ajustes de Heckgalerie. Si quieres conservar los metadatos en los archivos servidos, desactívalo.
Fotos ya subidas: qué consigue regenerar las miniaturas
Las fotos subidas antes de la versión 1.2.6 las limpia Heckgalerie en cuanto se regeneran sus miniaturas, por ejemplo con wp media regenerate. Lo reprodujimos con una foto de 1.600 píxeles que se había insertado antes de la activación en cinco entradas: una vez a tamaño completo, una vez con 1.024 píxeles de ancho y tres veces con 1.024 píxeles y enlace al archivo multimedia, como bloque de imagen, en un bloque Galería y en el editor clásico.
Tras regenerar, la imagen insertada más pequeña y sin enlace mostraba en su srcset la copia limpia sin que nadie editara la entrada, porque WordPress calcula el srcset en el momento de la salida. La imagen a tamaño completo y los tres enlaces seguían apuntando al original con GPS, porque su dirección está fija en la entrada. El registro de cambios lo dice para las imágenes a tamaño completo, pero no menciona los enlaces. La solución: volver a insertar la imagen o la galería, o poner de nuevo el enlace. Desde entonces, la dirección del archivo multimedia es la de la copia, y en nuestra prueba las imágenes insertadas de nuevo apuntaban a ella.
Esas entradas las encuentras con el buscador de la lista de entradas o de páginas, que también recorre el contenido. Escribe el nombre de archivo del original, por ejemplo foto.jpg. En nuestra prueba así encontró la imagen a tamaño completo y los tres enlaces, y dejó fuera la imagen más pequeña sin enlace. Buscar size-full, la clase que WordPress añade a las imágenes a tamaño completo tanto en el editor de bloques como en el clásico, encuentra esas imágenes de todas las fotos a la vez, pero no los enlaces. Las dos búsquedas solo cubren entradas y páginas: las imágenes en widgets o en plantillas del editor del sitio no aparecen así.
Sin Heckgalerie: comprobar y actuar
¿Qué editor está activo?
En Herramientas → Salud del sitio, pestaña Información, el campo Editor activo de la sección Gestión de medios indica qué editor de imágenes se usa: WP_Image_Editor_Imagick o WP_Image_Editor_GD. Con Imagick vale la columna derecha de la tabla, con la salvedad del recuadro sobre el editor de bloques.
Comprobar un archivo
Abre una foto de tu web a tamaño completo, desde la lightbox o el enlace al archivo multimedia, y guárdala. En Windows, con clic derecho sobre el archivo, Propiedades y la pestaña Detalles ves si hay una sección GPS con latitud y longitud. El sistema de propiedades de Windows, del que lee esa pestaña, devolvió las coordenadas de nuestra foto de prueba y nada en los tamaños intermedios de la prueba con GD. Pero si delante de tu web hay una CDN o un optimizador de imágenes, así compruebas lo que entrega él, no el archivo del servidor. Para los archivos del servidor está la línea de la sección siguiente.
Encontrar todos los archivos de una vez
Con WP-CLI, una sola línea lista todos los JPEG de la carpeta de subidas que llevan coordenadas. Necesita la extensión exif de PHP:
wp eval 'foreach ( new RecursiveIteratorIterator( new RecursiveDirectoryIterator( wp_get_upload_dir()["basedir"] ) ) as $f ) { $x = preg_match( "/\.jpe?g$/i", $f ) ? @exif_read_data( (string) $f, "GPS" ) : false; if ( ! empty( $x["GPSLatitude"] ) ) { echo $f, PHP_EOL; } }'
En nuestra prueba con 26 archivos nombró exactamente los ocho con GPS: el original de una foto pequeña, el original de una grande detrás de -scaled y una foto subida con Imagick junto con sus cinco tamaños intermedios.
Actuar
Limpiar antes de subir. Solo así las coordenadas no llegan nunca al servidor. En Windows: clic derecho, Propiedades, pestaña Detalles y, abajo, el enlace para quitar propiedades e información personal, con la opción de crear una copia sin todas las propiedades posibles. Después comprueba la copia como se describe arriba. En el móvil se puede configurar la cámara para que no guarde la ubicación.
En servidores con Imagick, dar prioridad a GD. Un filtro en un pequeño plugin propio o en el functions.php de un tema hijo pone GD por delante, e Imagick sigue disponible para los formatos que GD no admite:
add_filter( 'wp_image_editors', function () {
return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
} );
Los tamaños existentes solo quedan limpios cuando regeneras las miniaturas, así lo medimos. En los originales y en las fotos pequeñas a tamaño completo el cambio no hace nada. Tampoco ayuda con las fotos en formato HEIC, como las guardan algunos móviles: GD no puede leer HEIC, así que, según el código fuente, WordPress las sigue procesando con Imagick. Y GD también descarta los perfiles de color: las fotos en un espacio de color distinto de sRGB pueden verse algo diferentes en los tamaños intermedios.
Limpiar los archivos existentes. Lo que encuentre la línea de WP-CLI de arriba se puede limpiar directamente en el servidor con una herramienta como ExifTool, después de hacer una copia de seguridad, por ejemplo con un plugin de copias de seguridad. Elimina solo los datos GPS, por ejemplo con exiftool -gps:all= -overwrite_original. Sin -overwrite_original, ExifTool deja junto a cada archivo una copia terminada en _original, y esa copia sigue llevando las coordenadas. No borres los originales ni el resto de sus datos: según el código fuente, WordPress calcula los tamaños nuevos a partir del original y los endereza según la instrucción de giro del EXIF.
Servir fotos sin coordenadas
Heckgalerie elimina EXIF y GPS de los archivos JPEG que WordPress entrega para las subidas nuevas, y desde la versión 1.2.6 también de las fotos de hasta 2.560 píxeles. Gratis en el directorio de WordPress, con el filtro activado de serie.
Preguntas frecuentes
¿WordPress elimina los datos GPS al subir una foto?
Del original no, y en las fotos de hasta 2.560 píxeles en el lado largo el original es justo el archivo que WordPress sirve a tamaño completo. Cuando el servidor genera las versiones reducidas, por ejemplo al subir a la biblioteca de medios, los datos solo desaparecen de ellas con GD. Con Imagick se mantuvieron en todos los tamaños en nuestra medición, también en el archivo scaled. Medido en WordPress 7.1.3 el 12 de octubre de 2026.
¿Sirve el filtro image_strip_meta contra el GPS en las imágenes?
En el servidor, no. Allí el filtro solo decide si el editor Imagick de WordPress elimina perfiles al reducir la imagen, y el editor excluye expresamente el perfil EXIF, que es donde están las coordenadas. Medimos con el filtro activado y desactivado, y las dos veces todos los tamaños intermedios llevaban GPS. GD no tiene en cuenta el filtro, porque descarta los perfiles de todos modos. Cuando el editor de bloques reduce en el navegador, a partir de WordPress 7.1, según el código fuente el filtro decide si solo se queda el perfil de color, lo predeterminado, o todos los metadatos. Si el filtro devuelve false, los tamaños reducidos en el navegador también conservan el GPS.
¿Cómo sé si las fotos de mi web contienen coordenadas?
Abre una foto a tamaño completo, desde la lightbox o el enlace al archivo multimedia, y guárdala. En Windows, con clic derecho, Propiedades y la pestaña Detalles ves si el archivo lleva latitud y longitud. Para toda la carpeta de subidas, el artículo incluye una línea para WP-CLI que lista todos los JPEG con GPS.
¿Heckgalerie elimina el GPS también del original?
No, el original subido queda intacto en la carpeta de subidas. Heckgalerie limpia las versiones que crea WordPress y, para fotos de hasta 2.560 píxeles, crea una copia limpia que WordPress usa desde entonces como tamaño completo. En las subidas nuevas, el HTML de la página ya no remite al original, pero la API REST pública sigue dando su nombre de archivo en el campo original_image. Si no quieres las coordenadas ni siquiera en el servidor, elimínalas antes de subir la foto.
¿Qué pasa con las imágenes que ya están en entradas?
Con Heckgalerie, las imágenes insertadas en un tamaño menor que el completo apuntan solas a la copia limpia en su srcset después de regenerar las miniaturas, porque WordPress calcula el srcset en cada salida. En las fotos de hasta 2.560 píxeles, las imágenes a tamaño completo y los enlaces al archivo multimedia, también en el bloque Galería, conservan la dirección del original, porque está fija en la entrada. Hay que insertarlas o enlazarlas una vez más. Buscar el nombre de archivo del original en la lista de entradas encuentra los dos casos.