CSV Align is a desktop and web app for comparing two CSV files side by side.
It is designed for practical reconciliation work: matching rows by selected keys, comparing chosen columns in a controlled order, highlighting differences clearly, and exporting the results.
- Load two local CSV files
- Auto-detect headers and column types
- Select key columns for row matching
- Pair comparison columns manually in left/right order
- Save and load pair-order selections for repeat work
- Auto-pair confident comparison columns when reliable matches are available
- Review matches, mismatches, missing rows, ignored rows, and duplicate keys
- Filter results and export the final comparison to CSV
- Run as either a local web app or a native desktop app
Desktop builds are published on the GitHub Releases page:
Typical release assets include:
- macOS Apple Silicon:
csv-align-macos-arm64.dmg - macOS Intel:
csv-align-macos-x86_64.dmg - Linux:
.AppImageand.deb
Linux note: Tauri v2 Linux builds require a distro with WebKitGTK 4.1.
- Rust 1.70+
- Node.js 18+
- npm
-
Clone the repository:
git clone https://github.com/ddv1982/csv-align.git cd csv-align -
Install frontend dependencies:
cd frontend npm install cd ..
-
Build the frontend:
cd frontend && npm run build cd ..
-
Start the local server:
cargo run
-
Open
http://127.0.0.1:3000
Make sure you have already installed the frontend dependencies with cd frontend && npm install.
Install the Tauri CLI first:
cargo install tauri-cli --locked --version "^2"cargo tauri dev- Load File A and File B.
- Choose matching key columns.
- Choose comparison columns manually or use auto-pair when confident matches are available.
- Run the comparison.
- Review the results and export if needed.
Auto-pairing is intentionally conservative. It helps fill in confident one-to-one comparison matches, but it does not force weak guesses.
See docs/auto-pairing.md.
If you want the frontend dev server for UI work, run cd frontend && npm run dev. The main local app flow above uses the built frontend served by the Rust app.
# Core Rust tests
cargo test
# Desktop wrapper tests
cd src-tauri && cargo test
# Frontend tests
cd frontend && npm test# Frontend build
cd frontend && npm run build
# Rust backend build
cargo build --release
# Desktop build
cd src-tauri && cargo tauri buildDesktop bundles are written to src-tauri/target/release/bundle/.
csv-align/
├── src/ # Shared Rust backend and comparison logic
├── src-tauri/ # Native desktop wrapper
├── frontend/ # React + TypeScript UI
├── tests/ # Rust integration/regression tests
├── docs/ # Supporting documentation
└── samples/ # Example CSV files
Documentation-only updates do not require a version bump or a tagged release. They can be committed and pushed directly to main.
Licensed under the MIT License.