Confirme a remoção dos metadados GPS de uma imagem
Compare os metadados de uma foto antes e depois da limpeza e confirme que nenhuma localização sobrou: no exemplo, as etiquetas de latitude, longitude e altitude aparecem como as 3 removidas, e qualquer etiqueta GPS restante faz a verificação falhar. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
É fácil afirmar que os metadados de localização foram removidos, mas é essencial comprovar isso. Esta capacidade compara os metadados analisados antes e depois de uma operação de limpeza, identifica recursivamente os campos ligados a GPS e confirma que nenhum deles permaneceu no resultado. Ela informa os caminhos exatos removidos e atende a verificações automáticas de privacidade, fluxos de publicação e registros de auditoria. Se restar uma única tag GPS, a solicitação retorna um erro em vez de um sucesso enganoso.
Obtenha metadados comparáveis antes e depois da limpeza
Comece extraindo os metadados da imagem original e do arquivo limpo com o mesmo leitor sempre que possível. O uso de um único leitor mantém consistentes os nomes e a hierarquia dos namespaces, facilitando a interpretação do relatório. O verificador percorre os dois objetos recursivamente e reconhece um campo de câmera como <code>EXIF.GPSLatitude</code>, uma chave XMP como <code>XMP.exif:GPSLongitude</code> e valores dentro de um objeto <code>GPS</code>.
A entrada contém metadados, não bytes da imagem: esta capacidade verifica as evidências geradas pelo seu fluxo de extração e limpeza, sem editar o arquivo. Preserve a captura original antes de executar a ferramenta, pois ela estabelece quais dados de localização existiam. Outros campos de câmera, direitos autorais, orientação e descrição podem permanecer sem gerar erro.
Para uma auditoria confiável, associe as duas capturas ao identificador do trabalho e confirme que elas representam exatamente os arquivos de origem e de saída avaliados.
Entenda a confirmação e o relatório das tags removidas
Uma resposta bem-sucedida significa que a captura posterior não contém nenhuma tag GPS reconhecida. Uma captura anterior sem tags GPS também é válida: ela confirma que a posterior continua limpa e retorna uma lista vazia. O reconhecimento considera nomes de chaves e namespaces GPS, não os valores das coordenadas.
Portanto, uma tag presente conta mesmo que seu valor seja zero, vazio ou null. Essa regra conservadora verifica a existência do campo sem tentar adivinhar a utilidade do conteúdo. Contêineres GPS vazios não contam como tags porque não têm metadados folha.
Os caminhos são estáveis e ordenados para que você possa guardar resultados, comparar execuções ou aplicar uma política exata sem depender da ordem das propriedades do objeto.
Interrompa o fluxo quando dados de localização sobreviverem
Trate esse resultado como falha na limpeza: não publique, envie, compartilhe por e-mail nem arquive a imagem como segura para privacidade. Verifique se a ferramenta ignorou um campo GPS do EXIF, preservou uma propriedade de localização XMP ou regravou metadados em outro namespace. Execute a limpeza novamente com a política adequada, extraia metadados novos do resultado e repita a confirmação.
Esse comportamento fechado em caso de falha impede que uma remoção parcial pareça bem-sucedida só porque algumas coordenadas sumiram. A travessia tem limites de profundidade e de nós, evitando consumo ilimitado diante de entradas malformadas ou muito grandes. Ela também é determinística e não usa rede, horário atual nem aleatoriedade.
Use a resposta como um controle dentro de uma política mais ampla; nomes de arquivo, pixels visíveis, legendas, arquivos auxiliares e bancos de ativos também podem revelar uma localização.
Casos de uso
Bloquear a publicação de fotos inseguras
Interrompa um CMS ou fluxo de publicação quando a imagem processada ainda expuser algum campo de GPS.
Auditar um fluxo de privacidade de mídia
Registre exatamente quais caminhos GPS desapareceram entre os metadados de origem e os do resultado higienizado.
Testar ferramentas de remoção de metadados
Use exemplos fixos de antes e depois para detectar regressões ao trocar biblioteca, codificador ou política de limpeza.
Perguntas frequentes
Esta capacidade remove metadados GPS de uma imagem?
Não. Ela verifica metadados analisados antes e depois de outra operação de limpeza e informa quais tags GPS desapareceram.
Estruturas EXIF e XMP aninhadas são aceitas?
Sim. O verificador percorre objetos aninhados e reconhece campos com prefixo GPS e valores dentro de namespaces GPS.
Uma tag GPS nula ou vazia conta como metadado restante?
Sim. A confirmação de privacidade verifica se a tag existe, mesmo quando o valor atual parece não ser útil.
O que acontece se uma etiqueta GPS sobreviver à limpeza?
A verificação falha em vez de indicar sucesso e aponta as etiquetas que restaram. Não publique a imagem como segura: repita a limpeza, extraia de novo os metadados do arquivo novo e verifique outra vez.
Dá para verificar uma imagem que nunca teve dados de localização?
Sim. Se os metadados de antes não têm etiquetas GPS, a comparação continua válida: ela confirma que os de depois também estão limpos e devolve uma lista vazia de etiquetas removidas.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"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"
}
}
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.metadata_gps_strip_confirm",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 15 |
max_megapixels | 12 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Obtenha metadados comparáveis antes e depois da limpeza
Envie esses objetos analisados como <code>before_metadata</code> e <code>after_metadata</code>.
Entenda a confirmação e o relatório das tags removidas
O campo <code>confirmed</code> é true, <code>gps_tags_after</code> é zero e <code>removed_tags</code> apresenta, em ordem, os caminhos existentes antes da limpeza. <code>removed_count</code> informa o tamanho dessa lista, enquanto <code>gps_tags_before</code> explicita a exposição inicial.
Interrompa o fluxo quando dados de localização sobreviverem
Se a captura posterior incluir qualquer tag GPS, a capacidade retorna <code>invalid_input</code> e identifica os caminhos remanescentes.
Perguntas técnicas
O que acontece se uma tag GPS permanecer?
A solicitação falha com um erro invalid_input que lista os caminhos restantes, evitando que uma limpeza parcial pareça concluída.
Quanto custa uma verificação pela API?
Cada solicitação custa US$ 0,002. A implementação determinística no navegador usa a mesma lógica central de verificação.