Skip to content

About

zero-dependency JavaScript image manipulation

Topics

Resources

Stars

680 stars

Watchers

3 watching

Forks

Repository files navigation

ImageScript

zero-dependency JavaScript image manipulation

Discord Server Documentation Github NPM


ImageScript decodes, edits and encodes images in pure TypeScript: no WebAssembly, no native binaries, no dependencies. It runs in Node.js 22.13+, Deno, Bun, browsers and edge runtimes (Cloudflare Workers, Vercel's Edge Runtime, Deno Deploy), with import or require(), and includes type definitions. Encoders use worker threads where the runtime has them and images are large enough to gain from them.

npm install imagescript              # Node.js, Bun and bundlers
deno add jsr:@matmen/imagescript     # Deno

Example

import { Image } from 'imagescript';
import { readFile, writeFile } from 'node:fs/promises';

const image = await Image.decode(await readFile('input.jpg'));
image.resize(256, Image.RESIZE_AUTO).roundCorners(16);
await writeFile('output.png', await image.encode());

Coordinates are 0-based, (0, 0) is the top left pixel. A bigger example is the README image generation:

Example


Features

Format Decode Encode
PNG ✓ ✓
JPEG ✓ ✓
WebP ✓ ✓ (lossless and lossy)
AVIF ✓ ✓ (lossless and lossy)
JPEG XL ✓ ✓ (lossless and lossy)
GIF, APNG (animations) ✓ ✓
BMP, QOI, TGA, Netpbm ✓ ✓
TIFF, ICO/CUR, Radiance HDR ✓

Animated WebPs and JPEG XLs decode too, and animations encode as GIF, APNG or WebP, also a frame at a time. Embedded ICC color profiles (Display P3, Adobe RGB, ...) are converted to sRGB when decoding, like browsers show them.

See the documentation for everything else, and the changelog when upgrading from an older major version. bench/ compares ImageScript to Jimp, sharp and others.


Credits

ImageScript builds on fflate, libjpeg, pdf.js, font-rs, libwebp, HarfBuzz, dav1d, libavif, libaom, jxl-oxide and libjxl. The TrueType hinting follows FreeType: portions of this software are copyright © 2026 The FreeType Project (www.freetype.org). All rights reserved. See THIRD_PARTY_NOTICES.md for the licenses.


Questions? Join the Discord server.

About

zero-dependency JavaScript image manipulation

Topics

Resources

Stars

680 stars

Watchers

3 watching

Forks

Used by

Contributors

Languages