Alinhar texto em colunas de largura fixa
Transforme linhas estruturadas de texto em colunas limpas de largura fixa sem contar espaços manualmente.
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
Informe as linhas e o número esperado de colunas; o formatador mede o valor mais largo em cada posição e completa todos os campos até essa largura. O resultado traz larguras reutilizáveis, campos preenchidos e um texto multilinha pronto para exibição. Linhas inconsistentes são recusadas para evitar resultados ambíguos, tornando o recurso adequado para logs, relatórios de terminal, e-mails em texto simples e documentação.
Prepare as linhas com um contrato claro de colunas
Comece com uma lista de linhas, sendo cada linha uma lista de campos de texto. Defina column_count como a quantidade exata de campos que todas as linhas devem conter. A primeira linha pode ser um cabeçalho, mas isso não é obrigatório nem recebe tratamento especial: ela participa do cálculo como qualquer outro valor. Preserve o texto exatamente como você deseja exibi-lo, inclusive maiúsculas e espaços internos intencionais. Strings vazias são campos válidos e recebem preenchimento conforme a largura estabelecida pelos demais valores da coluna. A contagem explícita protege dados reunidos de fontes diferentes. Se uma linha tiver campos a mais ou a menos, a solicitação falha com um erro que identifica a linha e sua contagem real. Assim, um valor ausente não desloca silenciosamente os campos seguintes. Para uma saída previsível, normalize tabulações e quebras de linha dentro dos campos antes do envio.
Entenda a medição de largura e o preenchimento
O formatador examina cada coluna separadamente e registra a maior quantidade de caracteres encontrada naquela posição. Em seguida, acrescenta espaços comuns ao final de cada campo até atingir a largura registrada. Há também um espaço separador entre campos vizinhos. A largura é medida por pontos de código Unicode, e não por unidades UTF-16 do JavaScript, evitando a contagem dupla de caracteres suplementares comuns. O cálculo não faz suposições específicas de terminal sobre marcas combinantes, tabulações, emoji ou caracteres asiáticos largos, cuja aparência varia conforme fonte e renderizador. Letras, números e sinais comuns ficam alinhados de forma consistente em uma fonte monoespaçada. O último campo também recebe preenchimento, pois o contrato vale para todos os campos. A resposta fornece tanto as matrizes preenchidas quanto o texto unido, sem exigir que você interprete novamente as linhas formatadas.
Use o resultado em fluxos de texto confiáveis
Escolha a forma de saída adequada à próxima etapa. Use aligned_text quando você precisar de um bloco completo para terminal, bloco de código, relatório em texto simples ou mensagem monoespaçada. Use aligned_rows para acrescentar prefixos, bordas, recuos, cores ou outra apresentação sem perder o preenchimento calculado. A matriz column_widths ajuda outro sistema a formatar linhas adicionais nas mesmas dimensões. A transformação não remove espaços, ordena linhas, deduz cabeçalhos, trunca conteúdo nem altera maiúsculas. Essa contenção protege identificadores e dados com espaços significativos. Limites publicados para linhas, colunas e caracteres impedem consumo ilimitado de memória. Sem rede, aleatoriedade, relógio ou comparação dependente de localidade, a mesma entrada JSON sempre gera a mesma saída JSON. A automação por API custa US$ 0,002 por solicitação.
Casos de uso
Formatar relatórios de terminal
Alinhe nomes, estados, durações e identificadores antes de produzir um relatório monoespaçado fácil de consultar.
Criar resumos em texto simples
Monte tabelas legíveis para e-mail, chamados, documentação ou chats que não podem depender de HTML.
Validar exportações em linhas
Encontre campos ausentes ou excedentes enquanto gera uma visualização alinhada e estável.
Perguntas frequentes
Quanto custa uma solicitação?
Cada solicitação API custa US$ 0,002. A página também executa o formatador localmente no navegador.
O que acontece se uma linha tiver a quantidade errada de campos?
A solicitação falha com um erro de entrada que informa a primeira linha inconsistente, a contagem real e a esperada.
Os valores são aparados ou alterados?
Não. O texto original é preservado; somente espaços finais de preenchimento e separação são acrescentados.
Há suporte para texto Unicode?
Sim. A largura usa pontos de código Unicode, mas não estima a aparência específica de glifos largos ou combinantes.
A última coluna também é preenchida?
Sim. Todo campo alcança a largura do maior valor da coluna, inclusive o último campo de cada linha.
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/text/text-column-align \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"rows":[["Name","Role","City"],["Ada","Engineer","London"],["Grace Hopper","Admiral","New York"]],"column_count":3}'const res = await fetch("https://api.kit.forhosting.com/text/text-column-align", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"rows": [
[
"Name",
"Role",
"City"
],
[
"Ada",
"Engineer",
"London"
],
[
"Grace Hopper",
"Admiral",
"New York"
]
],
"column_count": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/text-column-align",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"rows": [
[
"Name",
"Role",
"City"
],
[
"Ada",
"Engineer",
"London"
],
[
"Grace Hopper",
"Admiral",
"New York"
]
],
"column_count": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/text-column-align", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"rows":[["Name","Role","City"],["Ada","Engineer","London"],["Grace Hopper","Admiral","New York"]],"column_count":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"rows":[["Name","Role","City"],["Ada","Engineer","London"],["Grace Hopper","Admiral","New York"]],"column_count":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/text-column-align", 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
{
"rows": [
[
"Name",
"Role",
"City"
],
[
"Ada",
"Engineer",
"London"
],
[
"Grace Hopper",
"Admiral",
"New York"
]
],
"column_count": 3
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.text_column_align",
"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_rows | 10000 |
max_columns | 100 |
max_field_chars | 10000 |
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. |