Two-colour palettes
A complement is the cheapest way to get a second colour that is guaranteed to sit opposite the first without clashing. Invert the brand hex and adjust from there.
Browser tool · 6 modes · 0 uploads
A colour inverter answers two different questions: what is the complement of this hex code, and what a whole photograph looks like when inverted. Both are 255 − x.
The bytes stay in the tab. Clear the network panel, then invert a photo: no request appears, because the work happens in page memory.
No 2 MP preview cap, no server-side resize. A 48 MP frame comes back at 48 MP.
Whole image, a single channel, skin-safe, or dialled back to any strength between 0 and 100%.
About
In RGB, the complement of a colour is not a matter of taste. Take each channel, subtract it from 255, and you have the colour on the opposite side of the wheel: #FF0000 becomes #00FFFF, #3366CC becomes #CC9933. The arithmetic is exact, reversible and identical for every pixel, which is why the same operation works on a single swatch and on a 48 MP photograph.
Painters mean something slightly different by "complementary". The traditional wheel is built on red-yellow-blue, where red’s opposite is green; in RGB, red’s opposite is cyan. Both are useful, but they disagree, and mixing them up is the most common reason an inverted palette looks wrong to a designer.
Specification
| Input formats | JPG, PNG, WebP, GIF (first frame), BMP, AVIF where the browser decodes it |
|---|---|
| Maximum size | No fixed cap. Tested to 8000 × 6000 (48 MP) on a machine with 8 GB of RAM |
| Speed | 1920 × 1080 in well under a second; 48 MP in about four seconds |
| Transparency | Alpha is never touched. PNG output keeps it, JPG output is flattened onto white |
| Output | PNG (lossless, alpha preserved) or JPG at quality 0.92 |
| Uploads | None. The file is read with the File API and drawn to a canvas that never leaves the page |
Reference
The table is the same arithmetic applied to eight common colours. Every pair is exact: invert either side and you get the other.
| Colour | Hex | Complement | Hex |
|---|---|---|---|
| Red | #FF0000 | Cyan | #00FFFF |
| Orange | #FF7F00 | Azure | #0080FF |
| Yellow | #FFFF00 | Blue | #0000FF |
| Green | #00FF00 | Magenta | #FF00FF |
| Royal blue | #3366CC | Ochre | #CC9933 |
| Near black | #1A1A1A | Paper grey | #E5E5E5 |
| Cream | #F5F0E6 | Ink | #0A0F19 |
| Mid grey | #808080 | Mid grey | #7F7F7F |
Modes
| Mode | What it does | When to use it |
|---|---|---|
| Full invert | 255 − value on R, G and B | A true negative. Also the base layer for duotone and print work. |
| Red channel only | R inverted, G and B untouched | Pushes the whole image toward cyan-green. One plate of a two-colour screen print. |
| Green channel only | G inverted, R and B untouched | Magenta shift. Good for testing how a muted palette reads in print. |
| Blue channel only | B inverted, R and G untouched | Yellow shift. Useful for warm/cool split toning without a curve tool. |
| Smart invert (keeps skin) | Skips pixels inside the skin-tone range | Portraits. Faces stay recognisable while the background turns into a negative. |
| Intensity 0–100% | Blends the negative with the original | Anything that needs a hint of the effect rather than a full inversion. |
Method
Paste #RRGGBB into the field below and read the complement. This is the fastest way to build a two-colour palette that is guaranteed to be opposite rather than merely different.
Drop a file into the tool at the top of this page. Every pixel is converted with the same rule, which makes the result a true negative rather than a recolour.
An RGB complement of a saturated brand colour is often louder than the original. Keep the result as a starting point, then pull saturation back 10–20% before it goes into a real layout.
Use cases
A complement is the cheapest way to get a second colour that is guaranteed to sit opposite the first without clashing. Invert the brand hex and adjust from there.
Inverting a light palette gives a dark one with the same relationships. It will not be perfect — saturated accents usually need reducing — but it is a better first draft than picking greys by eye.
Invert an image, then map the result onto two inks. The negative has the highlight and shadow structure a duotone needs already built in.
If two colours look identical in the negative, they have the same luminance and will fail a contrast check. Inverting is a rough but instant way to catch that.
Six channels, one subtraction, and the whole complement relationship becomes visible. It is the shortest demonstration of what an RGB colour actually is.
Inverting a label shows how the design reads on a dark substrate before you commit to a foil or a varnish.
Under the hood
#3366CC is R 51, G 102, B 204. Subtract each from 255: 204, 153, 51, which is #CC9933. The luminance is preserved in the sense that the sum of the channels is unchanged, which is why a complementary pair has the same total brightness even though one reads warm and the other cool.
Mid-grey is the fixed point: #808080 inverts to #7F7F7F, one step away, because 255 − 128 = 127. That one-unit error is why inverting an 8-bit image twice gives back the original exactly only when the operation is symmetric — and it is, since 255 − (255 − x) = x for every integer x in range.
Questions
No. On the traditional red-yellow-blue wheel, red’s opposite is green. In RGB, red inverts to cyan. Screen work uses RGB, so the tool follows RGB — but a print designer may want the RYB answer instead.
Cyan is what you get when you remove red from white. Since inverting is subtracting each channel from white (255), a pixel with full red and no green or blue becomes a pixel with no red and full green and blue — cyan.
Yes, pixel by pixel. Every colour in the result is the exact complement of the colour that was in that position, which is why a negative of a warm photograph reads cool overall.
A real palette. Inversion preserves the relationships but not the intent: pure white becomes pure black, and saturated accents become their loudest opposites. Use the inverted version as a reference, then hand-tune.
Not with this tool — it is a whole-pixel operation. For a single colour you need a hue-selection mask in an editor, or you can invert the swatch here and paint it back in.
Because 255 − 128 = 127. Mid-grey sits half a step off centre in an 8-bit range, so the complement is #7F7F7F. Inverting that again returns #808080, so the pair is stable even though the two greys differ by one.
A server-side API and a desktop batch runner are planned. The browser tool above stays free and unlimited: no account, no watermark, no file cap.
Full resolution, all six modes, batch and ZIP. If a page ever asks you to register to invert an image, it is not this one.
Keep going