Color inversion replaces every red, green, and blue byte in a decoded photo with 255 minus the original channel value, while leaving the alpha channel untouched. Applying that simple rule to each pixel turns a photo into its photographic negative, producing a still PNG ready to download. The transformation is fully deterministic, so running it twice on the same image returns the original decoded bytes, and every primary maps to a fixed partner: black becomes white, white becomes black, red becomes cyan, green becomes magenta, and blue becomes yellow. Because the rule operates on raw byte values rather than on perceived color, it does not linearize gamma, model perceptual complementary colors, correct exposure, or remove an orange mask from a scanned negative. It is a clean, reversible visual effect that runs locally on any supported photo without an account, an upload, or a subscription. The browser tool that does this is the Invert Image Colors tool from Lizely, and the rest of this article explains what each color becomes, when inverting a photo is genuinely useful, and exactly how to run the operation on a file you already have.

What Inverting a Photo Color Actually Means
When you invert a photo's color, the tool reads each pixel through the browser's Canvas API, separates the pixel into its red, green, blue, and alpha components, and replaces the three color bytes with their complementary values. The exact rule is the same on every pixel: output red equals 255 minus input red, output green equals 255 minus input green, and output blue equals 255 minus input blue. Alpha is copied without modification, so a fully transparent pixel stays fully transparent and a half-transparent pixel stays half-transparent in the result.
Because the rule applies byte by byte, applying the inversion twice returns the original decoded bytes. Mathematically, 255 - (255 - x) = x for any byte value between 0 and 255, which is why the effect is reversible. It also means there is no rounding, no perceptual curve, and no per-channel weighting; an input RGB of (120, 80, 200) becomes exactly (135, 175, 55) because 255 - 120 = 135, 255 - 80 = 175, and 255 - 200 = 55. That simple math runs on every pixel of the decoded image before the result is encoded as a still PNG.
The transformation is local to the browser tab. Reading, format detection, decoding, pixel access, the byte swap, preview rendering, and PNG export all happen on the current device, and the image is not uploaded to Lizely or sent to any external service. This matters whenever a photo contains a draft, a private document, a personal scan, or a screenshot you do not want leaving your computer.
How Each Color Maps After Inversion
Because the formula is fixed, every visible color in the photo has a known destination. The table below shows the most common reference colors and what each one becomes after inversion. These mappings are defined by the byte rule, so they hold for any photo at any resolution, including pixels that were originally very close to a pure primary.
| Input color | RGB input | RGB output | Becomes |
|---|---|---|---|
| Pure black | (0, 0, 0) | (255, 255, 255) | Pure white |
| Pure white | (255, 255, 255) | (0, 0, 0) | Pure black |
| Pure red | (255, 0, 0) | (0, 255, 255) | Cyan |
| Pure green | (0, 255, 0) | (255, 0, 255) | Magenta |
| Pure blue | (0, 0, 255) | (255, 255, 0) | Yellow |
| Mid-gray | (128, 128, 128) | (127, 127, 127) | Mid-gray (one step darker) |
| Cyan | (0, 255, 255) | (255, 0, 0) | Red |
| Yellow | (255, 255, 0) | (0, 0, 255) | Blue |
Mid-gray is the one mapping that looks counter-intuitive: (128, 128, 128) inverts to (127, 127, 127), which is still visually gray but one byte darker. Applying the inversion twice returns the same decoded byte values, because 255 minus (255 minus x) equals x for every byte value.
When Photo Color Inversion Is Useful
Color inversion is more than a visual curiosity. Several everyday tasks benefit from a clean negative of a photo:
- Designing for dark interfaces. Designers building dark-mode mockups often start from a light-mode screenshot and use inversion as a fast first pass for the layout, leaving the actual color palette for later.
- Finding dust, scratches, and scan artifacts. Tiny light specks on a dark scan become dark specks on a light background, which the eye often picks up more easily on a photo negative.
- Creating printable stencils. A photo with dark text on a light background inverts to dark background with light "holes" where the text was, which is a quick way to prepare a cut or print stencil.
- Approximate color-blindness checks. Some users with red-green color vision differences find inverted versions of complex charts easier to read; the inverse is a quick way to test whether contrast is doing the heavy lifting in a UI mockup.
- Hidden detail in old photographs. Inverting a faded print or a poorly exposed scan can pull out edge contrast that the original view was hiding.
For pure color picking rather than inversion, an Image Color Picker works alongside this tool by reporting the exact HEX and RGB values of any pixel in the inverted result, so a reader can verify what a specific shade became.
How to Invert a Photo Color Step by Step
Open the Invert Image Colors page in any modern desktop browser, then run the three-step flow below on the photo you want to flip.
- Choose a supported file. Click the file picker and select a PNG, JPEG, GIF, or WebP from your computer. The tool checks the actual byte container of the file rather than trusting the filename extension or the operating-system MIME label. A complete PNG needs the signature, first IHDR structure, and terminal IEND; a JPEG needs SOI, a following marker, and terminal EOI; a GIF needs a GIF87a or GIF89a header plus the trailer; a WebP needs an exact RIFF byte count, the WEBP marker, and a bounded VP8, VP8L, or VP8X first chunk. The reported File size must be at most 15 MiB, and the actual ArrayBuffer length is checked again after reading. Wait for byte-container detection, browser decoding through createImageBitmap, and dimension validation to finish before continuing.
- Run the inversion and compare the previews. Once the file decodes, the tool draws it to a Canvas at natural size, reads the full ImageData, applies the 255-minus-channel rule to every pixel, and writes the matrix back. The page then shows a source preview and a complete natural-size PNG preview of the inverted result. Compare them side by side to confirm the inversion looks the way you expect, and check that the page reports positive dimensions for both.
- Confirm dimensions and output size, then download. The page reports the input dimensions and the exact byte size of the encoded PNG output. If dimensions look right and the output is at most 32 MiB, click the download button to save the still PNG. The output is always a complete PNG; nothing is silently resized, cropped, sampled, or partially processed.
File Limits and What Happens to Animated Photos
The tool has separate, exact limits on input and output, and they exist for different reasons. The input budget is 15 MiB, but compressed JPEG, GIF, or WebP files can decompress into much larger pixel buffers, so the tool also enforces a per-edge cap of 8,192 pixels and a total area cap of 24,000,000 pixels. One byte, one edge pixel, or one area step beyond those limits is rejected before the result is published. Exact boundary values are accepted; anything beyond is not.
The output budget is independently 32 MiB because a complete PNG re-encode of a photograph is almost always larger than its compressed JPEG or WebP source. The page checks the output Blob for a non-null value, a valid size, and a size no greater than 32 MiB before turning it into a download URL, so a runaway encode cannot publish a truncated or oversized file.
Animated GIF and animated WebP inputs are handled in a deliberately simple way: the browser-decoded initial frame becomes one still PNG. Later frames, timing, looping, palettes, and disposal behavior are not preserved, so the tool is not the right choice when you need to keep an animation alive. Keep the original file whenever animation, embedded profiles, or metadata matter, because Canvas export does not promise to preserve EXIF, GPS, comments, ICC profiles, or other source metadata either.
What This Tool Does Not Do
The Invert Image Colors tool is a deterministic byte-channel visual effect, not a color-managed conversion and not film-negative restoration. It does not linearize gamma, model perceptual complementary colors, remove an orange mask from a scanned negative, balance a faded print, correct exposure, or perform tonal grading. It works on the RGBA bytes the browser's Canvas actually returns, which means a fully transparent color stays invisible even though its RGB slots are still processed; the tool cannot recover hidden source-file channel data that never reached ImageData, and a browser decoder or Canvas may normalize visually hidden RGB before getImageData returns it.
The PNG export also does not promise to preserve EXIF, GPS, comments, ICC profiles, provenance, or any other source metadata. Treat the result as a clean visual effect rather than a faithful archival copy, and keep the original file alongside the inverted output. For other operations on the same photo, the Image Flipper, Pixelate Image, Blur Image, and Image Overlay tools cover mirroring, pixelation, blur, and compositing in the same browser-only workflow.