n8n watermark images: How do I add a logo watermark?

Learn how to n8n watermark images with a free workflow. Copy-paste setup with 1200/220px resize for consistent placement, batch support, easy tweaks and edits.

Spread the love
Bikers rights gif via giphy
"bikers rights" portlandia gif via giphy

TL;DR

A community-built n8n template lets you overlay a logo watermark onto any image without Cloudinary or a third-party service.

I added resize nodes for both the background image and the logo so placement stays consistent every single time.

You can tweak the JavaScript inside the workflow or paste into ChatGPT to change where the watermark lands.

This is a copy-paste solution; you don’t need to understand every node to get it working.

Hey y’all 👋, so if you’ve been trying to figure out how to n8n watermark images and you’ve been banging your head against the wall with Cloudinary or some other service that just won’t cooperate, I got you. I spent way too long on this myself and I’m going to save you the trouble. 💪

I previously handled all my image watermarking on make.com using Cloudinary, but once I moved over to n8n that whole setup fell apart. The API integration just doesn’t work right through the HTTP Request node, and I wasn’t about to spend another weekend debugging authentication headers.

So I found a workaround in the n8n community, and it’s really cool because it works, it’s free, and you can copy it right now.

https://www.youtube.com/watch?v=

Learn how to effortlessly add watermarks to your images using n8n.

Why Cloudinary Was a Dead End (n8n vs Make.com Image Processing)

So here’s some context. On make.com I had a nice little Cloudinary setup going. Cloudinary is genuinely great for media management because it handles watermarking through URL-based overlay transformations, which is slick. You basically pass parameters in the image URL and it spits back your watermarked version. Clean.

Thumbnail showcasing adding watermarks using n8n
Learn how to effortlessly add watermarks to your images using n8n.

But n8n doesn’t have a native Cloudinary node. And when I tried to wire it up through the HTTP Request node, it just… didn’t work right. Authentication was finicky, the response formats were weird, and I burned hours on something that should’ve taken minutes.

Could I have eventually gotten it working? Probably. But I’m not here to fight APIs when there’s a perfectly good alternative sitting right there in the community templates. Life’s too short for that.

Warning callout icon.

Heads up

If you’re coming from make.com and expecting a drop-in Cloudinary replacement in n8n, you won’t find one. The community workflow approach below is the faster path, so don’t waste time on what I already wasted time on.

The Community Workflow That Does It All

Full disclaimer, I got this from (I believe) the n8n community. There are actually several watermark templates floating around on the template sites, but this particular one handles the full pipeline: fetch background image, fetch logo, merge, done.

Here’s what the workflow looks like at a high level. You’ve got two parallel tracks running side by side:

Track 1, The Background Image:

  • A node fetches your main image from a URL
  • It gets resized
  • Metadata gets extracted and nested
  • The binary data gets renamed so the merge node knows what’s what

Track 2, The Logo:

  • Same deal, fetches your watermark logo from a URL
  • Resizes it
  • Extracts and nests metadata
  • Renames the binary

Then both tracks converge into a merge node that waits for both images, combines them into a single item, calculates positioning, and composites the logo on top of the background. The output is your watermarked image, ready to download or pass to the next step in your workflow.

Now I’ll be honest, I don’t fully understand what every single node does in this thing. There’s a Set node in there that I think just passes data along, and there’s a metadata extraction step that might be overkill for simple use cases. “I don’t really get what this does” is literally what I said when I was poking around in there.

But you know what? It works. And that’s what matters when you’re trying to get stuff done and not write a dissertation on image processing pipelines.

Info icon.

How n8n handles images

If you’re confused about “binary data,” don’t be. n8n treats files (images, PDFs, whatever) as raw binary attached to items, separate from the JSON text data. The “Rename Image Binary” nodes are just labeling things so the merge step knows which image is the background and which is the overlay.

The Tweak I Added: Resize Nodes for Consistent Placement

So the original community template worked, but I noticed something annoying. If my background images were different sizes the watermark would end up in slightly different spots, or it’d look huge on a small image and tiny on a large one. Super inconsistent.

My fix was dead simple. I added two resize nodes that weren’t in the original template:

  • One resizes the background image to 1200px wide every time
  • One resizes the logo to 220px wide every time

Like I said in the video, “I added this to resize the image, so it’s always going to be this size no matter what, and this is always going to be this size no matter what.” That’s how you get consistent placement for the watermark.

Resize Nodes: Before vs After

Without Resize Nodes

  • Watermark size varies relative to background
  • Logo might be comically large on small images
  • Placement coordinates look different each time
  • Inconsistent results across a batch of images

With Resize Nodes

  • Background always 1200px, logo always 220px
  • Logo-to-background ratio stays locked
  • Position coordinates hit the same spot every time
  • Batch processing gives you uniform output

To add these yourself, you just drop in an Edit Image node (n8n’s built-in image processing node) right after each HTTP Request that fetches the image. Set the operation to “Resize,” plug in your width, and you’re good.

If you need a different aspect ratio or size for your use case (maybe you’re doing Instagram squares at 1080px), just change the numbers.

How to Change Where the Watermark Goes

The workflow has a Code node with some JavaScript that controls exactly where the logo lands on the background image. By default (at least in the version I’m using), it puts the watermark in the bottom right corner.

You don’t need to be a JavaScript developer to change this. The code is calculating pixel offsets from the edges of the image, so you’re basically just changing a few numbers. Want it in the bottom left? Flip the x-coordinate math. Want it centered? Average the dimensions.

Want it 50 pixels from the edge instead of 20? Change the number.

And like I said, you could of course just throw this into ChatGPT and let it play with your settings however you want it. Seriously, just paste the code block into ChatGPT, tell it where you want the logo, and it’ll rewrite those few lines for you. Takes about 30 seconds.

Success icon.

Common watermark positions

Bottom-right is standard for most content because it’s the least distracting. Bottom-left works if your images tend to have important detail on the right side. Center with reduced opacity is what stock photo sites use to discourage unauthorized use. Pick whatever fits your content.

How to Get This Into Your Own n8n Instance

Alright, the practical part. Getting this workflow into your n8n is about as simple as it gets:

  1. Copy the workflow JSON. I’ll have the link available where you can grab the full code.
  2. In your n8n editor, click the three dots menu (top right) and hit “Import from JSON.” Paste it in.
  3. Update two URLs. Open the “Get the Image for Background” node and paste in your background image URL. Open the “Get Logo for the Watermark” node and paste in your logo URL.
  4. Hit “Test Workflow,” the button at the top. If everything’s connected you’ll see your watermarked image in the final node’s output. You can download it right there.

That’s literally it. Four steps. The whole thing runs in a few seconds, and this one’s processing locally so it can be even faster. It’s surprisingly quick.

Now the real power here is when you plug this into a larger workflow. If you’re creating blog posts automatically and you want every featured image watermarked, you just chain this after whatever node generates or fetches your image.

Same thing for e-commerce: product photos from a supplier feed can get your branding slapped on before they hit your store. This scales nicely.

Some Room to Optimize (But Don’t Overthink It)

I’ll be real, there are nodes in this workflow I could probably remove. There’s one that seems to just re-read the image that’s already loaded, and I tried deleting it because I figured, “If I remove that, will this just continue and work properly?” and some downstream stuff broke because of dependencies. Don’t break what works.

There’s room to clean this up if you really want to, but my advice? Don’t bother until you actually need to. Get it working first. Optimization is a trap when the thing already does what you need it to do.

The one tweak I do recommend is those resize nodes I mentioned. That’s the only change that made a real difference in my output quality. Everything else is cosmetic.

Do you ever find yourself staring at images that lack any branding; wondering how to make your work stand out; and realizing it’s a must to use watermarks? 🤔
Do you ever find yourself staring at images that lack any branding; wondering how to make your work stand out; and realizing it’s a must to use watermarks? 🤔

Frequently Asked Questions

Yes, and you should. The workflow handles PNG transparency just fine, so your logo will overlay cleanly without a white box behind it. Make sure your logo file is actually saved with a transparent background though, because a white background that just looks transparent in your file browser will show up as a white rectangle on your image and it’ll look terrible.

It can, but you’d need to swap out the HTTP Request nodes with the right service node (Google Drive node, AWS S3 node, etc.) to fetch the files. The rest of the workflow stays the same since it’s all working with binary data once loaded.

Absolutely. You’d put a loop or a Split In Batches node before the workflow, feeding it an array of image URLs. Each iteration processes one image through the same watermarking pipeline. Just watch your memory usage if you’re doing hundreds at a time. Batch it carefully.

n8n’s Edit Image node supports most common formats like JPEG, PNG, WebP, GIF (first frame), TIFF, and BMP. If you’re working with something exotic like HEIC from iPhones, you’ll want to convert it first. Convert HEIC first.

The Code node in the workflow can be modified to include an opacity parameter. This is another great “paste it into ChatGPT” moment: tell it you want 50% opacity on the overlay layer and it’ll add the right line of code. Opacity is usually 0–1.

Final Thoughts

So yeah, if you need to automate image watermarking in n8n and you’ve been frustrated with the Cloudinary situation (or just don’t know where to start), this community workflow is the move. Copy it in, swap your image URLs, add those resize nodes for consistency, and you’re done.

The whole thing took me maybe 15 minutes to get running once I stopped trying to force the Cloudinary API to cooperate. It’s the fastest path.

The beauty of this approach is you can throw it into any larger workflow: blog post automation, e-commerce product pipelines, social media scheduling, whatever you need. And if you want to tweak where the logo sits or how big it is, just mess with the code node or let ChatGPT handle it.

So thanks so much and that’s it. Go build something cool with it. 🤙 Make it your own.

Leave a Comment

Frequently asked questions (FAQ)

LiaisonLabs is your local partner for SEO & digital marketing services in Mount Vernon, Washington. Here are some answers to the most frequently asked questions about our SEO services.

SEO (Search Engine Optimization) is the process of improving your website's visibility in search engines like Google. When potential customers in Mount Vernon or Skagit County search for your products or services, SEO helps your business appear at the top of search results. This drives more qualified traffic to your website—people who are actively looking for what you offer. For local businesses, effective SEO means more phone calls, more foot traffic, and more revenue without paying for every click like traditional advertising.

A local SEO partner understands the unique market dynamics of Skagit Valley and the Pacific Northwest. We know the seasonal patterns that affect local businesses, from tulip festival tourism to agricultural cycles. Local expertise means we understand which keywords your neighbors are searching, which directories matter for your industry, and how to position your business against local competitors. Plus, we're available for in-person meetings and truly invested in the success of our Mount Vernon business community.

SEO is a long-term investment, and most businesses begin seeing meaningful results within 3 to 6 months. Some quick wins—like optimizing your Google Business Profile or fixing technical issues—can show improvements within weeks. However, building sustainable rankings that drive consistent traffic takes time. The good news? Unlike paid advertising that stops the moment you stop paying, SEO results compound over time. The work we do today continues delivering value for months and years to come.

SEO pricing varies based on your goals, competition, and current website health. Local SEO packages for small businesses typically range from $500 to $2,500 per month, while more comprehensive campaigns for competitive industries may require a larger investment. We offer customized proposals based on a thorough audit of your website and competitive landscape. During your free consultation, we'll discuss your budget and create a strategy that delivers measurable ROI—because effective SEO should pay for itself through increased revenue.

Both aim to improve search visibility, but the focus differs significantly. Local SEO targets customers in a specific geographic area—like Mount Vernon, Burlington, Anacortes, or greater Skagit County. It emphasizes Google Business Profile optimization, local citations, reviews, and location-based keywords. Traditional SEO focuses on broader, often national rankings and prioritizes content marketing, backlink building, and technical optimization. Most Mount Vernon businesses benefit from a local-first strategy, though many of our clients combine both approaches to capture customers at every stage of their search journey.

Absolutely! SEO and paid advertising work best as complementary strategies. Google Ads deliver immediate visibility and are great for testing keywords and driving quick traffic. SEO builds sustainable, long-term visibility that doesn't require ongoing ad spend. Together, they create a powerful combination—ads capture immediate demand while SEO builds your organic presence over time. Many of our Mount Vernon clients find that strong SEO actually improves their ad performance by increasing Quality Scores and reducing cost-per-click, ultimately lowering their total marketing costs while increasing results.