Optimizt
CLI image optimization tool
**Optimizt** is a command-line tool that helps prepare images for the web. The project is written primarily in JavaScript, distributed under the MIT License license, first published in 2023. Key topics include: avif, gif, gif2webp, gifsicle, guetzli.
@343dev/optimizt
<img align="right" width="176" height="176" alt="Optimizt logo: OK hand sign with Mona Lisa image between the fingers" src="./docs/logo.png">
Optimizt is a command-line tool that helps prepare images for the web.
It can compress PNG, JPEG, GIF, and SVG lossy or lossless, and create AVIF and WebP versions for raster images.
Rationale
As frontend developers, we have to care about pictures: compress PNG and JPEG, remove useless parts of SVG, create AVIF and WebP for modern browsers, and so on. One day, we got tired of using a bunch of apps for that, and created one tool that does everything we want.
Usage
Install:
shnpm install -g @343dev/optimizt
Optimize!
shoptimizt path/to/picture.jpg
Command Line Flags
--avif— create AVIF versions of images.--webp— create WebP versions of images.-f, --force— recreate AVIF and WebP versions even if they already exist.-l, --lossless— optimize losslessly instead of lossily.-v, --verbose— show detailed output (e.g. skipped files).-c, --config— use a custom configuration file instead of the default.-o, --output— write results to the specified directory.-p, --prefix— add prefix to optimized file names.-s, --suffix— add suffix to optimized file names.-V, --version— display the tool version.-h, --help— show help message.
Usage Examples
bash# optimize a single image optimizt path/to/picture.jpg # optimize multiple images losslessly optimizt --lossless path/to/picture.jpg path/to/another/picture.png # recursively create AVIF and WebP versions for all images in a directory optimizt --avif --webp path/to/directory # recursively optimize JPEG files in the current directory find . -iname \*.jpg -exec optimizt {} +
Differences Between Lossy and Lossless
Lossy (Default)
Provides the best balance between file size reduction and minimal visual quality loss.
Lossless (--lossless flag)
- AVIF/WebP: Uses lossless compression.
- PNG/JPEG/GIF: Maximizes image quality at the expense of larger file sizes.
- SVG: Settings are identical in both modes.
Configuration
Image processing leverages:
[!NOTE]
In Lossless mode for JPEG, Guetzli is used. Repeated optimization may degrade visual quality.
Default settings are defined in .optimiztrc.cjs, which includes all supported parameters. Disable any parameter by setting it to false.
When using --config path/to/.optimiztrc.cjs, the specified configuration file will be used. If no --config is provided, Optimizt searches recursively from the current directory upward for .optimiztrc.cjs. If none is found, defaults are applied.
Troubleshooting
Errors like “spawn guetzli ENOENT”.
Ensure the ignore-scripts npm option is disabled.
Details: funbox/optimizt/issues/9.
Docker
Pre-Built Image
bash# pull latest docker pull 343dev/optimizt # pull specific version docker pull 343dev/optimizt:9.0.2
Manual Build
bash# clone repository git clone https://github.com/343dev/optimizt.git cd optimizt # build image docker build --tag 343dev/optimizt .
Alternatively:
bash# build directly from GitHub # ignores .dockerignore (see: https://github.com/docker/cli/issues/2827) docker build --tag 343dev/optimizt https://github.com/343dev/optimizt.git
Run Container
bash# mount current directory to /src in the container docker run --rm --volume $(pwd):/src 343dev/optimizt --webp ./image.png
Integrations
Optimizt works seamlessly with:
Articles
- anuwong.com — Compress files before uploading, save tons of GBs. 🇹🇭
- Linux Format, Issue 277 (July 2021) — Optimizt is ideal for reducing the disk footprint of images without any reduction in quality.
Credits
Cute picture for the project was made by Igor Garybaldi.
Other projects
- 📦 harold — CLI tool that compares frontend project bundle sizes between snapshots
- 🐳 jailbot — Docker container wrapper with automatic filesystem path mounting
- 📝 markdown-lint — Markdown code style linter based on Prettier, Remark, and Typograf
- 🔤 languagetool-node — CLI spell and grammar checker powered by LanguageTool
Contributors
Showing top 6 contributors by commit count.
