Comparar archivos binarios

Suelte dos archivos y esta página los compara byte a byte, directamente en su navegador: cada desplazamiento distinto, un diff hexadecimal con el contexto alrededor, un mapa de densidad de diferencias y un análisis a nivel de bits que muestra qué bits cambiaron. Un modo de bloques alineados aparte detecta inserciones y eliminaciones en medio de un archivo — el caso que un diff de bytes simple no puede alinear. Los resultados se exportan a TXT y CSV. No se sube nada a ningún sitio. Para editar bytes en lugar de compararlos, vea el editor hexadecimal; para texto, la herramienta Diferencias de texto.
ARCHIVO A
Suelte aquí el primer archivo, o haga clic para elegirlo
Hasta 200 MB. Se queda en esta máquina.
ARCHIVO B
Suelte aquí el segundo archivo, o haga clic para elegirlo
Se compara con el archivo A.
Contexto hexadecimal alrededor de cada diferencia:  — las diferencias vecinas separadas menos de 16 bytes se muestran como un solo bloque.
El resumen de la comparación aparecerá aquí cuando se elijan y comparen ambos archivos.
Un diff byte a byte alinea el desplazamiento N con el desplazamiento N. Si se insertaron o eliminaron bytes en medio de un archivo, todo lo que viene después se desplaza y el diff simple informa de toda la cola como distinta. Este modo calcula el hash de bloques de 1 KB, los empareja entre los archivos y muestra el resultado como operaciones de copia / inserción / eliminación — tal como ven un cambio herramientas de delta como xdelta. Disponible cuando ambos archivos son de 64 MB o menos.
Privacidad: ambos archivos se leen con el FileReader del propio navegador y se comparan en esta pestaña — sin servidor, sin subida, sin almacenamiento. Los archivos grandes se comparan en fragmentos de 1 MB, así que incluso las entradas de 200 MB nunca ocupan la memoria por completo a la vez (salvo que use la vista de bloques alineados, que carga ambos archivos mientras trabaja).

¿Qué es la comparación de archivos binarios?

Una comparación binaria alinea dos archivos en el byte 0 y avanza, informando de cada desplazamiento en el que los bytes difieren — el equivalente en el navegador del clásico comando cmp -l. Las herramientas de diff de texto no pueden hacer esto: o se bloquean con los bytes no imprimibles o reinterpretan en silencio el archivo con alguna codificación de caracteres. Una comparación binaria trata ambos archivos exactamente como lo que son, arrays de bytes, que es lo que se quiere para imágenes de firmware, volcados de disco, archivos de bases de datos, bloques cifrados o cualquier archivo cuyo formato se desconozca.

Tres preguntas se responden a tres profundidades distintas. “¿Son iguales?” es una pregunta de suma de comprobación — la herramienta la responde más rápido, pero solo con sí o no. “¿Dónde difieren?” es el diff de bytes de esta página: desplazamientos, valores y qué bits cambiaron. “¿Qué tipo de cambio es?” es lo que añade la vista de bloques alineados — si la diferencia es una edición en el mismo sitio, un fragmento insertado o un fragmento eliminado.

Diff de bytes frente a alineación de bloques: ¿por qué dos vistas?

SituaciónLo que dice el diff byte a byteLo que dice la vista de bloques alineados
Un campo se sobrescribió en su sitio (mismo tamaño de archivo) unos pocos desplazamientos distintos dispersos lo mismo, más “todo lo demás se copia igual”
Se insertó 1 KB en el desplazamiento 2000 del archivo B todo desde 2000 en adelante “difiere” copiar 0–2000, insertar 1 KB, copiar el resto
Se eliminó un bloque en medio del archivo B todo desde ese punto en adelante “difiere” copiar hasta el hueco, eliminar N bytes, copiar el resto
El archivo B es el archivo A con otra cabecera delante los archivos enteros “difieren” eliminar la cabecera y luego una copia larga — es decir, un desplazamiento constante

El diff de bytes siempre es correcto — esos bytes realmente difieren en esos desplazamientos. Lo que cambia es la interpretación una vez que se insertaron o eliminaron bytes, exactamente igual que añadir una línea al principio de un archivo de texto hace que cambien los números de línea siguientes.

Cómo se lee el análisis a nivel de bits

Para cada byte distinto la página calcula A XOR B y cuenta qué posiciones de bit están activadas. Ese histograma es sorprendentemente expresivo: las diferencias concentradas en el bit 0 (el bit menos significativo de cada byte) son la huella de la esteganografía de LSB, en la que un mensaje se oculta retocando el bit bajo de píxeles o muestras de audio. Las diferencias repartidas de forma uniforme en las ocho posiciones significan que se reescribieron valores completos. Las diferencias que solo tocan bits altos suelen indicar que un campo se sustituyó por un valor de magnitud muy distinta. La distancia de Hamming (recuento total de bits invertidos) cuantifica lo mismo en un solo número.

Una advertencia honesta: en datos aleatorios, cada byte coincide con probabilidad 1/256, así que dos archivos no relacionados del mismo tamaño coinciden todavía en alrededor del 0,4% de los bytes. Una similitud del 99,98% con unos pocos bloques de diferencia cortos es un cambio a nivel de parche; una similitud del 0,4% significa que los archivos simplemente no tienen relación.

Errores habituales

“Todo el archivo está en rojo después de la primera diferencia.” — es el efecto de desplazamiento descrito antes, no una corrupción real. Ejecute la vista de bloques alineados: si informa de una inserción y dos copias largas, los archivos difieren exactamente en ese fragmento insertado. “Las sumas de comprobación coinciden, pero aquí los archivos difieren.” — si los resúmenes SHA-256 coinciden, los archivos no difieren; compruebe que abrió los mismos archivos en ambas herramientas. Una coincidencia de CRC-32, en cambio, no demuestra nada frente a una colisión deliberada. “Similitud del 0,4%, pero solo cambié una cosa.” — si su edición estaba dentro de un contenedor comprimido o cifrado (ZIP, zTXt de PNG, volumen cifrado), un cambio lógico reescribe todo el flujo comprimido.

Preguntas frecuentes

¿Cuál es el límite de tamaño? — 200 MB por archivo para el diff de bytes, comparados en fragmentos de 1 MB. La vista de bloques alineados carga ambos archivos, así que se limita a 64 MB por lado.
¿Detecta fragmentos movidos? — el alineador empareja los bloques en orden; un fragmento movido a otra posición aparece como una eliminación más una inserción del mismo contenido, que es una descripción correcta aunque algo tosca.
¿Puede generar un archivo de parche? — no, es una herramienta de análisis; los informes CSV y TXT sirven para documentación y revisión, no para aplicar cambios.
¿Qué pasa con mis archivos? — nada: sin servidor, sin almacenamiento, sin analítica; cierre la pestaña y todos los bytes de la entrada desaparecen.