Files
remove-ai-watermarks/docs/cli.md
T

5.7 KiB

CLI guide

The command line interface is organized around the type of work you want to do.

remove-ai-watermarks [OPTIONS] COMMAND [ARGS]

Run remove-ai-watermarks COMMAND --help for the complete option list and defaults. This page focuses on choosing the right command.

Inspect an image

remove-ai-watermarks identify image.png

identify combines supported metadata and pixel signals into one provenance report. When no signal is found, it reports the origin as unknown. It does not claim the image is clean.

Machine readable output:

remove-ai-watermarks identify image.png --json

Metadata only inspection:

remove-ai-watermarks identify image.png --no-visible

Despite the historical option name, --no-visible skips both visible and open invisible pixel detectors. Metadata inspection still runs.

Remove known visible marks

remove-ai-watermarks visible image.png -o clean.png

The default behavior:

  • checks every registered visible mark;
  • removes every detected match;
  • selects the best installed fill backend;
  • strips AI metadata from the output.

Use a specific mark:

remove-ai-watermarks visible image.png --mark gemini -o clean.png

Available mark names are printed by:

remove-ai-watermarks visible --help

Keep metadata:

remove-ai-watermarks visible image.png --keep-metadata -o clean.png

Use the strict visual gate without metadata or sibling corroboration:

remove-ai-watermarks visible image.png --sensitivity strict -o clean.png

When no known mark is detected, the command does not write a new output. Use erase if you can identify the affected region yourself.

Erase a region

remove-ai-watermarks erase image.png \
  --region 1640,1930,400,100 \
  -o clean.png

The region format is x,y,width,height. Repeat --region to erase more than one box:

remove-ai-watermarks erase image.png \
  --region 20,20,180,60 \
  --region 1640,1930,400,100 \
  -o clean.png

Choose the fill backend:

remove-ai-watermarks erase image.png \
  --region 1640,1930,400,100 \
  --backend migan \
  -o clean.png

erase accepts cv2, migan, and lama. The corresponding optional extra must be installed for a learned backend.

Strip AI metadata

Inspect metadata:

remove-ai-watermarks metadata image.png --check

Remove AI metadata and write a new file:

remove-ai-watermarks metadata image.png --remove -o clean.png

When -o is omitted, removal overwrites the source. Standard metadata is kept unless you pass --remove-all.

The command also supports the audio and video containers listed in supported signals. ffmpeg must be available for the non-ISOBMFF audio and video path.

Remove invisible watermarks

Install the diffusion dependencies first:

uv tool install --force "remove-ai-watermarks[gpu]"

Then run:

remove-ai-watermarks invisible image.png -o clean.png

The command normally skips regeneration when no supported local signal is detected. Use --force when you know the image should be processed:

remove-ai-watermarks invisible image.png -o clean.png --force

Choose a pipeline

Pipeline When to use it
controlnet Default compatibility profile with structural conditioning
sdxl Lighter plain SDXL regeneration
qwen Large CUDA oriented Qwen Image profile
qwen-zimage CUDA only high fidelity profile with a separate face stage

Example:

remove-ai-watermarks invisible image.png -o clean.png \
  --pipeline qwen-zimage --force

The legacy default value is an alias for sdxl. The --auto option is deprecated, emits a warning, and changes nothing.

Work with limited memory

Lower CUDA memory pressure:

remove-ai-watermarks invisible image.png -o clean.png \
  --cpu-offload --force

Keep large images at native resolution while processing them in overlapping tiles:

remove-ai-watermarks invisible image.png -o clean.png \
  --tile --max-resolution 0 --force

Or set a resolution cap:

remove-ai-watermarks invisible image.png -o clean.png \
  --max-resolution 2048 --force

Tiling avoids the explicit downscale but each tile is regenerated separately. It is a memory strategy, not a guarantee of better quality.

Run the full pipeline

remove-ai-watermarks all image.png -o clean.png

The command runs:

  1. visible mark removal;
  2. invisible watermark removal when available and applicable;
  3. AI metadata stripping.

The visible options and diffusion options are also available on all.

If diffusion is required but the gpu extra is unavailable, all still writes the result of the visible and metadata stages, prints a prominent warning, and exits with code 1. This prevents a partial result from being reported as complete.

Process a directory

remove-ai-watermarks batch ./images --mode visible

Modes:

  • visible;
  • invisible;
  • metadata;
  • all.

Set an output directory:

remove-ai-watermarks batch ./images \
  --mode all \
  --output-dir ./clean

The invisible and full modes accept the same main diffusion controls as their single image counterparts. Run batch --help for the authoritative option list.

Exit behavior

The CLI uses nonzero exit codes for meaningful incomplete outcomes, including no detected target on commands that would otherwise regenerate or create a misleading unchanged result, processing errors, and a required invisible step that could not run.

Scripts should check the process exit code and the output path. The detailed per-command contract is maintained in module internals.