Convert an Image to Grayscale

Load a picture and turn it black and white using true luminance weighting, then download the result — all on-device.

Grayscale Image Converter

Drop an image here or click to choose

Grayscale preview

🔒 Nothing you enter is sent anywhere or stored. All processing happens in your browser.

How it works

Grayscale strips the color from an image, leaving only shades of gray. A naive approach just averages the red, green, and blue channels, but human eyes are far more sensitive to green than to blue, so an average looks flat and wrong. This tool uses the luminance formula — 0.2126·R + 0.7152·G + 0.0722·B — the same weighting used in video and modern displays, for a natural, well-balanced black-and-white result.

Load any image and it is converted immediately, pixel by pixel, with getImageData and putImageData. The preview shows the finished grayscale version, and Download PNG saves it losslessly with any transparency preserved.

Everything is computed in your browser, so private photos and documents never leave your device. It is handy for print prep, e-ink displays, accessibility checks, or simply a classic monochrome look.

Examples

A color photo → a natural black-and-white version for a print layout.
A UI screenshot → grayscale to check contrast without color distractions.
A logo → a monochrome variant for a single-color print job.

Frequently asked questions

Why luminance instead of a simple average?
Averaging treats all channels equally, but our eyes weight green most and blue least. Luminance matches perceived brightness, so tones look correct.
Is the output color-free?
Yes. Every pixel's red, green, and blue are set to the same computed gray value, so there is no residual color tint.
Does it keep transparency?
Yes. The alpha channel is left untouched and the PNG output preserves it.
Can I get sepia or other tints?
This tool produces neutral grayscale. A tint would be a separate step applied on top of the gray values.
Is my image uploaded?
No. The conversion runs on a local canvas in your browser, so nothing is sent anywhere.