# firemark — CLI Reference
> A fast, flexible watermarking tool for images and PDFs, written in Rust.
```
firemark [options]
```
`` can be a single file or a folder path. Supported input formats: `.jpg`/`.jpeg`, `.png`, `.pdf`, `.webp`, `.tif`/`.tiff`.
---
## Table of Contents
- [Input / Output](#input--output)
- [Watermark Type](#watermark-type)
- [Content & Templates](#content--templates)
- [Typography](#typography)
- [Position & Layout](#position--layout)
- [Style & Appearance](#style--appearance)
- [PDF-specific](#pdf-specific)
- [Output Quality](#output-quality)
- [Config & Presets](#config--presets)
- [General](#general)
- [Template Variables](#template-variables)
- [Type Reference](#type-reference)
- [Examples](#examples)
- [Crate Dependencies](#crate-dependencies)
---
## Input / Output
| Flag | Description |
|---|---|
| `` | Input file or folder *(required)* |
| `-o, --output ` | Output file path. Supported extensions: `.jpg`, `.jpeg`, `.png`, `.pdf`, `.webp`, `.tif`, `.tiff` |
| `-S, --suffix ` | Append suffix to output filename: `{name}-{suffix}.ext`. Used when `-o` is omitted or with `-R` |
| `-R, --recursive` | Process folders recursively |
| `-j, --jobs ` | Number of parallel worker threads for batch processing (default: CPU count) |
| `--overwrite` | Overwrite existing output files without prompting |
| `-n, --dry-run` | Preview operations without writing any files |
---
## Watermark Type
```
-t, --type
```
Controls the **visual design style** of the watermark. Default: `diagonal`.
### Text Styles
| Value | Description |
|---|---|
| `diagonal` | Classic angled text stretched across the page |
| `stamp` | Bold text inside a circle or rectangle border, like a rubber stamp |
| `stencil` | Blocky, cut-out style lettering |
| `typewriter` | Monospace font, slightly uneven, vintage feel |
| `handwritten` | Cursive/script-style font |
| `redacted` | Black bar(s) with text visible through or underneath, like a censored document |
### Shape Styles
| Value | Description |
|---|---|
| `badge` | Text inside a filled shape: circle, hexagon, or ribbon |
| `ribbon` | Diagonal banner across a corner (pairs well with `--position top-right`) |
| `seal` | Circular embossed seal — main text in the center, secondary text on the outer ring |
| `frame` | Repeated text forming a border around the entire page margin |
### Pattern / Repeat Styles
| Value | Description |
|---|---|
| `tile` | Repeated text or image across the whole page in a regular grid |
| `mosaic` | Tiled, but with slight random rotation and offset per instance |
| `weave` | Diagonal alternating rows of text, offset like a textile or fabric pattern |
### Effect Styles
| Value | Description |
|---|---|
| `ghost` | Very low opacity, single centered mark with a subtle embossed look |
| `watercolor` | Soft, blurred edges with a color wash effect |
| `noise` | Text rendered with a grainy or distorted texture overlay |
| `halftone` | Dot-pattern rendering of the text or image |
---
## Content & Templates
| Flag | Description |
|---|---|
| `-m, --main-text ` | Primary watermark text (default: `"firemark"`) |
| `-s, --secondary-text ` | Secondary text below or around the main text (default: `{timestamp}`) |
| `-I, --image ` | Path to an image file to use as or combine with the watermark |
| `--qr-data ` | Data to encode as a QR code watermark (URL, plain text, etc.) |
| `--qr-code-position ` | QR code placement: `center` \| `top-left` \| `top-right` \| `bottom-left` \| `bottom-right` (default: `center`) |
| `--qr-code-size ` | QR code size in pixels (default: auto-scaled from image dimensions) |
| `--template ` | Full text template using variables (see [Template Variables](#template-variables)) |
---
## Typography
| Flag | Description |
|---|---|
| `-f, --font ` | Font name or path to a `.ttf` / `.otf` file (default: built-in sans-serif) |
| `--font-size ` | Font size in points (default: auto-scaled to canvas) |
| `--font-weight ` | `thin` \| `light` \| `regular` \| `bold` \| `black` (default: `regular`) |
| `--font-style