Image Threshold & Dithering Tool
Convert images to pure black and white with adjustable threshold and six dithering algorithms — Floyd-Steinberg, Atkinson, Bayer 8×8 (ordered), Jarvis-Judice-Ninke, Stucki, and None. Free, in your browser.
Drop images here, or click to browse
JPEG, PNG, WebP, BMP, GIF, TIFF, or HEIC · up to 20 files · max 12,000×12,000 px · 50 MB
What it does
Nine conversion algorithms
Luminosity (BT.709) for natural-looking results, Luminance (BT.601) for legacy compatibility, Average, Lightness (HSL), Desaturation (HSL), Single Channel R/G/B for color-filter simulation, Custom Channel Mixer with six filter presets, Threshold with six dithering modes, and Adaptive Threshold for documents.
Six dithering modes
Floyd-Steinberg, Atkinson, Bayer 8×8, Jarvis-Judice-Ninke, Stucki, and None. Pair any with the threshold algorithm to binarize images while preserving tonal detail.
Adjustments that compose
Brightness, contrast, exposure (EV), gamma, highlights, shadows, whites, blacks, sharpness (unsharp mask), grain, vignette, and a tone-curve editor — all preview in under 200 milliseconds on the proxy.
Toning (duotone)
Sepia, selenium, cyanotype, platinum, gold, or a custom hex color, with intensity slider 0–100. Toning is modeled on silver-replacement chemistry, not Instagram-filter math.
Eleven built-in presets
Classic B&W, High Contrast Newspaper, Soft Portrait, Dramatic Landscape, Sepia Vintage, Cyanotype Blueprint, Film Noir, Ansel Adams Zone System, Pencil Sketch, Newspaper Halftone, and Document Scan.
Batch & multi-format export
Drop up to 20 images, apply settings across the batch, and export as a ZIP. Or pick PNG, JPEG (with quality slider), WebP (lossy + lossless), or PDF (single image or multi-page) for any output.
Files never leave your device
All decoding, pipeline math, and encoding happen in your browser. EXIF (including GPS) is stripped from output by default. Open DevTools Network panel during conversion and watch — there are no outbound requests carrying your image.
Reproducible recipes
Every adjustment is encoded in the URL hash. Send a teammate a permalink and they get your exact algorithm, channel mixer, dithering, and toning — applied to whichever image they drop.
How to use Image Threshold & Dithering Tool
- 1Drop your image
Drag and drop any JPEG, PNG, or WebP file onto the upload zone, or click to browse. The decoder runs locally — no upload happens.
- 2Pick an algorithm
Luminosity (BT.709) is the default and matches what most photo editors call "natural" grayscale. Try Single Channel R for dramatic skies, Threshold with Floyd-Steinberg for binarized output, or Adaptive Threshold for documents.
- 3Tune the adjustments
Brightness, contrast, exposure, gamma, sharpness, grain, vignette, and tone curve all preview in real time on a downsampled proxy so sliders feel instant.
- 4Optionally apply toning
Sepia, selenium, cyanotype, platinum, gold, or a custom hex color. Set intensity to 0 to keep the image neutral, or 100 for full duotone.
- 5Export your result
PNG for lossless quality. JPEG with quality slider for smaller files. WebP for modern web. PDF for documents. ZIP for batches.
When to use this
Photographer simulating color filters
Use the channel mixer's "Red Filter" preset to darken a blue sky for dramatic landscape contrast, the way a red gel filter would on Tri-X 400 film. The green channel keeps skin tones smooth; the blue channel exposes atmospheric haze.
Print prepress operator binarizing a halftone
Pick Threshold with Floyd-Steinberg dithering and tune the threshold slider until the proof matches the press dot pattern. Export PDF and hand it to the press.
Document scanner cleaning a smartphone photo
Pick Adaptive Threshold with block size 31 and constant 8. The result is a crisp scan with even tone across the page, even if your phone's camera caught shadows.
Designer creating a vintage sepia look
Apply the Sepia Vintage preset, drop intensity to 70%, add 20% grain, and export JPEG at quality 92. The result looks closer to actual silver-replacement toning than any "sepia filter" SaaS.
E-ink display preparation
E-readers and digital signage tend to display 4–16 grays. Convert your image with Threshold + Bayer 8×8 dithering for predictable, banding-free output.
Common errors & fixes
- We don't recognize that format
- Phase 1 of this tool accepts JPEG, PNG, and WebP. HEIC, TIFF, BMP, and GIF are coming next. For HEIC right now, the HEIC to JPG tool linked below converts to a supported format.
- Image is too large
- Phase 1 caps input at 4,000×4,000 pixels. Resize first with the Image Resizer tool, or wait for the next release which lifts the cap to 12,000×12,000.
- Files larger than 50 MB aren't supported
- The 50 MB cap protects browser memory. Compress with the Image Compressor tool first, or downscale.
- Could not decode this image
- The file may be corrupt or use an unusual codec variant. Re-export from your source app and try again.
- Your browser is too old for this tool
- The converter needs createImageBitmap and canvas. Use a recent Chrome, Edge, Firefox, or Safari (15.4+).
Technical details
| Default algorithm | Luminosity (ITU-R BT.709): Y = 0.2126·R + 0.7152·G + 0.0722·B |
| BT.601 alternate | Y = 0.299·R + 0.587·G + 0.114·B (legacy SD video standard) |
| Dithering implementations | Floyd-Steinberg, Atkinson, Bayer 8×8, Jarvis-Judice-Ninke, Stucki, None |
| Pipeline order | Decode → Algorithm → Adjustments → Toning → Encode |
| Preview strategy | Downsampled 1500-px proxy for live preview; full-resolution pipeline on export |
| Worker boundary | OffscreenCanvas + Web Worker for full-resolution export and heavy preview ops; main-thread fallback on Safari |
| Color profile handling | sRGB assumed; embedded ICC profiles are ignored in v1 |
| Privacy posture | Zero uploads — all image data stays on your device. EXIF stripped on output by default. |
Why "desaturate" is not the same as "convert to grayscale"
CSS's `filter: grayscale(1)` and HSL desaturation both produce monochrome output, but they collapse colors using simple averages — bright red ends up the same gray as middle blue, even though the human eye perceives them at very different brightnesses.
Luminosity BT.709 weights the channels (R 0.2126, G 0.7152, B 0.0722) so the resulting gray matches how the eye sees brightness. Red becomes dark, green becomes light, blue becomes very dark — same as professional desaturation in Photoshop's "Image > Mode > Grayscale" command.
For most photos, BT.709 is the right default. For technical or scientific imagery where channel equality matters, use Average. For matching legacy SD video, use BT.601. The conversion you pick changes the final picture significantly — that's why we ship nine.
How channel mixing simulates color filters
Before digital, black-and-white photographers screwed colored gel filters onto their lenses to control how colors mapped to grays. A red filter darkened blue skies (making clouds pop), an orange filter mildly lightened skin, a green filter brightened foliage, and an infrared filter made trees go bright white and the sky go nearly black.
The channel mixer reproduces these filters exactly. The "Red Filter" preset uses (95, 5, 0) — pulling 95% from the red channel and almost nothing from green or blue. The result mimics what Tri-X 400 film would have done in 1965 with a #25 red filter. The "Infrared Simulation" preset (-50, 200, -50) pushes the green channel to its limits to approximate the spectral response of IR film.
Use sum-to-100 lock to preserve exposure when adjusting one slider — the others auto-adjust so the brightness budget stays balanced.
Threshold and dithering: from photo to pure black and white
Threshold turns every pixel into either pure black (0) or pure white (255) based on a single decision boundary. With no dithering, the result loses all tonal detail — useful for line art, logos, or stencil prep, but it crushes photographs.
Dithering simulates middle grays by scattering black and white pixels in patterns the eye blends together. Floyd-Steinberg (1976) is the classic error-diffusion algorithm — it propagates the rounding error from each pixel to its right and bottom neighbors using weights 7/16, 3/16, 5/16, 1/16. The result preserves gradients with a characteristic "noisy" texture.
Atkinson (Bill Atkinson, MacPaint 1984) diffuses less error per pixel for higher contrast — what made the original Mac look so crisp. Bayer 8×8 (ordered dithering) uses a fixed threshold matrix instead of error diffusion, which produces a regular pattern useful for retro-game aesthetics or e-ink displays. Jarvis-Judice-Ninke and Stucki are higher-quality variants of error diffusion that spread error across two rows.
Pick the dithering algorithm based on output medium: Floyd-Steinberg or Stucki for screen and modern print, Atkinson for retro Mac aesthetic, Bayer for predictable banding-free e-ink output, Jarvis for highest fidelity at the cost of speed.
Frequently Asked Questions
Will my photos be uploaded to a server?
- No. Every step — decode, algorithm, adjustments, encode — happens in your browser. Open DevTools, switch to the Network panel, and watch during conversion: there are no outbound requests carrying your image bytes. The HEIC-decoder library (when needed) is fetched once from a public CDN before any file is selected; nothing carrying your photo data is ever sent out.
What's the difference between Luminosity BT.709 and Luminance BT.601?
- BT.709 (R 0.2126, G 0.7152, B 0.0722) matches modern HD video and is what most professional editors mean by "grayscale". BT.601 (R 0.299, G 0.587, B 0.114) is the older SD-video standard with slightly warmer rendition. For photo work today, BT.709 is the right default; for matching legacy assets (DVD-era video, old web), use BT.601.
Why does my photo look flat after "desaturate" but better after Luminosity?
- HSL Desaturation uses (max+min)/2 — which treats every color as having the same brightness as its lightness, ignoring that the human eye sees green ~7× brighter than blue. Luminosity uses perceptual weights that match how you actually see brightness. For natural-looking grayscale, always prefer Luminosity (BT.709). Desaturation is included for technical and scientific use cases where channel equality matters.
How do I get the most dramatic landscape look?
- Pick the channel mixer's "Red Filter" preset, drop the gamma to ~0.85, push contrast to +30 and shadows to -20. The result is the same darkroom move photographers made for decades to make skies pop and clouds glow.
Which dithering algorithm should I use?
- Floyd-Steinberg for general-purpose, modern output. Atkinson for retro/Mac aesthetic. Bayer 8×8 for e-ink and predictable patterns. Jarvis-Judice-Ninke when you have time for the highest quality. None when you want pure binary (line art, stencils, logos).
Will EXIF data be preserved in my output?
- No, EXIF is stripped by default. The pipeline re-encodes through canvas which doesn't carry metadata across. You can toggle "Preserve EXIF" in the Output panel if you need it. GPS coordinates are stripped even when preservation is on, for privacy.
Can I save my own presets?
- Yes. Tune the algorithm, adjustments, and toning to taste, then click "Save preset" — give it a name. You can save up to 10 custom presets to your browser's localStorage. You can also export them as JSON and import on another device.
What does the share link contain?
- Only the recipe — algorithm, all numeric parameters, toning, and filename. It never contains image bytes. Send a teammate a permalink and they get the exact same conversion settings, applied to whichever image they drop.
How big a batch can I process at once?
- Up to 20 images per batch. The output is delivered as a ZIP. The Worker processes them serially with per-file progress.
What happens to my files when I close the tab?
- Nothing is persisted. Decoded image data, in-progress conversions, and all object URLs are released when you close the tab or click Reset. Your custom presets and history (recipe-only) are kept in localStorage.
Can I convert HEIC photos from my iPhone?
- HEIC support is coming in the next release. For now, use the HEIC to JPG tool linked below to convert HEIC to JPEG first, then drop the JPEG into this converter.
Will this work on my phone?
- Yes, on any modern mobile browser. Touch the upload zone to pick photos from your library. Pinch to zoom in the preview. Controls collapse into a tabbed panel below the preview on narrow screens.
Related Tools
Image Compressor
Reduce file size without losing visual fidelity.
Image Resizer
Resize images to exact dimensions, percentage, or target file size — 40+ social media presets, bulk mode.
HEIC to PDF
Convert iPhone HEIC photos to PDF — combine into one multi-page document or batch as individual PDFs, runs in your browser.
HEIC to JPG Converter
Convert HEIC photos from iPhone to JPG or PNG — free, instant, runs in your browser.
Image to Text
Extract text from any image using free browser-side OCR.