Saltar al contenido

Comparador de Texto

Compara dos textos y resalta las diferencias línea a línea.

Gratis y sin registro · Última revisión:

Comparador de Texto (Diff)

Compara dos textos línea a línea y visualiza los cambios

¿Qué es un comparador de texto (diff)?

Compara dos versiones de un texto línea a línea y marca qué se ha añadido, qué se ha eliminado y qué se mantiene igual. Es la misma técnica que usan las herramientas de control de versiones como Git para mostrar los cambios entre dos commits.

Cómo usar esta herramienta

  1. Pega el texto original a la izquierda y el texto modificado a la derecha.
  2. Pulsa "Comparar textos".
  3. Revisa las líneas marcadas en verde (añadidas) y en rojo (eliminadas).

Ejemplo práctico

Útil para comparar dos versiones de un contrato, un artículo antes y después de editarlo, o dos configuraciones de servidor para detectar exactamente qué línea cambió entre un despliegue que funcionaba y uno que dejó de funcionar.

Conceptos clave

Calcular un diff entre dos textos consiste en encontrar la secuencia mínima de cambios (líneas o caracteres añadidos y eliminados) que transforma el texto original en el modificado. El algoritmo más utilizado para esto es el Myers diff, publicado por Eugene Myers en 1986, que se basa en encontrar la subsecuencia común más larga(LCS, Longest Common Subsequence) entre ambos textos: todo lo que forma parte de esa subsecuencia se considera "sin cambios", y todo lo que queda fuera se marca como añadido o eliminado. El objetivo es siempre producir el conjunto de diferencias más pequeño posible, ya que un diff mínimo es mucho más fácil de leer y de revisar que uno que marque más cambios de los estrictamente necesarios.

Este tipo de algoritmo es la base del control de versiones: cuando se ejecuta git diff, Git compara el contenido de dos versiones de un archivo y muestra qué líneas cambiaron usando esencialmente esta misma lógica, representando el resultado con líneas precedidas de - (eliminadas) y + (añadidas). Este formato es además el que se usa para generar y aplicar parches, y es la base sobre la que se construyen las vistas de "cambios" en plataformas como GitHub o GitLab al revisar un pull request.

El diff puede calcularse a distintos niveles de granularidad: a nivel de línea (el más habitual, y el que usa esta herramienta), que trata cada línea como una unidad atómica y es rápido y fácil de leer en archivos de código o texto estructurado; o a nivel de carácter o palabra, más preciso para detectar cambios pequeños dentro de una misma línea (por ejemplo, una sola palabra corregida en un párrafo largo), aunque el resultado puede ser más difícil de interpretar visualmente cuando hay muchos cambios dispersos.

En el ecosistema de herramientas relacionadas destacan el comando Unix diff, que genera el listado de diferencias entre dos archivos, y patch, que aplica ese listado sobre un archivo para reproducir los cambios en otra copia. Cuando dos personas modifican las mismas líneas de un archivo en ramas distintas, el sistema de control de versiones no puede decidir automáticamente cuál conservar y genera un conflicto de fusión(merge conflict), que debe resolverse manualmente eligiendo o combinando ambas versiones antes de continuar.

Preguntas frecuentes

¿Compara palabra a palabra o línea a línea?

Puedes elegir: línea a línea (el modo por defecto), palabra a palabra o carácter a carácter. Si solo cambia una palabra dentro de una frase larga, el modo "palabra a palabra" resalta únicamente esa palabra en vez de marcar la línea completa.

¿Puedo exportar el resultado del diff?

Sí, con los botones "Copiar HTML" y "Exportar HTML" obtienes el diff coloreado como un fichero HTML autocontenido, listo para pegar en un email o guardar como documento.

¿Se envían mis textos a algún servidor?

No, la comparación se calcula enteramente en tu navegador; los textos no salen de tu equipo en ningún momento.

¿Por qué aparecen líneas iguales marcadas si el contenido parece idéntico?

Suele deberse a diferencias invisibles: espacios al final de línea, tabulaciones en vez de espacios, o distinto tipo de salto de línea (CRLF vs LF).