Four sliders with a live preview and stated formulas. Runs on your device.
Brightness, contrast and saturation run from −100 to +100, and 0 changes nothing. A fourth control, gamma, runs from 0.2 to 3, and 1 changes nothing. For every pixel the tool applies gamma first, then brightness, then contrast, then saturation. Gamma, brightness and contrast are combined into one 256-entry table, so each of red, green and blue is looked up and rounded once. Saturation is applied last, on the result. The order matters: the same four numbers in another order would give a slightly different picture, so the tool always uses this one. Every result is rounded to a whole number and limited to the range 0 to 255. Moving a slider repaints the preview at once. The saved file is adjusted again from the full-size original, so the preview and the file use the same formulas.
Brightness adds brightness × 2.55 to each channel, so +20 turns a channel value of 100 into 151 and +100 adds 255. Contrast uses the factor f = 259 × (contrast + 255) ÷ (255 × (259 − contrast)) and computes f × (value − 128) + 128. The middle grey 128 stays where it is. At +50 the factor is about 1.48, so 200 becomes 235; at −50 it is about 0.74, so 200 becomes 177. Gamma computes 255 × (value ÷ 255) to the power 1 ÷ gamma, so black and white do not move. Gamma 2 turns 128 into 181 and gamma 0.5 turns 128 into 64. Saturation measures each pixel's grey as 0.2126 red + 0.7152 green + 0.0722 blue and moves each channel away from that grey by 1 + saturation ÷ 100. At −100 the picture is grey. At +100 the distance doubles, so a vivid colour can clip to 0 or 255.
It does not look at the picture to decide anything. There is no auto-level, no histogram, no separate shadows and highlights control, and no way to adjust one colour on its own. Clipping is not repaired: a sky that is pure white at +40 brightness stays pure white at −40, because the original detail was already cut off. These are plain per-pixel formulas on the decoded pixels, with no colour management, so a photo with an unusual colour profile can look a little different in another viewer. Raising contrast or saturation on a JPEG also raises its visible compression noise, so start with small moves and judge by the Result and Original toggle in the preview. If a picture is too dark, try gamma above 1 before brightness: it lifts the midtones without turning the blacks grey.
The picture is drawn on a canvas in this tab, adjusted in strips of 256 rows so a very large image never needs one huge block of memory, and saved again in the same format as the original. JPEG and WebP files are saved again at quality 92 and PNG without loss, so a lossy file loses a little detail with every save. Transparent areas stay transparent: only red, green and blue change, never the alpha value. All files in a batch get the same settings. Because the picture is redrawn, location and camera details stored in the original are not carried over, and the original file on your device is never changed. If an image is too large for this device's canvas it is made smaller, and the result shows both sizes. Nothing is uploaded.
Brightness adds the same amount to every pixel, so blacks turn grey and whites clip. Gamma bends the curve: black stays 0 and white stays 255 while the midtones move. For a dark photo with some detail in the shadows, gamma 1.5 to 2 usually looks more natural than a big brightness step.
Not from the saved file, because the new pixel values replace the old ones. The tool never changes your original, so keep it and run the sliders again with other numbers. The saved copy is named with -adjusted, such as photo-adjusted.jpg.
Close but not identical. Saturation −100 uses the weights 0.2126, 0.7152 and 0.0722 on the values after gamma, brightness and contrast, and rounds the result. The Black and White Image tool has its own methods and a threshold. If you only want grey, use that tool.
The preview is drawn from a copy with a long edge of up to 800 pixels so the sliders stay quick on a 20-megapixel photo. The saved file is adjusted from the full-size original with the same formulas, so only the sharpness differs.
Yes, up to 50 JPEG, PNG or WebP files at a time. They all get the same settings, and the preview shows the first one. With two or more results you get one zip. If the pictures differ a lot in exposure, adjust them in smaller groups.