TextDiff es una herramienta diff en línea y gratuita que encuentra las diferencias entre dos textos. Coloca uno al lado del otro dos textos parecidos pero no idénticos —el borrador y la versión corregida de un documento, el contrato enviado y el devuelto, la versión anterior y la nueva de un código— y marca con colores qué líneas se añadieron, eliminaron o modificaron y, dentro de cada línea, qué palabra o carácter cambió exactamente.
Toda la comparación se hace dentro del navegador. El texto que introduces y los archivos que cargas no se envían a ningún servidor, así que puedes comparar también documentos internos o contratos que no conviene sacar de la empresa. El cálculo se ejecuta en un Web Worker, por lo que la pantalla no se bloquea aunque introduzcas decenas de miles de líneas.
Funciones principales
Resaltado por línea y dentro de la línea
Tras localizar las líneas cambiadas, vuelve a resaltar dentro de cada una solo lo que cambió, por palabras, bloques separados por espacios o caracteres.
Vista dividida y unificada
Alterna entre la vista dividida (lado a lado) y la vista unificada, que se lee de arriba abajo como en git.
Opciones para ignorar
Puedes comparar ignorando los espacios al final de línea, la cantidad de espacios, todos los espacios, las mayúsculas o las líneas en blanco.
Normalización del fin de línea
Trata como iguales los saltos de línea de Windows (CRLF) y de macOS o Linux (LF), así como la presencia o ausencia del salto final.
Comparación JSON con claves ordenadas
Analiza los dos JSON, ordena las claves de los objetos y unifica la sangría antes de comparar. Si solo cambia el orden de las claves, no lo cuenta como diferencia.
Estadísticas y navegación
Muestra el número de líneas añadidas, eliminadas y modificadas y el porcentaje de similitud, y permite saltar al cambio anterior o siguiente.
Ver solo los cambios
Pliega los tramos largos sin cambios y deja solo 3 líneas alrededor de cada cambio. Los tramos plegados se despliegan con un clic.
Arrastrar archivos
Arrastra a un cuadro archivos .txt, .md, .json, .csv o de código, o suelta dos archivos a la vez para compararlos al instante.
Exportar a patch y HTML
Copia o guarda el resultado como texto diff unificado (patch), o cópialo como tabla HTML con colores para pegarlo en un correo o un documento.
Cómo se usa
- Pega el texto de referencia en el cuadro izquierdo (Original) y el texto que quieres comparar en el derecho (Modificado). También puedes arrastrar un archivo al cuadro o usar el botón Abrir que hay encima.
- Con «Comparar al escribir» activado, el resultado aparece en cuanto dejas de escribir. Si está desactivado, pulsa [Comparar] o Ctrl+Enter.
- Si hace falta, elige ignorar espacios, mayúsculas o líneas en blanco, la unidad de comparación dentro de la línea (palabras, bloques o caracteres) y el orden de claves JSON. Al cambiar una opción, se vuelve a comparar al momento.
- En la barra de resultados elige la vista dividida o unificada, y muévete entre cambios con los botones de flecha arriba y abajo (o Alt+↑/↓).
- Si necesitas compartirlo, copia o guarda el patch, o cópialo como HTML.
Opciones de comparación
| Espacios: comparar tal cual | Trata los espacios y las tabulaciones igual que cualquier otro carácter. Basta con una sangría distinta para que la línea sea diferente. |
|---|---|
| Espacios: ignorar espacios al final de línea | Ignora solo los espacios y tabulaciones que quedan al final de la línea. Filtra las diferencias causadas por editores que eliminan o dejan esos espacios automáticamente. (Similar a -Z de GNU diff) |
| Espacios: ignorar cantidad de espacios | Considera iguales un espacio y varios. Aun así, que haya espacio o no lo haya sigue siendo una diferencia: «a b» y «a b» son iguales, pero «a b» y «ab» no. (diff -b) |
| Espacios: ignorar todos los espacios | Elimina todos los espacios antes de comparar. «a b» y «ab» se consideran la misma línea. (diff -w) |
| Dentro de la línea: palabras | Marca los cambios tomando como unidad los grupos de letras y números y los símbolos. Adecuado para código y textos en inglés. |
| Dentro de la línea: bloques | Marca los cambios tomando como unidad los bloques separados por espacios. Resulta cómodo para leer frases, porque cada palabra se muestra junto con la puntuación que lleva pegada. |
| Dentro de la línea: caracteres | Compara carácter a carácter. Sirve para localizar con precisión cambios de uno o dos caracteres, como importes, fechas o números de cláusula. |
| Ignorar mayúsculas | Considera iguales las letras mayúsculas y minúsculas. |
| Ignorar líneas en blanco | Excluye de la comparación las líneas vacías o que solo contienen espacios. Se muestran atenuadas y no cuentan como cambios. (Similar a diff -B) |
| Normalizar fin de línea | Trata CRLF, CR y LF como el mismo salto de línea e ignora si el archivo termina o no con salto de línea. Si lo desactivas, el CR al final de línea se muestra como ␍ y la línea sin salto final como ∅. |
| Ordenar claves JSON | Analiza ambos lados como JSON, ordena alfabéticamente las claves de los objetos y los reescribe con sangría de 2 espacios antes de comparar. No cambia el orden de los arrays. Si el análisis falla, indica la posición del error. |
Las diferencias de fin de línea (como CRLF) solo se comparan con exactitud en el texto cargado desde un archivo. En el texto pegado en los cuadros, el navegador convierte los saltos de línea a LF, por lo que las diferencias de CR no se muestran.
Atajos de teclado
Ctrl+Enter / ⌘+Enter | Comparar ahora |
Alt+↓ / Alt+↑ | Ir al cambio siguiente / anterior |
n / p (fuera de los cuadros de texto) | Ir al cambio siguiente / anterior |
Tab (dentro de un cuadro de texto) | Insertar un tabulador |
Lo que introduces no se envía a ninguna parte
El motor de comparación es un JavaScript (diff-core.js) que se descarga junto con esta página, y los textos y archivos se procesan solo en la memoria del navegador. No se guarda lo que introduces; el navegador solo recuerda el tema y las opciones elegidas. Al cerrar la página, el contenido desaparece.
Preguntas frecuentes
¿Se guardan en un servidor los textos que comparo?
No. La comparación se hace solo con JavaScript dentro del navegador y el contenido no se envía a ningún servidor. Incluso sin conexión, la página ya abierta sigue comparando.
¿Qué tamaño de texto puedo comparar?
Puedes cargar archivos de hasta 30 MB, y las comparaciones de decenas de miles de líneas se procesan en un hilo aparte (Web Worker) para que la pantalla no se bloquee. Si hay muchísimas diferencias, puede devolver un resultado aproximado en lugar del mínimo para ganar velocidad. Si el resultado supera las 4.000 líneas, primero muestra solo los cambios.
¿Qué algoritmo utiliza?
Para comparar líneas usa el algoritmo de diferencias O(ND) de Myers (1986), implementado en su variante de espacio lineal. Si el coste crece demasiado, pasa a una división aproximada como hace GNU diff. Dentro de las líneas cambiadas, el mismo algoritmo vuelve a comparar palabras, bloques o caracteres.
¿Cómo distingue entre «modificada» y «añadida/eliminada»?
Dentro de un tramo cambiado, si una línea eliminada y una añadida tienen un contenido lo bastante parecido, se emparejan como una misma línea corregida y cuentan como «modificada». Las líneas sin pareja cuentan como «añadidas» o «eliminadas».
¿Cómo se calcula la similitud (%)?
Es la proporción de caracteres que no cambian respecto al total de caracteres de ambos lados (incluidos los saltos de línea). Las líneas iguales cuentan completas y, en las modificadas, solo la parte que se mantiene igual dentro de la línea.
¿Qué diferencia hay entre ignorar la cantidad de espacios e ignorar todos los espacios?
Ignorar la cantidad de espacios solo pasa por alto cuántos espacios hay, así que «a b» y «ab» siguen siendo distintos. Ignorar todos los espacios los elimina todos antes de comparar, así que ambos se consideran iguales. En código donde la sangría tiene significado, como Python, usa con cuidado la opción de ignorar todos los espacios.
¿Puedo aplicar un patch generado con opciones de ignorar activadas?
El patch se genera a partir de las diferencias que se ven en pantalla, y las líneas de contexto se toman del original. Con opciones de ignorar activadas, las diferencias ignoradas no entran en el patch; si quieres reproducir el archivo exactamente, desactiva todas las opciones antes de generar el patch.
¿Puedo comparar documentos de Word, HWP o PDF?
No puede leer esos archivos directamente. Copia el texto del documento y pégalo para compararlo; ten en cuenta que pueden perderse tablas, notas al pie y formato. Encontrarás más consejos en la guía de comparación de documentos.
¿Funciona en el móvil?
Sí. En pantallas estrechas los cuadros de texto se apilan uno encima del otro y el resultado empieza en vista unificada. También puedes cambiar a la vista dividida.
Guías
- ¿Cómo encuentra diff las diferencias? — LCS y el algoritmo de Myers
- Myers, Patience e Histogram — comparación de algoritmos diff
- Cómo leer un diff unificado (patch) — guía para la revisión de código
- Diferencias entre las opciones para ignorar espacios — diff -b, -w, -B, -Z y sus equivalentes en git
- Revisar documentos y comparar contratos — cómo encontrar todas las diferencias entre dos versiones
- Cómo comparar JSON — ordenar claves y normalizar
- Caracteres de fin de línea (CRLF y LF) y diferencias invisibles — cuando todas las líneas aparecen cambiadas