Texto

Cómo comparar dos versiones de un texto, línea por línea

Pega las dos versiones, deja que la herramienta las alinee y aprende a leer los puntos donde la alineación está adivinando.

Para comparar dos textos, pega la versión vieja y la nueva en una herramienta de diff: alinea las dos y marca cada línea como sin cambios, eliminada o añadida, con las palabras que cambiaron sombreadas dentro de la línea. Compararlas en el navegador toma unos diez segundos. Lo que vale la pena saber es dónde falla la alineación, porque un diff compara caracteres, no significado, y te dirá tan tranquilo que dos líneas que no puedes distinguir entre sí son diferentes.

Cómo ejecutar la comparación

La versión vieja en el cuadro de arriba, la nueva en el de abajo. No hay selector de archivos, así que un archivo hay que abrirlo en un editor y pegar su contenido aquí. La comparación se ejecuta una fracción de segundo después de que dejas de escribir, y aparecen cuatro contadores debajo del encabezado del resultado: líneas añadidas, líneas eliminadas, líneas sin cambios y un porcentaje de similitud. Debajo de ellos está el texto alineado, con las eliminaciones sobre fondo rojo y las adiciones sobre fondo verde.

Ocultar líneas sin cambios justifica su casilla de inmediato. Colapsa todo salvo los cambios y tres líneas de contexto a cada lado, que es la diferencia entre leer el diff de un documento de 900 líneas y recorrerlo entero. El botón Invertir lados corrige el error muy común de pegar las versiones en el orden equivocado, que convierte cada adición en una eliminación y hace que todo se lea al revés.

Las tres opciones de ignorar —mayúsculas, espacios al principio y al final, líneas en blanco— silencian diferencias que ya decidiste que no cuentan. Actívalas a propósito: cada una oculta cambios reales junto con el ruido.

Por qué un diff tiene que adivinar

Lo obvio sería recorrer los dos textos a la par y marcar cada posición en la que no coinciden. Eso se rompe con la primera inserción. Agrega una línea arriba y cada línea restante queda una posición más abajo que su gemela, así que la comparación reporta el documento entero como reescrito. Técnicamente correcto, completamente inútil.

Por eso un diff de verdad resuelve antes un problema más difícil: encontrar la secuencia más larga de líneas que aparece, en el mismo orden, en los dos textos. Esa es la subsecuencia común más larga. Todo lo que queda fuera es una eliminación a la izquierda o una inserción a la derecha, y de ese resultado sale el conocido diseño rojo y verde.

Encontrarla cuesta trabajo. El método de libro de texto llena una cuadrícula con una celda por cada par de líneas, así que comparar un documento de 2.000 líneas contra otro de 2.000 líneas significa cuatro millones de celdas. Git usa por defecto el algoritmo de Myers —Eugene Myers, “An O(ND) Difference Algorithm and Its Variations”, 1986—, cuyo costo crece con el número de diferencias y no con el producto de los tamaños de los dos archivos. Por eso git diff es instantáneo en un repositorio donde cambiaste tres líneas.

La herramienta de aquí usa la cuadrícula, con un atajo que hace casi todo el trabajo: las líneas idénticas del principio y del final se emparejan antes de construir la cuadrícula, y en el uso normal eso elimina la mayor parte del texto. Pasadas unas 1.500 líneas distintas de cada lado, deja de intentar alinearlas y reporta todo el medio como eliminado y vuelto a añadir, con un aviso debajo de los botones que lo dice. En ese punto lo que quieres es una herramienta de merge de escritorio.

Por qué dos líneas que se ven idénticas salen marcadas como diferentes

Porque no son idénticas. Algo ahí dentro no tiene forma visible:

Los finales de línea son el único caso en el que no tienes que pensar: Windows termina las líneas con un retorno de carro más un salto de línea y todo lo demás usa solo un salto de línea, y la herramienta normaliza los dos antes de comparar, así que un archivo pegado desde un editor de Windows no aparece como 100% diferente solo por eso.

Para el resto, “ignorar espacios al principio y al final” descarta la primera causa con un clic, pero también oculta cambios de indentación, y en Python, YAML o un Makefile la indentación es el cambio que estabas buscando. Cuando una línea queda marcada y, aun después de eso, sigues sin ver por qué, la diferencia está dentro de la línea, y los caracteres invisibles que rompen el texto explica cómo encontrar cuál es.

¿Cómo se compara un texto sin saltos de línea?

Primero le pones saltos de línea. Un diff basado en líneas no tiene nada que decir sobre un documento que es una sola línea larga: cambia un carácter en medio de un JSON minificado y el resultado es “1 eliminada, 1 añadida” con todo el bloque sombreado, que no te dice nada que no supieras ya.

Para JSON, XML o JavaScript minificado, formatea los dos lados antes de comparar. Pasar cada versión por un formateador de JSON pone cada clave en su propia línea, y entonces el diff apunta a los tres campos que de verdad cambiaron en lugar de a todo el objeto. La indentación tiene que coincidir en ambos lados, así que usa la misma configuración las dos veces; si no, todas las líneas serán diferentes. Formatear y leer JSON minificado cubre el resto de eso.

Para prosa, el truco equivalente es poner cada oración en su propia línea en las dos versiones antes de pegarlas. Un diff de dos capítulos donde cada párrafo es una sola línea marcará el párrafo entero como cambiado cuando lo único que arreglaste fue una coma. El resaltado por palabras suaviza esto, pero lo que hace legible el resultado es una oración por línea.

Comparar dos listas que están en distinto orden

Ordena los dos lados igual primero, y después compara. A un diff le importa el orden, así que dos exportaciones de los mismos 400 registros en secuencias distintas vuelven como casi enteramente cambiadas aunque el contenido coincida. Ordenar reduce eso a las adiciones y eliminaciones reales: qué filas están en un archivo y no en el otro.

Esto solo funciona cuando el orden no significa nada. Un ranking, un changelog o una secuencia de pasos pierden su sentido al ordenarse. Y si alguna de las listas tiene repetidos, quítalos antes, o un duplicado en un solo lado desplaza todo lo que viene después.

Qué mide el porcentaje de similitud

Líneas completas, y solo líneas completas: las líneas sin cambios contadas dos veces, divididas entre el total de líneas de los dos textos. Es una comprobación rápida —3% significa que probablemente pegaste lo que no era— y nada más.

Es implacable de una manera concreta. Cambia una palabra en cada línea y la similitud marca 0%, porque ninguna línea sobrevivió intacta, aunque los textos sean 99% iguales para cualquier medida humana. Un porcentaje bajo significa que las líneas se movieron, no que el texto sea irreconocible.

Qué no detecta un diff

El resaltado por palabras tiene su propia salvedad. Empareja la primera línea eliminada con la primera insertada, la segunda con la segunda, puramente por posición, así que reescribir un párrafo y reordenar sus oraciones convierte ese emparejamiento en ruido. La herramienta se niega a resaltar cuando dos líneas emparejadas comparten menos de aproximadamente un tercio de sus caracteres, lo que evita lo peor. Cuando el sombreado sigue viéndose mal, apágalo y lee las líneas enteras.

Cómo sacar el resultado

El botón de copiar produce el formato que todo el mundo reconoce —un más, un menos o un espacio al principio de cada línea—, que se pega limpio en un comentario de revisión o en un mensaje de chat. Copia la comparación completa, incluidas las líneas sin cambios que estaban colapsadas en pantalla, así que un documento largo sale largo igual. No es un archivo patch: no hay cabeceras de hunk @@ ni nombres de archivo, así que patch y git apply lo rechazan. Genera uno de verdad con git diff.

El comparador de textos de aquí hace todo lo anterior en una sola página —los dos cuadros, las opciones de espacios y mayúsculas, el sombreado por palabras y una cifra de similitud— sin que el texto salga de tu navegador, algo que importa cuando las dos versiones son un contrato o la carta médica de alguien. Pega, lee, cierra la pestaña.

Si el diff insiste en que una línea cambió y la leíste seis veces sin encontrar la diferencia, el culpable es casi siempre un carácter sin forma visible. Los caracteres invisibles que rompen tu texto lista los sospechosos habituales y cómo deshacerte de ellos.

Preguntas frecuentes

¿Cómo comparo dos textos para ver las diferencias?

Pega el original en un cuadro de una herramienta de diff y la versión nueva en el otro. La herramienta alinea los dos y marca cada línea como sin cambios, eliminada o añadida, sombreando las palabras concretas que se movieron dentro de una línea cambiada. Para documentos largos, activa la opción que oculta las líneas sin cambios para que solo queden los cambios y unas pocas líneas de contexto.

¿Por qué un diff dice que dos líneas son diferentes si se ven iguales?

Hay un carácter invisible en una de ellas. Las causas habituales son un espacio al final, un tab en lugar de espacios, un espacio no separable pegado desde una página web, una comilla tipográfica del autocorrector o una letra de otro alfabeto que se parece. Activar “ignorar espacios al principio y al final” descarta la primera; el resto exige mirar la línea de cerca.

¿Puedo comparar dos documentos de Word o PDF?

Solo su texto, y solo copiándolo y pegándolo. El formato, el control de cambios, los comentarios, las tablas y las imágenes se pierden en el proceso, así que la comparación cubre las palabras y nada más. Word de escritorio tiene su propia función Comparar en la pestaña Revisar que conserva todo eso, y es la mejor opción para un contrato.

¿Es seguro pegar texto confidencial en una herramienta de diff en línea?

Depende enteramente de si el sitio envía tu texto a un servidor. Muchos lo hacen, lo que significa que un borrador de contrato o la carta de un paciente termina en los logs de otra persona. Las herramientas que comparan en el navegador nunca transmiten nada, y puedes verificarlo desconectándote de la red y comprobando que la herramienta sigue funcionando.

¿Cómo comparo dos listas que están en distinto orden?

Ordena las dos listas de la misma forma antes de compararlas. Un diff es sensible al orden, así que dos exportaciones de los mismos registros en secuencias distintas vuelven como casi enteramente cambiadas. Una vez ordenados los dos lados, el diff muestra solo las entradas que existen en una lista y no en la otra.

¿Puedo usar la salida de una herramienta de diff como archivo patch?

Normalmente no. Un diff copiado suele llevar los prefijos de más y menos pero ninguna cabecera de hunk ni nombre de archivo, así que patch y git apply lo rechazarán. Está pensado para pegarlo en un comentario de revisión o en un mensaje; usa git diff cuando necesites un patch que de verdad se aplique.

Última actualización 19 de septiembre de 2026