image-toolkit
Back to guides

How to Use Tone Curves for Web Photos Online

Fine-tune contrast and channel balance in your browser with RGB and per-channel curves, histogram feedback, and presets—after light sliders, before color grading.

By Alejandro Rodriguez Romero

6 min readLast updated June 5, 2026

In short

Open Adjust Image Curves when sliders are not precise enough: use RGB for overall contrast, single channels for color casts, and gentle S-curves for catalog polish.

For web photos, fix Exposure, Highlights, and Shadows first, then open Curves in Adjust Image for channel-specific contrast or shadow lifts. RGB S-curves add punch; per-channel R/G/B curves fix subtle casts. Curves apply after Light and before Color sliders.

RGB vs single-channel curves

RGB curves change luminance and contrast together—best for punch and shadow opens on neutral product shots. Switch to R, G, or B when white balance is close but one channel still tints the gray seamless or packaging neutrals.

Small per-channel moves beat large Temperature/Tint swings when only shadows or highlights carry the cast.

Safe preset starting points

Lift shadows: good for underexposed edges on white seamless after Exposure is set—watch banding in gradients. Soft highlights: tame specular clips on glossy packaging before you lower global Highlights.

More contrast and S-curve: use on flat social crops, not as the first move on already punchy phone JPEGs.

Curves in the Adjust pipeline

Curves run after Light sliders and before Color. If you boost Saturation after an aggressive S-curve, halos around edges show up faster—finish the curve first, then add color.

The histogram in the editor reflects your preview bitmap, so crop and light fixes should be in place before you chase a perfect curve shape.

Real-world examples

Worked example: flat product on white seamless

Input: a 2400×2400 JPEG that is correctly exposed but looks dull after Light sliders (+6 Exposure, −8 Highlights).

Workflow: RGB S-curve preset, then one extra point to lift input 15% → output 22%. Shadows open slightly; highlights stay below clipping.

Result: crisper midtones on packaging text without a global saturation boost.

Why this works

  • Curves target specific tonal ranges without moving every slider at once.
  • Per-channel edits fix color casts that global contrast cannot.
  • Presets like Lift shadows and Soft highlights give safe starting points you can nudge.

When to use this workflow

  • Light sliders fixed exposure but shadows still look flat or muddy.
  • A product shot needs more midtone contrast without clipping highlights.
  • One channel (red, green, or blue) carries a subtle color cast after white balance.
  • You want a repeatable S-curve look across a small batch of social assets.

Step-by-step guide

  1. Open Adjust Image, load your photo, and set Light sliders first (Exposure, Highlights, Shadows).
  2. Scroll to Curves. The histogram reflects your current preview when available.
  3. Start on RGB for overall contrast, or pick R, G, or B when only one channel needs work.
  4. Try a preset (S-curve, More contrast, Lift shadows, or Soft highlights), then drag points to taste.
  5. Click the graph to add points; double-click a middle point to remove it. Use arrow keys to nudge; hold Shift for finer steps.
  6. Continue with Color sliders only after curves look right—curves run before Color in the pipeline.
  7. Export WebP, JPEG, or PNG when the preview matches your target screen size.

Common mistakes to avoid

  • Opening Curves before fixing gross exposure with Light sliders (curves cannot recover clipped data).
  • Steep S-curves on 8-bit JPEGs—banding shows in skies and shadow gradients.
  • Heavy per-channel curves on product reds when brand accuracy matters—preview on neutral gray.

Frequently asked questions

When should I use curves instead of Contrast or Exposure?

Exposure and Highlights/Shadows fix broad brightness. Curves help when you need midtone-specific contrast, channel isolation, or a controlled shadow lift without washing highlights.

Does the histogram update as I edit?

Yes—it samples from your live preview image, so it reflects prior adjustments (crop, filters, light sliders) before you change the curve.

Can I reset one channel without losing the others?

Use Reset channel for the active RGB/R/G/B tab, or Reset all to return every channel to a straight line.

Try it in image-toolkit

Official references