Installation
Requirements
- Craft CMS 5.3 or later
- PHP 8.2 or later
- GD or ImageMagick — whichever Craft is already using
That is the whole list. Waterfall has no runtime dependencies beyond Craft's own, no build step, and makes no outbound HTTP request unless you deliberately point a profile at a delivery service.
ImageMagick is worth having. Waterfall works on GD, and everything documented here is tested on
both, but Imagick gives you blend modes and slightly better text rendering. Craft picks the driver
with the imageDriver config setting; Waterfall follows whatever Craft has loaded.
Install
composer require justinholtweb/craft-waterfall
php craft plugin/install waterfall
Or find Waterfall in the Plugin Store and install it there.
Installing creates two tables — waterfall_profiles and waterfall_applications — and adds a
Waterfall item to the control panel navigation. Nothing is written to project config until you
save a profile.
Editions
| Lite — $59 | Pro — $79 | |
|---|---|---|
| Watermark profiles | One | As many as you like, stacked |
| Image watermarks | ✓ | ✓ |
| Text watermarks | ✓ | |
| Nine positions, offsets, scaling, opacity | ✓ | ✓ |
| Tiling, rotation, blend modes | ✓ | |
| Into transforms · permanently · on demand | ✓ | ✓ |
| Backups and restore | ✓ | ✓ |
| Volume, file type, transform and size rules | ✓ | ✓ |
| Asset conditions | ✓ | |
| imgix, Cloudinary, ImageKit, URL template | ✓ | |
| Imager-X and ImageOptimize integration | ✓ | |
| Per-asset Waterfall field | ✓ | |
| Console commands | ✓ |
Backups and restore are in Lite deliberately. Charging for the undo of a destructive operation is not a business model.
Check the server first
php craft waterfall/doctor
Worth running once on any new server, because watermarking fails quietly more often than it fails loudly. It prints the image driver, whether text can be drawn at all (GD compiled without FreeType cannot), whether blend modes are available, where backups will go, and what it can and cannot promise alongside Imager-X or ImageOptimize.
Your first watermark
- Upload the mark itself as an asset — a PNG with transparency gives the best result.
- Waterfall → Profiles → New profile.
- Give it a name and a handle, choose An image, and pick the asset.
- Leave the size at 25% of the image width and the position at bottom right.
- Under Apply, tick To generated transforms.
- Save.
The preview beside the form shows the result on a sample image — light on one side, dark on the other, so you can see whether the mark survives both.
Now load a page that renders a transform of any image in your site. It is watermarked. Nothing was
changed in a template to make that happen: Waterfall composites the mark while Craft is generating
the transform, so asset.getUrl({ width: 1200 }) returns a marked image and the original file on
disk is untouched.
Where to go next
- Configuration — everything a profile can say, and the plugin settings behind it
- Usage — the three apply modes, Twig, the console, and the two integrations
- Troubleshooting — when the mark does not appear, or appears wrong