DEV Community

Sahadat Husain profile picture

Sahadat Husain

Founder and developer of Blinkimg (blinkimg.com), an image compressor and converter with an API. I write about image pipelines, AVIF, WebP, sharp, Pillow and page speed.

Work

Founder at Blinkimg

Compress images from Python with the Blinkimg API and requests

Compress images from Python with the Blinkimg API and requests

Comments
5 min read
When can a PNG become a JPEG? Check opacity with sharp stats

When can a PNG become a JPEG? Check opacity with sharp stats

Comments
5 min read
Tiny image placeholders with sharp: bytes for 8 to 32 px LQIPs

Tiny image placeholders with sharp: bytes for 8 to 32 px LQIPs

1
Comments 1
4 min read
An AVIF quality ladder in sharp: q30 to q80, bytes and time

An AVIF quality ladder in sharp: q30 to q80, bytes and time

Comments
4 min read
The sizes attribute: how the browser picks a srcset candidate

The sizes attribute: how the browser picks a srcset candidate

Comments
5 min read
Why image encodes belong in a queue worker, with BullMQ

Why image encodes belong in a queue worker, with BullMQ

Comments
5 min read
An image upload endpoint in Fastify: five checks before decode

An image upload endpoint in Fastify: five checks before decode

Comments
6 min read
Compress images from your AI editor with an MCP server

Compress images from your AI editor with an MCP server

1
Comments
5 min read
Serve AVIF or WebP by Accept header, and the Vary header trap

Serve AVIF or WebP by Accept header, and the Vary header trap

1
Comments 1
5 min read
Accepting HEIC uploads in Node: what sharp can and cannot decode

Accepting HEIC uploads in Node: what sharp can and cannot decode

Comments
5 min read
Progressive vs baseline JPEG with mozjpeg: the byte difference

Progressive vs baseline JPEG with mozjpeg: the byte difference

Comments
4 min read
WebP lossless vs near-lossless vs lossy for UI screenshots

WebP lossless vs near-lossless vs lossy for UI screenshots

Comments
6 min read
Chroma subsampling 4:2:0 vs 4:4:4 for screenshots with text

Chroma subsampling 4:2:0 vs 4:4:4 for screenshots with text

Comments
6 min read
Stripping metadata without breaking colour: keep the ICC profile

Stripping metadata without breaking colour: keep the ICC profile

Comments
6 min read
limitInputPixels and MAX_IMAGE_PIXELS: pixel caps, tested

limitInputPixels and MAX_IMAGE_PIXELS: pixel caps, tested

Comments
5 min read
Detect image formats from magic bytes in Node and Python

Detect image formats from magic bytes in Node and Python

Comments
6 min read
Compress images from Node.js with the Blinkimg API and fetch

Compress images from Node.js with the Blinkimg API and fetch

Comments
5 min read
Generating srcset widths with sharp: bytes per width, measured

Generating srcset widths with sharp: bytes per width, measured

Comments
5 min read
sharp vs Pillow at the same JPEG quality: why the bytes differ

sharp vs Pillow at the same JPEG quality: why the bytes differ

Comments
5 min read
AVIF in sharp: what each effort level costs in time and bytes

AVIF in sharp: what each effort level costs in time and bytes

Comments
5 min read
loading...