NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #558 most downloaded on npm
High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images
Last release 2 days ago
27 Sep 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
7 versions withdrawn
withdrawn after publishing
13 years old
194 releases · first in 2013
Nothing published for this version
Nothing published for this version
title: v0.32.6 - 18th September 2023 slug: changelog/v0.32.6
Upgrade to libvips v8.14.5 for upstream bug fixes.
Ensure composite tile images are fully decoded (regression in 0.32.0). #3767
Ensure withMetadata can add ICC profiles to RGB16 output.
#3773
Ensure withMetadata does not reduce 16-bit images to 8-bit (regression in 0.32.5).
#3773
TypeScript: Add definitions for block and unblock. #3799 @ldrick
One column per quarter.
title: v0.32.5 - 15th August 2023 slug: changelog/v0.32.5
Upgrade to libvips v8.14.4 for upstream bug fixes.
TypeScript: Add missing WebpPresetEnum to definitions.
#3748
@pilotso11
Ensure compilation using musl v1.2.4. #3755 @kleisauke
Ensure resize with a fit of inside respects 90/270 degree rotation.
#3756
TypeScript: Ensure minSize property of WebpOptions is boolean.
#3758
@sho-xizz
Ensure withMetadata adds default sRGB profile.
#3761
title: v0.32.4 - 21st July 2023 slug: changelog/v0.32.4
Upgrade to libvips v8.14.3 for upstream bug fixes.
Expose ability to (un)block low-level libvips operations by name.
Prebuilt binaries: restore support for tile-based output. #3581
title: v0.32.3 - 14th July 2023 slug: changelog/v0.32.3
title: v0.32.2 - 11th July 2023 slug: changelog/v0.32.2
Limit HEIF output dimensions to 16384x16384, matches libvips.
Ensure exceptions are not thrown when terminating. #3569
Ensure the same access method is used for all inputs (regression in 0.32.0). #3669
Improve detection of jp2 filename extensions. #3674 @bianjunjie1981
Guard use of smartcrop premultiplied option to prevent warning (regression in 0.32.1). #3710
Prevent over-compute in affine-based rotate before resize. #3722
Allow sequential read for EXIF-based auto-orientation. #3725
title: v0.32.1 - 27th April 2023 slug: changelog/v0.32.1
Add experimental unflatten operation.
#3461
@antonmarsden
Ensure use of flip operation forces random access read (regression in 0.32.0).
#3600
Ensure linear operation works with 16-bit input (regression in 0.31.3).
#3605
Install: ensure proxy URLs are logged correctly. #3615 @TomWis97
Ensure profile-less CMYK to CMYK roundtrip skips colourspace conversion. #3620
Add support for modulate operation when using non-sRGB pipeline colourspace.
#3620
Ensure trim operation works with CMYK images (regression in 0.31.0).
#3636
Install: coerce libc version to semver. #3641
TypeScript definitions are now maintained and published directly, deprecating the @types/sharp package. #3369
Default to using sequential rather than random access read where possible.
Replace GIF output optimise / optimize option with reuse.
Add progressive option to GIF output for interlacing.
Add wrap option to text image creation.
Add formatMagick property to metadata of images loaded via *magick.
Prefer integer (un)premultiply for faster resizing of RGBA images.
Add ignoreIcc input option to ignore embedded ICC profile.
Allow use of GPS (IFD3) EXIF metadata. #2767
TypeScript definitions are now maintained and published directly, deprecating the @types/sharp package.
#3369
Prebuilt binaries: ensure macOS 10.13+ support, as documented. #3438
Prebuilt binaries: prevent use of glib slice allocator, improves QEMU support. #3448
Add focus point coordinates to output when using attention based crop. #3470 @ejoebstl
Expose sharp version as sharp.versions.sharp.
#3471
Respect fastShrinkOnLoad resize option for WebP input.
#3516
Reduce sharpen sigma maximum from 10000 to 10.
#3521
Add support to extend operation for extendWith to allow copy/mirror/repeat.
#3556
@janaz
Ensure all async JS callbacks are wrapped to help avoid possible race condition. #3569
Prebuilt binaries: support for tile-based output temporarily removed due to licensing issue. #3581
Add support to normalise for lower and upper percentiles.
#3583
@LachlanNewman
title: v0.31.3 - 21st December 2022 slug: changelog/v0.31.3
Add experimental support for JPEG-XL images. Requires libvips compiled with libjxl. #2731
Add runtime detection of V8 memory cage, ensures compatibility with Electron 21 onwards. #3384
Expose interFrameMaxError and interPaletteMaxError GIF optimisation properties.
#3401
Allow installation on Linux with glibc patch versions e.g. Fedora 38. #3423
Expand range of existing sharpen parameters to match libvips.
#3427
Prevent possible race condition awaiting metadata of Stream-based input. #3451
Improve extractChannel support for 16-bit output colourspaces.
#3453
Ignore sequentialRead option when calculating image statistics.
#3462
Small performance improvement for operations that introduce a non-opaque background. #3465
Ensure integral output of linear operation.
#3468
title: v0.31.2 - 4th November 2022 slug: changelog/v0.31.2
title: v0.31.1 - 29th September 2022 slug: changelog/v0.31.1
Upgrade to libvips v8.13.2 for upstream bug fixes.
Ensure close event occurs after end event for Stream-based output.
#3313
Ensure limitInputPixels constructor option uses uint64.
#3349
@marcosc90
Ensure auto-rotation works with shrink-on-load and extract (regression in 0.31.0). #3352
Ensure AVIF output is always 8-bit. #3358
Ensure greyscale images can be trimmed (regression in 0.31.0). #3386
Remove previously-deprecated WebP reductionEffort and HEIF speed options. Use effort to control these.
Drop support for Node.js 12, now requires Node.js >= 14.15.0.
GIF output now re-uses input palette if possible. Use reoptimise option to generate a new palette.
Add WebP minSize and mixed options for greater control over animation frames.
Remove previously-deprecated WebP reductionEffort and HEIF speed options. Use effort to control these.
The flip and flop operations will now occur before the rotate operation.
Improve normalise operation with use of histogram.
#200
Use combined bounding box of alpha and non-alpha channels for trim operation.
#2166
Add Buffer and Stream support to tile-based output. #2238
Add input fileSuffix and output alias to format information.
#2642
Re-introduce support for greyscale ICC profiles (temporarily removed in 0.30.2). #3114
Add support for WebP and PackBits compression options with TIFF output.
#3198
Ensure OpenSlide and FITS input works with custom libvips. #3226
Ensure trim operation is a no-op when it would reduce an image to nothing.
#3223
Expose vips_text to create an image containing rendered text.
#3252
@brahima
Ensure only properties owned by the withMetadata EXIF Object are parsed.
#3292
Expand linear operation to allow use of per-channel arrays.
#3303
@antonmarsden
Ensure the order of rotate, resize and extend operations is respected where possible.
Emit warnings when previous calls in the same pipeline will be ignored.
#3319
Ensure PNG bitdepth can be set for non-palette output. #3322
Add trim option to provide a specific background colour. #3332 @mart-jansink
Ensure resized image is unpremultiplied before composite. #3334
title: v0.30.7 - 22nd June 2022 slug: changelog/v0.30.7
Ensure tiled composition always works with outside resizing. #3227
Allow WebP encoding effort of 0. #3261 @AlexanderTheGrey
title: v0.30.6 - 30th May 2022 slug: changelog/v0.30.6
title: v0.30.5 - 23rd May 2022 slug: changelog/v0.30.5
Install: pass PKG_CONFIG_PATH via env rather than substitution.
@dwisiswant0
Add support for --libc flag to improve cross-platform installation.
#3160
@joonamo
Allow installation of prebuilt libvips binaries from filesystem. #3196 @ankurparihar
Fix rotate-then-extract for EXIF orientation 2. #3218 @jakob0fischl
Increase control over sensitivity to invalid images via failOn, deprecate failOnError (equivalent to failOn: 'warning').
Increase control over sensitivity to invalid images via failOn, deprecate failOnError (equivalent to failOn: 'warning').
Ensure create input image has correct bit depth and colour space.
#3139
Add support for TypedArray input with byteOffset and length.
#3146
@codepage949
Improve error message when attempting to render SVG input greater than 32767x32767. #3167
Add missing file name to 'Input file is missing' error message. #3178 @Brodan
title: v0.30.3 - 14th March 2022 slug: changelog/v0.30.3
title: v0.30.2 - 2nd March 2022 slug: changelog/v0.30.2
Improve performance and accuracy when compositing multiple images. #2286
Expand pkgconfig search path for wider BSD support. #3106
Ensure Windows C++ runtime is linked statically (regression in 0.30.0). #3110 @kleisauke
Temporarily ignore greyscale ICC profiles to workaround lcms bug. #3112
title: v0.30.1 - 9th February 2022 slug: changelog/v0.30.1
Allow use of toBuffer and toFile on the same instance.
#3044
Skip shrink-on-load for known libjpeg rounding errors. #3066 @kleisauke
Ensure withoutReduction does not interfere with contain/crop/embed. #3081 @kleisauke
Ensure affine interpolator is correctly finalised. #3083 @kleisauke
Standardise WebP effort option name, deprecate reductionEffort.
Add support for GIF output to prebuilt binaries.
Reduce minimum Linux ARM64v8 glibc requirement to 2.17.
Verify prebuilt binaries with a Subresource Integrity check.
Standardise WebP effort option name, deprecate reductionEffort.
Standardise HEIF effort option name, deprecate speed.
Add support for IIIF v3 tile-based output.
Expose control over CPU effort for palette-based PNG output. #2541
Improve animated (multi-page) image resize and extract. #2789 @kleisauke
Expose platform and architecture of vendored binaries as sharp.vendor.
#2928
Ensure 16-bit PNG output uses correct bitdepth. #2958 @gforge
Properly emit close events for duplex streams. #2976 @driannaude
Expose unlimited option for SVG and PNG input, switches off safety features.
#2984
Add withoutReduction option to resize operation.
#3006
@christopherbradleybanks
Add resolutionUnit as tiff option and expose in metadata.
#3023
@ompal-sisodiya
Ensure rotate-then-extract works with EXIF mirroring. #3024
title: v0.29.3 - 14th November 2021 slug: changelog/v0.29.3
title: v0.29.2 - 21st October 2021 slug: changelog/v0.29.2
title: v0.29.1 - 7th September 2021 slug: changelog/v0.29.1
Add lightness option to modulate operation.
#2846
Ensure correct PNG bitdepth is set based on number of colours. #2855
Ensure background is always premultiplied when compositing. #2858
Ensure images with P3 profiles retain full gamut. #2862
Add support for libvips compiled with OpenJPEG. #2868
Remove unsupported animation properties from AVIF output. #2870
Resolve paths before comparing input/output filenames. #2878 @rexxars
Allow use of speed 9 (fastest) for HEIF encoding. #2879 @rexxars
title: v0.29.0 - 17th August 2021 slug: changelog/v0.29.0
Drop support for Node.js 10, now requires Node.js >= 12.13.0.
Add background property to PNG and GIF image metadata.
Add compression property to HEIF image metadata.
#2504
AVIF encoding now defaults to 4:4:4 chroma subsampling.
#2562
Allow multiple platform-arch binaries in same node_modules installation tree.
#2575
Default to single-channel b-w space when extractChannel is used.
#2658
Allow installation directory to contain spaces (regression in v0.26.0). #2777
Add pipelineColourspace operator to set the processing space.
#2704
@Daiz
Allow bit depth to be set when using raw input and output. #2762 @mart-jansink
Allow negate to act only on non-alpha channels.
#2808
@rexxars
title: v0.28.3 - 24th May 2021 slug: changelog/v0.28.3
title: v0.28.2 - 10th May 2021 slug: changelog/v0.28.2
Allow withMetadata to set density.
#967
Skip shrink-on-load where one dimension <4px. #2653
Allow escaped proxy credentials. #2664 @msalettes
Add premultiplied flag for raw pixel data input.
#2685
@mnutt
Detect empty input and throw a helpful error. #2687 @JakobJingleheimer
Add install-time flag to skip version compatibility checks. #2692 @xemle
title: v0.28.1 - 5th April 2021 slug: changelog/v0.28.1
title: v0.28.0 - 29th March 2021 slug: changelog/v0.28.0
Prebuilt binaries now include mozjpeg and libimagequant (BSD 2-Clause).
Prebuilt binaries limit AVIF support to the most common 8-bit depth.
Add mozjpeg option to jpeg method, sets mozjpeg defaults.
Reduce the default PNG compressionLevel to the more commonly used 6.
Reduce concurrency on glibc-based Linux when using the default memory allocator to help prevent fragmentation.
Default missing edge properties of extend operation to zero. #2578
Ensure composite does not clip top and left offsets. #2594 @SHG42
Improve error handling of network failure at install time. #2608 @abradley
Ensure @id attribute can be set for IIIF tile-based output.
#2612
@edsilv
Ensure composite replicates the correct number of tiles for centred gravities. #2626
title: v0.27.2 - 22nd February 2021 slug: changelog/v0.27.2
macOS: Prevent use of globally-installed ARM64 libvips with Rosetta x64 emulation. #2460
Linux (musl): Prevent use of prebuilt linuxmusl-x64 binaries with musl >= 1.2.0. #2570
Improve 16-bit grey+alpha support by using libvips' has_alpha detection.
#2569
Allow the use of non lower case extensions with toFormat.
#2581
@florian-busch
Allow use of recomb operation with single channel input.
#2584
title: v0.27.1 - 27th January 2021 slug: changelog/v0.27.1
title: v0.27.0 - 22nd December 2020 slug: changelog/v0.27.0
title: v0.26.3 - 16th November 2020 slug: changelog/v0.26.3
title: v0.26.2 - 14th October 2020 slug: changelog/v0.26.2
title: v0.26.1 - 20th September 2020 slug: changelog/v0.26.1
Ensure correct pageHeight when verifying multi-page image dimensions. #2343 @derom
Allow input density range up to 100000 DPI. #2348 @stefanprobst
Ensure animation-related properties can be set for Stream-based input. #2369 @AcrylicShrimp
Ensure stats can be calculated for 1x1 input.
#2372
Ensure animated GIF output is optimised. #2376
title: v0.26.0 - 25th August 2020 slug: changelog/v0.26.0
Prebuilt libvips binaries are now statically-linked and Brotli-compressed, requiring Node.js 10.16.0+.
TIFF output squash is replaced by bitdepth to reduce to 1, 2 or 4 bit.
JPEG output quality >= 90 no longer automatically sets chromaSubsampling to 4:4:4.
Add most dominant colour to image stats.
#640
Add support for animated GIF (requires *magick) and WebP output. #2012 @deftomat
Add support for libvips ImageMagick v7 loaders. #2258 @vouillon
Add support to withMetadata for custom ICC profile.
#2271
@roborourke
Ensure prebuilt binaries for ARM default to v7 when using Electron. #2292 @diegodev3
title: v0.25.4 - 12th June 2020 slug: changelog/v0.25.4
Allow libvips binary location override where version is appended. #2217 @malice00
Enable PNG palette when setting quality, colours, colors or dither. #2226 @romaleev
Add level constructor option to use a specific level of a multi-level image.
Expose levels metadata for multi-level images.
#2222
Add support for named alpha channel to extractChannel operation.
#2138
Add experimental sharpness calculation to stats() response.
#2251
Emit warning event for non-critical processing problems.
#2032
title: v0.25.3 - 17th May 2020 slug: changelog/v0.25.3
Ensure libvips is initialised only once, improves worker thread safety. #2143
Ensure npm platform flag is respected when copying DLLs. #2188 @dimadeveatii
Allow SVG input with large inline images to be parsed. #2195
title: v0.25.2 - 20th March 2020 slug: changelog/v0.25.2
title: v0.25.1 - 7th March 2020 slug: changelog/v0.25.1
Remove limitInputPixels and sequentialRead previously deprecated in v0.24.0.
title: v0.24.1 - 15th February 2020 slug: changelog/v0.24.1
Move limitInputPixels and sequentialRead to input options, deprecating functions of the same name.
Drop support for Node.js 8. #1910
Drop support for undefined input where options also provided. #1768
Move limitInputPixels and sequentialRead to input options, deprecating functions of the same name.
Expose delay and loop metadata for animated images.
#1905
Ensure correct colour output for 16-bit, 2-channel PNG input with ICC profile. #2013
Prevent use of sequentialRead for rotate operations. #2016
Correctly bind max width and height values when using withoutEnlargement. #2024 @BrychanOdlum
Add support for input with 16-bit RGB profile. #2037
title: v0.23.4 - 5th December 2019 slug: changelog/v0.23.4
title: v0.23.3 - 17th November 2019 slug: changelog/v0.23.3
Ensure trim operation supports images contained in the alpha channel.
#1597
Ensure tile overlap option works as expected.
#1921
@rustyguts
Allow compilation on FreeBSD and variants (broken since v0.23.0) #1952 @pouya-eghbali
Ensure modulate and other colour-based operations can co-exist.
#1958
title: v0.23.2 - 28th October 2019 slug: changelog/v0.23.2
Add background option to tile output operation.
#1924
@neave
Add support for Node.js 13. #1932 @MayhemYDG
title: v0.23.1 - 26th September 2019 slug: changelog/v0.23.1
Ensure sharp.format.vips is present and correct (filesystem only).
#1813
Ensure invalid width and height provided as options to resize throw.
#1817
Allow use of 'heic' and 'heif' identifiers with toFormat.
#1834
@jaubourg
Add premultiplied option to composite operation.
#1835
@Andargor
Allow instance reuse with differing toBuffer options.
#1860
@RaboliotTheGrey
Ensure image is at least 3x3 pixels before attempting trim operation.
Remove overlayWith previously deprecated in v0.22.0.
Remove overlayWith previously deprecated in v0.22.0.
Add experimental support for HEIF images. Requires libvips compiled with libheif. #1105
Expose libwebp smartSubsample and reductionEffort options.
#1545
Add experimental support for Worker Threads. #1558
Use libvips' built-in CMYK and sRGB profiles when required. #1619
Drop support for Node.js versions 6 and 11. #1674
Expose skipBlanks option for tile-based output.
#1687
@RaboliotTheGrey
Allow use of failOnError option with Stream-based input.
#1691
Fix rotate/extract ordering for non-90 angles. #1755 @iovdin
title: v0.22.1 - 25th April 2019 slug: changelog/v0.22.1
Add modulate operation for brightness, saturation and hue.
#1601
@Goues
Improve help messaging should require("sharp") fail.
#1638
@sidharthachatterjee
Add support for Node 12. #1668
Remove functions previously deprecated in v0.21.0: background, crop, embed, ignoreAspectRatio, max, min and withoutEnlargement.
Remove functions previously deprecated in v0.21.0:
background, crop, embed, ignoreAspectRatio, max, min and withoutEnlargement.
Add composite operation supporting multiple images and blend modes; deprecate overlayWith.
#728
Add support for pages input option for multi-page input.
#1566
Allow Stream-based input of raw pixel data. #1579
Add support for page input option to GIF and PDF.
#1595
@ramiel
title: v0.21.3 - 19th January 2019 slug: changelog/v0.21.3
Input image decoding now fails fast, set failOnError to change this behaviour.
Failed filesystem-based input now separates missing file and invalid format errors. #1542
title: v0.21.2 - 13th January 2019 slug: changelog/v0.21.2
Ensure all metadata is removed from PNG output unless withMetadata used.
Ensure shortest edge is at least one pixel after resizing. #1003
Add ensureAlpha operation to add an alpha channel, if missing.
#1153
Expose pages and pageHeight metadata for multi-page input images.
#1205
Expose PNG output options requiring libimagequant. #1484
Expose underlying error message for invalid input. #1505
Prevent mutatation of options passed to jpeg.
#1516
Ensure forced output format applied correctly when output chaining. #1528
title: v0.21.1 - 7th December 2018 slug: changelog/v0.21.1
Install: support sharp_dist_base_url npm config, like existing SHARP_DIST_BASE_URL.
#1422
@SethWen
Ensure channel metadata is correct for raw, greyscale output.
#1425
Add support for the "mitchell" kernel for image reductions. #1438 @Daiz
Allow separate parameters for gamma encoding and decoding. #1439 @Daiz
Build prototype with Object.assign to allow minification.
#1475
@jaubourg
Expose libvips' recombination matrix operation. #1477 @fromkeith
Expose libvips' pyramid/tile options for TIFF output. #1483 @mbklein
Deprecate the following resize-related functions: crop, embed, ignoreAspectRatio, max, min and withoutEnlargement. Access to these is now via options…
Deprecate the following resize-related functions:
crop, embed, ignoreAspectRatio, max, min and withoutEnlargement.
Access to these is now via options passed to the resize function.
For example:
embed('north') is now resize(width, height, { fit: 'contain', position: 'north' }),
crop('attention') is now resize(width, height, { fit: 'cover', position: 'attention' }),
max().withoutEnlargement() is now resize(width, height, { fit: 'inside', withoutEnlargement: true }).
#1135
Deprecate the background function.
Per-operation background options added to resize, extend and flatten operations.
#1392
Add size to metadata response (Stream and Buffer input only).
#695
Switch from custom trim operation to vips_find_trim.
#914
Add chromaSubsampling and isProgressive properties to metadata response.
#1186
Drop Node 4 support. #1212
Enable SIMD convolution by default. #1213
Add experimental prebuilt binaries for musl-based Linux. #1379
Add support for arbitrary rotation angle via vips_rotate. #1385 @freezy
title: v0.20.8 - 5th September 2018 slug: changelog/v0.20.8
title: v0.20.7 - 21st August 2018 slug: changelog/v0.20.7
title: v0.20.6 - 20th August 2018 slug: changelog/v0.20.6
Add removeAlpha operation to remove alpha channel, if any. #1248
Allow full WebP alphaQuality range of 0-100. #1290 @sylvaindumont
Cache libvips binaries to reduce re-install time. #1301
Ensure vendor platform mismatch throws error at install time. #1303
Improve install time error messages for FreeBSD users. #1310
Ensure extractChannel works with 16-bit images. #1330
Expose depth option for tile-based output. #1342 @alundavies
Add experimental entropy field to stats response.
title: v0.20.5 - 27th June 2018 slug: changelog/v0.20.5
title: v0.20.4 - 20th June 2018 slug: changelog/v0.20.4
Prevent possible rounding error when using shrink-on-load and 90/270 degree rotation. #1241 @anahit42
Ensure extractChannel sets correct single-channel colour space interpretation. #1257 @jeremychone
title: v0.20.3 - 29th May 2018 slug: changelog/v0.20.3
Your coding agent can read these notes before it upgrades. Set up the MCP server →