wmk
wmk is a free, open-source Python command-line tool for placing image or text watermarks on images.
What wmk is
wmk is a free, open-source Python command-line tool for placing image or text watermarks on images. It runs on Linux, macOS, and Windows, and supports JPG, JPEG, PNG, WEBP, TIFF, BMP, and GIF files. For batch work, it can process folders recursively or use glob patterns. Watermarks can go in any corner or the center, with opacity set from 0 to 100. A dry run previews planned output without writing files. Folder batches default to a watermarked directory and retain the source folder structure; existing destination files are protected unless overwrite is selected, with a _watermarked suffix used to avoid collisions. GIF processing is limited to the first frame. The README describes the tool as offline, keeping images on the user's machine. Install it with pip, pipx, or a cloned repository; it requires Python 3.10 or newer. The CLI is the main interface, with an optional Python library interface. The project is MIT-licensed and describes scriptable, repeatable workflows such as preparing product photos or photography deliveries.
Good
- Works offline, keeping images on the user's machine.
- Processes folders recursively or accepts glob patterns.
- Offers five placement options and adjustable opacity.
- Dry run previews outputs without writing files.
- MIT-licensed with an optional Python library interface.
Watch out
- Requires Python 3.10 or newer.
- GIF processing handles only the first frame.
- The primary interface is command-line.
Who it suits
wmk suits desktop users who want to watermark image collections locally or automate repeatable image workflows. It may also fit multimedia graphics users comfortable with a Python command-line tool.
Verdict
wmk provides batch watermarking, placement controls, and a preview option in a free, locally run CLI. Its first-frame-only GIF handling and Python requirement are worth considering before choosing it.
Plans and prices
From wmk's own pricing page, checked 11 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| add-watermark | Free | MIT-licensed Python CLI; no paid plans listed |
The facts
Each one read from wmk's own pages, with the date it was checked.
What it does
- Automation
- The CLI is scriptable and the README describes it for repeatable workflows such as product photos and photography delivery.checked 11 Oct 2026
- Batch processing
- It can process folders recursively or accept glob patterns for batch watermarking.checked 11 Oct 2026
- Dry run
- A dry-run option prints planned outputs without writing files.checked 11 Oct 2026
- GIF limitation
- GIF processing handles only the first frame.checked 11 Oct 2026
- Image formats
- It supports JPG, JPEG, PNG, WEBP, TIFF, BMP, and GIF input and output.checked 11 Oct 2026
- Input formats
- The listed input and output formats are JPG, JPEG, PNG, WEBP, TIFF, BMP, and GIF.checked 11 Oct 2026
- Install
- The package can be installed with pip or pipx, or from a repository clone.checked 11 Oct 2026
- Installation
- The package can be installed with pip or pipx, or from a cloned source repository.checked 11 Oct 2026
- Intended audience
- The package metadata classifies the project for desktop end users and multimedia graphics.checked 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.checked 11 Oct 2026
- Local processing
- The README describes the CLI as offline and says images stay on the user's machine.checked 11 Oct 2026
- Output behavior
- By default, batch folder output goes into a watermarked directory and preserves the folder's relative structure.checked 11 Oct 2026
- Overwrite behavior
- Without the overwrite option, existing destination files are not replaced and a _watermarked suffix is used to avoid collisions.checked 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.checked 11 Oct 2026
- Privacy
- The README describes wmk as an offline tool and says images stay on the user's machine.checked 11 Oct 2026
- Purpose
- wmk is a Python command-line tool for adding image or text watermarks to images.checked 11 Oct 2026
- Python library
- The project also provides an optional Python library interface, while identifying the CLI as its primary interface.checked 11 Oct 2026
- Python requirement
- The package metadata requires Python 3.10 or newer.checked 11 Oct 2026
- Support channel
- The package metadata links to the repository's GitHub Issues page.checked 11 Oct 2026
- Testing and checks
- The README lists a pytest suite and Ruff lint and formatting checks as project trust signals.checked 11 Oct 2026
Alternatives to wmk
- 1

Watermark.ws
Free planAndroidiOSWebAPI7.9From $4 a month - 2

DoWatermark
Free planAndroidiOSWeb7.8$4.99 one-time - 3
eZy Watermark
Free planAndroidiOSWebmacOS7.3From $1.99 a month - 4
Watermarkly
Free planAndroidiOSWebLinux7.3From $19.95 a year - 5
Watermark Maker
Free planAndroidiOS6.9$24.99 one-time - 6
Terma
Free planWebLinuxmacOSSelf-hosted6.8Free plan
