Converter tabs em espaços
Cole código ou texto e cada tabulação vira o mesmo número de espaços, quatro a menos que você escolha outra largura de 1 a 16, para a indentação ficar idêntica em qualquer editor ou navegador. Quebras de linha e espaços ficam intactos. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- function hi() { return true; }
- Resultado
- function hi() { return true; }
- Entrada
- function hi() { return true; }
- Texto
- function hi() { return true; }
- Espaços por tabulação
- 4
Editores de código, colagens de terminal e fontes markdown costumam misturar caracteres de tabulação invisíveis com espaços, de modo que a indentação parece correta em uma ferramenta e se desloca em outra. Esta utilidade para converter tabs em espaços expande cada tab U+0009 para uma largura fixa de espaços ASCII—quatro por padrão, ou qualquer inteiro de um a dezesseis—sem alterar quebras de linha, letras nem espaços já existentes. Cadeias vazias ou só com espaços em branco falham com entrada inválida para que pipelines não armazenem conversões em branco. Use ao padronizar repositórios com guias só de espaços, ao preparar trechos para navegadores que renderizam tabs de forma inconsistente ou ao limpar exportações antes de publicar.
O que significa converter tabs em espaços e quando usar
A ferramenta não reindenta blocos aninhados, não calcula unidades de indentação por máximo divisor comum e não recusa estilos mistos—simplesmente expande tabs onde aparecerem, inclusive paradas de tab no meio da linha em tabelas antigas ou fragmentos de Makefile que só precisam de normalização em nível de caractere. Prefira esta calculadora quando a intenção de busca for converter tabs em espaços, substituir tabs por espaços, conversor tab para espaço ou expandir tabs para exibição consistente.
Fontes típicas de tabs incluem cópia de IDEs com indentação por tab, diffs de git de equipes mistas, colunas CSV ou de log separadas por tabs, e scripts legados que usavam hard tabs para alinhamento. Não confunda esta página com normalizadores completos de níveis de indentação que detectam aninhamento irregular e reescrevem níveis para uma unidade base; esse é outro produto para outro problema. Espaços já existentes permanecem; apenas pontos de código de tab crescem para o preenchimento escolhido.
Casos de uso
Aplicar guias de estilo só com espaços
Expanda hard tabs em trechos de código e amostras de configuração antes do commit ou da publicação para repositórios que proíbem tabs permanecerem consistentes sem reindentar níveis lógicos.
Exibição estável na web e em markdown
Converta tabs em espaços em documentação e blocos de código de blogs para que navegadores e renderizadores com larguras de tab diferentes mostrem o mesmo alinhamento.
Perguntas frequentes
Como converto tabs em espaços com esta ferramenta?
O campo result da resposta é a string com cada tab expandido para essa quantidade de espaços.
Isto reindenta níveis de código aninhados?
Não. Apenas substitui caracteres de tab por uma largura fixa de espaços. Para detectar e normalizar níveis de indentação, use uma capacidade dedicada a normalizar indentação.
A conversão de tabs em espaços é gratuita?
A ferramenta do navegador roda grátis no seu dispositivo.
O que acontece com as tabulações no meio de uma linha?
Elas também são expandidas. Cada tabulação vira exatamente o número de espaços escolhido onde quer que esteja, então uma entre duas colunas fica igual a uma no começo da linha.
Como confiro quantas tabulações foram trocadas?
O resultado mostra quantas tabulações foram substituídas e quanto o texto cresceu. Numa função curta de três linhas com uma linha indentada, uma tabulação é trocada e o texto passa de 31 para 34 caracteres.
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/str/tabs-to-spaces \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"function hi() {\n\treturn true;\n}"}'const res = await fetch("https://api.kit.forhosting.com/str/tabs-to-spaces", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "function hi() {\n\treturn true;\n}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/tabs-to-spaces",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "function hi() {\n\treturn true;\n}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/tabs-to-spaces", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"function hi() {\\n\\treturn true;\\n}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"function hi() {\n\treturn true;\n}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/tabs-to-spaces", 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": "function hi() {\n\treturn true;\n}"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.tabs_to_spaces",
"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. |
Notas técnicas
O que significa converter tabs em espaços e quando usar
Converter tabs em espaços é uma reescrita única e previsível: cada caractere de tabulação na entrada é substituído por exatamente N espaços simples, em que N é spaces_per_tab e vale quatro se você omitir o campo. Cadeias vazias e as que só têm espaços em branco após o trim disparam invalid_input, o que protege trabalhos em massa de gravar células vazias quando um campo obrigatório estava em branco.
Contrato de entrada, parâmetro de largura e leitura da resposta
Envie um corpo JSON com o campo de string obrigatório text com o conteúdo não vazio que deseja expandir. Os aliases input, value, string, s, content e body são aceitos quando clientes antigos ou geradores de formulário usam esses nomes. O spaces_per_tab opcional deve ser um inteiro de um a dezesseis inclusive; omita-o para usar quatro espaços por tab, o que combina com muitos guias de estilo e padrões de editores para soft tabs. Text ausente, valor que não é string, cadeia vazia, só espaços em branco, ou spaces_per_tab fora do intervalo permitido disparam invalid_input com uma mensagem que nomeia o problema, e essas falhas não são cobradas na API pré-paga. Em sucesso a resposta inclui result e text com a string expandida, input ecoando o original exato para a UI de antes e depois, spaces_per_tab como a largura aplicada, tabs_replaced como a contagem de tabs expandidos, chars_before e chars_after como comprimentos, chars_added como o crescimento líquido, e message como um resumo humano breve. Use só result quando precisar apenas da string limpa; use tabs_replaced quando um pipeline registrar quão agressiva foi a expansão; use chars_added ao estimar crescimento de armazenamento após migrar de tabs para espaços. Mantenha payloads em arquivos-fonte, trechos e documentos ordinários adequados a um isolate Worker, não dumps de vários megabytes.
Uso da API, preços, fluxos de trabalho e limites práticos
Use a ferramenta gratuita no navegador para limpar colagens, demos de aula, preparação de code review e verificações rápidas sem instalar utilitário de desktop nem escrever um one-liner em cada linguagem. Um fluxo típico expande tabs em um trecho antes de publicar documentação para que leitores na web vejam indentação estável independentemente da largura de tab do navegador. Outro fluxo padroniza amostras de pull request à convenção só-espaços do projeto antes do lint, enquanto um terceiro limpa colagens delimitadas por tab que devem virar texto mono alinhado com espaços só para exibição. Não espere remoção de tags HTML, reescrita de estrutura markdown nem tab stops inteligentes que alinhem a múltiplos de coluna além da expansão de largura fixa—esses são problemas separados. Use a API pré-paga do KIT quando um job de CI, CMS, plugin de editor, suporte ou cliente móvel precisar da mesma transformação sob saldo a US$ 0,002 por item bem-sucedido; falhas de validação nunca consomem saldo após a rejeição do motor. Combine este endpoint com aparadores de linha ou removedores de espaços em branco só quando o próximo passo for outra intenção SEO; mantenha converter tabs em espaços como landing própria para o termo de busca não se misturar com colapsar espaços ou normalizar níveis. Autores de SDK podem documentar text como obrigatório, spaces_per_tab como opcional, e mostrar um exemplo de sucesso com vários tabs mais um erro de string vazia para integradores verem os dois lados do contrato.
Casos de integração
Fixtures de CI e sanitização em pipelines
Normalize arquivos de fixture e texto enviado pelo usuário a uma largura de espaços conhecida para que checagens de igualdade e testes golden deixem de falhar por tabs invisíveis.
Perguntas técnicas
O que acontece se text estiver vazio?
Strings vazias e só com espaços em branco falham com invalid_input e não são cobradas.
O que significa tabs_replaced?
É o número de caracteres de tab U+0009 que foram expandidos. chars_added é chars_after menos chars_before e reflete quanto a string cresceu.