Confirme que se eliminaron los metadatos GPS de una imagen
Compare los metadatos de una foto antes y después de limpiarla y confirme que no sobrevive ninguna ubicación: en el ejemplo, las etiquetas de latitud, longitud y altitud figuran como las 3 eliminadas, y cualquier etiqueta GPS que quede hace fallar la comprobación. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Eliminar los metadatos de ubicación es fácil de afirmar, pero imprescindible de verificar. Esta capacidad compara los metadatos de imagen analizados antes y después de una operación de borrado, identifica de forma recursiva los campos relacionados con GPS y confirma que ninguno permanece en el resultado. Informa de las rutas exactas eliminadas, por lo que resulta útil para controles automáticos de privacidad, flujos de publicación y registros de auditoría. Si queda una sola etiqueta GPS, la solicitud devuelve un error en lugar de un éxito engañoso.
Obtenga metadatos comparables antes y después del borrado
Comience extrayendo los metadatos de la imagen original y del resultado depurado con el mismo lector siempre que sea posible. Un único lector mantiene coherentes los nombres y la jerarquía de los espacios de nombres, lo que facilita interpretar el informe. El comprobador recorre ambos objetos de forma recursiva; así reconoce un campo de cámara como <code>EXIF.GPSLatitude</code>, una clave XMP como <code>XMP.exif:GPSLongitude</code> y los valores incluidos en un objeto <code>GPS</code>.
La entrada contiene metadatos, no los bytes de la imagen: esta capacidad verifica las pruebas generadas por su flujo de extracción y limpieza, pero no edita el archivo. Conserve la captura original antes de ejecutar la herramienta de borrado, pues establece qué datos de ubicación existían. Otros campos de cámara, derechos, orientación o descripción pueden permanecer sin causar errores.
Para una auditoría fiable, vincule ambas capturas al identificador del trabajo y compruebe que corresponden exactamente al archivo de origen y al de salida.
Interprete la confirmación y el informe de etiquetas eliminadas
Una respuesta correcta significa que la captura posterior no contiene ninguna etiqueta GPS reconocida. También es válida una captura inicial sin etiquetas GPS: confirma que la posterior sigue limpia y devuelve una lista vacía. La detección se basa en los nombres de las claves y los espacios de nombres GPS, no en los valores de las coordenadas.
Por ello, una etiqueta presente cuenta aunque valga cero, esté vacía o sea null. Esta regla conservadora comprueba si el campo existe, sin especular sobre la utilidad de su contenido. Los contenedores GPS vacíos no cuentan como etiquetas porque no incluyen metadatos hoja.
Las rutas se ordenan de forma estable para que usted pueda guardar resultados, comparar ejecuciones o aplicar una política exacta sin depender del orden del objeto.
Detenga el flujo si sobreviven datos de ubicación
Trate ese resultado como un borrado fallido: no publique, cargue, envíe por correo ni archive la imagen como segura para la privacidad. Revise si la herramienta omitió un campo GPS de EXIF, conservó una propiedad de ubicación XMP o reescribió los metadatos bajo otro espacio de nombres. Ejecute de nuevo la limpieza con la política adecuada, extraiga metadatos nuevos del resultado y repita la comprobación.
Este comportamiento cerrado ante fallos evita que una eliminación parcial parezca correcta solo porque desaparecieron algunas coordenadas. El recorrido limita la profundidad y el número de nodos para impedir un consumo de recursos sin control. Además, no usa red, hora actual ni valores aleatorios, por lo que el mismo par de capturas siempre produce la misma respuesta.
Integre esta verificación en una política más amplia: los nombres de archivo, píxeles visibles, pies de foto, archivos auxiliares o bases de datos también pueden revelar una ubicación.
Qué puede hacer con ella
Bloquear la publicación de fotos inseguras
Detenga un CMS o un proceso de publicación si la imagen tratada todavía expone algún campo GPS.
Auditar un flujo de privacidad multimedia
Registre exactamente qué rutas GPS desaparecieron entre los metadatos originales y los del resultado depurado.
Probar herramientas de borrado de metadatos
Use ejemplos fijos anteriores y posteriores para detectar regresiones al cambiar una biblioteca, un codificador o una política.
Preguntas frecuentes
¿Esta capacidad elimina los metadatos GPS de una imagen?
No. Verifica metadatos analizados antes y después de otra operación de borrado e informa de las etiquetas GPS desaparecidas.
¿Admite estructuras EXIF y XMP anidadas?
Sí. El comprobador recorre objetos anidados y reconoce campos con prefijo GPS y valores dentro de espacios de nombres GPS.
¿Una etiqueta GPS nula o vacía cuenta como metadato restante?
Sí. La verificación de privacidad comprueba si la etiqueta existe, aunque su valor actual no parezca útil.
¿Qué pasa si una etiqueta GPS sobrevive a la limpieza?
La comprobación falla en lugar de dar un éxito engañoso y nombra las etiquetas que quedan. No publique la imagen como segura: repita la limpieza, extraiga de nuevo los metadatos del archivo nuevo y vuelva a comprobar.
¿Puedo comprobar una imagen que nunca tuvo datos de ubicación?
Sí. Si los metadatos de antes no tienen etiquetas GPS, la comparación sigue siendo válida: confirma que los de después también están limpios y devuelve una lista vacía de etiquetas eliminadas.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/image/metadata-gps-strip-confirm \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"before_metadata":{"EXIF":{"Make":"Example Camera","GPSLatitude":"51 deg 30'\'' 26.00 N","GPSLongitude":"0 deg 7'\'' 39.00 W"},"XMP":{"Creator":"Studio"}},"after_metadata":{"EXIF":{"Make":"Example Camera"},"XMP":{"Creator":"Studio"}}}'const res = await fetch("https://api.kit.forhosting.com/image/metadata-gps-strip-confirm", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"before_metadata": {
"EXIF": {
"Make": "Example Camera",
"GPSLatitude": "51 deg 30' 26.00 N",
"GPSLongitude": "0 deg 7' 39.00 W"
},
"XMP": {
"Creator": "Studio"
}
},
"after_metadata": {
"EXIF": {
"Make": "Example Camera"
},
"XMP": {
"Creator": "Studio"
}
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/metadata-gps-strip-confirm",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"before_metadata": {
"EXIF": {
"Make": "Example Camera",
"GPSLatitude": "51 deg 30' 26.00 N",
"GPSLongitude": "0 deg 7' 39.00 W"
},
"XMP": {
"Creator": "Studio"
}
},
"after_metadata": {
"EXIF": {
"Make": "Example Camera"
},
"XMP": {
"Creator": "Studio"
}
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/metadata-gps-strip-confirm", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"before_metadata":{"EXIF":{"Make":"Example Camera","GPSLatitude":"51 deg 30\' 26.00 N","GPSLongitude":"0 deg 7\' 39.00 W"},"XMP":{"Creator":"Studio"}},"after_metadata":{"EXIF":{"Make":"Example Camera"},"XMP":{"Creator":"Studio"}}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"before_metadata":{"EXIF":{"Make":"Example Camera","GPSLatitude":"51 deg 30' 26.00 N","GPSLongitude":"0 deg 7' 39.00 W"},"XMP":{"Creator":"Studio"}},"after_metadata":{"EXIF":{"Make":"Example Camera"},"XMP":{"Creator":"Studio"}}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/metadata-gps-strip-confirm", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"before_metadata": {
"EXIF": {
"Make": "Example Camera",
"GPSLatitude": "51 deg 30' 26.00 N",
"GPSLongitude": "0 deg 7' 39.00 W"
},
"XMP": {
"Creator": "Studio"
}
},
"after_metadata": {
"EXIF": {
"Make": "Example Camera"
},
"XMP": {
"Creator": "Studio"
}
}
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.metadata_gps_strip_confirm",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 15 |
max_megapixels | 12 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Obtenga metadatos comparables antes y después del borrado
Envíe esos objetos analizados como <code>before_metadata</code> y <code>after_metadata</code>.
Interprete la confirmación y el informe de etiquetas eliminadas
El campo <code>confirmed</code> vale true, <code>gps_tags_after</code> vale cero y <code>removed_tags</code> enumera, de forma ordenada, las rutas presentes antes del borrado. <code>removed_count</code> indica la longitud de esa lista y <code>gps_tags_before</code> deja explícita la exposición inicial.
Detenga el flujo si sobreviven datos de ubicación
Si la captura posterior incluye cualquier etiqueta GPS, la capacidad devuelve <code>invalid_input</code> y nombra las rutas que permanecen.
Preguntas técnicas
¿Qué ocurre si permanece una etiqueta GPS?
La solicitud falla con un error invalid_input que enumera las rutas restantes, para que una limpieza parcial no se confunda con un éxito.
¿Cuánto cuesta una comprobación por API?
Cada solicitud cuesta $0.002. La implementación determinista del navegador utiliza la misma lógica principal de comprobación.