Cómo comparar textos y encontrar las diferencias
Encontrar lo que cambió entre dos versiones de un documento, archivo de configuración o pieza de código es una tarea común. Leer ambas versiones y detectar diferencias manualmente es lento y poco confiable, especialmente con textos largos. Un verificador de diferencias lo hace al instante y resalta cada cambio. El mismo algoritmo que impulsa el historial de commits de Git, la interfaz de revisión de pull-request de GitHub y el comando Unix diff subyace a cada herramienta de diferencia visual que ha usado.
Cómo comparar texto
- Pegue ambas versiones: ingrese el texto original a la izquierda y el texto modificado a la derecha.
- Revise los resaltados: las líneas agregadas se muestran en verde, las líneas eliminadas en rojo. Las líneas modificadas muestran tanto la versión antigua como la nueva.
- Exporte o copie: copie los resultados de diferencia o descargue un informe.
La comparación ocurre tan pronto como ambos paneles tienen texto. No hay un botón Comparar para hacer clic; las ediciones a cualquier lado vuelven a ejecutar la diferencia en tiempo real, lo cual es útil cuando está iterando en una corrección y desea ver el efecto inmediatamente.
Leyendo una diferencia
La salida de diferencia usa un sistema de colores simple:
- Verde (agregado): líneas que existen en la nueva versión pero no en la antigua
- Rojo (eliminado): líneas que existían en la versión antigua pero han desaparecido de la nueva
- Sin cambios: líneas que son idénticas en ambas versiones
Esta es la misma convención utilizada por Git, GitHub, GitLab, Bitbucket y cada sistema de control de versiones importante. Los colores no son arbitrarios: verde para adiciones y rojo para eliminaciones ha sido el estándar desde la década de 1970, cuando las primeras herramientas de diferencia visual (como el comando sdiff) se enviaron en Unix. Las herramientas modernas a veces agregan amarillo o naranja para "cambiado" (una línea que existe en ambas pero es diferente), pero rojo y verde siguen siendo las adiciones/eliminaciones universales.
Una breve historia de diff
El algoritmo diff fue publicado por primera vez por Douglas McIlroy en Bell Labs en 1976, construyendo sobre el refinamiento posterior de Eugene Myers (el algoritmo O(ND), 1986) que hizo diff lo suficientemente rápido para uso interactivo. El algoritmo original de McIlroy fue publicado con el lanzamiento de Unix V7 en 1979 y ha sido parte de cada sistema operativo tipo Unix desde entonces. El algoritmo de Myers es lo que impulsa las implementaciones modernas de diff: el diff de Git, la interfaz web de GitHub, cada GUI de diff desde Beyond Compare hasta VS Code.
El formato de diff visual lado a lado precede al algoritmo: se remonta a las convenciones de corrección manual en la publicación (mostrando dos columnas de texto con cambios marcados en el margen). El software de la década de 1970 simplemente automatizó lo que los editores habían estado haciendo en papel durante siglos. El formato "diff unificado" (el de los encabezados --- y +++ que ve en los archivos de parche) fue introducido en 1990 por GNU diff y ahora es el estándar de facto para compartir cambios por texto.
Cuándo es útil verificar diferencias
- Revisión de código: compare sus cambios con el original antes de hacer commit para ver exactamente qué modificó
- Revisiones de documentos: encuentre qué cambió entre dos versiones de un contrato, artículo o política
- Depuración de configuración: compare un archivo de configuración que funciona con uno roto para detectar la diferencia
- Validación de datos: verifique si dos exportaciones de datos son idénticas o encuentre dónde divergen
- Conflictos de fusión: comprenda ambos lados de un conflicto antes de resolverlo
- Revisión de traducción: compare un documento original con una traducción para asegurarse de que no se omitieron secciones
- Comparación de correo o mensaje: cuando alguien dice "le envié la versión corregida", compare ambos mensajes para ver qué cambió realmente
- Validación de exportación de base de datos: compare dos exportaciones CSV de una base de datos para confirmar que una ejecución ETL produjo una salida idéntica
Diff basado en líneas vs basado en caracteres
El verificador de diferencias utiliza comparación basada en líneas, lo que significa que trata cada línea como la unidad más pequeña de diferencia. Si cambia una sola palabra en una línea, toda la línea se muestra como cambiada (la línea antigua en rojo, la línea nueva en verde) y debe detectar la diferencia a nivel de palabra usted mismo.
El diff basado en líneas es el estándar para archivos de código y configuración porque típicamente están orientados a líneas (una sentencia por línea, una opción de configuración por línea). Es rápido, predecible y coincide con cómo funcionan Git y cada herramienta de revisión de código.
Para comparación de prosa donde los cambios a nivel de línea son demasiado gruesos, algunas herramientas ofrecen diff a nivel de palabra o carácter que resalta solo las palabras cambiadas dentro de una línea. Eso es más preciso pero más difícil de leer para código. Si necesita diff a nivel de palabra, busque una herramienta etiquetada específicamente como "word diff" o "intra-line diff".
Privacidad y contenido confidencial
El verificador de diferencias se ejecuta completamente en su navegador. Ambos textos permanecen en su dispositivo; nada se carga. Esto importa porque el texto que más quiere comparar a menudo es confidencial: contratos en negociación, comunicados de prensa borradores, documentos de política internos, código fuente bajo un NDA. Las herramientas de diferencia en la nube (DiffChecker.com, JsonDiff.com, herramientas de fusión en línea) requieren cargar ambos textos a un servidor de terceros, que es precisamente lo que quiere evitar para contenido sensible. La diferencia basada en navegador no tiene ninguna de esas exposiciones.
La sesión también es sin estado: nada persiste después de cerrar la pestaña. Si necesita mantener un registro de la diferencia, copie la salida o tome una captura de pantalla antes de navegar fuera.
Errores comunes
- Ruido de espacios en blanco: espacios al final, tabulaciones y espacios mezclados, y diferentes finales de línea (LF en Unix vs CRLF en Windows) a menudo aparecen como "cambios" incluso cuando el texto visible es idéntico. La mayoría de las herramientas de diferencia tienen un alternar "ignorar espacios en blanco" para este caso.
- Desajustes de fin de línea: los finales de línea de Windows (CRLF) vs los finales de línea de Unix (LF) hacen que cada línea parezca cambiada. Si está comparando archivos de diferentes sistemas operativos, normalice primero los finales de línea.
- Diferencias de codificación: el texto en UTF-8 vs UTF-16 vs Windows-1252 puede verse idéntico pero compararse como completamente diferente. Normalice la codificación a UTF-8 antes de comparar.
- Contenido idéntico reordenado: si corta un párrafo de la página 3 y lo pega en la página 1, la diferencia muestra el párrafo como eliminado-de-la-página-3 y agregado-a-la-página-1 aunque el contenido no ha cambiado. Algunas herramientas ofrecen "detección de bloque movido" para manejar esto; diff básico no lo hace.
- Rendimiento de archivos grandes: comparar archivos con más de 10,000 líneas puede ralentizar el navegador. Para diferencias muy grandes, use
diffde línea de comandos o una herramienta de escritorio como Beyond Compare.
Consejos
- Pegue texto limpio: elimine encabezados, pies de página o metadatos que no desea comparar. El ruido adicional hace que las diferencias reales sean más difíciles de detectar.
- Use vista lado a lado: ver ambas versiones una al lado de la otra con números de línea alineados hace que las diferencias sean más fáciles de rastrear que una vista en línea.
- Verifique espacios en blanco: a veces el texto "idéntico" tiene diferencias invisibles como espacios al final, diferentes finales de línea (LF vs CRLF) o tabulaciones vs espacios. El verificador de diferencias los detecta.
- Normalice primero para prosa: para comparación de lenguaje natural, ejecute ambos textos a través de un normalizador de espacios en blanco o péguelos en un editor simple antes de comparar. Eso evita diferencias espurias del formato traído de Word o PDF.
- Guarde la diferencia si necesita un registro: copie la salida resaltada o tome una captura de pantalla. La diferencia no se persiste automáticamente.
- Funciona sin conexión: una vez cargada la página, las comparaciones se ejecutan localmente en su navegador sin necesidad de internet.
Preguntas frecuentes
¿El diff compara carácter por carácter?
Compara línea por línea, el mismo enfoque que Git y la mayoría de las herramientas profesionales de diff. Si cambia un solo carácter en una línea, la línea entera se resalta como modificada.
¿Hay un límite de tamaño?
No hay límite estricto, pero textos muy grandes (más de 10 000 líneas) pueden tardar un momento en procesarse, ya que la comparación se ejecuta íntegramente en tu navegador.
¿Puedo comparar archivos de código?
Sí. El diff funciona con cualquier texto, incluido el código fuente. El resaltado de sintaxis ayuda a leer más fácilmente los diffs de código.
¿Se envía mi texto a un servidor?
No. La comparación se hace en tu navegador. Tu texto nunca sale de tu dispositivo.