Remover espaços extras

Junte múltiplos espaços ou tabs em um só e opcionalmente aplique trim por linha.

Descrição

Espaços extras aparecem no texto por razões que raramente controlamos. Ao copiar de um PDF, o programa de extração frequentemente insere vários espaços onde havia um espaço tipográfico maior ou um tab. Ao colar de uma página HTML, o editor pode preservar espaços múltiplos que o navegador colapsaria automaticamente na renderização. Arquivos processados por OCR (reconhecimento óptico de caracteres) são especialmente propensos a isso: o algoritmo às vezes separa palavras com dois ou três espaços porque as letras estavam levemente afastadas na imagem digitalizada.

O que chamamos de espaço no texto digital é, na verdade, uma família inteira de caracteres Unicode. O espaço comum (U+0020) é o que você digita com a barra de espaço. O espaço não-quebrável (U+00A0) é o que alguns processadores de texto inserem automaticamente entre número e unidade de medida para evitar quebra de linha inconveniente. O espaço fino (U+2009) é usado em tipografia para separar grupos de dígitos em números grandes. Cada um desses espaços tem um código diferente e a maioria das ferramentas de trim e colapso trata apenas o U+0020 — o que significa que aquele espaço estranho que não some pode ser um dos outros tipos.

A decisão de colapsar espaços carrega consequências inesperadas em alguns contextos. Código-fonte em Python é sensível à indentação, então colapsar tabs e espaços no início das linhas quebraria o programa. Arquivos YAML e Makefile também usam espaços com significado estrutural. Para texto em prosa, a normalização é geralmente segura. Para trechos de código que precisem rodar, é necessário muito cuidado. Esta ferramenta foi pensada para texto — não para código.

Detalhamento técnico

Tipos de espaço que passam despercebidos

  • U+0020 (espaço comum): o espaço da barra de espaço, único que a maioria das ferramentas de trim e colapso reconhece por padrão.
  • U+00A0 (espaço não-quebrável): impede quebra de linha entre as palavras adjacentes. Invisível ao olho nu, mas causa surpresas em comparações de strings — '10 kg' com espaço não-quebrável não é igual a '10 kg' com espaço comum.
  • U+2009 (espaço fino): utilizado em tipografia para separar grupos de dígitos (1 000 000) e entre número e símbolo de unidade no padrão SI. PDFs gerados por ferramentas de desktop publishing são ricos nesse caractere.
  • U+3000 (espaço ideográfico): tem a largura de um caractere CJK e aparece em documentos asiáticos. Ao copiar texto japonês ou chinês contendo esse espaço, ele pode se misturar com o conteúdo.
  • U+FEFF (BOM / espaço de largura zero sem quebra): tecnicamente não é um espaço, mas aparece invisível no início de arquivos UTF-8 com BOM e causa erros silenciosos em parsers JSON e XML.

Quando colapsar espaços pode quebrar algo

  • Python, YAML e Makefile: a indentação tem significado sintático. Colapsar ou converter tabs em espaços nessas linguagens altera o comportamento do programa.
  • Markdown: dois espaços no fim de uma linha criam uma quebra de linha dura (hard break). Remover esses espaços muda o layout renderizado.
  • SQL formatado: espaços dentro de strings SQL ('João Silva') são parte dos dados e não devem ser colapsados junto com o espaçamento de formatação.
  • Expressões regulares: padrões como ' ' (dois espaços) são literais — colapsar os espaços na expressão muda o que ela combina.
  • CSV com delimitador de espaço: raro, mas existente. Colapsar múltiplos espaços em arquivos CSV com delimitador por espaço pode mesclar colunas.

Guia da ferramenta

  • O objeto tratado Texto com espaços ou tabs repetidos, comum em cópias de PDF ou web.

  • O que a ferramenta faz Opcionalmente colapsa sequências de espaço/tab num único espaço e pode fazer trim em cada linha.

  • Por que usar Normalizar parágrafos colados, preparar CSV ou dados separados por espaço, melhorar legibilidade sem editar manualmente cada ocorrência.

Exemplo de Código

Colapsar espaços e tabs em JavaScript
// Colapsa múltiplos espaços ou tabs em um único espaço
const resultado = texto
  .split('\n')
  .map(linha => linha.replace(/[ \t]+/g, ' ').trim())
  .join('\n');
Tratar espaços não-quebráveis (U+00A0)
// Normaliza espaços não-quebráveis antes de colapsar
const normalizado = texto
  .replace(/\u00A0/g, ' ')   // NBSP → espaço comum
  .replace(/[ \t]+/g, ' ') // colapsa sequências
  .trim();

Antes

a    b  	 c  → a b c

Perguntas frequentes

Para que serve esta ferramenta?

Ela roda 100% no seu navegador: útil para validar, formatar ou converter dados no dia a dia de desenvolvimento.

Meus dados são enviados a algum servidor?

O processamento é feito localmente via JavaScript. Não armazenamos o conteúdo que você cola nas caixas de texto.

Posso usar em produção ou para dados reais?

Use por sua conta e risco. Para segredos (senhas, tokens), prefira ambientes controlados e políticas da sua empresa. E lembre sempre de revisar os conteúdos gerados. Nunca confie cegamente nas coisas que vê na internet.