Cómo funcionan los algoritmos diff
Cada vista diff en esta página es producida por el algoritmo Myers — una técnica de 1986 de Eugene W. Myers que encuentra el script de edición más corto entre dos secuencias de tokens en tiempo O((N+M)D), donde D es la distancia de edición. El algoritmo se basa en el problema de la Subsecuencia Común Más Larga, y el motor se ejecuta íntegramente en el navegador usando la librería de código abierto jsdiff.
- Tokenizar las entradas — Antes de comparar, el algoritmo divide cada entrada en una secuencia de tokens. La granularidad de línea divide en saltos de línea; la de palabra divide en límites de espacios en blanco y puntuación; la de carácter trata cada punto de código Unicode como su propio token.
- Construir el grafo de edición — El algoritmo Myers modela la comparación como un camino a través de una cuadrícula 2D donde moverse a la derecha significa "eliminar del original", moverse hacia abajo significa "insertar del modificado" y moverse en diagonal significa "el token coincide en ambos". El algoritmo encuentra el camino más corto con el mayor número de movimientos diagonales.
- Extraer la LCS — Los movimientos diagonales en el camino más corto trazan la Subsecuencia Común Más Larga — los tokens que aparecen en ambas entradas en el mismo orden relativo. Cada token en la LCS está "sin cambios"; todo lo demás es una adición o una eliminación.
- Aplicar opciones de preprocesado — Si activas "Ignorar mayúsculas/minúsculas", ambas entradas se convierten a minúsculas antes del pase LCS para que "HOLA" y "hola" cuenten como idénticos. "Ignorar espacios en blanco" colapsa múltiples espacios en uno. "Recortar cada línea" elimina los espacios en blanco iniciales y finales por línea antes de la comparación.
- Mostrar la vista seleccionada — El resultado es el mismo resultado LCS mostrado de tres formas: En paralelo muestra el original a la izquierda y el modificado a la derecha en una cuadrícula de dos columnas con resaltado de fila rojo y verde. Unificada muestra una sola columna con líneas con prefijo − y +, como la salida de
git diff. Integrada muestra las eliminaciones como texto tachado en rojo y las adiciones como texto subrayado en verde dentro del mismo flujo de texto. - Calcular la barra de resumen — Tras el renderizado, la herramienta cuenta cuántos tokens fueron añadidos, eliminados y sin cambios, y luego calcula la similitud como el cociente de tokens sin cambios sobre el mayor de los dos tamaños de entrada. Una similitud del 100% significa que las entradas son idénticas tras el preprocesado.
Por qué usar un comparador de texto
- Revisión de código sin cliente Git — Pega dos versiones de un fichero de configuración, una migración SQL o un script de shell y ve qué cambió sin clonar un repositorio, cambiar de rama ni esperar a un pipeline de CI. La herramienta es práctica para revisiones rápidas durante la programación en pareja, para entregas a contratistas donde la otra parte no ha compartido su historial de Git, y para bases de código heredadas anteriores al control de versiones. La vista unificada produce una salida que puedes copiar directamente en un hilo de chat o un ticket.
- Redlines de contratos y documentos — El diff de palabras muestra qué términos cambiaron entre borradores de contratos más rápido que el panel de Control de cambios de Word. Pega la cláusula A del primer borrador y la cláusula B de la copia ejecutada, y la sustitución se ilumina en rojo y verde exactamente en la frase que cambió. Los asesores jurídicos y los equipos de compras lo usan para verificar que los redlines de última hora no se colaron antes de que se firmara el contrato.
- Revisiones de ensayos y borradores — Los escritores que comparan un primer borrador con una versión editada pueden cambiar a la granularidad de palabra para ver cada sustitución, inserción y eliminación sin releer ambas copias. El mismo flujo de trabajo sirve para traductores que auditan cambios respecto al texto fuente, para editores que comprueban que una corrección de estilo preservó la voz del autor, y para equipos periodísticos que reconcilian un artículo publicado con el borrador enviado.
- Comparación de registros y configuraciones — Los administradores de sistemas que comparan dos instantáneas de configuración de servidor, dos programaciones cron o dos salidas de
ps auxpueden usar la granularidad de línea para localizar el único parámetro cambiado en un fichero de 200 líneas en segundos. Combínalo con la opción Ignorar-espacios-en-blanco y un diff ruidoso de solo alineación se colapsa a los cambios de parámetros que realmente importan.
Aplicaciones comunes
El diff de texto aparece al final de cada ciclo de edición en trabajos de escritura, desarrollo y operaciones.
- Revisión de pull request: pega dos implementaciones de una función en paralelo para entender el cambio lógico antes de aprobar, sin la sobrecarga de hacer checkout de la rama.
- Control de calidad de internacionalización: compara una cadena fuente en inglés con su equivalente traducida a nivel de palabra para detectar inserciones, omisiones o cambios de terminología que el traductor pueda haber introducido.
- Análisis de incidentes: haz diff de dos instantáneas de manifiesto de Kubernetes o dos salidas de "docker inspect" a nivel de línea para aislar el cambio de configuración que precedió a una interrupción del servicio.
Un ejemplo práctico
Toma una configuración de servidor de cinco líneas. Original: host=localhost, port=5432, dbname=app_db, user=app, password=secret. Modificado: host=db.prod.example.com, port=5432, dbname=app_db, user=app_prod, password=secret. Con granularidad de línea y vista en paralelo, la línea 1 muestra rojo a la izquierda (host=localhost) y verde a la derecha (host=db.prod.example.com), la línea 4 muestra rojo (user=app) y verde (user=app_prod), y las líneas 2, 3 y 5 permanecen sin cambios en ambos lados. La barra de resumen reporta 2 adiciones, 2 eliminaciones, 3 sin cambios y una similitud del 60% — tres de cinco líneas conservadas. Cambia a granularidad de palabra y el diff se ajusta aún más: solo los valores a la derecha del = en las líneas 1 y 4 se iluminan, las claves permanecen sin cambios y la similitud sube a aproximadamente el 85% porque la LCS ahora cuenta host, user y la puntuación circundante como conservados.
¿Esto se ejecuta en mi navegador?
Sí. El cálculo completo del diff se ejecuta del lado del cliente usando la librería de código abierto jsdiff cargada con la página. Nada de lo que escribes, pegas o comparas se envía a ningún servidor. Puedes verificarlo tú mismo: abre DevTools del navegador, cambia a la pestaña Network, borra el registro, haz clic en Comparar y confirma que no se activa ninguna solicitud de red para el paso de comparación.
¿Qué significa el porcentaje de similitud?
La similitud se calcula como tokens sin cambios / max(total de tokens en el original, total de tokens en el modificado). Una puntuación del 100% significa que las dos entradas son idénticas tras aplicar las opciones de preprocesado (normalización de mayúsculas, colapso de espacios en blanco, recorte de líneas). Una puntuación del 0% significa que no hay ningún token compartido entre las entradas. La métrica es una aproximación de la distancia de edición — útil como indicador rápido — no una puntuación de plagio u originalidad.
¿Puedo hacer diff semántico de JSON / YAML / XML?
No en esta herramienta. Este es un diff a nivel de texto, por lo que el reformateo de JSON o XML que solo cambia espacios en blanco sigue mostrando muchos cambios aunque los datos sean lógicamente idénticos. La reordenación de claves de objeto en JSON también aparece como cambios aunque la mayoría de los analizadores traten el orden de claves como insignificante. Para un diff semántico real que compare árboles de objetos analizados e ignore el orden de claves y el formato, planeamos una herramienta dedicada de JSON Diff. Por ahora, normaliza ambas entradas a la misma indentación y orden de claves antes de pegarlas aquí.
¿En qué se diferencian las vistas unificada y en paralelo?
En paralelo muestra dos columnas: el original a la izquierda y la versión modificada a la derecha, con las líneas eliminadas resaltadas en rojo a la izquierda y las líneas añadidas en verde a la derecha. Las líneas sin cambios aparecen en ambas columnas alineadas en la misma fila. Unificada muestra una sola columna con un prefijo − y fondo rojo para las líneas eliminadas y un prefijo + y fondo verde para las líneas añadidas — el mismo formato que imprime git diff en tu terminal. Usa la vista unificada cuando quieras copiar el resultado como fichero de parche o pegarlo en un hilo de revisión de código. Usa en paralelo cuando la alineación visual de qué reemplazó a qué importa más que el texto del parche en bruto.
Pega el original a la izquierda, la versión modificada a la derecha, elige una vista y una granularidad, y la comparación aparece en milisegundos. Activa el modo en vivo y el diff se vuelve a ejecutar en cada pulsación de tecla mientras editas cualquiera de los dos lados. Descarga el resultado como un fichero unificado .patch estándar que git apply consume directamente. Sin subida, sin cuenta, sin clave de API de ningún proveedor, sin cuota.