---
title: "Painter"
description: "Brush over an image and emit the painted composite plus a white-on-black mask. Not for the GPT Image edit nodes: their mask_url wants transparency, not white on black"
updated: 2026-11-05
---

# Painter

**Node type:** `utility:painter`  
**Category:** `Editing`

## Description

Painter lets you brush over an image on the canvas and hands you two images: wire any image into **Image**, click **Paint** to open the editor, brush over the part you care about, and click **Save**. Out come **Painted Image**, your source with the strokes flattened onto it, and **Mask**, the strokes alone as a white-on-black PNG where white is the region to act on, for models that take a `mask_url` such as inpaint, regional edit or object removal. It costs nothing, because the whole bake happens in your browser, and it has no Run button. A workflow run echoes the image and mask you last saved and does not clear **Repaint needed**; open the editor and save to do that. It is not for the GPT Image edit nodes, which read a mask that is transparent where edits are allowed.

## Canvas ports

These appear as port handles on the left side of the node.

| ID      | Label     | Details              |
| ------- | --------- | -------------------- |
| `image` | **Image** | `IMAGE` _(required)_ |

## Sidebar config

These render as form fields in the right-side config panel when the node is selected.

_No sidebar config fields._

## Outputs

| ID      | Label             | Type    |
| ------- | ----------------- | ------- |
| `image` | **Painted Image** | `IMAGE` |
| `mask`  | **Mask**          | `IMAGE` |

## What it is for

Plenty of models in Wireflow take a `mask_url` (inpaint, regional edit,
object removal). Until this node there was no way to author one on the canvas,
so those inputs went unused. Painter fills that gap: wire an image in, brush
over the part you care about, and it emits two things.

| Output            | What it is                                           |
| ----------------- | ---------------------------------------------------- |
| **Painted Image** | Your source image with the strokes flattened onto it |
| **Mask**          | The strokes alone, white on a black background, PNG  |

White on black means white is the region to act on and black is the region to
leave alone.

**Not for the GPT Image edit nodes.** GPT Image 2 Edit, GPT Image 2.5 Flare
Edit and GPT Image 2.5 Sunburst Edit read a different kind of mask: a PNG that
is transparent where edits are allowed. Tested on Sunburst Edit, this mask came
out backwards: the painted region came back black and the edit landed on the
part nobody painted. For those nodes, make a mask with transparency in another
tool and bring it in with an Import node.

## How to use it

1. Wire any image into the **Image** port (a generation, an Import node, a Crop).
2. Click **Paint**. The editor opens over the canvas.
3. Brush, erase, undo (Cmd+Z), clear. Pick a size and a colour. Colour only
   affects the painted composite, never the mask, which is always white.
4. **Save**. Both images are baked at the source image's full resolution and
   uploaded, and both ports go live.

Escape closes the editor without saving.

## Repaint needed

The node stamps its outputs with the identity of the strokes and the upstream
image they were baked from. If either changes afterwards, the card shows
**Repaint needed**.

It keeps serving the previous outputs while that badge is up, on purpose.
Clearing them would quietly fall back to the unpainted upstream image, and a
paid node downstream would then edit the wrong thing while looking perfectly
healthy. Open the editor and save again to clear the badge.

## What it costs

Nothing. The whole bake happens in your browser and the two images go straight
to storage. It is a free node, so it has no Run button.

It does not re-bake itself during a workflow run, though. A run **echoes the
image and mask you last saved from the editor**. The bake only ever happens in
the editor, on your machine. So if the card is showing **Repaint needed**,
running the workflow will not clear it; open the editor and save. Until you do,
the run hands downstream the previous outputs (or, if you have never saved any,
the upstream image untouched).

## Limits worth knowing

The strokes are stored with the node, so reopening the editor gives them back
exactly where you left them, at any zoom. Strokes are anchored to the source
image's pixels, which means a source image that changes SIZE will put old
strokes in the wrong place. That is one of the cases "Repaint needed" is
warning you about.

---

_Auto-generated from the Wireflow node registry._

Last updated: 2026-11-05

---

Documentation index: fetch https://www.wireflow.ai/llms.txt for the full list of Wireflow docs.
