Image Color Inverter
Invert decoded image colors locally while retaining transparency, then download a PNG.
This tool processes its input contents in your browser instead of sending them to a processing service. Page, asset and fixed usage-measurement requests are described on the Privacy page.
Subtract each decoded RGB channel from 255 while retaining alpha, then inspect and download the local inverted PNG.
How to use it
- 1Choose one JPEG or still PNG.
- 2Review the automatic inverted-color preview beside the original.
- 3Download the transparent PNG.
- 4Optionally save the documented inversion rule as JSON.
Example
- Input
- RGBA (255,0,0,255) and (128,128,128,255).
- Output
- RGBA (0,255,255,255) and (127,127,127,255).
This is a decoded RGB effect, not a scanned-film restoration process.
What happens to your data
Inversion runs over a bounded pixel copy inside the tab; it never needs to send the picture to an image server. Alpha is not inverted. Source bytes, filenames and pixels are absent from the optional settings report, and the tool writes no persistent photo history. A downloaded PNG can still contain the visible information in the picture itself, so local processing is not redaction.
Last updated November 2026
Invert a photo's decoded RGB colors and download a transparent PNG. Select a local JPEG or still PNG to see the original and inverted result side by side. The output is prepared automatically, so the usual path is choosing an image and downloading the result. Transparent pixels keep their decoded alpha instead of turning into an opaque background.
This is a direct color-negative effect for icons, artwork, diagrams and photos. It does not replace text editing, detect a foreground object or repair a scanned film negative. A film scan's orange mask, exposure and color response need a more specific photographic workflow.
How it works
For each decoded 8-bit pixel, the transform sets red to 255 minus red, green to 255 minus green, and blue to 255 minus blue. Alpha is copied unchanged. Opaque black becomes white; white becomes black; red becomes cyan. Mid-gray 128 becomes 127 because the channel range has 256 integer values, not a central integer that inverts to itself.
The calculation happens after the browser has interpreted the source image's orientation and color information. It is channel inversion in decoded sRGB, not subtraction of emitted light, photographic development or a promise of colorimetric complements. Inverting twice returns the original decoded RGB values in the helper's numeric model; two complete decode/export cycles can still introduce partial-alpha rounding or metadata differences.
A local canvas displays the previews and produces the PNG. The checkerboard sits behind the canvas; it is never added as image content. Fully transparent pixels remain invisible and the output can keep a transparent background. Canvas may normalize invisible RGB and round partially transparent colors when converting between premultiplied and straight alpha. Original JPEG bytes, EXIF and arbitrary metadata are not retained; the exported PNG may be larger than the selected JPEG.
Input validation uses actual PNG/JPEG structure and dimension bounds rather than trusting a filename extension. The limits are one 20-MiB file, 16 million decoded pixels and 8,192 pixels per side. Unsupported formats, animation and 16-bit PNG are refused. Clear and replacement revoke old URLs and invalidate running work. Cancel prevents the cancelled generation from exposing a new download; processing checks cancellation between bounded pixel chunks and after image encoding. An optional settings JSON documents the rule and dimensions without copying the source filename or picture.
Worked example: A red pixel becomes cyan
- Input
- RGBA (255,0,0,255), (12,34,56,128), and (128,128,128,255).
- Result
- Helper RGBA results: (0,255,255,255), (243,221,199,128), and (127,127,127,255).
The formula preserves alpha exactly before canvas encoding. Exported partial-alpha RGB can round; opaque-pixel PNG results are checked exactly.
Common use cases
- Creating a negative-color version of a graphic
- Turning a dark monochrome icon into a light one
- Examining complementary decoded RGB values
- Preparing a transparent inverted PNG for a slide
Frequently asked questions
Is this a film-negative scanner?+
No. It only subtracts each decoded RGB channel from 255. It does not remove an orange mask, infer exposure, recover clipped highlights or apply a film stock's response curve.
Will it invert transparency too?+
No. Alpha is copied from the decoded source. Inverting alpha would expose pixels that were meant to stay invisible. Preview checkerboard squares are not included in the PNG.
Why does gray 128 become 127?+
The exact channel rule is 255 minus the input. Since 255 is odd, no integer channel value is its own inverse. Inverting 127 produces 128, and inverting 128 produces 127.
Can I recover the original by inverting again?+
Applying the numeric transform twice restores the starting decoded channels. Saving and reopening is a different operation: encoding, profile conversion, metadata removal and premultiplied-alpha rounding can prevent exact recovery of the original file.
Why is the download PNG?+
PNG can represent transparency without adding a matte background. It also avoids a new JPEG quality setting. That convenience can increase file size and does not imply the original metadata or compressed bytes are retained.
Where is the image processed?+
Inside the current browser tab. This tool does not upload the selected photo or put its pixel data in the URL or persistent storage. The optional downloaded report records the rule, dimensions and changed-pixel count only.
Standards and limitations
Related tools
Image Grayscale
Make a photo grayscale with a clear brightness method and a transparency-preserving PNG.
Image Threshold
Convert an image to two-tone black and white, with a threshold and explicit alpha controls.
Image Color Picker
Pick original image pixels by coordinates, inspect HEX and RGBA, and export local swatches.
Image Compare
Compare same-size JPEG or PNG pixels locally; export a difference PNG and JSON report.