Minifique espaços do JavaScript e meça a redução
Este minificador de espaços do JavaScript remove comentários de linha, comentários de bloco e espaços de formatação dispensáveis para a execução.
Executar grátis
Ele preserva strings, templates, expressões regulares, operadores e limites entre identificadores, além das quebras de linha capazes de afetar a inserção automática de ponto e vírgula. O resultado inclui o código compacto, as contagens de bytes UTF-8 original e final e o percentual economizado. É uma opção útil quando você precisa de compactação previsível sem renomear identificadores, reescrever o código, instalar dependências, acessar a rede ou adotar um pipeline completo de bundling.
Compacte o código sem reescrever o programa
Esta capacidade se dedica a uma tarefa específica: remover comentários e reduzir espaços insignificantes. Ela não renomeia variáveis, simplifica constantes, reordena expressões, altera propriedades nem converte sintaxe moderna para versões antigas. Esse escopo restrito facilita a inspeção e a comparação com o original. Envie JavaScript no campo javascript, ou pelos aliases code ou text, e receba código compacto com medidas UTF-8 exatas. O scanner reconhece strings entre aspas, templates e expressões regulares antes de interpretar marcadores de comentário; assim, uma URL dentro de uma string ou uma barra numa expressão regular permanece como dado do programa. Espaços só voltam quando tokens adjacentes poderiam se fundir em outro token. Identificadores continuam separados, enquanto a formatação ao redor de vírgulas, chaves e da maioria dos operadores desaparece. Trata-se de compactação, não ofuscação: nomes e estrutura continuam reconhecíveis, sem serviço de rede oculto nem modelo não determinístico.
Preserve tokens e quebras significativas do JavaScript
O espaço costuma ser opcional em JavaScript, mas nem sempre é irrelevante. Unir caracteres de identificadores pode criar outro nome; juntar dois sinais de adição pode formar um incremento; e remover uma quebra após return, throw, break, continue ou yield pode mudar a inserção automática de ponto e vírgula. Por isso, o minificador tokeniza a entrada e decide os limites entre tokens em vez de aplicar uma expressão regular global. Ele mantém quebras relevantes para esses casos e separa operadores ambíguos. Comentários só são reconhecidos fora de strings, templates e expressões regulares. Na mesma passagem, os delimitadores são verificados: cada parêntese, colchete ou chave de fechamento deve corresponder à abertura mais recente. Um delimitador solto ou mal aninhado gera erro de entrada inválida, não uma saída duvidosa. Comentários, strings, templates e expressões regulares sem término também falham claramente. A validação é estrutural, não um parser completo; use código sintaticamente válido que precise de compactação conservadora.
Meça a economia e integre um resultado determinístico
A resposta informa original_bytes e minified_bytes em UTF-8, medida adequada para arquivos transferidos por HTTP ou armazenados como recursos web. Ela também apresenta reduction_percent arredondado para duas casas decimais, facilitando verificações, painéis e relatórios. Como o algoritmo é determinístico, a mesma entrada sempre devolve o mesmo código e as mesmas contagens. Um pipeline pode enviar código gerado, gravar o campo javascript retornado na pasta de artefatos e exigir uma redução mínima sem instalar um pacote de minificação. Um sistema de documentação pode compactar exemplos inline, e uma implantação leve pode reduzir utilitários manuais sem bundling ou alteração de nomes. A capacidade custa US$ 0,002 por chamada de API, enquanto o caminho no navegador pode usar a mesma implementação pura. Antes da produção, execute os testes do programa resultante como faria após qualquer processamento de código. A ferramenta protege limites léxicos e equilíbrio de delimitadores, mas os testes seguem sendo a confirmação mais forte para contextos gramaticais incomuns ou comportamentos específicos do ambiente.
Casos de uso
Compactar um recurso gerado para navegador
Remova comentários e formatação do JavaScript gerado antes da publicação, preservando identificadores legíveis para diagnóstico.
Reduzir scripts utilitários independentes
Diminua a transferência de um script pequeno sem adotar bundler, renomeador de variáveis ou uma etapa pesada de dependências.
Registrar a economia do código-fonte
Inclua bytes originais, bytes minificados e percentual de redução em um relatório de versão ou controle automático de qualidade.
Perguntas frequentes
O que esta capacidade remove?
Ela remove comentários de linha e bloco, além de espaços desnecessários para separar tokens e certos limites de inserção automática de ponto e vírgula.
Ela renomeia variáveis ou altera expressões?
Não. Ela faz apenas compactação léxica conservadora; não renomeia, simplifica constantes, reordena código nem transpila sintaxe.
Como a redução de tamanho é calculada?
Os dois tamanhos são medidos em bytes UTF-8. O percentual é a diferença dividida pelo tamanho original, arredondada para duas casas decimais.
O que acontece se os delimitadores estiverem desequilibrados?
A solicitação falha com erro de entrada inválida quando parênteses, colchetes ou chaves não têm par ou estão mal aninhados.
Caracteres de comentário dentro de strings são removidos?
Não. Strings, templates e expressões regulares são lidos como literais, portanto suas barras internas são preservadas.
Quanto custa uma chamada de API?
Cada chamada de API custa US$ 0,002. Entradas que falham na validação geram erros em vez de código minificado.
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/dev2/minify-js \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"javascript":"function add(a, b) {\n // Return the sum\n return a + b;\n}\n"}'const res = await fetch("https://api.kit.forhosting.com/dev2/minify-js", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"javascript": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/minify-js",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"javascript": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/minify-js", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"javascript":"function add(a, b) {\\n // Return the sum\\n return a + b;\\n}\\n"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"javascript":"function add(a, b) {\n // Return the sum\n return a + b;\n}\n"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/minify-js", 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
{
"javascript": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.minify_js",
"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.
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. |