Upload images to Cloudflare R2 or any S3-compatible storage. Features: WebP conversion, image compression, text & logo watermark with live preview.
An Obsidian plugin that intercepts image paste/drop events, optionally converts to WebP, applies a canvas-based watermark, uploads to Cloudflare R2 (or any S3-compatible storage), and inserts the resulting URL as a markdown image link.
Private/*).main.js, manifest.json, styles.css.<vault>/.obsidian/plugins/watermark-s3-uploader/.Go to Settings → Watermark S3 Uploader to configure your storage provider.
| Field | Description |
|---|---|
| Access Key | S3 / R2 access key ID |
| Secret Key | S3 / R2 secret access key (stored securely in local storage) |
| Region | Bucket region (e.g. auto for Cloudflare R2) |
| S3 Bucket | The name of your bucket |
| Bucket Folder | Optional prefix inside the bucket. Supports ${year}, ${month}, ${day}, and ${basename} dynamic variables. |
endpoint/bucket/file instead of bucket.endpoint/file.?v=1) to inserted links.Configure how your watermarks are rendered using the Live Preview in the settings tab.
| Field | Description |
|---|---|
| Text Watermark | Toggle text-based overlay. |
| Text | The text to display (e.g. © yourdomain.com). |
| Font Family | Specify a font (e.g. arial, georgia, monospace). |
| Font Size | In pixels. Set to 0 for auto-scaling (2% of image width). |
| Style | Toggle Bold and Italic formatting. |
| Color | CSS color string (e.g. rgba(255,255,255,0.8)). |
| Logo Watermark | Toggle image-based overlay. |
| Logo Path | Vault-relative path to your logo (e.g. _assets/logo.png). |
| Logo Size | Scale as a percentage of the target image width. |
| Logo Opacity | Transparency level (0.0 to 1.0). |
| Common | |
| Position | Choose from Bottom Right, Bottom Left, Bottom Center, or Center. |
| Offset X/Y | Fine-tune position by nudging (±% of image dimensions). |
| Preview Res | Set the canvas resolution (720p to 4k) for accurate scaling preview. |

https://<account-id>.r2.cloudflarestorage.com.auto.Ctrl/Cmd+V) in any note — the plugin intercepts it, processes, uploads, and inserts .Upload image to manually select and upload a file.The plugin includes a powerful Live Preview canvas in the settings tab.
_assets/logo.png) to use an image as a watermark.npm installnpm run devnpm run buildnpm testnpm run lintMIT