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.
npx lcov-comparer <coverage-old.info> <coverage-new.info> [options]| 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 <n> | Only include files where any metric delta ≥ n% | null(disabled) | 
| --max-coverage-drop <n> | 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 --coverage
- jest --coverage
- nyc
Output is saved into the specified --out-dir (or current folder by default), one file per format.
For example:
npx lcov-comparer a.info b.info --formats html,json,md --out-dir ./coverage-diffWill 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.
npx lcov-comparer old.info new.info --summary --max-coverage-drop 5