Données GPS dans les photos : ce que WordPress sert pour les petites images, et comment les supprimer
Une photo de la fête d'été dans votre propre jardin peut contenir les coordonnées de votre maison. WordPress ne les supprime pas toujours : les photos jusqu'à 2 560 pixels sont servies telles que l'original envoyé, et quand c'est le serveur qui les réduit avec Imagick, les versions réduites conservent elles aussi les données. Nous l'avons mesuré sous WordPress 7.1.3, fichier par fichier.
Les appareils photo et les téléphones écrivent dans un fichier image plus que l'image : marque et modèle, heure de la prise de vue, exposition et, si la localisation est activée, le lieu de la photo en latitude et longitude. Tout cela se trouve dans le bloc EXIF, au début du fichier. Qui charge la photo charge aussi le bloc.
WordPress n'affiche ces informations nulle part. Dans la base de données, il enregistre l'appareil, l'ouverture, le temps de pose et l'heure de la prise de vue, et les coordonnées ne font pas partie des champs qu'il lit. Cela rassure trop vite, car les coordonnées sont dans le fichier, et le fichier part chez chaque visiteur.
La faille dont parle cet article existait aussi dans notre propre plugin de galeries. Jusqu'à la version 1.2.5, Heckgalerie ne nettoyait le fichier en taille réelle que lorsque WordPress l'avait créé lui-même, par exemple sous -scaled pour les grandes photos. Les petites photos partaient donc avec leur GPS, par exemple dans la lightbox, et sur les serveurs avec Imagick les tailles intermédiaires aussi. La version 1.2.6 corrige les deux. Pour cet article, nous avons d'abord mesuré ce que WordPress sert sans aucun plugin.
Comment nous avons mesuré
WordPress 7.1.3 avec PHP 8.3 dans WordPress Playground, le 12 octobre 2026. La photo de test est un JPEG que nous avons généré nous-mêmes, avec un bloc EXIF : marque de l'appareil, modèle, heure de la prise de vue et coordonnées GPS à Hambourg. Nous l'avons téléversée par le même traitement côté serveur que celui des téléversements dans la médiathèque, en deux tailles : 1 600 × 1 200 pixels, sous le seuil, et 4 000 × 3 000 pixels. Nous avons ensuite lu chaque fichier du dossier des téléversements deux fois, avec la fonction PHP exif_read_data et avec notre propre lecteur, qui parcourt le bloc EXIF octet par octet. Les deux ont donné le même résultat pour chaque fichier.
Un mot sur l'éditeur d'images. WordPress traite les images soit avec l'extension PHP GD, soit avec Imagick, et choisit Imagick quand les deux sont disponibles. Dans Playground, le choix se porte sur GD, car l'extension Imagick n'y indique aucun numéro de version et échoue à la vérification de WordPress. Pour la colonne Imagick, nous avons donc forcé l'éditeur Imagick de WordPress lui-même en sautant uniquement cette vérification. Le calcul a été fait par ImageMagick 7.1.1.
Ce que sert WordPress
| Fichier | avec GD | avec Imagick |
|---|---|---|
| Petite photo (1 600 px), taille réelle : l'original | GPS | GPS |
| Petite photo, cinq tailles intermédiaires | propre | GPS |
Grande photo (4 000 px), -scaled à 2 560 px | propre | GPS |
| Grande photo, six tailles intermédiaires | propre | GPS |
| Grande photo, original à 4 000 px (à côté, sans lien dans le HTML) | GPS | GPS |
GPS signifie que la latitude et la longitude se trouvaient inchangées dans le fichier. Propre signifie qu'il ne restait plus de bloc EXIF.
La première ligne est le cœur de cet article. Si le grand côté d'une photo ne dépasse pas 2 560 pixels, WordPress ne crée pas de version réduite avec le suffixe -scaled. Le fichier en taille réelle est alors la photo telle qu'elle a été téléversée, quel que soit l'éditeur. Dans le code, ce seuil s'appelle big_image_size_threshold et vaut 2 560 par défaut. Une photo de 12 mégapixels (4 032 × 3 024) est au-dessus, alors qu'une photo réduite ou recadrée avant le téléversement peut être en dessous. Que les métadonnées survivent à cette réduction dépend du logiciel.
Le deuxième constat se trouve dans la colonne Imagick. L'éditeur Imagick de WordPress supprime bien des profils lors de la réduction, mais il en exclut expressément cinq : icc et icm pour les couleurs, iptc pour le droit d'auteur, xmp pour les droits d'utilisation et exif pour l'orientation. Le GPS se trouve dans le bloc EXIF, il reste donc dans toutes les tailles. Le filtre image_strip_meta ne fait qu'activer ou désactiver ce nettoyage. Nous avons mesuré les deux cas, avec le même résultat. GD supprime les profils de toute façon : c'est ce que dit le code source de WordPress, et c'est ce que nous avons constaté.
Sous GD, nous avons trouvé une exception : une petite photo qui ne tient debout que grâce à une instruction de rotation dans son EXIF est tournée par WordPress au téléversement et enregistrée à nouveau sous -rotated. Cette version était propre. L'original reste ici aussi à côté.
image_strip_meta ne renvoie pas false. Par cette voie, les tailles intermédiaires n'ont donc pas de GPS, même sur les serveurs avec Imagick. L'éditeur envoie l'original sans le modifier, donc rien ne change pour les petites photos. Nous n'avons pas mesuré cette voie, nous l'avons lue dans le code source.Où l'original apparaît sur votre site
Un original dans le dossier des téléversements serait moitié moins grave si rien n'y menait. Pour la petite photo, WordPress y renvoie à plusieurs endroits, sans que personne ne choisisse délibérément la taille originale. Nous avons mesuré le HTML que WordPress produit pour un bloc image :
- srcset : Même si vous insérez l'image plus petite, par exemple sur 1 024 pixels de large, WordPress indique l'original dans le
srcsetcomme version de 1 600 pixels. Jusqu'à 2 048 pixels de large, il y inclut la taille réelle (filtremax_srcset_image_width). Le fichier que télécharge le navigateur dépend de la largeur de l'écran et de la densité de pixels. La façon dont WordPress fixe lesrcsetet les tailles d'image est expliquée dans notre article sur le chargement différé dans WordPress. - Agrandir au clic : La lightbox du bloc image charge le fichier en taille réelle, donc, pour la petite photo, l'original.
- Lien vers le fichier média : Sur un bloc image comme dans une galerie, le lien mène à la taille réelle.
- Taille originale : Insérer l'image dans cette taille intègre directement l'original.
Pour la grande photo, le srcset ne citait que des tailles intermédiaires jusqu'à 2 048 pixels, et la lightbox pointait vers le fichier -scaled. Dans le HTML, WordPress ne fait de lien nulle part vers l'original de 4 000 pixels. Il se trouve pourtant dans le même dossier, et son adresse est celle du fichier -scaled sans ce suffixe. Qui connaît l'une connaît les deux. WordPress donne même lui-même le nom du fichier : l'API REST publique sous /wp-json/wp/v2/media l'indique dans le champ original_image, lors de notre mesure aussi pour les visiteurs non connectés.
Ce que change Heckgalerie 1.2.6
Heckgalerie est notre plugin de galeries dans le répertoire WordPress. Il possède le filtre EXIF depuis la version 1.0.0. Ce filtre s'applique à chaque JPEG qui entre dans la médiathèque, pas seulement aux images de galerie, et il est activé par défaut. La version 1.2.6 est dans le répertoire depuis le 12 octobre 2026. Notre comparatif des alternatives à NextGEN Gallery montre ce qui distingue Heckgalerie des autres plugins de galerie.
Si une photo est sous le seuil, Heckgalerie place désormais à côté de l'original une copie nettoyée avec le suffixe -web et en fait le fichier en taille réelle, comme WordPress le fait sinon avec -scaled. Dès lors, le srcset, la lightbox du bloc image, les galeries Heckgalerie et les images nouvellement insérées pointent vers la copie. Le fichier -scaled et toutes les tailles intermédiaires sont nettoyés sur place, y compris sur les serveurs dont l'éditeur conserve les métadonnées.
Nous avons répété la même mesure avec le paquet du répertoire de Heckgalerie 1.2.6, sous GD et sous Imagick. Ensuite, plus aucun fichier servi ne contenait de GPS. Nous n'avons pas mesuré avec Heckgalerie la voie du navigateur décrite dans l'encadré sur l'éditeur de blocs. La copie de la petite photo pesait 309 octets de moins que l'original : exactement le bloc EXIF et un commentaire que GD avait écrit en créant la photo de test. Les données d'image qui suivent étaient identiques octet par octet. Heckgalerie ne recalcule donc rien, il se contente d'omettre les sections de métadonnées.
Ce qui reste et ce qui part figure dans le code source. Restent le profil de couleur et le marqueur Adobe, sans lequel les images CMYK affichent de fausses couleurs. Partent EXIF, XMP, IPTC et les commentaires, ainsi que les images d'aperçu et secondaires que certains téléphones ajoutent derrière la photo et qui peuvent porter leurs propres données GPS.
Trois limites s'appliquent :
- JPEG uniquement. Les PNG et WebP passent sans changement.
- L'original reste. Heckgalerie ne touche pas au fichier téléversé. Il reste dans le dossier des téléversements, pour la petite photo sous le nom sans
-web. Pour les nouveaux téléversements, le HTML de la page n'y renvoie plus. L'API REST indique toutefois toujours son nom dans le champoriginal_image, et quiconque connaît l'adresse peut toujours le récupérer. - Désactivable. L'interrupteur se trouve dans les réglages de Heckgalerie. Si vous voulez garder les métadonnées dans les fichiers servis, désactivez-le.
Photos existantes : ce qu'apporte la régénération des miniatures
Les photos téléversées avant la version 1.2.6 sont nettoyées par Heckgalerie dès que leurs miniatures sont régénérées, par exemple avec wp media regenerate. Nous l'avons reproduit avec une photo de 1 600 pixels insérée avant l'activation dans cinq articles : une fois en taille originale, une fois sur 1 024 pixels de large et trois fois sur 1 024 pixels avec un lien vers le fichier média, en bloc image, dans un bloc Galerie et dans l'éditeur classique.
Après la régénération, l'image insérée plus petite et sans lien affichait la copie nettoyée dans son srcset sans que personne ne modifie l'article, car WordPress calcule le srcset au moment de l'affichage. L'image en taille originale et les trois liens pointaient toujours vers l'original avec GPS, car leur adresse est inscrite en dur dans l'article. Le journal des modifications le dit pour les images en taille originale, mais ne mentionne pas les liens. La solution : insérer l'image ou la galerie une nouvelle fois, ou refaire le lien. L'adresse du fichier média est désormais celle de la copie, et dans notre test les images nouvellement insérées pointaient vers elle.
Vous trouvez ces articles avec le champ de recherche de la liste des articles ou des pages, qui parcourt aussi le contenu. Saisissez le nom de fichier de l'original, par exemple photo.jpg. Dans notre test, la recherche a ainsi trouvé l'image en taille originale et les trois liens, et laissé de côté l'image plus petite sans lien. La recherche de size-full, la classe que WordPress ajoute aux images en taille originale dans l'éditeur de blocs comme dans l'éditeur classique, trouve ces images pour toutes les photos d'un coup, mais pas les liens. Les deux recherches ne couvrent que les articles et les pages : les images dans les widgets ou dans les modèles de l'éditeur de site n'apparaissent pas ainsi.
Sans Heckgalerie : vérifier et agir
Quel éditeur est actif ?
Dans Outils → Santé du site, onglet Informations, le champ Éditeur actif de la section Traitement des médias indique quel éditeur d'images est utilisé : WP_Image_Editor_Imagick ou WP_Image_Editor_GD. Avec Imagick, c'est la colonne de droite du tableau qui s'applique, avec la réserve de l'encadré sur l'éditeur de blocs.
Vérifier un fichier
Ouvrez une photo de votre site en taille réelle, via la lightbox ou le lien vers le fichier média, et enregistrez-la. Sous Windows, un clic droit sur le fichier, puis Propriétés et l'onglet Détails montrent s'il existe une section GPS avec latitude et longitude. Le système de propriétés de Windows, dans lequel lit cet onglet, a renvoyé les coordonnées de notre photo de test et rien pour les tailles intermédiaires du passage sous GD. Si un CDN ou un optimiseur d'images se trouve devant votre site, vous vérifiez toutefois ainsi ce qu'il livre, pas le fichier sur le serveur. Pour les fichiers sur le serveur, utilisez la ligne de la section suivante.
Trouver tous les fichiers d'un coup
Avec WP-CLI, une seule ligne liste tous les JPEG du dossier des téléversements qui contiennent des coordonnées. Elle nécessite l'extension PHP exif :
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; } }'
Dans notre test avec 26 fichiers, elle a cité exactement les huit qui contenaient du GPS : l'original d'une petite photo, l'original d'une grande derrière -scaled et une photo téléversée sous Imagick avec ses cinq tailles intermédiaires.
Agir
Nettoyer avant de téléverser. Ainsi, les coordonnées n'arrivent jamais sur le serveur. Sous Windows : clic droit, Propriétés, onglet Détails, puis en bas le lien pour supprimer les propriétés et informations personnelles, avec l'option de créer une copie dont toutes les propriétés possibles sont supprimées. Vérifiez ensuite la copie comme décrit plus haut. Sur un téléphone, l'appareil photo peut être réglé pour ne pas enregistrer la position.
Sur les serveurs avec Imagick, privilégier GD. Un filtre dans un petit plugin à vous ou dans le functions.php d'un thème enfant place GD en tête, et Imagick reste disponible pour les formats que GD ne gère pas :
add_filter( 'wp_image_editors', function () {
return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
} );
Les tailles existantes ne deviennent propres qu'après la régénération des miniatures, c'est ainsi que nous l'avons mesuré. Pour les originaux et pour les petites photos en taille réelle, ce changement ne fait rien. Il n'aide pas non plus pour les photos au format HEIC, comme en enregistrent certains téléphones : GD ne sait pas lire le HEIC, et d'après le code source WordPress continue donc de les traiter avec Imagick. Et GD supprime aussi les profils de couleur : les photos dans un espace colorimétrique autre que sRGB peuvent paraître légèrement différentes dans les tailles intermédiaires.
Nettoyer les fichiers existants. Ce que trouve la ligne WP-CLI ci-dessus peut être nettoyé directement sur le serveur avec un outil comme ExifTool, après une sauvegarde. Supprimez uniquement les données GPS, par exemple avec exiftool -gps:all= -overwrite_original. Sans -overwrite_original, ExifTool laisse à côté de chaque fichier une copie se terminant par _original, et cette copie contient toujours les coordonnées. Ne supprimez ni les originaux ni leurs autres données : d'après le code source, WordPress calcule les nouvelles tailles à partir de l'original et les redresse selon l'instruction de rotation de l'EXIF.
Servir des photos sans coordonnées
Heckgalerie supprime EXIF et GPS des fichiers JPEG que WordPress sert pour les nouveaux téléversements, et depuis la version 1.2.6 aussi des photos jusqu'à 2 560 pixels. Gratuit dans le répertoire WordPress, avec le filtre activé par défaut.
Questions fréquentes
WordPress supprime-t-il les données GPS lors du téléversement ?
Pas de l'original, et pour les photos jusqu'à 2 560 pixels sur le grand côté, l'original est justement le fichier que WordPress sert en taille réelle. Quand c'est le serveur qui crée les versions réduites, par exemple lors d'un téléversement dans la médiathèque, les données n'en disparaissent qu'avec GD. Avec Imagick, elles sont restées dans toutes les tailles lors de notre mesure, y compris dans le fichier scaled. Mesuré sous WordPress 7.1.3 le 12 octobre 2026.
Le filtre image_strip_meta aide-t-il contre le GPS dans les images ?
Pas sur le serveur. Là, le filtre décide seulement si l'éditeur Imagick de WordPress supprime des profils lors de la réduction, et l'éditeur exclut expressément le profil EXIF, qui contient les coordonnées. Nous avons mesuré avec le filtre activé puis désactivé, et les deux fois toutes les tailles intermédiaires contenaient le GPS. GD ignore le filtre, car il supprime les profils de toute façon. Quand l'éditeur de blocs réduit les images dans le navigateur, depuis WordPress 7.1, le filtre décide d'après le code source si seul le profil de couleur reste, par défaut, ou toutes les métadonnées. Si le filtre renvoie false, les tailles réduites dans le navigateur gardent donc aussi le GPS.
Comment savoir si les photos de mon site contiennent des coordonnées ?
Ouvrez une photo en taille réelle, via la lightbox ou le lien vers le fichier média, et enregistrez-la. Sous Windows, un clic droit, Propriétés puis l'onglet Détails montrent si le fichier contient une latitude et une longitude. Pour tout le dossier des téléversements, l'article donne une ligne pour WP-CLI qui liste tous les JPEG avec GPS.
Heckgalerie supprime-t-il aussi le GPS de l'original ?
Non, l'original téléversé reste intact dans le dossier des téléversements. Heckgalerie nettoie les versions que crée WordPress et, pour les photos jusqu'à 2 560 pixels, crée une copie nettoyée que WordPress utilise ensuite comme taille réelle. Pour les nouveaux téléversements, le HTML de la page ne renvoie plus à l'original, mais l'API REST publique indique toujours son nom de fichier dans le champ original_image. Si vous ne voulez pas des coordonnées sur le serveur non plus, supprimez-les avant le téléversement.
Que deviennent les images déjà insérées dans des articles ?
Avec Heckgalerie, les images insérées dans une taille inférieure à la taille originale pointent d'elles-mêmes vers la copie nettoyée dans leur srcset une fois les miniatures régénérées, car WordPress calcule le srcset à chaque affichage. Pour les photos jusqu'à 2 560 pixels, les images en taille originale et les liens vers le fichier média, y compris dans le bloc Galerie, gardent l'adresse de l'original, inscrite en dur dans l'article. Il faut les insérer ou refaire le lien une nouvelle fois. Une recherche du nom de fichier de l'original dans la liste des articles retrouve les deux cas.