Saltar al contenido

Herramientas de texto que nunca conservan tu texto

Once herramientas para contar, comparar, limpiar y leer texto. Los borradores, las listas y el código fuente nunca se guardan.

11 herramientas, sin registro, sin marca de agua

Contador de palabras y Contador de caracteres responden “¿qué tan largo es esto?”, Comparar textos responde “¿qué cambió?” y Eliminar líneas duplicadas ordena una lista. Los visores son para archivos que alguien te envió y que no se abren bien, y los tres minificadores son para código que va camino a producción. Las notas debajo de la lista explican por qué dos herramientas pueden contar el mismo texto de forma distinta, y por qué dos líneas que se ven idénticas a veces no son la misma línea.

Contar y comparar

3 herramientas

Cuenta palabras y caracteres correctamente en cualquier idioma, y mira exactamente qué cambió entre dos versiones.

Visores

3 herramientas

Lee un CSV, un archivo XML o un documento Markdown como corresponde, sin que una hoja de cálculo lo altere primero.

Qué es realmente el texto y por qué las herramientas no se ponen de acuerdo

Un archivo de texto son bytes más una codificación, y la codificación no se guarda en el archivo. Solo una convención le dice a un programa que cierto byte significa “é”, y por eso el mismo archivo se abre bien en un lugar y como “é” en otro. UTF-8 es la respuesta moderna: guarda las letras latinas comunes en un byte, las letras con acento en dos, y la mayor parte del chino, el japonés, el árabe y todos los emojis en tres o cuatro. UTF-16 es lo que usan internamente Windows y JavaScript: guarda casi todo en dos bytes y el resto en cuatro. Windows-1252 y Latin-1 son las codificaciones de un solo byte que todavía generan los sistemas antiguos, y son el origen habitual del mojibake (el texto con caracteres extraños). Conviene saber esto sobre estas páginas: el Visor de CSV detecta la codificación del archivo que sueltas, incluidas UTF-16 y Windows-1252, y te deja cambiarla. Los cuadros de texto simples no: un archivo que sueltas se lee como UTF-8, así que una exportación en Latin-1 mostrará mal sus letras con acento, y la solución es convertirla primero.

“Carácter” tiene cuatro significados, y el que necesitas depende de quién pone el límite. Lo que una persona ve como un carácter es un clúster de grafemas. Lo que coincide con una expresión regular es un punto de código. Lo que informa string.length en JavaScript son unidades UTF-16. Lo que mide una columna de base de datos o un encabezado HTTP son bytes UTF-8. En inglés simple, las cuatro cifras coinciden, y por eso nadie lo nota; pero un emoji de familia es un grafema, siete puntos de código, once unidades UTF-16 y veinticinco bytes, y un mensaje de 200 caracteres termina rechazado por un campo de 255. El Contador de caracteres muestra las cuatro cifras justamente por eso.

Los caracteres invisibles son caracteres reales. Un espacio de no separación se ve idéntico a un espacio y es un carácter completamente distinto: llega todo el tiempo en texto copiado de una página web o de un procesador de textos, y rompe búsquedas, el análisis de CSV y el código que divide por espacios. Los ZWJ (unión de ancho cero) son lo que mantiene unido un emoji de varias personas. Los guiones suaves, las marcas de dirección y las marcas de orden de bytes viajan con el texto pegado. Ninguno aparece en pantalla, así que la única señal que tienes es un conteo que no coincide con lo que ves, y ese es un uso honesto de un contador de caracteres. Ten en cuenta que la opción de ignorar espacios de Comparar textos unifica los espacios y tabulaciones comunes; no trata un espacio de no separación como un espacio, porque no son lo mismo.

Los finales de línea son la razón por la que a veces una comparación muestra todas las líneas como cambiadas. Windows termina una línea con retorno de carro y salto de línea; todos los demás usan solo el salto de línea. Guarda un archivo LF desde un editor de Windows y cada una de sus líneas diferirá en un byte invisible, así que una comparación byte a byte (git diff, diff(1)) informa que todo el archivo se reescribió y oculta el único cambio que hiciste de verdad. Nuestras herramientas Comparar textos y Eliminar líneas duplicadas dividen las líneas según las tres convenciones antes de comparar, así que aquí un archivo que solo cambió sus finales de línea no aparece como una pared en rojo. Eso es una comodidad en una herramienta de lectura y una trampa en un repositorio: corrígelo en el origen, con tu editor o con la configuración de finales de línea del propio git.

Dos cadenas que se ven idénticas pueden compararse como distintas, y la normalización suele ser la causa. Unicode puede escribir “é” de dos maneras: como un solo punto de código o como una “e” simple seguida de un acento agudo combinable. Se muestran igual y son secuencias de bytes distintas, así que una comparación, una eliminación de duplicados o una búsqueda en una base de datos las trata como dos valores diferentes. macOS y Windows históricamente no se han puesto de acuerdo sobre qué forma usar en los nombres de archivo, y así es como una lista reunida desde dos computadoras termina con lo que parecen duplicados exactos que no se pueden eliminar. El Contador de caracteres es la forma de detectarlo: las dos formas tienen el mismo número de grafemas y un número distinto de puntos de código. Ninguna de estas herramientas convierte de una forma a otra; eso se resuelve con una línea en un script con una biblioteca de Unicode, como unicodedata.normalize de Python.

El “número de palabras” es un criterio, no una medición. Dividir por espacios en blanco es una regla del inglés, y aplicarla al chino, al japonés o al tailandés (que no ponen espacios entre palabras) cuenta un artículo largo como una sola palabra. Nuestro contador usa en su lugar la segmentación de palabras Unicode del navegador, que sabe dónde empiezan las palabras en cualquier sistema de escritura. Los desacuerdos que quedan tienen que ver con los guiones (“well-known” es una palabra aquí y en Word, y dos en algunas herramientas), los números sueltos y qué cuenta como oración: “We met Dr. Smith” es una sola oración y un divisor ingenuo dice que son dos. El tiempo de lectura es una estimación más encima de eso: 238 palabras por minuto en lectura silenciosa, según un metaanálisis y no la cifra redonda que se copia de un blog a otro.

Cuándo un navegador realmente no es la herramienta adecuada

Nada de lo que hay en este módulo se envía ni se guarda nunca, y por eso es seguro pegar aquí un borrador inédito o código fuente propietario. Eso también fija el límite, y preferimos decirte dónde está antes de que lo descubras a mitad de camino.

Archivos grandes. Todo el texto se mantiene en la memoria de la pestaña y se vuelve a analizar mientras escribes. Unos pocos megabytes van sin problema; un archivo de registro de cientos de megabytes no, y un celular se rinde antes que una laptop. La línea de comandos no tiene este problema porque procesa en streaming: grep y ripgrep buscan en archivos más grandes que tu memoria, sed y awk los transforman línea por línea, y sort con la opción de únicos elimina duplicados de una lista de decenas de millones de líneas apoyándose en el disco. Todos son gratuitos y ya vienen instalados en macOS y Linux.

Documentos muy diferentes. Comparar textos se detiene en 8,000 diferencias, porque a partir de ahí el consumo de memoria del algoritmo crece tan rápido que congela la pestaña, y una comparación tan grande es ilegible de todos modos. Dos versiones del mismo documento casi nunca llegan a ese límite; dos documentos sin relación llegan de inmediato. Para revisar código, diff y git diff manejan cualquier tamaño, y una buena herramienta de fusión a tres bandas hace algo que esta página no puede hacer en absoluto.

Cambiar una codificación o normalizar Unicode. Estas páginas leen e informan; no convierten entre codificaciones. iconv convierte entre todas las codificaciones que existen, el comando file adivina cuál tienes, y la normalización Unicode es una línea de Python o una llamada a uconv de ICU. Si estás reparando una exportación con mojibake, esas son las herramientas.

Cualquier cosa repetitiva. Estas herramientas funcionan cuando una persona hace clic. Contar las palabras de cuatrocientos documentos o minificar un directorio en cada commit es trabajo para un script o un paso de compilación; y en el caso concreto de la minificación, tu herramienta de compilación hace la misma minificación, con source maps, modo de observación y caché que un cuadro para pegar no puede ofrecer. Esta página es para el archivo que tienes delante.

CSS moderno. Minificar CSS rechaza el anidamiento nativo y la sintaxis moderna de rangos en media queries en lugar de minificarlos, porque el minificador que usa es anterior a ambos y borra sin avisar lo que no entiende. Es un rechazo honesto, no una función, y la solución es compilar primero el anidamiento con Sass, PostCSS o Lightning CSS, algo que casi seguro ya hace tu herramienta de compilación.

Cómo elegir entre herramientas que suenan parecido

Contador de palabras vs. Contador de caracteres. El mismo conteo con cifras principales distintas. El Contador de palabras destaca palabras, oraciones, párrafos y tiempo de lectura, que es como se mide un ensayo, un artículo o un discurso. El Contador de caracteres destaca caracteres, caracteres sin espacios y bytes UTF-8, que es como se mide una meta descripción, un segmento de SMS o un campo de base de datos. Si algo rechazó tu texto por ser demasiado largo, lo que necesitas es el de caracteres, y en concreto su conteo de bytes.

Comparar textos vs. Eliminar líneas duplicadas. Comparar responde “¿qué cambió entre estas dos versiones?” y necesita dos textos. El eliminador de duplicados trabaja con una sola lista y responde “¿qué aparece más de una vez aquí?”, y además te dice qué entradas se repitieron y cuántas veces, ordena de forma natural para que item2 vaya antes que item10, o conserva solo las líneas que aparecieron exactamente una vez. Encontrar las entradas que solo están en una de dos listas es tarea del eliminador de duplicados, no del comparador.

Minificar HTML vs. Minificar CSS vs. Minificar JavaScript. Tres lenguajes, tres minificadores y una coincidencia que conviene conocer: el minificador de HTML también minifica el CSS de los bloques style y el JavaScript de los bloques script, igual que las otras dos páginas. Así que un solo archivo HTML necesita una herramienta, no tres. Los archivos .css y .js separados necesitan su propia página.

Visor de XML frente a Formatear XML y Validar XML. El visor de aquí te da un árbol que puedes contraer para explorarlo, que es lo que quieres cuando el documento es grande y estás buscando algo. El formateador y el validador, en las herramientas para desarrolladores, te dan texto con sangría para volver a pegarlo en un archivo y la línea y columna exactas de un error. Leer, frente a editar y corregir.

Visor de CSV frente a abrir el archivo en Excel. No es una herramienta rival, pero es la comparación que la gente hace en realidad. Excel convierte al abrir y no pregunta: un código de producto 00123 se convierte en 123, un número de pieza 5-3 se convierte en 5 de marzo, un número de pedido largo pasa a notación científica, y una exportación separada por punto y coma de un sistema alemán termina entera en la columna A. El visor muestra cada valor como texto, exactamente como está guardado, para que veas lo que realmente te enviaron.

Vista previa de Markdown vs. Markdown a PDF. La vista previa sirve para comprobar que un README se ve como lo mostrará GitHub, en vivo mientras escribes. Markdown a PDF, en las herramientas de documentos, sirve para crear un documento terminado con saltos de página. Revísalo aquí, publícalo allá.

En qué se basan estas herramientas

Los motores de código abierto que hacen el trabajo real y las especificaciones que implementan.

  • Unicode Annex #15Specification — explica la normalización: por qué dos cadenas que se ven idénticas pueden ser distintas.
  • Unicode Annex #29Specification — define los clústeres de grafemas, que es lo que realmente significa “un carácter”.
  • cssoMIT — minifica CSS.
  • TerserBSD-2-Clause — minifica JavaScript.
  • markdown-itMIT — genera la vista previa de Markdown.

Preguntas frecuentes

¿Mi texto se guarda en algún lugar?

No. No se guarda nada, no se registra nada y no se hace ninguna solicitud. Una vez cargada la página, desconéctate de internet y todo sigue funcionando. Con el texto, eso importa más de lo que parece: lo que la gente pega en contadores y comparadores en línea son escritos inéditos, borradores legales, trabajos de estudiantes y código fuente propietario.

¿Por qué mi número de palabras es distinto del de Microsoft Word o de otro sitio?

Porque contar implica decisiones. Las palabras con guion, los números sueltos, qué termina una oración y qué separa un párrafo son decisiones, y cada herramienta las toma a su manera. La nuestra cuenta “well-known” como una palabra, considera límite de párrafo una línea en blanco y no cada salto de línea, y no divide una oración después de una abreviatura como “Dr.”; además usa la segmentación de palabras Unicode, así que el chino y el japonés se cuentan bien en lugar de aparecer como una sola palabra enorme. En prosa normal, las cifras coinciden bastante; en una lista de números de pieza, no.

¿Por qué un archivo que solté se ve como “é” en lugar de “é”?

Porque no está en UTF-8. Los cuadros de texto leen los archivos que sueltas como UTF-8, que abarca casi todo lo creado en este siglo, pero una exportación antigua puede estar en Windows-1252 o Latin-1, y esos bytes significan otra cosa. Convertirlo una vez con iconv lo arregla para siempre. El Visor de CSV es la excepción entre estas herramientas: detecta la codificación y te deja cambiarla si la detección se equivoca.

¿Por qué sigue habiendo duplicados después de eliminarlos?

Casi siempre por espacios al final de la línea, que son invisibles y hacen que dos líneas sean realmente distintas. Por eso, quitar los espacios antes de comparar está activado de forma predeterminada, y solo afecta a la comparación: la línea que se conserva mantiene su texto original. La otra causa es Unicode: una letra con acento escrita como un solo carácter y como una letra más un acento combinable se ven idénticas y no son iguales. Nada de lo que hay aquí las normaliza por ti.

¿Funcionan con un documento de Word, un PDF o una hoja de cálculo?

No directamente: estas herramientas trabajan con texto, y eso es lo que las hace instantáneas. Conviértelo primero: nuestras herramientas [PDF a texto](pdf-to-text) y [DOCX a TXT](docx-to-txt) hacen exactamente eso, y el resultado se pega directamente aquí. Un CSV es la excepción y se abre directamente en el Visor de CSV.

¿Hay un límite de tamaño o un límite diario?

No hay cuenta, ni cuota, ni límite diario, porque no hay ningún servidor llevando la cuenta. El límite es la memoria de tu dispositivo. El único límite explícito está en Comparar textos, que se detiene en 8,000 diferencias y te lo indica en lugar de congelar la pestaña; comparar dos versiones del mismo documento casi nunca se acerca a esa cifra.