Bloom Effect
Halation and bloom effect for photos and video: bright parts spill soft light into their surroundings, as a red film glow or white haze. Free, in your browser.

What is a bloom effect?
Bloom, also called light bloom or a glow effect, is the soft light that spreads from the brightest parts of a picture, the way a strong light overwhelms a camera or your eye. Games and demos have used it for decades. It really caught on in games after the makers of Tron 2.0 published an article on the technique in 2004.
Halation is its film cousin, a red or orange halo around bright lights. Light goes through the emulsion, bounces off the film base and exposes it a second time. On color negative the red-sensitive layer sits nearest the base, which is why the halo comes out red. Motion picture stock has a black backing called remjet to stop this, and stock sold with the remjet stripped off shows strong halos around street lights and signs.
How to add bloom or halation to a photo or video
Start from a preset. Soft is the default, and Dreamy lowers the threshold so more of the picture glows. Tight keeps the halos close, Neon pushes them hard and Warm haze tints the light orange.
Threshold sets how bright a pixel has to be before it blooms, and Softness eases pixels in around that point so there's no hard cut. Intensity, from 0 to 3, is how much light gets added, Spread is how far it reaches across the frame, and Tint colors the glow. Leave Tint white and every light keeps its own color, so a red sign glows red.
Settings for film halation, a dreamy portrait and neon at night
Film halation: Threshold 0.8, Softness 0.3, Intensity 1.2, Spread 0.35 and Tint #ff4d1a. With the threshold that high, skin and sky are left alone and only lamps and bright edges pick up a halo. The low Spread keeps it hugging them the way real halation does, and the red-orange Tint stands in for the film's red layer.
Dreamy portrait: the Dreamy preset with Intensity brought down to 1. Its Threshold of 0.3 lets skin and window light glow. At the preset's full 1.6, though, the added light lifts the shadows so far that faces lose their shape.
Neon at night: the Neon preset, Threshold 0.45 and Intensity 2.2, with Tint left white. Dark streets stay dark and each sign spreads its own color. If you want one strong light with ghosts strung across the frame, Lens Flare fits better.
How this bloom filter builds its glow
The glow is worked out in linear light, so it adds up like real light and doesn't go gray over dark areas. The bright parts get shrunk step by step down to 1/32 of the frame and then blurred back up. That gives big, smooth halos that stay the same size relative to the frame at any resolution.
Each step down uses the 13-tap filter Jorge Jimenez described for Call of Duty: Advanced Warfare in 2014. Its first pass averages every 2x2 block of pixels, so even a one-pixel highlight still blooms.
Why does bloom wash out my whole photo?
Threshold is measured in linear light, the scale light adds up in, and not in the 0 to 255 values stored in the file. At the default 0.6, a pixel blooms once its brightest channel passes about 203 out of 255. Dreamy's 0.3 drops that to about 149, low enough to take in skin, sky and white walls.
Raise Threshold until only the lights glow, then bring Spread down if the halos still fog up the room. The test only looks at a pixel's brightest channel, so a saturated red or blue sign blooms just as easily as a white lamp.
Saving a bloom without banding
A halo is a smooth ramp from bright to dark, and that's tough on a GIF's 256 colors per frame. Keep the GIF's Dither box ticked, or save an MP4 at High quality, where the ramp stays smooth.
On a picture with a transparent background, the glow spreads past the subject's edge with its own transparency. PNG keeps that halo, ready to lay over another image. JPG has no transparency to hold it.