Markforge
Markforge is a small, sharp tool for stamping images with text watermarks. It is CLI-first and ships with a local GUI for batch workflows.
Features
- Tiled or centered marks
- Opacity, angle, padding, offset, and blend modes
- Auto-scale text to the image or set a fixed font size
- Local GUI with live preview, system fonts, and batch export
- Output format inferred from extension (PNG/JPEG/WEBP/TIFF/BMP)
Requirements
- Python 3.10+ (tested on 3.10-3.13)
Install
pip install markforge
For development:
pip install -e ".[dev]"
Quickstart (CLI)
Stamp a tiled watermark:
markforge watermark input.jpg output.jpg --text "DRAFT" --opacity 0.15 --angle -30 --tile
Or a single centered mark:
markforge watermark input.jpg output.jpg --text "DRAFT" --center --no-tile --scale 0.35
Show full help:
markforge --help
markforge watermark --help
Common options:
--text/-twatermark text (required for useful output)--opacityin the 0..1 range--anglerotation in degrees--fillcolor (hex or named, via Pillow ImageColor)--fontpath to a .ttf/.otf font--font-sizefixed point size--scaleauto size as a fraction of the smaller image dimension (overrides--font-size)--tile/--no-tileand--paddingspacing between tiles--centercenter a single watermark (use with--no-tile)--offsetpixel offset asx,y--blendone ofnormal,multiply,overlay,soft_light--antialias/--no-antialiasfor rotated text smoothing
Notes:
- Output format is inferred from the output extension. Unknown extensions default to PNG.
- JPEG output is flattened to white because JPEG does not support alpha.
- If no font is provided, Markforge tries
DejaVuSans.ttfand falls back to Pillow's default.
GUI
Launch the local GUI (opens a browser tab by default):
markforge gui
Details:
- Binds to
127.0.0.1by default and chooses a free port. - Exports default to
./exportsunless you pick a folder or type a path. - You can serve a custom UI with
--html path/to/index.html. - The "Pick" buttons use Tkinter; on minimal Linux installs you may need to add it, or use the built-in file picker and manual paths instead.
Development
pytest
pytest --cov --cov-report=term-missing
ruff check .
License
Markforge is free to use and redistribute in unmodified form only. Modification, forking,
and derivative works are not permitted. This is a source-available license. See LICENSE
for full terms.
Release files for markforge 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| markforge-0.1.2.tar.gz | 6.7 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| markforge-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.8 MB
Release files / markforge-0.1.2.tar.gz
| Download URL | markforge-0.1.2.tar.gz |
|---|---|
| Size | 6.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
17b6b05414416c7fe892ab19780c68d3629009d5475ff2fcbee05c544b3cbeeb
|
|
BLAKE2b-256 checksum How to use checksums |
a3e5c63687dbb05728a00c61576c273ad0fa38afac01545fae73144b7f4068d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 20, 2026.
Transparency logRelease files / markforge-0.1.2-py3-none-any.whl
| Download URL | markforge-0.1.2-py3-none-any.whl |
|---|---|
| Size | 27.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
391662c748e901d95cfa48adc5e6f109b575a9e3e8e1cd621197f3a94679d1ee
|
|
BLAKE2b-256 checksum How to use checksums |
595d3615291482a3c56d7fc9f8056b29c59f7c5e3c6e484d3ba5a13b2ad2b8f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 20, 2026.
Transparency log