Comprimir imagem
A compressão de imagem reduz o peso do arquivo — JPG, PNG ou WebP — mantendo a qualidade que o olho percebe. Serve para sites que precisam carregar rápido, uploads com limite de tamanho e qualquer sistema que armazene fotos aos milhares, tudo por uma chamada de API com preço publicado.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
De onde vem o peso de uma foto
Uma foto de celular sai da câmera pesando vários megabytes porque guarda muito mais detalhe do que qualquer tela vai exibir. Boa parte desse peso é invisível na prática: níveis de qualidade acima do que o olho distingue, resolução além do necessário e metadados. A compressão ataca exatamente essa gordura — reorganiza a informação da imagem para gastar menos bytes onde a diferença não aparece.
Com perdas ou sem perdas, você escolhe
Formatos como JPG e WebP aceitam compressão com perdas: você regula a intensidade e troca bytes por detalhes imperceptíveis. PNG, por natureza, comprime sem perder nada — ideal para capturas de tela e gráficos com texto. Na chamada, você define o nível desejado; em caso de dúvida, o padrão busca o ponto em que a redução é grande e a diferença visual, irrelevante. Se o resultado precisar de um formato mais eficiente, a conversão para WebP ou AVIF é uma capacidade vizinha do mesmo fluxo.
Quanto dá para reduzir de verdade
Depende do arquivo de origem. Fotos salvas em qualidade máxima encolhem bastante; imagens já otimizadas rendem pouco — e é honesto dizer isso antes de você pagar. A boa notícia: como a cobrança é por imagem processada, dá para testar com uma amostra do seu acervo, medir o ganho real e só então rodar o lote inteiro. Entram arquivos de até 15 MB e 12 megapixels.
Preço direto, sem plano
Cada chamada custa US$ 0,002 e cada imagem processada, US$ 0,005. Comprimir as 3.000 fotos de um site, uma por chamada, custa US$ 21 — pagamento por uso, sem assinatura e sem franquia. Não existe pegadinha de “grátis até certo ponto”: o preço é este, publicado, do primeiro arquivo ao milésimo. E como o processo é assíncrono, com task_id, o lote roda em segundo plano enquanto seu sistema segue funcionando normalmente.
Casos de uso
Site institucional que parou de rastejar
O site da Padaria Pão Dourado Ltda. tinha fotos de vitrine de 6 MB direto da câmera. Comprimidas, as mesmas páginas passaram a abrir de imediato no celular dos clientes — sem trocar hospedagem nem redesenhar nada.
Upload com limite de tamanho
O marketplace onde Carlos Eduardo Souza vende recusa fotos acima de 2 MB. O sistema dele comprime cada imagem antes do envio, e a rejeição por tamanho simplesmente desapareceu do dia a dia.
Armazenamento que crescia sem parar
A Distribuidora Horizonte Verde S.A. arquiva fotos de entregas como comprovação. Comprimindo tudo ao arquivar, o custo mensal de armazenamento caiu de forma perceptível — e as fotos continuam legíveis para conferência.
Relatórios fotográficos por e-mail
Márcia Regina Oliveira envia relatórios de obra por e-mail. Com as fotos comprimidas, o anexo parou de estourar o limite da caixa de entrada dos clientes.
Perguntas frequentes
Comprimir é o mesmo que diminuir a resolução?
Não. A compressão reduz os bytes mantendo os pixels; redimensionar reduz os pixels. As duas coisas se combinam bem, mas são operações separadas — e aqui você controla cada uma.
Vou perceber diferença na foto?
Em níveis moderados, não: o ajuste explora o que o olho não distingue. Em níveis agressivos, aparecem artefatos, principalmente em áreas lisas como céu. Você controla o nível na chamada.
Funciona com PNG e WebP ou só com JPG?
Com os três — e o PNG pode ser comprimido sem nenhuma perda, o que é ideal para capturas de tela e gráficos.
Qual o custo para o acervo do meu site?
US$ 0,002 por chamada mais US$ 0,005 por imagem. Um acervo de 5.000 imagens, uma por chamada, sai por US$ 35, pago uma única vez, por uso.
As fotos passam pelos servidores de vocês?
Sim, o processamento acontece no servidor: o arquivo sobe, é comprimido e volta pela tarefa. Ele não é publicado, compartilhado nem usado para outro fim — ponto relevante de LGPD para fotos com pessoas ou dados.
Tem limite de quantidade por mês?
Não. Os limites são técnicos e por arquivo — 15 MB e 12 megapixels. O volume mensal é você quem decide, e a conta acompanha o uso.
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/compress \
-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/compress", {
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/compress",
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/compress", 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/compress", 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.compress",
"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. |