Analisar arquivo dotenv em pares de chave e valor
Arquivos dotenv parecem simples até que os valores contenham espaços, sinais de comentário, atribuições vazias ou texto escapado.
Executar grátis
Este analisador transforma todo o conteúdo de um arquivo .env em um objeto organizado de pares de chave e valor, com regras sintáticas claras e previsíveis. Ele ignora linhas vazias e comentários, preserva conteúdo entre aspas, reconhece comentários após valores sem aspas e informa a linha exata quando uma atribuição é inválida. O resultado é útil em prévias de configuração, migrações, validações e ferramentas para desenvolvimento que precisam de dados estruturados sem carregar variáveis no ambiente do processo.
Forneça todo o texto dotenv
Cole ou envie o conteúdo do arquivo .env no campo text. Cada linha relevante deve conter uma chave, um sinal de igual e um valor. As chaves começam com uma letra ASCII ou sublinhado e podem continuar com letras, números ou sublinhados. Linhas vazias são aceitas, e qualquer linha cujo primeiro caractere não branco seja uma cerquilha é tratada como comentário. Atribuições vazias, como CACHE_PREFIX=, são válidas e geram uma string vazia. O analisador retorna um objeto values com os pares processados e uma contagem das chaves únicas. Se uma chave aparecer mais de uma vez, a atribuição posterior substitui a anterior, seguindo o padrão prático de sobreposição usado ao combinar trechos de configuração. A ferramenta nunca escreve no ambiente da máquina, expande variáveis, lê arquivos ou contata serviços. Ela processa somente o texto enviado, oferecendo comportamento seguro para prévias e fácil de reproduzir em scripts de build, extensões de editor, verificadores de configuração e fluxos de migração.
Entenda aspas, escapes e comentários
Valores sem aspas têm os espaços externos removidos. Uma cerquilha inicia um comentário no fim da linha somente quando existe espaço imediatamente antes dela; assim, fragmentos de URL e tokens como color=#fff permanecem intactos. Aspas simples preservam literalmente o texto interno, inclusive cerquilhas e espaços. Aspas duplas também preservam esses caracteres, mas interpretam escapes comuns com barra invertida para nova linha, retorno de carro, tabulação, aspas duplas e a própria barra. Depois das aspas de fechamento, apenas espaços ou um comentário são permitidos. Essas regras eliminam ambiguidades sem executar comandos de shell. O analisador não interpola referências como ${HOST}, não executa substituições de comandos e não converte strings como true e 8080 em booleanos ou números. Todo valor continua sendo uma string, pois os dados dotenv são textuais e cada aplicação deve decidir como realizar conversões específicas. Isso protege zeros à esquerda, diferenças de caixa e valores intencionalmente vazios.
Trate entradas inválidas de forma explícita
Use a ferramenta web para verificações individuais e a API quando precisar da mesma capacidade em um fluxo automatizado.
Casos de uso
Validar a configuração antes da implantação
Rejeite cedo conteúdo dotenv malformado e indique à pessoa responsável a linha exata que precisa de correção.
Visualizar uma migração de configuração
Converta texto .env legado em um objeto estruturado antes de mapear suas chaves para outro sistema de configuração.
Criar uma ferramenta para desenvolvimento
Use uma saída previsível em extensões de editor, assistentes de instalação, utilitários de build ou comparações.
Perguntas frequentes
Quanto custa uma solicitação?
Uma solicitação pela API custa US$ 0,002. O executor do navegador pode analisar localmente o mesmo conteúdo.
Os valores são convertidos em números ou booleanos?
Não. Todos permanecem como strings, incluindo 8080, true, false e atribuições vazias.
Como as chaves duplicadas são tratadas?
A última atribuição prevalece, e count informa o número de chaves únicas no resultado final.
Um valor entre aspas pode conter uma cerquilha?
Sim. Cerquilhas dentro de aspas simples ou duplas fazem parte do valor e não iniciam comentários.
O analisador expande referências a variáveis?
Não. Referências como ${HOST} são retornadas literalmente; expressões de shell ou do ambiente não são avaliadas.
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/env-file-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"APP_NAME=\"Example service\"\nDEBUG=true\nPORT=8080\n# Optional local override\nEMPTY="}'const res = await fetch("https://api.kit.forhosting.com/dev2/env-file-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "APP_NAME=\"Example service\"\nDEBUG=true\nPORT=8080\n# Optional local override\nEMPTY="
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/env-file-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "APP_NAME=\"Example service\"\nDEBUG=true\nPORT=8080\n# Optional local override\nEMPTY="
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/env-file-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"APP_NAME=\\"Example service\\"\\nDEBUG=true\\nPORT=8080\\n# Optional local override\\nEMPTY="}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"APP_NAME=\"Example service\"\nDEBUG=true\nPORT=8080\n# Optional local override\nEMPTY="}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/env-file-parse", 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
{
"text": "APP_NAME=\"Example service\"\nDEBUG=true\nPORT=8080\n# Optional local override\nEMPTY="
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.env_file_parse",
"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. |