internettoolbox
← Volver a las herramientas

Diff Checker: compara dos textos

0 líneas añadidas, 0 líneas eliminadas

Cómo funciona

Pega el texto original en Texto A y la versión modificada en Texto B. La herramienta los alinea línea a línea e imprime un único resultado unificado: las líneas que están en A y faltan en B salen en rojo y con un signo menos delante (eliminaciones), las líneas añadidas en B salen en verde y con un signo más (adiciones) y las líneas sin cambios quedan neutras. Un contador sobre el resultado da los totales. La comparación es a nivel de línea, así que una línea con una palabra cambiada aparece como una eliminación seguida de una adición, no como un resaltado dentro de la línea.

La comparación es un diff de subsecuencia común más larga (LCS), calculado con la clásica tabla de programación dinámica. Produce el mismo conjunto mínimo de cambios que `git diff`, `diff -u` y la vista de pull requests de GitHub, que llegan a él por el camino más rápido de Myers, así que si cambias una palabra en medio de un párrafo, solo cambia esa línea y el contexto que la rodea se queda quieto.

Funciona igual de bien con: • Código fuente: ve qué ha cambiado entre dos versiones de una función antes de hacer commit • Configuración en JSON, YAML o TOML: localiza la única clave que difiere entre preproducción y producción • Prosa: compara dos borradores de un artículo, un contrato o un correo • Logs: compara dos fragmentos de log para encontrar la marca de tiempo en la que el comportamiento divergió • CSV / TSV: comprueba qué filas han cambiado en una exportación de una hoja de cálculo

Cómo trata los casos límite más comunes: • Las diferencias de espacios al final de línea y de CRLF/LF se marcan, porque cambian el contenido en bytes. No hay un interruptor para ignorar espacios, así que si solo te importan los cambios reales, recorta el texto antes de pegarlo. • Las líneas largas se ajustan visualmente, pero el diff trata cada una como una línea lógica; por dentro sigue siendo preciso carácter a carácter. • La sangría mezclada (tabulaciones frente a espacios) aparece como una diferencia. Convierte un lado para que coincida con el otro si solo quieres cambios semánticos. • El salto de línea al final de la última línea: si un archivo tiene salto final y el otro no, la última línea aparece como una diferencia. Coincide con el comportamiento de `diff -u`.

Toda la comparación se ejecuta en tu navegador, en JavaScript. Dos archivos de 5000 líneas se comparan en bastante menos de un segundo en un portátil actual; en un teléfono la misma comparación tarda de 1 a 3 segundos.

Preguntas frecuentes

¿Qué algoritmo de diff usa?

Un diff de subsecuencia común más larga, calculado con la clásica tabla de programación dinámica. Devuelve el conjunto mínimo de cambios entre dos entradas, el mismo resultado que producen `git diff`, `diff -u` de GNU y la vista de pull requests de GitHub con el algoritmo de Myers, así que lo que ves aquí coincide con lo que verías en local.

¿Puedo comparar archivos de código?

Sí. La herramienta no distingue tipos de texto: pega dos versiones de un archivo de JavaScript, Python, Go o SQL y las compara línea a línea como lo hace `git diff`. No hay un diff que conozca la sintaxis (no sabe que una línea es JSON y otra HTML), pero para la gran mayoría de las revisiones de código lo que necesitas es justo la comparación línea a línea.

¿Cómo ignoro las diferencias de espacios en blanco?

Prepara antes el texto: quita los espacios al final de cada línea, unifica las tabulaciones en espacios (o al revés) y deja los saltos de línea en LF o en CRLF, uno u otro. Pasar cada lado por el convertidor de mayúsculas y minúsculas o por cualquier utilidad de recorte antes de pegar es una forma rápida de hacerlo. No hay un interruptor para ignorar espacios: el diff siempre compara los caracteres exactos de cada línea.

¿Qué diferencia hay entre un diff por líneas y uno por palabras?

Un diff por líneas trata cada línea como una unidad, así que un solo carácter cambiado marca la línea entera como cambiada. Un diff por palabras (o por caracteres) resalta solo los fragmentos distintos dentro de la línea. Esta herramienta hace un diff por líneas: cambia un carácter y la línea entera se muestra como una eliminación más una adición. No hay resaltado a nivel de palabra dentro de una línea.

¿Por qué aparecen como distintas las líneas en blanco?

Porque lo son. Una línea vacía en la posición 5 del original, donde la misma posición del modificado tiene contenido o no existe, ES una diferencia, y la herramienta la muestra. A mucha gente le sorprende la primera vez, pero es el comportamiento correcto: los caracteres invisibles tienen significado en la sangría de Python, en la estructura de YAML y en los mensajes de commit de Git.

¿Cuál es el tamaño máximo de archivo que puedo comparar?

No hay un límite fijo, porque todo se ejecuta en tu navegador. La tabla LCS es O(N×M) para entradas de longitud N y M, así que dos entradas de 100 000 líneas tardan un tiempo apreciable (de 30 a 60 segundos aproximadamente en un portátil actual). Para archivos muy grandes, por ejemplo dos volcados de log de 50 MB, usa una herramienta de escritorio: una pestaña del navegador no es el sitio para esa escala.

¿Se envían mis datos a algún sitio?

No. El algoritmo de diff se ejecuta por completo en tu navegador, y la pestaña Red de las herramientas para desarrolladores confirma que no sale ninguna petición cuando pegas y comparas. Importa cuando comparas archivos de configuración con credenciales, contratos, código fuente sujeto a confidencialidad o cualquier cosa que prefieras no pegar en una página web cualquiera.

Modos de diff: qué responde cada tipo de comparación

Distintas formas de comparar dos textos. El diff por líneas que implementa esta herramienta es el más habitual, pero conocer las alternativas ayuda a elegir la herramienta adecuada para cada pregunta.

ModoGranularidadIdeal paraCaso de uso de ejemplo
Diff por líneas (esta herramienta)Una línea cada vezCódigo fuente, configuración, logs estructuradosRevisar un commit o un pull request de Git
Diff por palabrasFragmentos dentro de una líneaProsa, cambios en un párrafoComparar dos versiones de un párrafo
Diff por caracteresCada carácterCadenas muy cortas, nombres, identificadoresDetectar erratas de una letra
Diff en paraleloVista de líneas en dos columnasRevisión visual de código con todo el contextogit diff --side-by-side
Diff unificadoUna sola columna con marcadores @@Archivos de parche, revisión en el terminalgit diff (por defecto), patch -p1
Diff semánticoConoce la estructura del lenguajeRefactorizar sin el ruido de los espaciosdiff-so-fancy, difftastic, herramientas de diff semántico
Fusión a tres bandasOriginal y dos modificacionesResolver conflictos entre ramasResolución de conflictos de git merge
Diff binarioByte a byteComparar ejecutables, imágenes, archivos comprimidosbsdiff, xdelta (no basado en texto)

Todos los modos de diff basados en texto se apoyan, en último término, en el algoritmo de Myers (1986) o en el de Hunt-McIlroy (1976, el diff original de Unix). El git moderno usa el de Myers con las heurísticas patience y histogram para obtener un resultado más limpio en código muy editado.

Cambiar de herramienta

Busca y abre cualquier herramienta