Visual diff between two lcov.info reports
npm install lcov-comparer

A CLI tool to compare code coverage between two lcov.info reports and generate readable diffs across:
- Statements
- Branches
- Functions
- Lines
Supports multiple output formats and thresholds, ideal for CI and review workflows.
``sh`
npx lcov-comparer
| Flag | Description | Default |
| ------------------------- | ----------------------------------------------------------------------- | ----------------- |
| --formats | Comma-separated list of formats: html, json, csv, md, console | html |--out-dir
| | Directory to output report files | Current directory |--threshold
| | Only include files where any metric delta ≥ n% | null (disabled) |--max-coverage-drop
| | Exit with code 1 if any average delta is below -n% | null (disabled) |--summary
| | Print total coverage delta summary to stdout | false |
Works with lcov.info files produced by:
- vitest --coveragejest --coverage
- nyc
-
Output is saved into the specified --out-dir (or current folder by default), one file per format.
For example:
`sh`
npx lcov-comparer a.info b.info --formats html,json,md --out-dir ./coverage-diff
Will generate:
``
./coverage-diff/
├── coverage-diff.html
├── coverage-diff.json
└── coverage-diff.md
Files are sorted by the most significant delta across all metrics.
| File | Statements | Δ | Branches | Δ | Functions | Δ | Lines | Δ |
| ---------- | ------------- | ------ | -------------- | ------ | --------------- | ------ | ------------- | ------ |
| src/app.ts | 70.0% → 90.0% | +20.0% | 40.0% → 80.0% | +40.0% | 50.0% → 100.0% | +50.0% | 70.0% → 90.0% | +20.0% |
| helpers.ts | 90.0% → 70.0% | −20.0% | 100.0% → 50.0% | −50.0% | 100.0% → 100.0% | +0.0% | 95.0% → 70.0% | −25.0% |
Use --summary for console output, and --max-coverage-drop to break pipeline if coverage drops too much.
`sh``
npx lcov-comparer old.info new.info --summary --max-coverage-drop 5