Scale-oriented
Parquet and CSV are scanned by DuckDB. Cap displayed samples without weakening the aggregate counts.
01 File-native data review
A key-aware diff for CSV, Parquet, and Arrow. Exact row and schema changes, streamed through DuckDB, delivered to your terminal or one portable report.
pip install tabular-file-diff
02 One full outer join
03 Built for real snapshots
Parquet and CSV are scanned by DuckDB. Cap displayed samples without weakening the aggregate counts.
No account, upload, telemetry, or remote execution. HTML reports remain complete and self-contained.
Use the typed Python API, terminal CLI, or wire the native drivers into Git and DVC review.
04 Local station
Your files are parsed in this tab and are never uploaded. The browser demo is for small CSVs; use the CLI for Parquet, Arrow, or large files.
No comparison yet. Load the sample or choose two CSV files.
05 Now boarding
$ tdiff old.parquet new.parquet --key account_id
TABULAR FILE DIFF
old.parquet → new.parquet
key: account_id
+ added 12
- removed 3
~ modified 41
= unchanged 2,184,009
CHANGES BY COLUMN
status 8
amount 33
06 Connect your line
git config diff.tdiff.command 'tdiff-git --key id'
printf '*.parquet diff=tdiff\n' >> .gitattributes
git diff -- data/snapshot.parquet
tdiff-dvc data/snapshot.parquet \
--from v1.4.0 --to HEAD --key id