Descrição Overview Descripción
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.
Extra spaces appear in text for reasons we rarely control. When copying from a PDF, the extraction program frequently inserts multiple spaces where there was a larger typographic space or a tab. When pasting from an HTML page, the editor may preserve multiple spaces that the browser would automatically collapse during rendering. Files processed by OCR (optical character recognition) are especially prone to this: the algorithm sometimes separates words with two or three spaces because the letters were slightly apart in the scanned image.
What we call a space in digital text is actually an entire family of Unicode characters. The common space (U+0020) is what you type with the spacebar. The non-breaking space (U+00A0) is what some word processors insert automatically between a number and its unit of measure to prevent awkward line breaks. The thin space (U+2009) is used in typography to separate groups of digits in large numbers. Each of these spaces has a different code and most trim and collapse tools handle only U+0020 — which means that stubborn space that just won't go away might be one of the other types.
The decision to collapse spaces carries unexpected consequences in some contexts. Python source code is indentation-sensitive, so collapsing tabs and spaces at the start of lines would break the program. YAML and Makefile config files also use spaces with structural meaning. For prose text, normalization is generally safe. For code snippets that need to run, extra caution is required. This tool was designed for text — not for code.
Los espacios extra aparecen en el texto por razones que raramente controlamos. Al copiar de un PDF, el programa de extracción inserta con frecuencia varios espacios donde había un espacio tipográfico mayor o una tabulación. Al pegar desde una página HTML, el editor puede conservar múltiples espacios que el navegador colapsaría automáticamente al renderizar. Los archivos procesados por OCR (reconocimiento óptico de caracteres) son especialmente propensos a esto: el algoritmo a veces separa palabras con dos o tres espacios porque las letras estaban ligeramente separadas en la imagen escaneada.
Lo que llamamos espacio en el texto digital es en realidad toda una familia de caracteres Unicode. El espacio común (U+0020) es el que escribes con la barra espaciadora. El espacio de no separación (U+00A0) es el que algunos procesadores de texto insertan automáticamente entre un número y su unidad de medida para evitar saltos de línea incómodos. El espacio fino (U+2009) se usa en tipografía para separar grupos de dígitos en números grandes. Cada uno de estos espacios tiene un código diferente y la mayoría de las herramientas de trim y colapso solo tratan el U+0020, lo que significa que ese espacio extraño que no desaparece puede ser uno de los otros tipos.
La decisión de colapsar espacios tiene consecuencias inesperadas en algunos contextos. El código fuente de Python es sensible a la indentación, por lo que colapsar tabulaciones y espacios al inicio de las líneas rompería el programa. Los archivos YAML y Makefile también usan espacios con significado estructural. Para texto en prosa, la normalización suele ser segura. Para fragmentos de código que deban ejecutarse, se requiere mucho cuidado. Esta herramienta fue pensada para texto, no 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.
Technical deep dive
Space characters that go unnoticed
- U+0020 (common space): the spacebar space, the only one most trim and collapse tools recognize by default.
- U+00A0 (non-breaking space): prevents line breaks between adjacent words. Invisible to the naked eye but causes surprises in string comparisons — '10 kg' with a non-breaking space is not equal to '10 kg' with a regular space.
- U+2009 (thin space): used in typography to separate digit groups (1 000 000) and between a number and its SI unit symbol. PDFs generated by desktop publishing tools are full of this character.
- U+3000 (ideographic space): has the width of a CJK character and appears in Asian documents. When copying Japanese or Chinese text containing this space, it can mix into the content.
- U+FEFF (BOM / zero-width no-break space): technically not a space, but it appears invisibly at the start of UTF-8 files with BOM and causes silent errors in JSON and XML parsers.
When collapsing spaces can break things
- Python, YAML, and Makefile: indentation has syntactic meaning. Collapsing or converting tabs to spaces in these languages changes the program's behavior.
- Markdown: two trailing spaces create a hard line break. Removing those spaces changes the rendered layout.
- SQL strings: spaces inside SQL strings ('John Smith') are part of the data and should not be collapsed along with formatting whitespace.
- Regular expressions: patterns like ' ' (two spaces) are literal — collapsing spaces in the expression changes what it matches.
- Space-delimited CSV: rare but real. Collapsing multiple spaces in space-delimited CSV files can merge columns.
Detalle técnico
Caracteres de espacio que pasan desapercibidos
- U+0020 (espacio común): el espacio de la barra espaciadora, el único que la mayoría de las herramientas de trim y colapso reconocen por defecto.
- U+00A0 (espacio de no separación): impide los saltos de línea entre las palabras adyacentes. Invisible a simple vista, pero causa sorpresas en las comparaciones de cadenas: '10 kg' con espacio de no separación no es igual a '10 kg' con espacio común.
- U+2009 (espacio fino): se utiliza en tipografía para separar grupos de dígitos (1 000 000) y entre un número y su símbolo de unidad SI. Los PDF generados por herramientas de maquetación de escritorio contienen muchos de estos caracteres.
- U+3000 (espacio ideográfico): tiene el ancho de un carácter CJK y aparece en documentos asiáticos. Al copiar texto japonés o chino que contiene este espacio, puede mezclarse con el contenido.
- U+FEFF (BOM / espacio de ancho cero sin separación): técnicamente no es un espacio, pero aparece invisible al inicio de los archivos UTF-8 con BOM y provoca errores silenciosos en los parsers de JSON y XML.
Cuándo colapsar espacios puede romper algo
- Python, YAML y Makefile: la indentación tiene significado sintáctico. Colapsar o convertir tabulaciones en espacios en estos lenguajes altera el comportamiento del programa.
- Markdown: dos espacios al final de una línea crean un salto de línea duro. Eliminar esos espacios cambia el diseño renderizado.
- Cadenas SQL: los espacios dentro de cadenas SQL ('Juan García') forman parte de los datos y no deben colapsarse junto con el espaciado de formato.
- Expresiones regulares: los patrones como ' ' (dos espacios) son literales; colapsar los espacios en la expresión cambia lo que coincide.
- CSV con delimitador de espacio: poco habitual, pero existe. Colapsar varios espacios en archivos CSV delimitados por espacio puede fusionar columnas.
Guia da ferramenta Tool guide Guía de la herramienta
-
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.
-
What you are working with Text with repeated spaces or tabs, common when copying from PDF or the web.
-
What the tool does Optionally collapses runs of spaces/tabs to a single space and can trim each line.
-
Why use it Normalise pasted paragraphs, prep space-separated data or CSV, improve readability without manual edits.
-
Con qué trabajas Texto con espacios o tabuladores repetidos, habitual al copiar de PDF o web.
-
Qué hace la herramienta Opcionalmente colapsa series de espacios/tab a un solo espacio y puede recortar cada línea.
-
Por qué usarla Normalizar párrafos pegados, preparar datos separados por espacios o CSV, mejorar legibilidad sin editar a mano.
Exemplo de Código Code Snippets Fragmentos de Código
// 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');
// 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();
// Collapse multiple spaces or tabs into one
const result = text
.split('\n')
.map(line => line.replace(/[ \t]+/g, ' ').trim())
.join('\n');
// Normalize non-breaking spaces before collapsing
const normalized = text
.replace(/\u00A0/g, ' ') // NBSP → common space
.replace(/[ \t]+/g, ' ') // collapse runs
.trim();
// Colapsa varios espacios o tabulaciones en uno
const resultado = texto
.split('\n')
.map(linea => linea.replace(/[ \t]+/g, ' ').trim())
.join('\n');
// Normaliza espacios de no separación antes de colapsar
const normalizado = texto
.replace(/\u00A0/g, ' ') // NBSP → espacio común
.replace(/[ \t]+/g, ' ') // colapsa secuencias
.trim();
Antes Before Antes
a b c → a b c
Perguntas frequentes FAQ Preguntas frecuentes
Para que serve esta ferramenta?
What is this tool for?
¿Para qué sirve esta herramienta?
Ela roda 100% no seu navegador: útil para validar, formatar ou converter dados no dia a dia de desenvolvimento.
It runs fully in your browser: useful to validate, format, or convert data in everyday development.
Funciona por completo en tu navegador: sirve para validar, formatear o convertir datos en el día a día.
Meus dados são enviados a algum servidor?
Are my inputs sent to a server?
¿Se envían mis datos a algún servidor?
O processamento é feito localmente via JavaScript. Não armazenamos o conteúdo que você cola nas caixas de texto.
Processing happens locally with JavaScript. We do not store what you paste into the text areas.
El procesamiento es local con JavaScript. No almacenamos lo que pegas en los campos de texto.
Posso usar em produção ou para dados reais?
Can I use this for real production data?
¿Puedo usarlo con datos reales en producción?
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.
Use at your own risk. For secrets (passwords, tokens), prefer controlled environments and your company policies. And always review the generated contents. Never trust blindly things you see on the internet.
Úsalo bajo tu responsabilidad. Para secretos (contraseñas, tokens), prefiere entornos controlados y políticas internas. Recuerda de revisar los contenidos generados. Nunca confies ciegamente en cosas que ves en internet.