Nodaro Docs
DocumentationNode ReferenceModelsAI Agents (MCP)DevelopersSelf-hostingResearch
Image

Image Overlay

Place up to 12 layers, such as logos, text, QR codes and shapes, on an image, pixel-exactly, with a live preview. Export for many platforms in one run.

The Image Overlay node places layers on top of a base image, exactly where you put them. A layer can be a picture, such as a logo or a cut-out, real text in a bundled font, a QR code or a flat shape. Nothing is redrawn by AI, so a brand asset comes out as the file you gave it. Use the node for watermarks, logos, headlines, price badges and banners sized for each platform.

When to use it

  • Watermark or brand every generated image before you publish it.
  • Build YouTube, LinkedIn or X banners and video covers with your real logo file on an AI-generated background.
  • Place a cut-out from Remove Background on a new backdrop, with a shadow.
  • Add a badge or a sticker, such as "NEW", a price tag or a rating, to product shots.
  • Put a QR code on a flyer, or one code per product in a batch.
  • Compose before-and-after cards or comparison cards from two results.

Quick start

Add the node

Press Tab on the canvas and choose Image › Edit & Retouch › Image Overlay.

Connect the base image

Drag from the background image, for example a Generate Image result, to the Base input. The node now shows a live preview.

Add layers

Wire a picture, such as an Upload Image node with your logo, into Layer 1. For text, a QR code or a shape, click Text, QR or Shape instead. These layers need no wire.

Place the layers

Drag a layer in the preview to move it, pull its corner handle to resize it, and pull its top handle to rotate it. You can also type exact values in the settings panel, or start from a Preset.

Run it

The preview is live, but the file is made only when you run. Click Run on the node.

baselayer 1imageX headerGenerate ImageProduct on a deskUpload ImageLogo, SVGImage OverlayLogo top-left, exports X headerInstagram PostX Post
The real logo file is placed on a generated image; the main output goes to Instagram and the X header render goes to X in the same run.

Inputs

InputAcceptsWhat it does
BaseImage nodes, or a List of image URLsThe image everything is placed on. Required. With a List, the node runs once per image with the same layers.
Layer 1 to Layer 12Image nodes, such as Upload Image, Remove Background and Generate ImageOne picture per layer: a logo, a cut-out, a sticker. Text, QR and shape layers need no wire.
QR linkText nodes, such as Text, or a List columnAppears only when a QR layer takes its link from the workflow. With a List column, you get one code per row.

The node shows 4 layer inputs at first. Use + Layer and − Layer to show from 1 to 12, and the count also grows when you wire a higher layer. Every run needs at least one layer: a wired picture, or a text, QR or shape layer.

OutputWhat it carries
ImageThe composite, as a PNG by default. It keeps the pixel size of the base image unless you set a platform size or a custom output size.
MaskA black-and-white image of the same size. White marks the area an AI edit may change. See Mask output.
One output per platformFor each platform ticked under Export also for, an output with that platform's render, such as X header.

Place a layer

Every layer attaches to the base image at an anchor, and every distance is a percentage of the base image.

SettingWhat it does
AnchorOne of nine points on the base: top-left, top, top-right, left, center, right, bottom-left, bottom or bottom-right. The default is center.
Offset X and Offset YThe distance from the anchor, from -100 to 100, in percent of the base width and height. On a right or bottom anchor, a negative offset moves the layer inward.
WidthThe layer width in percent of the base width, from 1 to 100. The default is 25. The height follows the layer's own shape.
Height (% of base, optional)A fixed height in percent of the base height. When it is set, Fit (when height is set) decides how the layer fills the box: Contain, Cover or Stretch.
OpacityFrom 0 to 100%. The default is 100%.
RotationFrom -180 to 180 degrees, around the layer's own center.
BlendNormal, Multiply or Screen.
Rounded corners (px)Rounds the corners of the layer.
Drop shadowA blurred, tinted copy of the layer under it, with Blur, Shadow X, Shadow Y, Shadow color and Shadow opacity.
Layer order (z)Higher numbers draw on top. Empty means the layer number, so Layer 1 is at the bottom. The up and down buttons in the preview set it too.

Why percentages: the size of the base image is decided upstream. It may be a 2K render today and a 4K poster tomorrow. A layer set "12% wide, 4% in from the right" lands in the same place on both, while a pixel position would not. Once a base image is connected, the settings panel shows the pixel value next to each percentage.

A layer that falls partly outside the base is cut at the edge of the base. A layer entirely outside the base is skipped, which is not an error. SVG logos are drawn at the final pixel size, so they stay crisp.

Start from a preset

Preset (fills layer 1) sets up Layer 1 in one click. Every value stays editable afterwards.

PresetLayer 1
WatermarkBottom-right, 10% wide, 85% opacity
Logo top-leftTop-left, 14% wide
CenteredCentered, 40% wide
Full bleedCovers the whole base

Example: a watermark

Connect the photo to Base and the logo to Layer 1, then set Layer 1 to these values:

SettingValue
Anchorbottom-right
Width12
Offset X-4
Offset Y-6
Opacity95%

On a 2000 × 1000 pixel base, the logo is 240 pixels wide. Its right edge is 80 pixels from the right, and its bottom edge is 60 pixels from the bottom. On a 4000 × 2000 base, every one of those numbers doubles, and the node needs no change.

Layer kinds

KindWhat it isHow it is sized
ImageA picture wired into the layer's input: a logo, a Remove Background cut-out, a stickerWidth in percent of the base width; the height follows the picture unless Height is set
TextReal text, drawn with a bundled font. The preview uses the same font file, so the result matches the preview.Size (% of base height); the box fits the text
QRA QR code for a link or any textWidth in percent of the base width; always square
ShapeRectangle, Rounded rectangle, Pill, Circle, Ribbon, Triangle, Diamond, Hexagon, Star, Starburst badge or ArrowWidth and Height in percent of the base

To change a text, QR or shape layer back into a picture layer, use Turn back into an image slot.

Text layers

  • Fonts: Inter, Montserrat, Space Grotesk, Playfair Display, Oswald, Bebas Neue, Anton, Pacifico, Rubik and Heebo. Rubik and Heebo set Hebrew. Variable fonts accept any Weight from 100 to 900.
  • Layout: Align, Letter spacing, Line height and Uppercase. Right-to-left text is laid out right to left on each line.
  • Outline: an outline around the letters, with Outline width and Outline color.
  • Background box (pill / badge): a box behind the text, with Box color, opacity, Padding and a corner radius. A large radius makes a pill.

Image layers

Every layer can have a drop shadow and rounded corners. An image layer has four more finishes:

  • Crop cuts the picture to a circle.
  • Feather edges fades the edges out over a number of pixels.
  • Outline draws a line around the silhouette.
  • Glow adds a colored glow around it.

QR layers

Type the link in QR content (URL or text). You can change it at any time, and the code updates. QR color, QR background and Quiet zone set the look.

To take the link from the workflow instead, switch on Use workflow output. The node gets a QR link input: wire a Text node, a List column or any text output into it. With a List column, one run makes one code per row, for example fifty codes for fifty product pages. A run with Use workflow output on and nothing wired is refused, with a message that names the input.

Platform sizes and safe areas

Platform size turns the output into the pixel size of a platform:

  • YouTube thumbnail and YouTube channel banner
  • LinkedIn company cover and LinkedIn personal cover
  • X header and Facebook cover
  • Instagram post, Instagram portrait and Instagram story
  • Link preview, slide and A4 print

The default is Keep the base image size. When you choose a platform, the preview draws its safe area as a dashed box: the part every device shows. Choosing a platform also sets Base fit to Cover, so the picture fills the canvas. For the YouTube channel banner, the preview shows three nested zones: what TVs show, what desktops show and what all devices show.

While you drag, a layer snaps to the center lines, the edges and the safe area. Hold Shift to drag freely.

Export also for renders the same composition into more platform canvases in the same run. Tick as many platforms as you need, up to all twelve. The extra files appear as chips on the result. Every ticked platform is also an output on the node. For example, the X header render can feed an X Post node while the LinkedIn cover feeds a LinkedIn Post node in the same run. Each extra platform costs 2 credits.

Open full editor opens a large editing view of the node. Its header has the same platform picker, and the stage becomes that platform's canvas with its safe area.

Output size and format

SettingWhat it does
Custom output sizeOff by default: the output keeps the pixel size of the base. On: the base is placed into a canvas of Canvas width (px) × Canvas height (px) with a Canvas background. Base fit decides how: Contain fits the whole base and fills the rest with the background color, Cover fills the canvas and crops the base. The layers are still placed relative to the base.
Output formatPNG (keeps transparency), the default, JPG or WebP. JPG and WebP remove transparency.

Mask output

The Mask output is a black-and-white image. White marks the area an AI edit may change. Mask output chooses what is white:

OptionWhite area
Ring around the layers (for AI finish)A ring around the placed layers, Ring width (px) wide. This is the default.
The layers themselvesThe layers
Everything except the layersThe rest of the image
No maskNothing

Wire the mask into the Mask input of Modify Image.

Make it look part of the picture

The node never redraws your layers. That is the point, but sometimes you want the scene to react to them: a contact shadow under a placed product, matching light on a logo, a reflection on a floor.

Click Add AI finish (make it look part of the picture). It adds a Modify Image node after this one. The new node is wired to the composite and to the mask ring around your layers, and its prompt asks for exactly that. The model can paint only in the ring, so it adds shadows and light around the elements. Every pixel outside the mask is kept from the composite, so the elements stay pixel-exact. To steer the look, wire a Composition Effects picker into that Modify Image node.

Suggest placement (AI), in a layer's settings, asks a vision model where the layer should go. It avoids faces, the main subject and busy textures, and it stays inside the safe area when a platform is set. It then fills in the anchor and the offsets. It costs the same as one Describe Image run, and you can drag the layer afterwards as usual.

Credits

Image Overlay costs 10 credits for the composite and its mask, whatever the size of the base image or the number of layers. Each extra platform under Export also for adds 2 credits.

Export also forCredits
Nothing10
2 platforms, for example Instagram post and YouTube thumbnail14
All 12 platforms34

The Run button, the workflow estimate and the API all use the same formula. The Modify Image node that Add AI finish creates is charged separately, at its model's price.

Tips

  • Use transparent files. Feed a transparent PNG or an SVG as a layer. An opaque JPG logo is placed as a rectangle, so run it through Remove Background first.
  • Keep brand assets as files. Draw the picture with an AI node, then place the real logo here. A model always redraws a wordmark slightly wrong.
  • Blend marks into the image. Use Multiply for dark marks on light photos and Screen for light marks on dark photos.
  • Lift a cut-out. A soft drop shadow separates a person or a product from a busy background. Try blur 24, Shadow X 0, Shadow Y 12 and 50% opacity.
  • Make a banner from a wider render. Turn on Custom output size with Cover, for example at 1500 × 500 pixels. The logo stays placed relative to the base, not the canvas.
  • Generate the base first. The pixel values next to each percentage appear once a base image with a known size is connected.
  • Rotate, then offset. Rotation turns the layer around its own center. Add an offset to keep a rotated mark tight in a corner.
  • Use text layers for words, files for logos. Use a text layer for headlines, captions, prices and lower thirds, and an SVG or PNG file for the brand wordmark.

From the API

POST /v1/image-overlay takes the base image and the layers. This call places the watermark from the example above:

{
  "imageUrl": "https://example.com/photo.png",
  "layers": [
    { "imageUrl": "https://example.com/logo.svg", "anchor": "bottom-right", "width": 12, "x": -4, "y": -6, "opacity": 0.95 }
  ]
}
  • A text, QR or shape layer sets layers[i].kind to text, qr or shape, with a text, qr or shape object. opacity runs from 0 to 1, and zIndex sets the stacking order.
  • canvas sets a platform size or a custom output size. outputFormat is png, jpg or webp.
  • variants, for example ["youtube-thumbnail", "x-header"], adds platform renders. The result lists them as variants, each with an id, a label, a width, a height and a url.
  • maskMode is around, layers, outside or none, and maskSpread is the ring width. The job's output carries the mask as maskUrl.
  • A QR layer with qr.fromInput set to true takes its link from a top-level qrText.

Frequently asked questions

Last updated on

On this page