# Grade and correct color with nodes

> Grade images in Nodespell with Color Correct wheels, Curves with relationship curves and a histogram, Hue Correct, Brilliance, Structure and more.

Source: https://docs.nodespell.com/edit/color-correction/ · Last updated: 2026-11-10

Color correction in Nodespell is done with image nodes that change tone and colour: **Color Correct** for wheel-based grading, **Curves** and **Hue Correct** for curve-based work, and focused nodes such as **Grade**, **Exposure**, **Brilliance** and **Structure**. They run on the GPU in your browser, both in the ordinary Graph and inside [compositors](https://docs.nodespell.com/edit/compositing/).

## Which node for which job?

| Job                                                     | Node                           | Notes                                                    |
| ------------------------------------------------------- | ------------------------------ | -------------------------------------------------------- |
| Balance shadows, mids and highlights with colour wheels | **Color Correct**              | Lift/Gamma/Gain or Shadows/Midtones/Highlights           |
| Set black and white points, Nuke-style                  | **Grade**                      | Blackpoint, Whitepoint, Lift, Gain, Multiply, Add, Gamma |
| Shape tone per channel                                  | **Curves**                     | RGB, Red, Green, Blue and Alpha curves                   |
| Change saturation or hue by brightness or saturation    | **Curves** relationship curves | Four curves, such as Luminance → Saturation              |
| Change one range of hues                                | **Hue Correct**                | Six curves driven by the original hue                    |
| Brighten or darken in photographic stops                | **Exposure**                   | Exposure (stops), Offset and Gamma per channel           |
| Classic input/output levels                             | **Levels**                     | Input black, white and gamma; output black and white     |
| Quick brightness and contrast                           | **Brightness Contrast**        | Per-channel brightness and contrast                      |
| Overall hue, saturation, lightness                      | **HSL**                        | **Hue Shift** in degrees, **Saturation**, **Lightness**  |
| Warm or cool the image                                  | **Colour Temperature**         | Temperature and Tint                                     |
| Open shadows and recover highlights                     | **Brilliance**                 | Positive reveals detail; negative deepens shadows        |
| Add or remove local "punch"                             | **Structure**                  | Local contrast that protects strong lighting edges       |
| Apply a LUT                                             | **Apply LUT**                  | Image-strip LUT or a CUBE 1D/3D LUT, with Strength       |
| Darken or colour the frame edges                        | **Vignette**                   | Size, Blur, Strength and Colour                          |
| Flip or reduce colour values                            | **Invert**, **Posterize**      | Invert chosen channels; reduce levels                    |

To convert between colour spaces, see [Color management](https://docs.nodespell.com/edit/color-management/).

## Grade with Color Correct

**Color Correct** grades with interactive colour wheels in Parameters, with every number available under **Advanced**. Use **Open in larger window** to work on the wheels in a bigger window.

| Setting                      | Options or default                                                                                         | What it does                                                                 |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| **Mode**                     | **Lift Gamma Gain** (default) or **Shadows Midtones Highlights**                                           | Which three tonal wheels you grade                                           |
| Wheels                       | Red, green and blue balance plus a luma value per wheel                                                    | Balance shifts colour; luma (0–2, default 1) brightens or darkens that range |
| Shadows and highlight ranges | **Shadows End** 0.045, **Shadows Softness** 0.045, **Highlights Start** 0.75, **Highlights Softness** 0.25 | Only in Shadows Midtones Highlights mode                                     |
| **Tonal Range False Colour** | Off                                                                                                        | Shows shadows and highlights as a false-colour overlay to check the ranges   |
| **Saturation**               | 1 (0–2)                                                                                                    | Overall saturation                                                           |
| **Contrast** and **Pivot**   | 1 (0–3) and 0.18                                                                                           | Contrast around a pivot value; 0.18 is scene-linear mid-grey                 |
| **Temperature** and **Tint** | 0 (−1 to 1)                                                                                                | Warm/cool and green/magenta shifts                                           |
| **Mix**                      | 1                                                                                                          | Blend with the original                                                      |

Lift Gamma Gain works the way colourists expect: lift moves the blacks, gamma the mids, gain the whites. Shadows/Midtones/Highlights splits the image into three ranges you set yourself.

## Shape tone with Curves

**Curves** remaps channels with editable curves. The RGB curve applies first, then the individual Red, Green and Blue curves. Alpha has its own curve. All curves stay active; **Edit Curve** only chooses which one you are editing.

1. Connect an image to **Curves** and choose a curve in **Edit Curve**.
2. Double-click the graph to add a point, and drag to reshape. Input runs left to right, output bottom to top.
3. Double-click a point to remove it. Arrow keys nudge the selected point; hold `Option/Alt` while dragging to move slowly, or `Option/Alt+Shift` for very slowly.
4. Set **Interpolation** to **Smooth** or **Linear**.
5. Use **Mix** to blend the result with the original.

Each curve holds up to 16 points. The end slopes continue beyond the graph, so values above 1 in float or HDR images are remapped smoothly rather than clipped. **Open in larger window** opens a bigger editor with a side list of every curve, an **Edited** marker on changed ones, **One curve** or **All curves** views, and **Show edited curves** to draw the others behind the one you are editing.

### Relationship curves

Four more curves change colour by how saturated or bright each pixel already is. Each starts flat at 0.5, which means no change, and all of them read the original image, not each other's output.

| Curve                       | Horizontal axis | Vertical axis             |
| --------------------------- | --------------- | ------------------------- |
| **Saturation → Saturation** | Saturation      | Saturation change (stops) |
| **Saturation → Luminance**  | Saturation      | Brightness change (stops) |
| **Luminance → Saturation**  | Luminance       | Saturation change (stops) |
| **Luminance → Hue**         | Luminance       | Hue shift (°)             |

For example, pull **Luminance → Saturation** down at the right to desaturate highlights, a common fix for over-coloured skies.

### Read the histogram

Turn on **Histogram** in the Curves editor to see where the input image's pixels sit behind the graph. Choose **This curve** or **R G B**, and **Linear** or **Log** scaling. The histogram shows the image going into Curves, before the remap. It is measured from a reduced-size 8-bit preview, so it always spans 0 to 1 and counts are proportional; HDR values above 1 appear clipped at the right edge. It appears once the node has an input image.

## Correct one range of hues with Hue Correct

**Hue Correct** adjusts colours by their original hue, like Nuke's HueCorrect. Its six curves all use hue across the horizontal axis.

| Curve                                          | Moves colours of that hue                                                    |
| ---------------------------------------------- | ---------------------------------------------------------------------------- |
| **Hue → Hue**                                  | Around the colour wheel (hue shift in degrees)                               |
| **Hue → Saturation**                           | Richer (up) or paler (down)                                                  |
| **Hue → Luminance**                            | Brighter (up) or darker (down)                                               |
| **Hue → Red**, **Hue → Green**, **Hue → Blue** | Scales that channel, to add or pull out a colour in one part of the spectrum |

A curve left flat in the middle changes nothing. To place a point at a specific hue, click the spectrum, or use **Pick** to click a colour anywhere on screen, such as in the viewer. A neutral colour has no hue, so it cannot be picked. **Protect Neutrals** (default 0.1) reduces the effect on nearly grey colours, where hue is unstable. **Reset all curves** returns every curve to flat.

Hue Correct is a good way to suppress green or blue spill after a key: pull **Hue → Saturation** or **Hue → Green** down around the backing's hue.

## Brilliance and Structure

**Brilliance** (−1 to 1) works on local lighting. Positive values reveal detail in shadows and highlights; negative values deepen shadows and simplify lighting for a moodier look, without glow. Strong edges are preserved.

**Structure** (the node for local contrast) changes contrast within regions instead of across the whole frame. **Amount** (−1 to 1) simplifies local lighting when negative, which helps tame a crunchy HDR look, and adds punch when positive. **Scale** sets the size of structures it targets, and **Fine Detail** (default 0.85) protects fine texture while larger structures change.

Both nodes also have **Mix**, a **Mask** input and **Channels**, like the other effects.

## Limit a correction to part of the image

Most correction nodes accept a **Mask** input with **Mask Source**, **Invert Mask** and **Mask Mix**, and a **Channels** control that chooses which RGBA channels are written. See [Masks and keying](https://docs.nodespell.com/edit/masks-and-keying/).

## Frequently asked questions

### Do colour nodes work in linear or display values?

Inside a colour-managed compositor they work on scene-linear working-space values. In the ordinary Graph, most image effects decode the sRGB image to linear for the operation and encode the result back to sRGB. See [Color management](https://docs.nodespell.com/edit/color-management/).

### Why is Contrast pivot set to 0.18?

0.18 is the conventional scene-linear value for mid-grey, so contrast expands around a mid-grey that matches a linear working space.

### Can I animate a grade?

Yes, inside a video Compositor. Numbers, colours, switches and menus can all be keyed; see [Keyframes](https://docs.nodespell.com/edit/keyframes/).

### Why does the Curves histogram stop at 1?

The histogram is measured from an 8-bit preview of the input, so values above 1 are clipped in the display even though Curves itself processes them.

### Is there a Local Contrast node?

The local-contrast node is named **Structure** in Nodespell.

## Related

- [Color management](https://docs.nodespell.com/edit/color-management/): working spaces and view transforms.
- [Masks and keying](https://docs.nodespell.com/edit/masks-and-keying/): limit a grade to an area.
- [Keyframes](https://docs.nodespell.com/edit/keyframes/): animate grades over time.
- [Viewers](https://docs.nodespell.com/edit/viewers/): check channels and read pixel values.
- [Filters and effects](https://docs.nodespell.com/edit/filters-and-effects/): the full node map.
