firemark
Stop sending naked documents. Firemark watermarks images & PDFs in one command. Optimized to tackle AI watermark removal. Written in Rust.
firemark: watermark everything before you send it
Firemark stamps watermarks on images and PDFs from the command line, offering 17 styles, banknote style filigrane, and non deterministic rendering meant to survive AI based removal.
Why bother watermarking at all?
The README makes the case with a rental scam. You send an unmarked copy of your ID or a pay stub to a landlord, the landlord disappears, and your documents get used to open accounts or take loans. A visible overlay naming the recipient and the purpose makes the document useless anywhere else. Firemark is the tool that does this in one command.
What do the styles look like?
Seventeen styles ship with the tool. Diagonal is the default, a full page repeating diagonal text. Then come stamp with a large centred double bordered mark, stencil lettering, typewriter text, a handwritten style signature, full width redaction bars, a badge, ribbon, seal, frame, tile, mosaic, weave, ghost, watercolor, noise, and halftone. Output lands next to the input as name-watermarked.ext unless you set an explicit output path or a custom suffix.
What is the security filigrane for?
On top of the visible text sits a filigrane layer inspired by banknote security. These fine geometric patterns are meant to be very hard to scrub with an image editor. The default is guilloche, sinusoidal wave bands, with rosette, crosshatch, border, lissajous, moire, spiral, mesh, plume, constellation, and ripple as options, plus a mode that combines everything.
How does it fight AI removal?
Every render is non deterministic by default. Firemark adds post render perturbation, alpha jitter, sub pixel colour noise, edge micro dots, and sparse ghost pixels, plus per renderer randomness, so two outputs are never pixel identical. The idea is to stop AI vision models from learning a predictable pattern to subtract. Prompt injection strips are embedded by default to confuse removal tools, and a flag disables them if you do not want visible prompt text.
How is it configured?
A TOML config file saves you from repeating flags. The example includes two presets: ultra-secure with dense tiling, full filigrane, QR traceability, and metadata stripping, and a light one with simple diagonal text and no extras. Input and output cover PNG, JPEG, PDF, WebP, and TIFF, and prebuilt binaries exist for Linux and macOS on both x86 64 and arm64.
Community notes