← All tools

cpd

Popularity 65 Updated Development & Build

Copy/paste detector — fast Rust-based CLI for code duplication detection

npmauto-collected

Installation

npm
npm install -g cpd

Install with npm.

jscpd

[](https://github.com/kucherenko/jscpd/actions/workflows/rust.yml) [](https://socket.dev/npm/package/jscpd) [](https://scorecard.dev/viewer/?uri=github.com/kucherenko/jscpd) [](https://www.bestpractices.dev/projects/14188)

Duplicate code detector for 220+ languages — plus dead code, complexity hotspots, duplication trends over git history, and one health score for the whole codebase. Rust engine, self-contained binary, AI-ready with an MCP server and a token-efficient reporter.

Documentation: https://jscpd.dev

jscpd tokenizes each of its 224 supported formats the way that language defines it — its own comment and string rules, not generic text — then finds duplicated token sequences across files with a rolling Rabin-Karp hash. Opt-in passes catch copies that differ only in names or values (Type-2) or that have a few edited lines (Type-3). See How detection works for the full mechanism, and Supported formats for the full list.

Beyond duplicates, jscpd also finds dead code (--dead-code), ranks files by complexity (--complexity), tracks duplication over git history (--history), and rolls it all into one health score (--health) — see Features below.

Quick Start

# macOS / Linux
curl -fsSL https://jscpd.dev/install.sh | bash

# Windows (PowerShell)
irm https://jscpd.dev/install.ps1 | iex

# No install — run once with npx (Node.js)
npx jscpd .

Then scan a project:

jscpd /path/to/code

Other install methods

| Method | Command | Notes | |--------|---------|-------| | npm | npm install -g jscpd | Installs the jscpd command; prebuilt binary, no Node.js at runtime | | npm (cpd command) | npm install -g cpd | Same binary, exposed as cpd | | PyPI | pip install jscpd | Platform wheels with both commands; also pipx install jscpd, uv tool install jscpd, or uvx jscpd . to run without installing | | Cargo | cargo install jscpd | Builds from crates.io; installs both jscpd and cpd | | Homebrew | brew install jscpd | macOS / Linux | | Nix | nix run github:kucherenko/jscpd -- /path/to/code | Or nix profile install github:kucherenko/jscpd | | Docker | docker run --rm -v "$PWD:/src" ghcr.io/kucherenko/jscpd . | Multi-arch image built from the release binaries |

GitHub Action

- uses: kucherenko/jscpd@v5
  with:
    threshold: 5

Uploads SARIF results to GitHub Code Scanning by default. See CI & Pre-Commit Hooks for all inputs and outputs.

Documentation

| Document | Description | |----------|-------------| | Rust engine | Installation, CLI reference, reporters, baseline, summary, complexity, dashboard, blame, config file | | AI-Ready | AI reporter, agent skills, MCP server | | Programming API | Rust API (cpd-finder crate) | | CI & Pre-Commit Hooks | GitHub Action, Docker image, pre-commit hooks | | Packages | npm packages and crates that make up a release | | Supported formats | All 224 formats with their file extensions | | Runnable demos | One fixtures/<feature-demo/ directory per feature, each README lists the commands with their expected output |

Features