Comparar · Diferencias · Revisar

Comparador de Texto

Pega dos textos. Ve cada cambio resaltado línea por línea.

Original
Modificado
Publicidad

Sobre el Comparador de Texto

Compara dos fragmentos de texto lado a lado y ve exactamente qué cambió: líneas agregadas, líneas eliminadas, palabras modificadas. Útil para la revisión de código, la comparación de versiones, el marcado de contratos y cualquier lugar donde dos versiones de «el mismo» texto deban reconciliarse. Todo se ejecuta localmente en tu navegador; no se sube nada.

Qué muestra en realidad un «diff»

Un diff entre dos fragmentos de texto responde la pregunta: «¿qué tendría que hacer para convertir la versión A en la versión B?». La respuesta es una lista de inserciones, eliminaciones y (opcionalmente) modificaciones. Las líneas presentes en A pero no en B son eliminaciones; las líneas en B pero no en A son adiciones; las líneas que aparecen en ambas no cambian. Las líneas modificadas se muestran como un par de eliminación y adición, o como un diff de palabras dentro de la línea que resalta solo las partes que cambiaron.

El algoritmo de diff importa. La comparación ingenua línea por línea falla cuando se insertan líneas en el medio: cada línea después del punto de inserción aparece como distinta. Las herramientas de diff de verdad usan el algoritmo de Myers o sus variantes, que encuentran la subsecuencia común más larga y producen un guion de edición mínimo. Esta herramienta usa el algoritmo de Myers, que es el estándar de la industria.

Casos de uso reales

Revisión de código. El caso de uso original de las herramientas de diff. Compara una versión vieja de un archivo contra una nueva para ver qué cambió antes de aprobar un pull request. La mayoría de las plataformas de revisión de código (GitHub, GitLab, Bitbucket) construyen sus interfaces sobre la salida de diff.

Comparar dos versiones de un documento. El borrador de un contrato de una contraparte contra tu versión, o un borrador de entrada de blog antes y después de editar, o un archivo de configuración antes y después de un despliegue. Donde la pregunta sea «¿qué cambió?», el diff es la respuesta.

Verificar una operación de copia. Exportaste datos de un sistema, los importaste en otro y los volviste a exportar. Compara la exportación original contra la versión de ida y vuelta para confirmar que no se perdió nada en la traducción.

Detectar cambios no autorizados. Compara una versión que sabes que está bien contra el estado actual para atrapar manipulaciones. Útil para archivos de configuración, políticas de seguridad y auditorías de cumplimiento.

Revisión de traducción. Compara una traducción vieja contra una nueva para ver qué cambió el traductor. El lado del original en inglés se mantiene constante; el lado traducido muestra la evolución.

Comparar respuestas de API entre entornos. La misma llamada de API contra staging y producción a veces devuelve datos sutilmente distintos. Formatea ambas respuestas (usa el Formateador de JSON) y luego compáralas para encontrar las diferencias.

El marcado del editor. Quienes escriben y editan comparan versiones de borradores para rastrear qué sugerencias se aceptaron, rechazaron o modificaron. El diff es la base técnica del «control de cambios» de los procesadores de texto.

Control de versiones de correos y propuestas. Comparar dos borradores de un correo importante para ver exactamente qué se suavizó o se afinó.

Diff por líneas vs diff por palabras

Dos granularidades, dos vistas distintas.

El diff por líneas trata cada línea como una unidad. Si algo cambia en una línea, aunque sea un solo carácter, toda la línea se muestra como eliminada y se agrega una versión nueva. Es lo que usan GitHub, GitLab y la mayoría de las vistas de diff de control de versiones. Es la granularidad correcta para el código, donde las líneas suelen ser unidades con significado.

El diff por palabras resalta exactamente qué palabras dentro de una línea cambiaron, y deja en su lugar el contexto que no cambió. Es la granularidad correcta para la prosa. Cuando cambias «happy» por «joyful» en un párrafo, el diff por palabras muestra solo ese cambio, no todo el párrafo como eliminado y vuelto a agregar.

Esta herramienta usa el diff por líneas por defecto para la mayoría de los usos, pero ofrece resaltado por palabras en las líneas que son lo bastante parecidas como para sugerir que son la misma línea modificada.

Errores frecuentes

Los cambios de espacios producen diffs enormes. Los cambios de sangría, los espacios finales y los finales de línea de Windows frente a Unix pueden hacer que dos archivos funcionalmente idénticos se vean completamente distintos. La herramienta ofrece una opción de «ignorar espacios» que normaliza los espacios antes de comparar. Úsala cuando los espacios no tengan significado.

Comillas tipográficas frente a comillas rectas. Pegar desde Word o Google Docs convierte las comillas rectas en tipográficas. Si tu versión «vieja» tiene comillas rectas y la «nueva» tiene tipográficas, el diff muestra cada comilla como cambiada. Normaliza las comillas antes de comparar, o acepta que el diff tendrá ruido.

Desajustes de finales de línea. Un archivo guardado en Windows (finales de línea CRLF) comparado contra el mismo archivo guardado en Unix (LF) muestra cada línea como distinta en las herramientas que no normalizan. Esta herramienta normaliza los finales de línea antes de comparar. Ambos lados se convierten a LF.

Contenido reordenado sin cambios reales. Si dos archivos contienen los mismos párrafos pero en distinto orden, el diff por líneas lo muestra como si todo se hubiera eliminado y reinsertado. Las herramientas de diff no pueden decirte «reordenaste esto»: solo ven eliminaciones y adiciones. Para los reordenamientos, ordena ambas entradas primero y compara las versiones ordenadas para confirmar que contienen el mismo contenido.

Archivos binarios. El diff es para texto. Pegar datos binarios (PDF, imágenes, etc.) produce una salida sin sentido. Si necesitas comparar archivos binarios, usa una herramienta de diff binario como cmp o xxd | diff.

Diff vs Git diff vs la comparación de Microsoft Word

Esta herramienta. La más rápida para la comparación de texto puntual, sin instalar nada, se ejecuta localmente. La mejor para «tengo estas dos cadenas, ¿qué es distinto?».

Git diff. El diff entre commits de un repositorio Git. El mismo algoritmo de Myers; la diferencia es el flujo de trabajo. Usa Git diff cuando las dos versiones son commits del mismo repositorio. Usa esta herramienta cuando son cadenas sueltas.

«Comparar documentos» de Microsoft Word (Revisar → Comparar). Produce una salida marcada como un tercer documento. La mejor cuando ambas versiones son archivos .docx y necesitas ver el resultado con un control de cambios adecuado, comentarios y atribución de autor. Esta herramienta produce una vista de diff en línea; Word produce un documento marcado entregable.

El comando diff. La utilidad de Unix. El mismo algoritmo; distintos formatos de salida (unificado, de contexto, lado a lado). Para la automatización y las tuberías, el comando diff supera a las herramientas gráficas.

Cómo funciona la herramienta

Pega la versión A de un lado y la versión B del otro. La herramienta ejecuta el algoritmo de diff de Myers para encontrar la subsecuencia común más larga y luego produce un guion de edición: la secuencia de inserciones y eliminaciones que transforma A en B. La salida se muestra lado a lado o como un diff unificado, según el modo de visualización que elijas.

Para entradas muy grandes (más de unos cientos de miles de líneas), el algoritmo se vuelve lento porque es O(N·D), donde D es el número de diferencias. La mayoría de los diffs del mundo real tienen una D mucho más pequeña que N, así que el rendimiento es aceptable. Los casos patológicos (dos archivos completamente ajenos de tamaño similar) pueden ser lentos.

Consejos de flujo de trabajo

Compara fragmentos más pequeños para mayor claridad. Un diff de 5000 líneas es abrumador. Si comparas archivos grandes, compara sección por sección: función por función para el código, capítulo por capítulo para la prosa. El mismo algoritmo, pero la salida es revisable.

Normaliza antes de comparar. Si sabes que los espacios, los finales de línea o las comillas van a diferir, normaliza ambos lados con Eliminar Espacios o una herramienta similar antes de comparar. Así el diff trata solo de las diferencias con significado.

Para la prosa, prefiere el diff por palabras. «Cambié esta oración por aquella» se lee mejor como cambios de palabras en línea que como una línea eliminada más una línea agregada. Cambia el modo de visualización al revisar prosa.

Preguntas frecuentes

¿Encontrará mis diferencias reales, o solo mostrará «todo cambió»?

Usa el algoritmo de Myers, que encuentra el guion de edición mínimo. Si dos archivos comparten la mayor parte del contenido, el diff muestra solo los cambios; si son completamente distintos, el diff muestra que todo cambió. La calidad escala según lo relacionados que estén las entradas.

¿Maneja archivos grandes?

Hasta unos cientos de miles de líneas es cómodo. Más allá de eso, la memoria del navegador y la complejidad del algoritmo se vuelven limitantes. Para archivos enormes, usa la herramienta de línea de comandos diff.

¿Puede ignorar los espacios?

Sí. La opción «ignorar espacios» normaliza ambas entradas (reduce las rachas de espacios a un solo espacio, recorta los finales de línea) antes de comparar. Úsala cuando los espacios no tengan significado.

¿Y la comparación sin distinción de mayúsculas?

Por ahora, la comparación distingue mayúsculas. Para hacer un diff sin distinción de mayúsculas, pasa ambas entradas por el Conversor de Mayúsculas en minúscula antes de comparar.

¿Por qué el diff es distinto de lo que esperaba?

El algoritmo de Myers produce guiones de edición mínimos, no «intuitivos». A veces el algoritmo encuentra una coincidencia inesperada entre líneas distantes que produce un diff total más pequeño pero menos legible. Es el comportamiento correcto; si confunde, edita un lado para que las diferencias sean más limpias antes de comparar.

¿La salida del diff se guarda o se comparte?

No. El diff se calcula por completo en tu navegador. Tanto las entradas como la salida existen solo en tu sesión del navegador. Recarga la página y todo desaparece.

Relacionados

Publicidad

Aprende más sobre el comparador de texto