Batch Manager
One script, a folder full of images, one click.
The Batch Manager is the Clipboard Manager with a different trigger: instead of waiting on the clipboard, you drag images in — or pick them from a file dialog — and run one OpticScript script over all of them.
Every image gets a card with a preview. You see what comes out before you overwrite three hundred files with it.
What it is for
A whole photo folder for the web. Cap the width, convert to WebP, stamp the copyright — three hundred photos, one pass.
Watermarks in series. Logo in the corner, same size, same opacity, same spot on every image.
A format move. A PNG archive to AVIF, without anyone clicking three hundred exports.
And the case it was really built for: trying things out. Drag in ten images, run, adjust a parameter, run again — until it sits. Then the other two hundred and ninety.
Two examples, both runnable
The folder, ready for the web
//!INPUT: INPUT
//!OUTPUT: WEB
//!PARAM: MAXWIDTH:number=1600, QUALITY:number=80
const img = Engine.loadImage(INPUT);
if (img.width > MAXWIDTH) {
img.resize(MAXWIDTH, Math.round(MAXWIDTH * (img.height / img.width)));
}
img.setMeta("exif", { Copyright: "(c) 2026 mlcgo.eu" });
img.save(WEB, { format: "webp", quality: QUALITY });
img.free();
The if (img.width > MAXWIDTH) leaves smaller images alone — upscaling
makes files bigger, not better. The setMeta writes the copyright line
into every file as real EXIF.
Watermark in the corner
//!INPUT: INPUT
//!OUTPUT: STAMPED
//!PARAM: MARGIN:number=24, OPACITY:number=0.55
const photo = Engine.loadImage(INPUT);
const mark = Engine.loadImage("logo.png");
const w = Math.round(photo.width * 0.18);
mark.resize(w, Math.round(w * (mark.height / mark.width)));
photo.blendAt(
mark,
px(photo.width - mark.width - MARGIN,
photo.height - mark.height - MARGIN),
OPACITY,
);
photo.save(STAMPED, { format: "jpeg", quality: 88 });
mark.free();
photo.free();
The watermark scales with the image — 18 % of the width, whether the photo is 800 or 6000 pixels across. A logo at a fixed pixel size looks lost on large images and overbearing on small ones.
Setting it up
- Open the Batch Manager from the header bar.
- Drag images in — or pick them via Add files.
- Choose an output folder and a script.
- Hit Run — or the ✨ button on a single card while you are still shaping the script.
//!PARAM: values show up as input fields and are remembered. Hitting
Run again goes over all images, including the ones that already
have a result — which is exactly what you want after changing a
parameter.
Results land as out_<filename> in the output folder and are
overwritten on each pass. If you want to keep several versions, use
different output folders.
If a script declares more than one output (//!OUTPUT: A, B), all of
them are saved, with the key in the filename.
Unlocking
Same as the Clipboard Manager: part of the free feature set, but it needs a registered installation — a free key is enough. The first 30 days run unregistered.
See also
- Clipboard Manager — the same idea, triggered by the clipboard.
- First steps — install and the JS engine tour.
- Examples — 70+ working scripts.