Search for an iridescent color and you will be handed a hex code. Usually something pale and lilac, sometimes a mint, always presented the same way as any other swatch, as though iridescent were a place on the colour wheel somewhere between periwinkle and seafoam. There are palette pages offering an iridescent color code the way they would offer one for teal.
We built a physical model of a real iridescent surface and measured what it does. The verdict is blunt. Take one soap film, average its colour over every thickness it passes through as it drains and every angle you could look at it from, and you get #615F60: L* 40.63, chroma 0.96, sitting 1.34 CIEDE2000 from a neutral grey of the same lightness. That is the honest single-hex answer, and it is a wall primer.
The grey is not a failure of the measurement. It is the finding. Iridescence is not a colour that a surface has. It is a rate, the speed at which the colour changes as you move, and the moment you average it away you are left holding the thing that has no colour at all. So the interesting question is not which hex to use. It is how fast the rate actually is, and whether the familiar description of it survives being checked. One part of it does not.
What we modelled
A thin film reflects light twice, once off the top surface and once off the bottom, and the two reflections arrive slightly out of step. The size of the mismatch depends on how thick the film is, how steeply you are looking through it, and the wavelength. Some wavelengths cancel and some reinforce, and the light that survives is coloured.
We implemented this exactly rather than approximately, using the Airy formula for a single layer, which sums the infinite series of internal bounces instead of stopping at two, and the transfer matrix method for stacks of many layers. Both were run separately for the two polarisations and averaged, because daylight is unpolarised. Water got its measured dispersion rather than a flat 1.33, which matters when the whole effect is wavelength dependent: the fit returns 1.33253 at 589 nm against a true value of 1.3330.
The resulting reflectance spectrum was then multiplied by D65 and integrated against the CIE 1931 2 degree observer, both taken at 1 nm from the Colour and Vision Research Laboratory tables, and converted to CIELAB and sRGB. Every distance quoted below is CIEDE2000, and every time we say a step is visible we mean it cleared 2.3, which is the just noticeable difference we measured for this site.
Two checks before trusting any of it. At 550 nm the model puts its reflectance maximum at 103 nm of film and an exact zero at 206 nm, which are the textbook quarter wave and half wave thicknesses to the nanometre. And the single air to water interface returns 2.03 percent, against the standard 2.0. The physics is being reproduced, not approximated.
The soap film palette, with the brightness left in
Here is the sequence a soap film runs through as it thins, seen head on. The first swatch in each row is the colour as measured, relative to a perfect reflector. The second is the same colour exposed up by a common factor of 11.6 so that the sequence is actually visible on a screen.
| Film | Exposed up | Thickness | Light back | L* | C* | Hue |
|---|---|---|---|---|---|---|
| #1C232C | 30 nm | 1.62% | 13.4 | 6.9 | 268° | |
| #38404A | 60 nm | 5.02% | 26.8 | 6.9 | 262° | |
| #494E50 | 90 nm | 7.47% | 32.9 | 2.4 | 224° | |
| #4F4F47 | 110 nm | 7.68% | 33.3 | 5.1 | 111° | |
| #4F4933 | 130 nm | 6.64% | 31.0 | 13.9 | 95° | |
| #473200 | clips | 160 nm | 3.59% | 22.3 | 31.7 | 81° |
| #310720 | 190 nm | 0.91% | 8.3 | 24.6 | 346° | |
| #000F45 | clips | 220 nm | 0.75% | 6.8 | 40.0 | 298° |
| #003F50 | clips | 260 nm | 4.07% | 23.9 | 19.8 | 233° |
| #3B5032 | 300 nm | 6.88% | 31.5 | 21.1 | 134° | |
| #544301 | clips | 340 nm | 5.94% | 29.3 | 38.0 | 89° |
| #43034A | 400 nm | 1.73% | 14.0 | 46.3 | 325° | |
| #004A2B | clips | 480 nm | 4.70% | 25.9 | 39.1 | 163° |
| #58333F | clips | 560 nm | 4.77% | 26.1 | 18.4 | 358° |
| #00472D | clips | 700 nm | 4.65% | 25.7 | 30.5 | 161° |
| #14403C | 900 nm | 4.15% | 24.2 | 16.2 | 188° | |
| #3D3737 | 1200 nm | 3.97% | 23.6 | 2.8 | 22° | |
| #3C3839 | 1500 nm | 4.09% | 24.0 | 1.6 | 7° |
The first thing the table says is that a soap film is dark. Its best luminous reflectance across the entire sweep is 7.75 percent, at 103 nm. More than 92 percent of the light goes straight through. We only experience bubbles as bright objects because we see them against something darker, or with a lamp behind them. Seven of those eighteen brightened swatches clip sRGB at an exposure of 11.6, which is its own small piece of evidence: the light coming back is weak but extremely pure.
The second thing is that iridescence has a floor. Below 24 nm the film returns under 1 percent and reads as black. This is the black film that shows up at the top of a bubble just before it pops, and it is not a hole. It is a film so thin that the two reflections cancel across the whole visible range at once.
The purest colours are not the thinnest ones
The common way to describe the thin film sequence is that first order colours are the vivid ones and things fade from there. Our numbers say the opposite at the start. Chroma at the first maximum, around 45 nm, is only 7.53. It climbs to 31.83 by 162 nm, 42.38 by 212 nm, and peaks at 47.64 at 407 nm, which is roughly the third order. Only then does it fall away.
The reason is worth having. A very thin film has one broad, gentle hump of reflectance covering most of the visible range, so it reflects everything fairly evenly and comes out near neutral. It takes a few orders before the spectrum develops sharp enough peaks and notches to produce a saturated colour. Past that, the peaks crowd together until several of them fall inside the width of a single cone response and the eye averages them back into white. Chroma is above 10 out to 1033 nm, then 2.81 at 1200 nm and 1.55 at 1500 nm. That is the same integration argument behind metamerism: past a certain point, extra spectral detail is invisible because the eye only has three numbers to describe it with.
The rate, which is the actual answer
Now take one film, fix it at 340 nm, and walk around it. This is the measurement that defines iridescence, because it is the only one a pigment cannot reproduce.
| Seen from | Colour | L* | C* | Hue | Peak | From head on |
|---|---|---|---|---|---|---|
| 0° | #544301 | 29.3 | 38.0 | 89° | 603 nm | 0.00 |
| 10° | #534500 | 29.7 | 38.9 | 92° | 598 nm | 1.39 |
| 20° | #504A05 | 31.0 | 38.1 | 99° | 583 nm | 4.89 |
| 30° | #49501D | 32.5 | 30.7 | 112° | 559 nm | 10.67 |
| 45° | #375948 | 34.8 | 17.2 | 161° | 512 nm | 23.18 |
| 60° | #06667B | 39.6 | 25.1 | 228° | 461 nm | 37.33 |
| 80° | #009DE1 | 59.1 | 51.6 | 246° | 413 nm | 56.62 |
From head on to 80 degrees the colour travels 56.62 CIEDE2000, from an olive gold at hue 89 degrees to a strong cyan blue at hue 246. The peak reflected wavelength slides from 603 nm to 413 nm, a shift of 196 nm out of 603. That ratio, 0.675, matches the cosine of the refracted angle to four decimal places at 0.6744, which is the law the whole effect obeys and another check that the model is behaving.
Counted properly, one single physical point on that film shows 33 distinguishable colours across the viewing hemisphere, each more than one just noticeable difference from the last. A matte pigment, over the same range of angles, shows exactly one. The gap between 33 and 1 is the entire content of the word iridescent, and a hex code sits on the wrong side of it.
The part of the usual explanation that is wrong
Iridescence is always introduced as a colour that shifts when you tilt it. That is true on average and badly misleading in detail, because the rate is nowhere near constant. We measured it locally:
- Head on, the colour moves 0.015 CIEDE2000 per degree. One visible step takes 155 degrees of turning, which is to say it does not happen.
- At 20 degrees off axis it is 0.50 per degree, one step every 4.6 degrees.
- At 45 degrees it is 1.18 per degree, one step every 1.94 degrees. At arm’s length, 50 cm, that is 17 mm of head movement.
The rate at a glancing angle is 80 times the rate head on. Iridescence is therefore remarkably stable when you look straight at it and frantic at the edges, which follows from the cosine law having zero slope at zero degrees. Nobody describes it that way, and it is the most useful thing in this article if you have ever tried to photograph a bubble and wondered why the middle sat still while the rim went wild.
We checked that 340 nm was not a lucky pick by repeating the test at every thickness from 120 nm to 900 nm. The median first visible step arrives at 11.25 degrees, with a range from 5.00 to 26.00. The stability near the axis is a property of the geometry, not of the film we happened to choose.
A bubble of one uniform thickness still has rings
Everyone explains bubble rings as thickness variation, because soap drains downward and the top gets thinner. That is real, but it is not required. A sphere curves away from you, so at fractional radius u from the centre of the disc the local angle of incidence is simply arcsin(u). A bubble of one perfectly uniform thickness paints the entire angle sweep onto its own face for free.
Running the 340 nm film through that geometry gives 39 distinguishable bands from centre to rim and a total journey of 64.3 CIEDE2000. The distribution is the striking part. Because arcsin compresses hard near the edge, and because the colour rate is already accelerating with angle, the bands pile up outward: 18 of the 39, 46 percent, begin within the outer tenth of the radius, a ring holding only 19 percent of the visible area. Half the whole colour sequence is crammed into the outermost 13 percent of the radius.
Look at any photograph of a bubble and this is what you see. A broad calm wash across the middle, then a tight crowd of bands hugging the edge. Half of that pattern is geometry rather than drainage.
Thickness does not fix the colour
Thin film charts tend to imply a lookup table, thickness in and colour out. It does not work, because the colour depends on what is on the other side. A soap film has air below it. An oil slick has water below it, and the index step from oil at 1.47 to water at 1.33 is far smaller than from oil to air, so the second reflection is much weaker and the interference much shallower.
- At 340 nm, soap in air is #544301, hue 89 degrees, chroma 38.1. Oil on water at the same 340 nm is #452E34, hue 1.9 degrees, chroma 11.9. They are 27.84 CIEDE2000 apart, and the oil has less than a third of the chroma.
- Across 200 to 500 nm the two disagree by 12.27 to 30.77 CIEDE2000 at matched thickness. Never once do they land on the same colour.
Which explains something you can check on the way home. A rainbow oil slick on wet tarmac never looks as vivid as a soap bubble, and it is not the lighting. The bottom mirror is simply worse.
The peacock does it with a stack
A soap film has two surfaces. A peacock barbule has a lattice of melanin rods sitting in keratin, which behaves like many surfaces in a row, all reflecting in step. Zi and colleagues measured the structure in 2003 and published the numbers: lattice constants of about 140, 150 and 165 nm for the blue, green and yellow barbules, roughly 9 to 12 periods in the blue and green, 6 in the yellow and 4 in the brown, with refractive indices of 1.54 for keratin and 2.0 for melanin.
We fed those published numbers into a multilayer stack and asked what colour comes out. The real structure is a two dimensional lattice of rods and ours is a one dimensional stack of sheets, so this is a model of the bird rather than the bird. It still lands close:
| Barbule | Lattice | Layers | Modelled | Published | Light back | C* |
|---|---|---|---|---|---|---|
| Blue | 140 nm | 11 | 497 nm | 470 to 500 nm | 99.1% | 65.7 |
| Green | 150 nm | 11 | 532 nm | 520 to 540 nm | 99.1% | 90.1 |
| Yellow | 165 nm | 6 | 587 nm | about 580 nm | 88.6% | 84.0 |
| Brown | 190 nm | 4 | 680 nm | 630 nm and up | 71.5% | 62.9 |
Blue, green and yellow all come out within roughly 10 nm of the published reflectance peaks, from nothing but the lattice constant. Brown does not, arriving at 680 nm against a published 630 and up, which is the expected place for this model to fail: the brown barbule has only about four periods, so its reflectance peak is broad and its colour owes more to the melanin’s own absorption than to the lattice.
What the extra layers are for
Stepping the blue barbule from 1 period up to 40 gives a clean answer to a question the literature states but rarely quantifies. Chroma reaches 90 percent of its ceiling at 5 periods and 99 percent at 6, then stops moving entirely. Reflectance keeps climbing: 88.6 percent at 6 periods, 97.4 at 9, 99.1 at 11.
So the bird’s 9 to 12 layers are not buying colour. Six would have done that. Everything past the sixth layer is buying brightness. Against the soap film, the finished stack returns 11.9 times the light and 1.7 times the chroma, which is why a peacock reads as a jewel in ordinary daylight and a soap film needs a dark background.
The stack does not buy stability, though, and this is the part we found genuinely surprising. The fractional blue shift from head on to 60 degrees is 0.879 at 2 periods, 0.868 at 4, 0.867 at 11 and 0.869 at 40. It is the same shift every time, because the cosine law does not care how many layers there are. What changes is how obvious it looks: the same physical shift measures 12.4 CIEDE2000 at 2 periods and 47.1 at 11. Purity does not stabilise an iridescent colour. It makes the instability visible. Every layer the peacock adds to sharpen its blue also makes that blue flinch harder when the bird turns.
Worth noting where this sits against pigment. A flamingo is pink because of a molecule, and it looks the same pink from every angle. A blue iris has no blue pigment in it at all. The peacock’s blue is closer to the eye than to the bird beside it.
Iridescent clouds are a different thing with the same name
Cloud iridescence gets filed under the same word and it is not thin film interference at all. It is diffraction around droplets, the inner part of a corona, and the colour comes from the fact that the diffraction angle scales with wavelength. For 10 micron droplets the first ring sits at 3.08 degrees for blue at 440 nm and 4.55 degrees for red at 650.
That 1.47 degree gap is the colour. For scale, the full moon is 0.52 degrees across, so the spread is about 2.8 moon widths of sky.
Which sets a condition the thin film case never has to meet. Every droplet size paints its rings at its own radius, so a cloud with mixed droplets overlays many patterns and washes itself out. Modelling the corona over a lognormal size distribution, chroma holds at 94 percent of the uniform case when droplets vary by 2 percent, falls to half once they vary by more than about 8 percent, and to a quarter by 12 percent. Iridescent clouds are rare because that is a hard tolerance for weather to hit, which is also why they show up at the thin, freshly formed edges of lenticular and altocumulus clouds where every droplet has had the same short history. The atmospheric optics literature reaches the same conclusion from photographs.
If you want the scattering side of the sky in more depth, the mechanism behind why the sky is blue is a third thing again, and none of the three are the rainbow, which is refraction.
So what should you put in the swatch
Nothing, honestly, and here is the measurement that settles it. A hex code has a goniochromatic spread of zero by construction. A single soap film has 56.62. Averaging the film over angle alone costs 68.7 percent of its chroma. Averaging a whole draining bubble over thickness costs 99.4 percent and lands on #39393A, a colour whose chroma is 0.26. Average both and you get the #615F60 we opened with.
Every iridescent palette therefore captures zero percent of the only property that makes the surface iridescent, and to avoid looking grey it has to pick one arbitrary frame out of 33 and call it the answer. That pale lilac hex is not wrong so much as it is a still photograph being sold as a film.
If you need the effect in a design, the thing to reproduce is the rate, not the colour: a gradient across a curved form, crowded toward the edges the way a real bubble crowds its bands into the outer tenth of its radius. The numbers in the angle table above are a usable stop list for exactly that. This puts iridescent in the same category as neon, a word that names a behaviour rather than a coordinate, and which a flat swatch cannot hold. A mirror has the same problem from the other direction.
Train the eye that reads these differences
Everything above rests on one skill: telling two close colours apart and knowing by how much. A 2.3 step is the smallest difference a person can see, and most people are far worse at judging colour from memory than they expect.
The color memory game shows you a colour, takes it away, and asks you to find it again, then scores the gap in the same CIEDE2000 units used throughout this article. Hex mode makes you name the code instead of matching it, and hue sort asks you to put a scrambled set of colours back in order, which is the closest thing here to reading a thin film sequence. There are more of them here, and a daily round if you would rather just play one.