A CLI for working with images: it resizes, converts and recompresses them in bulk by the rules of a config, and generates hazehash, blurhash and thumbhash placeholders for them.

Images rarely arrive in the form they have to be shown in — here are four situations where the same two commands do the whole job.
One image-batch run with the rules of a config lays every image out in the widths you need in avif, webp and jpg, with names from a template such as hero-800w.webp. The config holds only the rules, so the same one serves the next project.
image-batch --replace shrinks oversized images right where they are: a preview with the real before and after sizes first, then a confirmation and a backup with a journal, a file is replaced only when it became smaller, and restore brings everything back.
image-hash computes a compact placeholder for every image — hazehash, blurhash or thumbhash — and writes it to JSON, CSV or a ready TS module. --check fails in CI when the hash file is stale, so the placeholders never drift from the pictures.
With no size flags image-batch resizes nothing: image-batch ./photos -o ./out -f webp only changes the format and the quality, keeping the dimensions of the sources. The preview, the interactive file picker and the protection from overwriting work the same.

image-hash generates hazehash, blurhash and thumbhash for raster images and, on request, a dominant color and a tiny preview. It takes files, folders and URLs and writes to stdout, one file, or a file per image (photo.jpg.blurhash.txt), in json/plain/csv/ts/js. --check fails in CI when the hash file is stale, and --dry-run shows the result as a table.

image-batch resizes, converts and recompresses images in bulk by the rules of a config: sizes, formats, quality, file names from a template. Results go to a separate folder, next to the sources or over them — with a confirmation, a backup and a restore command; --dry-run shows the real before and after sizes.

mediatoolz ui starts a local web interface: forms, tables and previews instead of flags, a file browser for picking folders, a gallery of placeholders next to the images, configs and sharpening presets with a before and after preview. File changes are confirmed and the originals are backed up. The server listens on 127.0.0.1 only, behind a one-time token.