Remova o EXIF da foto
Remova os metadados EXIF de uma foto antes de compartilhar: localização GPS, data, hora e modelo do aparelho somem, e a imagem continua exatamente igual. Tudo roda no seu navegador, grátis e sem cadastro — como o objetivo é privacidade, o arquivo nunca sai 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.
O que vai junto quando você manda uma foto
Uma foto de celular carrega, escondidos no arquivo, o modelo do aparelho, a data e a hora do clique e — com a localização ativa — as coordenadas exatas de onde você estava. Alguns aplicativos removem esses dados ao enviar; outros não. Foto anexada em e-mail, publicada em site de anúncios ou compartilhada por link de nuvem costuma viajar com tudo dentro. Quem recebe o arquivo pode abrir essa ficha em segundos — inclusive o endereço da sua casa, se a foto foi tirada lá.
Privacidade de verdade: nada é enviado
Esta ferramenta remove os metadados dentro do seu próprio navegador. O arquivo não sobe para servidor nenhum — a limpeza acontece no seu aparelho e você baixa a versão limpa na hora. Grátis, sem cadastro e sem limite de fotos. Faz sentido que seja assim: uma ferramenta que pedisse upload da sua foto para “protegê-la” estaria criando exatamente o risco que você quer eliminar.
A imagem muda alguma coisa?
Não: os pixels ficam intactos, com a mesma resolução e a mesma qualidade — o que sai é só a camada invisível de metadados. O arquivo limpo costuma até ficar um pouco menor. O original permanece na sua galeria como estava; a versão sem EXIF é uma cópia baixada, e é ela que você deve usar para publicar, anunciar ou enviar a desconhecidos.
Limpeza em escala, via API
Se a sua operação publica imagens de terceiros — marketplace, portal de anúncios, site institucional —, a mesma limpeza roda por API: cada arquivo passa pela remoção de metadados antes de ir ao ar, por US$ 0,002 por chamada, pago por uso. É uma boa prática de LGPD aplicada por padrão: nenhum usuário seu expõe a própria localização por descuido, e você não armazena dado que não precisa.
Casos de uso
Anúncio de móvel usado, sem o endereço de brinde
Ana Paula Ferreira fotografou o sofá na sala de casa para vender online. Antes de publicar, passa as fotos pela limpeza — as coordenadas GPS da sala somem, e o anúncio mostra só o sofá.
Portfólio publicado sem rastros pessoais
Uma artesã de Recife posta fotos das peças no site próprio. Com o EXIF removido, o que vai ao ar não revela nem o aparelho usado nem o ateliê — que fica no quintal de casa.
Marketplace que protege os vendedores por padrão
A plataforma da TecnoSul limpa os metadados de toda foto no upload, via API. Nenhum vendedor expõe a localização sem querer, e a empresa evita guardar dado pessoal desnecessário — LGPD na prática.
Perguntas frequentes
A qualidade da foto é alterada?
Não: a remoção atinge só os metadados. Resolução, cores e nitidez ficam exatamente como estavam.
Por que eu removeria o EXIF antes de postar?
Porque ele pode conter as coordenadas de onde a foto foi tirada — sua casa, seu trabalho — além de data, hora e aparelho. Informação que estranhos não precisam ter.
Vocês chegam a ver as fotos que eu limpo?
Não. O processo roda no seu navegador e o arquivo não é transmitido — não temos como ver o que nunca chega até nós.
Quanto custa usar?
Na página, nada: é grátis e sem limite. A versão por API, para limpar imagens dentro de um sistema, custa US$ 0,002 por chamada.
O EXIF removido pode ser recuperado do arquivo limpo?
Não — o arquivo baixado simplesmente não contém mais esses dados. O original com EXIF continua na sua galeria, sob seu controle.
Dá para limpar direto do celular?
Dá: abra a página no navegador do celular, escolha a foto e baixe a versão limpa — sem instalar nada.
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/exif-strip \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/image/exif-strip", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/exif-strip",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/exif-strip", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/exif-strip", 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
{
"image": "https://ejemplo.com/imagen.jpg"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.exif_strip",
"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. |