Skip to content
VIPS Handbook emblem showing three layered streaming tile cards

VIPS Handbook

One mental model for libvips and four widely used interfaces.

Maintained by WebP Cloud. This is a community project, not official libvips documentation. Every public page is maintained as released content; version-sensitive claims state their review date and verification boundary.

Learn the ecosystem

Separate libvips, the CLI, and the language bindings. Open the map

Choose a binding

Route Go, Node.js, Python, or the shell to one interface. Choose an entry

Understand execution

See demand-driven evaluation and errors that appear at export. Execution model

Gate of the Orient outlined in red lights above a park walkway at night
Project-owned input1938 × 1292 JPEG
A 640-pixel WebP thumbnail of the night scene generated by govips
Executed govips output640 × 427 WebP, quality 82

This is an executed, versioned output from the displayed Go example rather than a decorative mockup. Open the 15-minute quickstart for the code, parameters, and current verification boundary.

Recipes

Runnable examples across I/O and conversion, geometry and canvas, composition and colour, and special formats. Browse recipes

Production

Process and object lifecycle management, untrusted-input limits, and loader-blocking boundaries. Browse production guides

Troubleshooting

Diagnose out of order read, colour shifts and missing ICC profiles, concurrency crashes, and suspected memory leaks. Browse troubleshooting

Reference

Cross-binding operation mapping, default parameter differences, format support matrix, and version baseline. Browse reference

  • govips for Go services that can manage CGO, libvips lifecycle, and resource release.
  • sharp for Node.js services built around image pipelines.
  • pyvips for Python automation, research, and service workloads.
  • vips CLI for operation discovery, shell batches, and minimal reproductions.

See significant libvips, govips, pyvips, and sharp releases together, so you can tell whether a capability began in the core library or a language binding.

sharp

sharp 0.35.5 tightens array and input bounds

This patch bounds linear and GIF delay arrays, improves WebAssembly fallback errors, and upgrades the bundled libvips to a release with additional input validation.

Original record ↗
libvips

libvips 8.18.7 tightens validation across multiple loaders

This patch bounds LUT size, strengthens TIFF, PDFium, and JPEG 2000 validation, and marks JPEG 2000 save as untrusted, making it especially relevant to services that accept external input.

Original record ↗
govips

govips 2.19 adds Reader/Writer streaming

New LoadImageFromReader, SaveToWriter, and TranscodeStream APIs connect Go io.Reader/io.Writer values to libvips and distinguish sequential paths from transforms that require materialisation.

Original record ↗
pyvips

pyvips 3.2 adds comprehensive typing and PIL conversion

Version 3.2 covers libvips operations with generated stubs, types common hand-written APIs, and adds Image.pil plus concurrency getters and setters.

Original record ↗
sharp

sharp 0.35 adds HDR gain maps, ESM, and AVIF tuning

Version 0.35 requires Node.js 20.9+, adds HDR JPEG gain maps, ESM, WebP exact and AVIF/HEIF tuning, and removes the experimental label from WebAssembly.

Original record ↗
govips

govips 2.18 adds ImageRef leak detection

This release adds OpenImageRefs and AssertNoLeaks for finding unclosed ImageRef values and splits the large ImageRef implementation into focused files.

Original record ↗

View the complete ecosystem timeline →