Comparador de textos

Pega el original a la izquierda y la versión modificada a la derecha. Las líneas añadidas y eliminadas aparecen mientras escribes, con las palabras que cambiaron marcadas dentro de ellas, y puedes copiar el resultado como un diff unificado.

Pega o escribe. No se sube nada: la comparación se ejecuta en esta página.
Comparar
Vista

Pega un texto en los dos cuadros para compararlos.

¿Revisas una configuración antes y después de un cambio, o las condiciones de dos planes? Cuando elijas dónde ejecutarla: Desde 3,02 € al mes hoy, entre 2226 servidores.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo funciona el comparador de textos

Los dos textos se dividen en líneas, y la página busca la secuencia más larga de líneas que tienen en común, en orden (la subsecuencia común más larga). Todo lo demás es un cambio: las líneas que solo están en el original están eliminadas, y las que solo están en el texto modificado, añadidas. Usa el algoritmo de Eugene Myers, el mismo que hay detrás de GNU diff y git diff, así que encuentra el conjunto de cambios más pequeño.

Cuando un bloque de líneas eliminadas está justo al lado de un bloque de líneas añadidas, se emparejan en orden y se vuelven a comparar palabra por palabra. Las palabras que difieren se marcan, así que un número de puerto o una ruta que cambió destaca en una línea larga. Si dos líneas emparejadas tienen poco en común, se muestra la línea entera como modificada.

«Ignorar espacios» trata las series de espacios y tabulaciones como un solo espacio y los omite en los extremos de las líneas, lo que ayuda después de reindentar. «Ignorar mayúsculas y minúsculas» compara las letras sin distinguirlas. Los finales de línea (CRLF de Windows o LF de Unix) nunca cuentan como una diferencia. Los tramos largos sin cambios se pliegan, dejando tres líneas de contexto alrededor de cada cambio.

Ejemplo

El ejemplo es un sitio nginx que pasa de HTTP simple a HTTPS. El original tiene 11 líneas y la versión modificada 12. El diff encuentra 7 líneas sin cambios, 4 eliminadas y 5 añadidas. En la línea listen solo «80» pasó a ser «443 ssl», y en la línea root solo «html» pasó a ser «example», por eso esas palabras aparecen marcadas. Como diff unificado se lee así:

changes.diff
--- original.conf
+++ changed.conf
@@ -1,11 +1,12 @@
 server {
-    listen 80;
+    listen 443 ssl;
+    http2 on;
     server_name example.com www.example.com;
-    root /var/www/html;
+    root /var/www/example;
 
+    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
+
     location / {
         try_files $uri $uri/ =404;
     }
-
-    access_log /var/log/nginx/access.log;
 }

Las líneas que empiezan por un guion están eliminadas, las que empiezan por un más están añadidas y las que empiezan por un espacio son contexto sin cambios. El encabezado @@ -1,11 +1,12 @@ significa que el bloque abarca las líneas 1 a 11 del original y 1 a 12 del texto modificado. El comando patch puede aplicar un archivo así al original: patch original.conf changes.diff.

Preguntas

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

Pega la versión antigua en el cuadro de la izquierda y la nueva en el de la derecha. Las diferencias aparecen al instante: las líneas eliminadas en rojo, las añadidas en verde, con las palabras cambiadas marcadas dentro de ellas. Usa «Intercambiar» si las pegaste al revés.

¿Se sube mi texto a algún sitio?

No. La comparación se ejecuta en tu navegador con JavaScript y el texto nunca sale de esta página. Por eso es seguro para configuraciones, registros y código que no pegarías en un sitio que envía el texto a un servidor. Al cerrar la pestaña, desaparece.

¿Qué hace ignorar los espacios en un diff?

Trata las líneas como iguales cuando solo se diferencian en los espacios: varios espacios o tabulaciones cuentan como un solo espacio, y se ignoran los espacios al principio o al final de una línea. Es útil después de reindentar un archivo o de convertir tabulaciones en espacios. Las palabras dentro de las líneas modificadas se comparan de la misma forma.

¿Cómo comparo dos archivos en la línea de comandos?

En Linux y macOS: diff -u old.conf new.conf, o git diff --no-index old.conf new.conf para colores y marcas de palabras (añade --word-diff). En Windows: fc old.conf new.conf en cmd, o Compare-Object (Get-Content old.conf) (Get-Content new.conf) en PowerShell. Añade -w a diff para ignorar los espacios.

¿Qué significa @@ -1,11 +1,12 @@ en un diff?

Es el encabezado de un bloque (un hunk) de un diff unificado. -1,11 significa que el bloque empieza en la línea 1 del archivo antiguo y abarca 11 líneas; +1,12 significa que empieza en la línea 1 del archivo nuevo y abarca 12. Debajo, las líneas que empiezan por - se eliminaron, las que empiezan por + se añadieron y un espacio significa contexto sin cambios.