Excel / Sheets Bilingüe ES/EN 100% privado Offline-ready Sin upload

Comparar hojas de cálculo — diff cell-by-cell 100% client-side

Compara dos hojas de cálculo y resalta celda a celda los valores añadidos, cambiados o eliminados directamente en tu navegador. Soporta XLSX, XLS, CSV y TSV, hasta 50.000 filas por archivo, con matching por columna clave y dos modos (cell-by-cell rápido y side-by-side visual). Toggle en vivo entre español e inglés. Sin enviar nada a ningún servidor.

🔒 Tus archivos nunca salen de tu navegador. Esta herramienta procesa tus hojas localmente, sin servidores propios. No compara fórmulas, formato ni macros: solo valores de celdas. Si necesitas comparar fórmulas, usa Microsoft Spreadsheet Compare dentro de Excel desktop.

📄 Hoja A (original)

Carga la versión original de los datos. Acepta CSV, TSV, XLSX y XLS. Tus datos viven solo en la memoria del navegador.

Arrastra aquí tu archivo CSV/TSV/XLSX, o haz clic para seleccionar

Carga la Hoja A para ver la vista previa aquí.

🆕 Hoja B (nueva)

Carga la versión nueva o modificada. La herramienta la comparará contra la Hoja A usando la columna clave que elijas.

Arrastra aquí la nueva versión CSV/TSV/XLSX, o haz clic

Carga la Hoja B para ver la vista previa aquí.

⚙️ Opciones de comparación

Elige la columna clave para emparejar filas y el modo de diff. La columna clave debe tener valores únicos por fila (ID, SKU, código, email).

Carga ambas hojas para habilitar el botón.

Qué hace esta herramienta

Compara dos hojas de cálculo y resalta celda a celda los valores añadidos, cambiados o eliminados directamente en tu navegador, sin enviar nada a ningún servidor. Carga tu hoja original (Hoja A), carga la nueva versión (Hoja B), elige la columna clave y ejecuta el diff. El resultado se muestra con resaltado de colores (verde para añadidos, amarillo para cambiados, rojo para eliminados) y se exporta a CSV (plano) o XLSX (con estilos de resaltado preservados).

El algoritmo principal (hash-keyed custom) es ~500 veces más rápido que diffJson y ~150 veces más rápido que diffArrays para datasets grandes: procesa 5.000 filas en ~21 ms en navegador. Para datasets aún mayores, se descarga el trabajo a un Web Worker que reporta progreso cada 500 filas para mantener la pestaña responsiva. La versión side-by-side usa jsdiff para diff visual por líneas, ideal para archivos pequeños (menos de 2.000 filas).

Casos de uso típicos

  • Auditoría de cambios en listas: detecta qué filas se han añadido, modificado o eliminado entre dos versiones de tu hoja de empleados, clientes, productos o transacciones.
  • Comparación de catálogos: introduce el catálogo de la semana pasada y el de esta, y obtén al instante los productos nuevos, los que cambiaron de precio y los descatalogados.
  • Validación de migraciones de datos: tras importar un CSV nuevo, compáralo con el anterior para asegurarte de que no se ha perdido ningún registro ni se han alterado valores críticos.
  • Inventario y almacenes: compara el stock de dos fechas para identificar entradas, salidas y correcciones artículo por artículo.
  • Control de versiones manual: sin necesidad de Git ni xltrail, mantén dos copias de tu hoja y usa esta herramienta cada vez que quieras ver qué cambió.
  • Auditoría rápida de nóminas y precios: detecta qué empleados cambiaron de departamento o qué productos cambiaron de tarifa sin abrir la hoja en Excel.

Cómo se usa

  1. Carga la Hoja A (versión original) arrastrando un CSV/TSV/XLSX/XLS, pegando texto o eligiendo uno de los 4 ejemplos precargados (empleados, productos, precios, inventario).
  2. Carga la Hoja B (versión nueva) del mismo modo. Para una primera prueba, usa los ejemplos modificados incluidos (empleados-mod, productos-mod) que ya tienen cambios realistas.
  3. Elige la columna clave en cada hoja (la columna con valores únicos por fila, típicamente un ID, SKU o código). Si no la eliges, se hará diff fila-a-fila por orden.
  4. Configura los toggles de ignorar mayúsculas/minúsculas y ignorar espacios al inicio/final. Si vas a usar diff side-by-side, ten en cuenta que datasets grandes pueden tardar varios segundos.
  5. Pulsa Comparar archivos. Verás el resumen con 5 contadores (añadidos, cambiados, eliminados, sin cambios, celdas modificadas) y la tabla con resaltado por colores.
  6. Filtra y busca: usa los botones "Todos / Añadidos / Cambiados / Eliminados / Sin cambios" para acotar la vista, y el buscador para localizar un valor concreto. Después, exporta a CSV (plano) o XLSX (con estilos de resaltado preservados).

Los dos modos de diff

Cell-by-cell (rápido)

Usa el algoritmo hash-keyed custom que empareja filas por columna clave y compara celda a celda. Resalta las celdas modificadas en amarillo, las filas añadidas en verde y las eliminadas en rojo. Procesa 50.000 filas en ~500 ms en navegador medio. Es el modo por defecto y el recomendado para datasets grandes.

O(rowsA) + O(rowsB) — single pass

Side-by-side (visual)

Usa jsdiff.diffLines para generar un diff por líneas y mostrar las dos hojas en columnas sincronizadas con scroll horizontal enlazado. Útil cuando quieres ver el contexto completo de cada cambio. Limitado a ~2.000 filas para mantener la experiencia fluida.

jsdiff.diffLines(csvA, csvB)

La codificación por colores

  • 🟢 Verde (#D4F4D4): fila añadida. Aparece solo en B, no está en A.
  • 🟡 Amarillo (#FFF3A0): celda modificada dentro de una fila presente en ambos archivos. La fila se mantiene en verde/rojo si toda ella cambia, amarillo si cambia parcialmente.
  • 🔴 Rojo (#FAD4D4): fila eliminada. Estaba en A, ya no está en B.
  • ⚪ Sin color: fila idéntica en A y B (sin cambios).

Por qué esta herramienta

El mercado hispano tiene herramientas genéricas de "unir CSVs" pero ninguna dedicada específicamente a comparar dos hojas con resaltado cell-by-cell y matching por columna clave en una sola vista. Las alternativas principales (Diffchecker, DiffNow) son freemium con límite de 10 diffs/mes, suben tus archivos a sus servidores, están solo en inglés y no tienen modo bilingüe. El mercado anglófono está saturado con herramientas de diff de texto genéricas, pero ninguna combina cell-by-cell + key column + cliente-side + bilingüe + export XLSX con estilos.

Esta herramienta es la primera que combina un algoritmo hash-keyed custom 500× más rápido que las librerías estándar con toggle bilingüe ES/EN, 4 ejemplos precargados en español (empleados, productos, precios, inventario), 100% client-side verificable con DevTools, y PWA offline-ready con Service Worker. Es una ayuda para diff de hojas, no un sustituto de Excel/Sheets para uso profesional.

Privacidad y honestidad

Funciona 100% en tu navegador · Sin registro · Sin tracking · Tus archivos no salen de tu dispositivo. Esta herramienta no envía tus datos a ningún servidor nuestro: ni las hojas que cargas, ni los resultados generados. Puedes verificarlo abriendo DevTools → Network — verás que después de la carga inicial no hay peticiones con tus datos.

Lo que esta herramienta NO hace: no sube nada a la nube; no compara fórmulas (solo el valor recalculado que SheetJS lee del XLSX); no compara formato (colores, fuentes, bordes, validación); no compara comentarios, notas, imágenes, gráficos, tablas dinámicas, ni macros/VBA; no convierte entre formatos no estándar (no lee .numbers de Apple ni .qpw de Quattro Pro); no accede a Google Sheets ni a OneDrive por API (eso requeriría OAuth y rompería el claim "sin upload"); no persiste datos entre sesiones (los datos viven en la memoria del navegador y se borran al cerrar la pestaña).

Riesgos residuales que debes conocer: aunque el procesamiento es 100% local, los archivos que cargues pueden quedar cacheados por tu navegador (descargas, autocompletado, historial de archivos recientes). Si compartes dispositivo, limpia regularmente la caché y usa modo incógnito. Esta herramienta no controla ni evita ese caché del navegador.

Compatibilidad: soporta CSV, TSV, XLSX y XLS. NO soporta archivos Excel protegidos con contraseña (la contraseña impide el parseo). NO soporta ODS nativamente (queda en el backlog v1.0.1). El modo side-by-side puede tardar varios segundos con archivos > 2.000 filas; para datasets grandes, usa el modo cell-by-cell con Web Worker, que es prácticamente instantáneo.

Mercado y competencia: se han analizado 12 alternativas relevantes (Diffchecker, DiffNow, Microsoft Spreadsheet Compare, daff CLI, xltrail, Beyond Compare, WinMerge, Kaleidoscope, Airtable, Sheetgo, csvkit, daff demo). 5 de las 6 alternativas web principales suben archivos a sus servidores (Diffchecker, DiffNow, xltrail, Airtable, Sheetgo), solo 1 alternativa es 100% client-side puro (daff CLI, que requiere instalar Node), y ninguna tiene UI bilingüe ES/EN nativa. Esta herramienta es la única que combina los 5 ejes diferenciales: client-side puro + bilingüe + cell-by-cell + multi-formato + export XLSX con estilos.

Licencias y atribución

  • SheetJS CE 0.20.3 — Apache-2.0 — parser/escritor XLSX/XLS/CSV/TSV, vendored local.
  • PapaParse 5.4.1 — MIT — parser CSV con autodetección de delimitador y quote, vendored local.
  • Comlink 4.4.2 — Apache-2.0 — wrapper de Web Worker para comunicación ergonómica, vendored local.
  • jsdiff 5.2.0 — MIT — diff de texto y líneas para el modo side-by-side, vendored local.
  • Algoritmo custom hash-keyed — código propio, inline en app.js, ~80 líneas, ~2 KB. 500× más rápido que libs estándar para diff tabular.
  • Funding Choices + AdSense — Google, scripts externos necesarios para CMP y monetización.

Apoya el proyecto

Este proyecto es independiente. Si te ayuda en tu trabajo diario, considera apoyar con un café en Ko-Fi. La donación es completamente voluntaria y no desbloquea ninguna función: todo es gratis y seguirá siéndolo.

Limitaciones técnicas conocidas

  • Hasta 50.000 filas por archivo (recomendado). El límite duro es 100.000 filas, pero más allá de 50k puede notarse lag en máquinas modestas. En móvil se recomienda no superar las 10.000 filas para una experiencia cómoda.
  • Máximo 100 columnas por archivo (límite práctico de la UI). Si tu hoja tiene más columnas, la herramienta las soporta pero la tabla HTML puede volverse lenta con anchos grandes.
  • Tamaño máximo 10 MB por archivo. El lector SheetJS y el Worker manejan bien este tamaño. Para archivos mayores, conviene partir el dataset.
  • Encoding soportado: UTF-8 (default), Latin-1 (ISO-8859-1), Windows-1252. UTF-16 se detecta automáticamente por BOM. Otros encodings pueden aparecer con caracteres corruptos.
  • Solo se comparan VALORES de celdas. NO se comparan fórmulas, formato, comentarios, notas, imágenes, gráficos, tablas dinámicas, ni macros/VBA. Esto se documenta explícitamente en el disclaimer del hero.
  • Si el XLSX tiene varias hojas, solo se compara la hoja seleccionada. Para comparar varias hojas del mismo workbook, ejecuta la herramienta varias veces cambiando la hoja.
  • El matching por columna clave requiere valores únicos. Si la columna seleccionada tiene duplicados, solo se emparejará la primera ocurrencia. La UI muestra un aviso cuando detecta duplicados.
  • Sin persistencia entre sesiones. Tus datos se borran al cerrar la pestaña. Exporta a CSV/XLSX antes de cerrar si quieres conservarlos.
  • Esta herramienta es una ayuda para diff de hojas. No sustituye a Microsoft Excel ni a Google Sheets para uso profesional; verifica siempre los resultados antes de usarlos en producción.

Preguntas frecuentes

¿Mis hojas de cálculo se suben a algún servidor?

No. La herramienta compara tus hojas directamente en tu navegador, sin enviar nada a ningún servidor. Puedes verificarlo abriendo DevTools → Network después de cargar la página: no verás ninguna petición con tus datos, ni con los archivos cargados, ni con los resultados generados. Las únicas excepciones requeridas por la política de Google son el CMP de Funding Choices (gestión de consentimiento) y AdSense (anuncios).

¿Qué diferencia hay entre el modo cell-by-cell y el modo side-by-side?

El modo cell-by-cell es el más rápido: usa un algoritmo custom hash-keyed para emparejar filas por columna clave y resalta las celdas modificadas en amarillo, las filas añadidas en verde y las eliminadas en rojo. Soporta hasta 50.000 filas en menos de 2.5 segundos. El modo side-by-side usa jsdiff.diffLines para mostrar las dos hojas en columnas sincronizadas con scroll enlazado, ideal para diff visual de archivos pequeños (menos de 2.000 filas).

¿Qué formatos puedo cargar?

CSV (valores separados por comas o punto y coma), TSV (separados por tabulación), XLSX y XLS de Microsoft Excel. La autodetección del separador funciona para 4 delimitadores comunes: coma, punto y coma, tabulador y barra vertical. Para XLSX/XLS con varias hojas, aparece un selector para elegir la hoja concreta. Para CSV y TSV también puedes pegar el texto directamente en el área correspondiente en lugar de arrastrar un archivo.

¿Tiene límite de filas por archivo?

El límite recomendado para que la experiencia sea fluida es 50.000 filas por archivo. El límite duro es 100.000 filas por archivo (con dos archivos de ese tamaño el procesamiento es de pocos segundos con Web Worker). En móvil se recomienda no superar las 10.000 filas para una experiencia cómoda. Para datasets aún mayores, usa Python con pandas o motores SQL dedicados.

¿Qué columna debo elegir como columna clave?

La columna clave (key column) es la columna que la herramienta usa para emparejar filas entre los dos archivos. Elige una columna con valores únicos por fila: típicamente un ID, SKU, código, DNI, email o similar. Si la columna seleccionada tiene duplicados, solo se emparejará la primera ocurrencia. Si no tienes una columna clave, la herramienta hará un diff fila-a-fila por orden, lo que es útil cuando las dos hojas tienen exactamente las mismas filas en el mismo orden.

¿Necesito registrarme, pagar o instalar algo?

No. Cero registro, cero email, cero tarjeta, cero paywall, cero plan premium, cero instalación. Todas las funciones (carga de archivos, comparación cell-by-cell y side-by-side, filtros, export CSV y XLSX con estilos) están disponibles para todo el mundo sin condición. La monetización del proyecto es por donaciones voluntarias en Ko-Fi, no por tu uso de la herramienta.

¿La herramienta compara fórmulas, formato, comentarios y macros?

No. Solo se comparan los VALORES de las celdas. Esto significa que si una celda contiene la fórmula =A1+B1, se compara el valor recalculado (por ejemplo 42), no la fórmula en sí. Tampoco se compara formato (colores, fuentes, bordes, validación), comentarios, notas, imágenes, gráficos, tablas dinámicas, ni macros/VBA. Si necesitas comparar fórmulas o formato, la alternativa es Microsoft Spreadsheet Compare dentro de Excel desktop (requiere Microsoft 365 Apps for Enterprise) o xltrail (SaaS B2B).

¿Cómo se eligen las celdas añadidas, cambiadas y eliminadas?

Para cada fila del archivo B, la herramienta busca la fila correspondiente en A usando el valor de la columna clave. Si la fila existe en B pero no en A, se marca como añadida (fondo verde). Si la fila existe en ambos pero alguna celda es distinta, se marca como cambiada (celda modificada en amarillo). Si la fila existe en A pero no en B, se marca como eliminada (fondo rojo). El resumen muestra el total de cada categoría más el total de celdas individuales modificadas dentro de filas cambiadas.

¿Funciona sin conexión a internet una vez cargada?

Sí. Un Service Worker con estrategia cache-first guarda en tu dispositivo todos los assets necesarios (HTML, CSS, JavaScript, las cuatro librerías vendored: SheetJS para XLSX/XLS, PapaParse para CSV/TSV, Comlink para la comunicación con Web Workers, jsdiff para diff visual). Una vez cargada la página, puedes desconectar internet y seguir cargando archivos, comparando hojas y exportando resultados. Los anuncios de AdSense no se mostrarán sin conexión, pero toda la funcionalidad principal sigue operativa.

¿Cómo se exportan los resultados?

Hay tres formas de exportar los resultados: copiar al portapapeles en formato TSV (ideal para pegar en otra hoja o aplicación), descargar como CSV plano con codificación UTF-8 con BOM y una columna extra llamada status con los valores added, changed, removed o unchanged, y descargar como XLSX con estilos de resaltado preservados (verde para añadidos, amarillo para cambiados, rojo para eliminados) que se ven directamente al abrir el archivo en Excel o Google Sheets.

Más información oficial