Every filter you tap is a stack of ordinary maths operations on your pixels. Nothing mystical happens. A filter named Vintage is brightness lifted in the shadows, saturation pulled down, a warm colour cast added and maybe some noise sprinkled on top. Knowing what those operations are is the difference between guessing which preset looks nice and knowing why one of them wrecked your photo.

This is a walk through what is happening underneath, in the order the operations usually run, plus the two side effects that surprise people most: filtered files getting bigger, and photos quietly falling apart if you filter them more than once.

A pixel is three numbers, and a filter rewrites them

In an ordinary 8-bit photo, every pixel is three values: red, green and blue, each from 0 to 255. That is 256 possible levels per channel. Every filter, every slider, every preset is a rule for turning the numbers you have into different numbers.

That matters more than it sounds. You have 256 levels and no more. If a filter stretches a narrow range of those levels across a wider range, it cannot invent the values in between, so it duplicates them. Push far enough and a smooth sky turns into visible steps of colour. That is banding, and it is not a bug in the app. It is arithmetic running out of room.

It also means every operation is destructive unless something keeps the original. Once a value is clipped to 255, the app has no idea whether it used to be 260 or 900. Both are white now.

Brightness and contrast are curves, not switches

The honest way to think about brightness and contrast is as a graph: input value on one axis, output value on the other. A straight diagonal line means every pixel keeps its value. Bend the line and you have a filter.

Brightness lifts the whole line. Every value goes up by roughly the same amount, which is why a heavy brightness boost makes an image look washed out rather than well exposed: the shadows come up, but so do the highlights, and the ones already near 255 pile up against the ceiling and merge into flat white.

Contrast steepens the middle of the line and flattens the ends, which is where the classic S-curve comes from. Values below the midpoint get pushed darker, values above get pushed lighter. Detail in the middle tones separates out nicely. Detail at the two extremes gets squeezed together and, past a point, disappears entirely.

This is why "add contrast" so often reads as "looks punchier" and also as "lost the texture in the dark jacket". Both things happened for the same reason.

Exposure is not brightness: in raw editors, exposure works on linear light values before the image is gamma-encoded, so it behaves like changing the camera setting. A brightness slider on a finished JPG works on the already-encoded values. They look similar at small amounts and diverge badly at large ones.

Saturation and vibrance are not the same slider

Saturation is the blunt one. It scales the colourfulness of every pixel by the same factor, regardless of how colourful that pixel already was. Push it and the reds that were already strong go first: they hit the limit of what the format can represent, lose their internal variation and turn into flat shapes with hard edges. Skin turns orange. Foliage turns into a single green.

Vibrance is weighted. It boosts colours that are currently dull much more than colours that are already vivid, and most implementations deliberately hold back on hues in the skin-tone range. The effect is that a grey sky gains colour while the person in the foreground stays looking like a person.

Practical rule: reach for vibrance first, and only use saturation when you want the heavy-handed look on purpose. If a preset is making faces look sunburnt, saturation is almost always the culprit.

Desaturating fully gives you black and white, and here there is a real difference in method. A cheap conversion averages the three channels. A good one weights them, because the eye is far more sensitive to green than to blue, and a weighted conversion keeps a red flower and a green leaf from collapsing into the identical shade of grey.

White balance is a correction, not a look

Colour temperature adjustments work by changing the relative strength of the channels. Warming an image means lifting red and lowering blue. Cooling means the reverse. Tint does the same thing along the green and magenta axis, which is what you need for fluorescent lighting.

Most filters bundle a permanent colour shift into the preset, which is why a whole roll of photos filtered the same way starts to look like it was shot in the same room. Sometimes that is exactly the point. But if your photo looks wrong rather than unstylish, fix white balance before you apply anything else, because a preset applied on top of a bad cast just gives you a bad cast with a mood.

One limitation worth being honest about: white balance done on a JPG is an approximation. The camera already picked a white balance and baked it in, and channels that were clipped during that process cannot be recovered. Raw files let you set it properly after the fact. Finished JPGs let you nudge it.

A circular polarising filter with a black metal ring, resting on its clear plastic case on a white surface
A glass filter changes the light on its way to the sensor. A software filter can only rework the numbers the sensor already wrote down, which is why some things can be filtered and some things can only be recorded properly in the first place. Photo: Dmitry Makeev (CC BY-SA 4.0).

Sharpening does not add detail, it adds local contrast

The classic sharpening method, unsharp mask, is stranger than the name suggests. The software makes a blurred copy of your image, subtracts it from the original to isolate the edges, and then adds that edge information back at increased strength. The result is that either side of every edge gets pushed further apart: the light side lighter, the dark side darker.

Your eye reads that increased local contrast as sharpness. No new information entered the file. Push it too far and you get the giveaway: a pale halo hugging every dark edge against the sky.

The three controls map directly onto the process. Amount is how strongly the edge layer is added back. Radius is how blurry the blurred copy was, which decides whether you are sharpening fine texture or big shapes. Threshold sets how different two neighbouring pixels must be before the effect applies at all, and it exists to stop you sharpening the noise in a flat sky.

Since sharpening only exaggerates edges that are already there, it cannot rescue a photo that missed focus or was enlarged past its resolution. If that is your actual problem, the causes of a blurry or pixelated image is the more useful place to start.

Grain, vignettes and the deliberate flaws

Grain is random noise added on purpose. In film it came from the silver halide crystals in the emulsion; in a filter it is a pseudo-random value added to each pixel, usually with more variation in the midtones than in the extremes. Good implementations vary the grain by luminance and keep it roughly monochrome, because coloured noise reads as a sensor fault rather than as film.

Grain is doing real work when it hides something. It masks banding in gradients, it disguises the mushy areas left by heavy noise reduction, and it makes an upscaled image look less plasticky. It is also the single most expensive thing you can do to a file, for reasons in the next section.

A vignette is a radial gradient multiplied over the image, darkening towards the corners. Lenses do this naturally at wide apertures and photographers spent decades removing it, then filters brought it back because it works: the eye goes to the brightest part of the frame, so darkening the edges pulls attention to the middle. A subtle one is invisible and effective. A strong one announces itself immediately.

Fade, matte and similar looks are all the same trick: raise the black point. Instead of the darkest pixel being 0, it becomes something like 25, so nothing in the image is truly black. That is a lifted-shadows curve, nothing more, and it imitates the way print film and old photographic paper never quite reached black.

LUTs: the filter as a lookup table

Many filters, especially anything with a cinematic name, are not a chain of sliders at all. They are a lookup table. A 3D LUT is a grid that says: for this input combination of red, green and blue, output that combination instead. Colours between the grid points get interpolated.

The appeal is that a LUT can express a colour relationship no combination of ordinary sliders can, like shifting only the teal parts of the shadows while leaving skin untouched. It is how colour grading works in film and video, and the same .cube files get passed around by photographers.

The catch is that a LUT knows nothing about your photo. It was built by someone grading a different image under different light. Applied to a shot with a different white balance, a LUT designed to make skin glow can make it look ill. This is exactly why the same preset can be flattering on one photo and awful on the next, and why previewing a filter on your own image rather than on the app's sample photo tells you more than the name ever will. The photo filters tool renders every look as a thumbnail of your actual photo for this reason, and the intensity slider is a straight blend between the filtered result and your original, which is the least destructive way to use any preset.

A man standing beside a colour enlarger in a home darkroom, with a boxed colour printing filter set and processing drums on the bench in front of him
Colour grading is older than the slider. Printing a colour photograph in a darkroom meant stacking physical filters under the enlarger head, the boxed set on the bench here, and reprinting until the balance was right. Photo: Unknown (Public domain).

Why a filtered photo often gets bigger

People expect editing to shrink a file, or at least leave it alone. Filters routinely make files bigger, and the mechanism is worth understanding because it applies to every lossy format.

JPEG works by dividing the image into small blocks and describing each block as a set of frequency components: broad tonal shifts are low frequency, fine detail and abrupt changes are high frequency. Compression then throws away most of the high-frequency information, because the eye barely misses it. A smooth sky compresses to almost nothing because there is almost no high-frequency content to store.

Noise is pure high frequency, and it is random, so it cannot be predicted or summarised. Adding grain hands the encoder a huge amount of detail it has no way to discard cheaply, and the file grows. Heavy sharpening does something similar by manufacturing sharp transitions everywhere. Cranked saturation and contrast contribute too, by turning gentle gradients into harder edges.

None of that is a fault in the filter. It is the format doing what it is designed to do. If a grainy export needs to fit a size limit, run it through the image compressor afterwards and accept that a grainy photo will always cost more bytes than a clean one at the same quality setting. Choosing a better format helps too, and the comparison of JPG, PNG and WebP covers where each one earns its keep.

Filtering the same JPEG twice is worse than filtering it once

This is the part that quietly ruins photos. Every time you open a JPG, change it and save it again, the image is decoded, edited, then re-compressed from scratch. The second encode does not know which artefacts came from your edit and which came from the first encode. It compresses both.

Each round trip is small. Ten of them are not. Edges pick up ringing, flat areas develop blotches, and the small squares the format works in start becoming visible. This is generation loss, and it is the same failure mode as photocopying a photocopy.

It gets worse when the edits between saves are aggressive, because a contrast boost amplifies the previous round's artefacts along with the real detail before they are re-encoded. Filtering, saving, deciding it is too strong, filtering again, saving again: that is four encodes on an image that only needed one.

Keep one master: always filter from the original file, not from a previously filtered export. If you want a filter stacked on another, do it in one session if you can. When you cannot, at least go back to the master between attempts rather than re-editing an export you already saved twice.

PNG does not have this problem, because it is lossless: decode and re-encode as many times as you like and the pixels are identical. That is not a reason to keep photos as PNG, since a photographic PNG is typically several times the size of the equivalent JPG. It is a reason to hold your working copy in a lossless format if you are doing many rounds of editing, then export to JPG or WebP once at the end.

An order that avoids most of the damage

Filters usually apply their operations in a fixed internal order, but when you are adjusting things yourself, sequence matters. Correct first, then style, then add texture.

  • White balance first. Everything downstream is judged against the colours you set here.
  • Exposure and contrast next. Get the tonal range right before touching colour intensity, since contrast changes how saturated things look.
  • Then vibrance, and saturation only if needed. Check faces before anything else.
  • Then the look: a lifted black point, a colour cast, a LUT, a vignette.
  • Sharpening near the end, and sized for the output. Sharpening for print then downsizing for the web throws away the sharpening and keeps the halos.
  • Grain last, because everything applied after grain will amplify it, including sharpening and compression.

Resizing sits awkwardly in that list. If you are going to shrink the image substantially, do it before sharpening and before grain, since both are tuned to pixel dimensions and neither survives a resize in the shape you intended.

Where the technique ends and taste begins

Everything above is mechanical. Which look you prefer is not, and nobody can tell you your filter is objectively wrong. Heavy grain on a sharp modern portrait is a choice. So is a crushed-blacks contrast curve, or a green cast that would have been a defect thirty years ago.

The only claims worth defending are the technical ones. A clipped highlight has no detail in it, whatever you think of the look. A saturated red that has flattened into one shade has genuinely lost information. A file that has been through six JPEG encodes is degraded whether or not anyone notices at thumbnail size.

Beyond that, the useful habits are small. Compare against the original constantly, because your eye adapts within seconds and a filter you have stared at for two minutes always looks weaker than it is. Use the intensity control rather than picking a weaker preset; a strong look at 40 percent is usually better than a timid look at 100. And check the result at the size people will actually see it, because a subtle vignette and delicate grain both vanish at 300 pixels wide, which means you paid for them in file size and got nothing back.