Comparar textos
Pega el original y la versión modificada para ver resaltada cada diferencia, hasta la palabra.
Pega texto en ambos campos para compararlos.
Cómo funciona
La comparación busca la secuencia más corta de líneas añadidas y eliminadas que convierte un texto en el otro, con el algoritmo de Eugene Myers de 1986. Es el mismo método que git usa por defecto. Después, las líneas cambiadas se comparan palabra por palabra para que veas exactamente qué difiere.
Las líneas añadidas tienen fondo verde y las eliminadas, fondo rojo. Una línea cambiada cuenta como una eliminada y una añadida, igual que en otras herramientas de diff.
Ignorar mayúsculas y minúsculas trata Hola y hola como iguales. Ignorar espacios no tiene en cuenta los espacios al principio y al final de la línea ni los espacios repetidos, lo que ayuda cuando ha cambiado la sangría.
El diff unificado (unified diff) es el formato de texto que produce diff -u, con tres líneas de contexto alrededor de cada cambio. Se puede pegar en un informe de errores o pasar a patch y git apply.
Tus textos nunca salen de tu navegador. Los textos muy largos que difieren casi por completo no se comparan línea por línea; en ese caso, todas las líneas se muestran como cambiadas.
Cómo compara la herramienta
Primero se apartan las líneas idénticas del principio y del final. Entre ellas, el algoritmo de Myers busca la secuencia más corta de líneas eliminadas y añadidas. Antes, los finales de línea CR LF o CR se convierten en LF, así que el mismo texto de Windows y de un Mac cuenta como igual. Dentro de un cambio, las líneas eliminadas y las añadidas se emparejan por orden para compararlas palabra por palabra. Las palabras se separan por espacios y signos de puntuación, así que una coma cambiada se marca sola.
Ejemplo
Compara las líneas leche, pan, huevos con leche, pan integral, huevos, fruta, ambas con un salto de línea tras la última línea. El algoritmo conserva leche y huevos, elimina pan y añade pan integral y fruta: dos líneas añadidas y una eliminada. La línea pan integral se empareja con pan, y solo la palabra integral, con el espacio que la precede, se marca como nueva. En diff unificado es un único bloque con la cabecera @@ -1,3 +1,4 @@: empieza en la línea 1 y abarca tres líneas del texto antiguo y cuatro del nuevo.
Sin salto de línea tras la última línea, el resultado cambia. Según GNU Diffutils, una última línea sin salto de línea no coincide con la misma línea con salto, y huevos solo era la última línea en el texto antiguo. La herramienta muestra entonces huevos como eliminada y añadida, tres líneas añadidas y dos eliminadas, y escribe \ No newline at end of file tras la última línea de cada texto, como hace diff -u. En paralelo y en una columna, la línea eliminada huevos lleva la marca «sin salto de línea al final», porque de lo contrario parecería igual. La opción de ignorar espacios no tiene en cuenta esa diferencia.
Límites
El trabajo tiene un tope de 4000 cambios a nivel de línea. Dos textos de 2001 líneas completamente distintas lo superan, y todas las líneas se muestran entonces como cambiadas. A nivel de palabra el tope es de 2000 cambios por pareja de líneas, y si ha cambiado más del 80 % de los caracteres, la línea se muestra entera sin marcar palabras.
Lo que no se ve
Los bloques movidos no se reconocen, porque el algoritmo solo conoce eliminaciones y adiciones. Si mueves las dos primeras líneas de un texto de cinco justo antes de la última, la herramienta muestra dos líneas eliminadas y dos añadidas. Ignorar espacios junta los espacios dentro de una línea, pero no los quita: a,b y a, b siguen contando como distintas.