wmk
What it is
wmk is a free, open-source Python command-line tool for adding image or text watermarks. It runs on Linux, macOS and Windows and supports JPG, JPEG, PNG, WEBP, TIFF, BMP and GIF files. Watermarks can be placed in any corner or at the center, with opacity from 0 to 100. Recursive folders and glob patterns enable batch processing, while a dry-run option prints planned outputs without writing files. Batch results normally go into a watermarked directory while preserving relative structure. Existing destination files are not replaced unless overwrite is selected, and a _watermarked suffix helps avoid collisions. The README describes offline processing, keeping images on the user's machine. Installation is available through pip, pipx or a cloned repository, and package metadata requires Python 3.10 or newer. The CLI is primary, with an optional Python library interface. GIF handling processes only the first frame. The project uses the MIT License.
For and against
For
- Processes common raster image formats
- Supports recursive and glob-based batches
- Offers five placement positions
- Runs offline on the user's machine
- MIT-licensed with optional library interface
Against
- Requires Python 3.10 or newer
- GIF processing handles only the first frame
- CLI is the primary interface
- No paid plans are listed
The verdict
wmk provides local, scriptable watermarking with batch controls and predictable output behavior. Its format coverage and offline design fit repeatable image-processing workflows, with first-frame-only GIF handling as a stated limit.
Who it suits
It suits desktop users and multimedia graphics workflows needing scriptable, local watermarking. It is also useful for repeatable product-photo or photography-delivery batches.
Plans and prices
add-watermark
MIT-licensed Python CLI; no paid plans listed
Read 11 Oct 2026 · github.com
On the record
- Automation
- The CLI is scriptable and the README describes it for repeatable workflows such as product photos and photography delivery.github.com · read 11 Oct 2026
- Batch processing
- It can process folders recursively or accept glob patterns for batch watermarking.github.com · read 11 Oct 2026
- Dry run
- A dry-run option prints planned outputs without writing files.github.com · read 11 Oct 2026
- GIF limitation
- GIF processing handles only the first frame.github.com · read 11 Oct 2026
- Image formats
- It supports JPG, JPEG, PNG, WEBP, TIFF, BMP, and GIF input and output.github.com · read 11 Oct 2026
- Input formats
- The listed input and output formats are JPG, JPEG, PNG, WEBP, TIFF, BMP, and GIF.github.com · read 11 Oct 2026
- Install
- The package can be installed with pip or pipx, or from a repository clone.github.com · read 11 Oct 2026
- Installation
- The package can be installed with pip or pipx, or from a cloned source repository.github.com · read 11 Oct 2026
- Intended audience
- The package metadata classifies the project for desktop end users and multimedia graphics.github.com · read 11 Oct 2026
- License
- The repository provides the software under the MIT License, which permits use, copying, modification, distribution, sublicensing, and sale subject to its conditions.github.com · read 11 Oct 2026
- Local processing
- The README describes the CLI as offline and says images stay on the user's machine.github.com · read 11 Oct 2026
- Output behavior
- By default, batch folder output goes into a watermarked directory and preserves the folder's relative structure.github.com · read 11 Oct 2026
- Overwrite behavior
- Without the overwrite option, existing destination files are not replaced and a _watermarked suffix is used to avoid collisions.github.com · read 11 Oct 2026
- Placement and opacity
- Watermarks can be positioned at the top-left, top-right, bottom-left, bottom-right, or center, with opacity set from 0 to 100.github.com · read 11 Oct 2026
- Privacy
- The README describes wmk as an offline tool and says images stay on the user's machine.github.com · read 11 Oct 2026
- Purpose
- wmk is a Python command-line tool for adding image or text watermarks to images.github.com · read 11 Oct 2026
- Python library
- The project also provides an optional Python library interface, while identifying the CLI as its primary interface.github.com · read 11 Oct 2026
- Python requirement
- The package metadata requires Python 3.10 or newer.github.com · read 11 Oct 2026