Apps / Duplicate Finder
Actions
Jump to:
scanmove_duplicates
Scan a folder of images and group files that are duplicates (or, with perceptual hashing, near-duplicates) without changing anything.
Inputs
Name Type Required / default Values and notes
folder
path
required
recursive
bool
optional, default false
method
enum
optional, default auto
autophashmd5
threshold
int
optional, default 5
Outputs
Name Type Notes
scanned
int
method_used
string
group_count
int
duplicate_count
int
groups
json
Move duplicates
move_duplicates
Destructive
Scan a folder for duplicate images and move every redundant copy in each group to a 'duplicates' subfolder, keeping one file per group. Use --dry-run to preview.
Inputs
Name Type Required / default Values and notes
folder
path
required
recursive
bool
optional, default false
method
enum
optional, default auto
autophashmd5
threshold
int
optional, default 5
keep
enum
optional, default newest
firstnewestoldestlargestsmallest
dest
path
optional, default ""
Outputs
Name Type Notes
scanned
int
method_used
string
group_count
int
would_move
int
moved
int
dest
path
moves
json
Requires
Python >=3.10
Packages Pillowimagehash
Models none
Use it
scan
move_duplicates
Scan for duplicates
Command line
shell Copy
python app.py --action scan --params '{"folder": "D:/path/to/folder"}'
Run from the app’s own folder. Single quotes work in bash and PowerShell; in cmd.exe use double quotes and escape the inner ones.
MCP tool
mcp Copy
run_action("dupe-finder", "scan", {"folder": "D:/path/to/folder"})
Workflow node
json Copy
{
"id": "n0",
"app": "dupe-finder",
"action": "scan",
"params": {
"folder": "D:/path/to/folder"
},
"inputs": {}
}
Move duplicates
Command line
shell Copy
python app.py --action move_duplicates --params '{"folder": "D:/path/to/folder"}'
# preview first - destructive action, nothing is changed:
python app.py --action move_duplicates --params '{"folder": "D:/path/to/folder"}' --dry-run
Run from the app’s own folder. Single quotes work in bash and PowerShell; in cmd.exe use double quotes and escape the inner ones.
MCP tool
mcp Copy
run_action("dupe-finder", "move_duplicates", {"folder": "D:/path/to/folder"})
# preview first:
run_action("dupe-finder", "move_duplicates", {"folder": "D:/path/to/folder"}, dry_run=true)
Workflow node
json Copy
{
"id": "n0",
"app": "dupe-finder",
"action": "move_duplicates",
"params": {
"folder": "D:/path/to/folder"
},
"inputs": {}
}
Example prompts
Things you can say to Claude, Cursor or Codex once the MCP server is registered.
find duplicate images in D:/photos scan D:/downloads recursively for near-duplicate images and show me the groups move the duplicate images out of D:/memes, keep the newest copy of each, dry run first