lazy webp

MIT - Node.js 18+ - macOS 14+

CLI tool and native macOS app to batch convert images to WebP format. Drag-and-drop or command-line with concurrent processing and smart skip logic.

towebp macOS app showing 26 files converted with 65% average savings

Features

Drag & Drop

Drop image files or folders directly onto the app window. No file pickers, no terminal — just drag and convert.

Quality Slider

Adjust WebP compression quality from 1 to 100. Fine-tune the trade-off between file size and visual fidelity.

Per-File Savings

See exactly how much space each converted image saves, with percentage and byte reduction shown per file.

Menu Bar Icon

Quick access from the macOS menu bar. Convert images without switching to a full window.

Launch at Login

Set the app to start automatically when you log in, so it's always ready when you need it.

Always on Top

Pin the conversion window above other apps for easy drag-and-drop while browsing files in Finder.

Batch Processing

Convert entire directories of images in a single command. Supports JPG, JPEG, PNG, GIF, BMP, TIFF, and existing WebP files.

Smart Skipping

Compares file modification times to skip images that haven't changed since the last conversion. Only re-converts what's needed.

Concurrent Workers

Processes up to 4 images in parallel using worker threads for maximum throughput on multi-core machines.

Atomic Writes

Writes to temporary files first, then renames on success. If a conversion fails mid-write, no corrupt output is left behind.

Color Space Aware

Detects and preserves sRGB color profiles during conversion. Images maintain their intended color appearance in WebP output.

EXIF Auto-Rotation

Reads EXIF orientation tags and auto-rotates images during conversion so WebP output always displays correctly.

macOS App

Native SwiftUI desktop app with drag-and-drop conversion. Drop image files or folders onto the window and watch them convert in real time. Requires the lazywebp CLI installed globally via npm.

towebp macOS app empty drop zone ready to receive files
Drop zone
towebp macOS app showing 2 files converted with per-file savings
Completed conversion

Frequently Asked Questions

What image formats does towebp support?

JPG, JPEG, PNG, GIF, BMP, TIFF, and WebP. The CLI scans the input directory for files matching these extensions (case-insensitive) and converts each one to WebP format.

How does the skip logic work?

Before converting, towebp compares the modification time (mtime) of the source file against the existing output file. If the output is newer than the source, conversion is skipped. This makes repeated runs fast — only new or modified images get re-converted.

Can I use the macOS app without the CLI?

No. The macOS app is a native SwiftUI wrapper that calls the lazywebp CLI under the hood. You need to install the CLI globally via npm first, then the app uses it for the actual image conversion.

What quality setting should I use?

The default is 90, which works well for most use cases. For photographs where file size matters more, try 80-85. For graphics, illustrations, or UI screenshots where sharpness is critical, use 90-95.

Does it preserve original files?

Yes. towebp never modifies or deletes source files. It writes converted WebP files to the output directory using atomic writes — data goes to a temporary file first, then gets renamed only after successful conversion.

How does concurrent processing work?

towebp runs up to 4 parallel worker threads using sharp's built-in concurrency. Each worker picks up the next file from the queue, so all CPU cores stay busy during large batch conversions.