CLI image optimization tool
npm install @343dev/optimizt 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.
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.
Install:
``sh`
npm install -g @343dev/optimizt
Optimize!
`sh`
optimizt path/to/picture.jpg
- --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.
`bashoptimize a single image
optimizt path/to/picture.jpg
Differences Between Lossy and Lossless
$3
Provides the best balance between file size reduction and minimal visual quality loss.
$3
- 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:
- sharp for JPEG, PNG, WebP, and AVIF.
- svgo for SVG.
- gifsicle for GIF.
> [!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
$3
Ensure the ignore-scripts npm option is disabled.
Details: funbox/optimizt/issues/9.
Docker
$3
`bash
pull latest
docker pull 343dev/optimiztpull specific version
docker pull 343dev/optimizt:9.0.2
`$3
`bash
clone repository
git clone https://github.com/343dev/optimizt.git
cd optimiztbuild 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
`$3
`bash
mount current directory to /src in the container
docker run --rm --volume $(pwd):/src 343dev/optimizt --webp ./image.png
``Optimizt works seamlessly with:
- JetBrains IDEs
- Visual Studio Code
- Sublime Text 3
- GitHub Actions Workflow
- 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.
Cute picture for the project was made by Igor Garybaldi.