Fallow can replace jscpd when you want duplication detection as part of a broader codebase audit. It also covers unused code detection, complexity analysis, circular dependencies, and architecture boundaries in the same binary.
Run fallow migrate --dry-run to see the generated config without writing anything:
fallow migrate --dry-runFallow searches for .jscpd.json and the jscpd field in package.json.
Once you're happy with the preview, run the migration:
fallow migrate # Write .fallowrc.json
fallow migrate --toml # Or output as fallow.tomlOpen the generated config and verify the translated thresholds, token counts, and ignore patterns.
Run your first duplication analysis:
fallow dupes| jscpd | fallow |
|---|---|
threshold | duplicates.threshold |
minTokens | duplicates.minTokens |
minLines | duplicates.minLines |
ignore | ignorePatterns |
format | -- (fallow auto-detects languages) |
| fallow | jscpd | |
|---|---|---|
| Raw duplication speed | Part of the broader audit flow | jscpd v5 is faster on the current README benchmark fixtures |
| Detection modes | 4 (strict, mild, weak, semantic) | 3 (strict, mild, weak) |
| Algorithm | Suffix array with LCP | Rust rewrite in v5 |
| Unused code + circular deps | Built-in (fallow dead-code) | Not included |
| Complexity + maintainability | Built-in (fallow health) | Not included |
| Clone families | Yes, with refactoring suggestions | No |
| Cross-language | TS to JS type stripping | Format-based |
| Baseline tracking | Yes | No |
| Runtime dependency | Native binary | Native binary in v5 |
jscpd v5 supports strict, mild, and weak modes. The closest fallow equivalent for exact token matching is strict.
Fallow defaults to mild mode, which normalizes syntax variations and may flag more clones than jscpd did. To match jscpd's behavior more closely, use strict mode:
fallow dupes --mode strict
For broader matching that catches renamed variables:
fallow dupes --mode semantic
One binary replaces separate jscpd, knip, and madge workflows:
fallow dead-code # Unused code + circular deps + boundaries
fallow dupes # Code duplication (replaces jscpd)
fallow health # Complexity hotspots + maintainability scores
fallow # All of the above in one pass