Two questions arrive together often enough that they may as well be one. What color is blood inside your body, and why does the vein running under your wrist look blue? The usual answer handles both at once by being wrong twice. Blood is blue until it hits the air, the story goes, and the vein is blue because you are seeing that blue blood through the skin.
Almost everyone who corrects this gets the first half right and then hand waves the second. Blood is always red, the correction runs, and veins only look blue because of how light passes through skin. True, and useless. How through the skin? Blue compared to what? If the blood is red and the skin is not blue, where is the blue coming from?
So I built the color instead of describing it. Hemoglobin absorption has been measured to two nanometre resolution and published for decades. So have the scattering properties of skin. Put those through a light transport model and a standard colorimetric pipeline and you get hex codes, not adjectives. The answers turn out to be sharper than the argument usually allows.
Blood is red because of a molecular hole, not because of rust
The iron explanation is the one people reach for. Blood has iron in it, rust is iron and rust is red, so blood is red. It sounds mechanical enough to be true and it is not. The iron in hemoglobin is bound inside a porphyrin ring, and the ring is doing the absorbing.
A porphyrin has a large conjugated system of electrons spread across the whole ring. Systems like that absorb light in specific narrow bands whose position depends on the exact electronic structure. In hemoglobin the dominant feature is the Soret band near 415 nanometres, a wall of absorption so strong that nothing violet or deep blue escapes, plus a pair of weaker bands in the green at roughly 542 and 577 nanometres. Red light, from about 600 nanometres up, is barely touched.
That is the entire story of blood color. The blue and green are taken out and the red is left. It is exactly the mechanism that makes a leaf green, where chlorophyll takes out the red and blue and leaves the middle, and it is the same one behind a flamingo feather. A pigment is never the color it is. It is the color of what it failed to absorb.
What changes when blood gives up its oxygen is the shape of that absorption, not its existence. Oxygenated hemoglobin has the two clean green bands. Deoxygenated hemoglobin collapses them into one broader band around 555 nanometres and, importantly, absorbs considerably more in the red between 600 and 700 nanometres. More absorption everywhere means darker. It does not mean bluer.
How I turned that into a color
The absorption numbers come from the molar extinction coefficient tables compiled by Scott Prahl at the Oregon Medical Laser Center, built from measurements by Gratzer and by Kollias. That is the same archive that holds the Pope and Fry water data I used to work out why the ocean is blue. They give oxyhemoglobin and deoxyhemoglobin separately, every two nanometres, right across the visible range.
Turning extinction into an absorption coefficient needs a concentration. Whole blood carries roughly 150 grams of hemoglobin per litre, and hemoglobin weighs about 64,500 grams per mole, which fixes the absorption coefficient at every wavelength. Blood also scatters light heavily, mostly off the red cells themselves, so I used reduced scattering values from the Bosschaart review of whole blood optics.
For a pool of blood deep enough that no light comes out the back, the diffuse reflectance follows from Kubelka-Munk theory using Star's conversion between transport coefficients and the two-flux constants. That gives a reflectance spectrum. Multiply by D65 daylight, integrate against the CIE 1931 standard observer, convert to sRGB, and you have a hex code. Every number below came out of that pipeline, and the lightness and hue readings are CIELAB with CIEDE2000 for the differences.
One honest caveat before the results. Saturated blood sits slightly outside the sRGB gamut, with the green channel landing at about minus 1.5 percent of full scale. The swatches below are clipped to what a screen can actually show, so the real thing is a shade more saturated than the square in front of you. Everything here is optics. It is not medical information and nothing in it says anything about your health.
Every oxygen level there is, and all of them red
Arterial blood leaving the lungs runs at about 98 percent oxygen saturation. Blood coming back through the veins is typically around 75 percent, because your tissues take roughly a quarter of the oxygen on each pass. Fully deoxygenated blood at zero percent is not a thing that exists in a living body, but it is the limit case the myth is really claiming, so it belongs on the ladder.
The hue angle never leaves the red sector. It runs from 36.5 degrees at the top to 15.8 degrees at the bottom, a total travel of 21 degrees, which moves blood from a slightly orange red to a slightly crimson red and no further. Meanwhile lightness falls by a factor of five.
Arterial and venous blood differ by a CIEDE2000 distance of 7.51. Split that into components and 54 percent of it is lightness. Venous blood is not a different color from arterial blood. It is the same color turned down 31 percent.
How far is that from blue
Worth making the size of the error concrete. Venous blood sits at hue angle 31.2 degrees. Navy sits at 306.3. Going the short way round the hue circle, that is 275 degrees of separation, which is very close to the maximum possible distance between two hues.
A difference of 37.6 is enormous. The just noticeable difference for a careful observer is around 2.3. Those two swatches are roughly sixteen JNDs apart. Whatever is happening in your arm, it is not that.
Why blood in a thin layer looks orange
There is a real observation buried in the confusion, though it points the other way. Blood held up to a light in a thin film is not dark red at all. Run the same spectra through transmission at a few thicknesses and the color climbs the ladder in reverse.
A single layer of red cells is barely tinted. A capillary is orange. A pinprick is bright red. A pool is almost black. This is the same concentration effect I measured in flamingo feathers, where hue moves 24 degrees while saturation moves 57 times over, and it is the reason people disagree about what color blood is even when they are looking at the same blood. They are looking at different thicknesses of it.
Now the vein, which is the interesting half
Here is where every explanation online stops being specific. Skin scatters light, red penetrates deeper than blue, therefore blue. Fine. But that argument predicts the vein should look blue in an absolute sense, and I wanted to know whether it does.
So I modelled the stack. An epidermis 60 micrometres thick carrying melanin, then dermis with a small background blood fraction, then either more dermis or a vein. Scattering follows the power law fit from the Jacques review of tissue optical properties, where reduced scattering goes as wavelength to the power of minus 1.292, which is the crux of the whole thing: blue light is scattered back out near the surface while red light keeps going. Baseline dermis absorption uses the Saidi formula, melanosome absorption uses the Jacques power law, and the vein itself is venous blood at 75 percent saturation. The layers are stacked with the usual Kubelka-Munk adding formula.
Then I computed two colors side by side. Plain skin, and skin with a vein sitting underneath at a given depth. The wide swatch is skin, the narrow one in the middle is the vein.
Look at the hue angles. Every single one is between 76 and 89 degrees. That is yellow. The vein patch at half a millimetre depth is #B8AC94, which is a warm grey-brown, the color of wet cardboard. Pull it out of the picture and nobody on earth would call it blue. It sits 218 degrees of hue away from navy, at a CIEDE2000 distance of 67.5.
So the vein is not blue. Not slightly blue, not technically blue. It is a desaturated tan that is 10.72 units away from being plain grey. And yet it looks blue, reliably, to almost everyone. That contradiction is the real question, and the model answers it.
The blue is in the difference, not in the patch
Take the vein color and subtract the skin color, component by component, in CIELAB. At 0.2 millimetres depth the red-green axis moves by minus 1.49 and the yellow-blue axis moves by minus 11.09. Treat that pair as a vector and ask which way it points.
It points at 262.3 degrees.
Steel blue, the CSS color, sits at hue angle 262.8 degrees. The direction in which a vein drags the color of the skin around it lands half a degree away from a named blue. The patch is yellow-brown. The change is blue. Your visual system is reporting the change.
This is not a quirk of my model, it is how vision works. The eye does not measure absolute color well at all, which is the same fact behind color constancy and behind most of the color illusions that go round the internet. What the retina encodes, through the opponent process, is red versus green and yellow versus blue relative to the local surround. A patch that is less yellow than everything touching it gets read as blue, because less yellow is the blue signal. There is no separate blue detector waiting to be convinced.
The spectral reason the shift runs that way is visible in the reflectance. Compared to plain skin, the vein region keeps 93.9 percent of the blue light, 86.0 percent of the green, and only 77.4 percent of the red. Blue light mostly never reached the vein at all, because the dermis scattered it back out first. Red light went deep, met the blood, and was eaten. The vein is not adding blue. It is subtracting red and letting the blue stand where it was.
A vein deeper than 1.3 millimetres is invisible
The depth ladder has a hard edge in it. At 1.26 millimetres the difference between skin and vein hits CIEDE2000 2.30, which is the threshold I measured for a just noticeable difference elsewhere on this site. Below that depth the vein is still there, still full of blood, still absorbing red, and you cannot see it. At two millimetres the difference is 0.96, comfortably invisible.
Which explains something people notice and rarely connect. The veins you can see are not your important veins. They are the shallow superficial ones sitting in the first millimetre under the skin, on the back of the hand, the inside of the wrist, the forearm. The deep veins doing most of the actual work are optically absent.
Melanin changes the answer, and by a measurable amount
Running the same model at a fixed half millimetre depth while varying the melanin volume fraction shows how strongly skin tone controls the effect. Melanin absorbs steeply toward the blue end, as wavelength to the power of about minus 3.33, so it removes exactly the light that was carrying the contrast.
Across that range the visible contrast falls by 58 percent, from 6.72 to 2.84, and the shift direction rotates about 10 degrees toward cyan. At the dark end the vein is only 0.5 units above the JND threshold, which is to say barely there. The physics that makes veins look blue is not universal. It is strongest on pale skin and it fades steadily as melanin goes up.
What the answer actually is
Blood is red. It is red inside your body and red outside it, at every oxygen saturation that occurs in anything alive, and the total hue travel between the reddest and the darkest version of it is 21 degrees. Arterial blood is #8D0000. Venous blood is #6A0000. If you want a single hex code for blood, the second one is the honest choice, because most of the blood in you at any moment is on the way back.
The vein is not blue either. It is #B8AC94, a yellow-brown a little over ten units from neutral grey. What is blue is the relationship between that patch and the skin beside it, a shift of 11.19 units pointing at 262 degrees, and your visual system reports relationships rather than absolutes. The blue is real. It is just not located in the vein, or in the blood, or anywhere you could put a spectrometer. It is located in the comparison.
That is the part I find worth keeping. Most of the famous color arguments turn out the same way. The dress is a fight about what the illumination was. The color of a mirror is a fight about what counts as the object. Here, two people can look at the same arm, one saying the vein is blue and one saying it is brown, and both be measuring correctly. They are measuring different things.
Try the comparison yourself
The reason you cannot talk yourself out of the illusion is that judging absolute color is genuinely hard, and the site is more or less built around demonstrating that. The color memory game shows you a color and asks you to find it again from memory, which fails in ways that are much larger than people expect, and spot the difference is the same limitation pointed the other way. If you want the vein effect directly, the mixer lets you sit a swatch against different surrounds and watch the same hex code change its apparent color, and the hex variant makes you put numbers on what you are seeing.
The wider background on why any of this works the way it does is in the science of color memory, and the neighbouring pieces on why the sky is blue and why sunsets are red use the same kind of modelling on much larger volumes of scattering medium.