AI Image Has a Fake Watermark or Garbled Signature

A watermark-shaped smudge or fake signature in the corner is training-data residue, not a real watermark. Negative-prompt it (SD only), crop the corner, or inpaint it out.

You look at the bottom corner of a clean-looking generation and there’s a smudge shaped like a watermark: usually unreadable text, a Shutterstock-style logo silhouette, or what looks like a scrawled signature. Occasionally it’s a legible “shutterstock” or “getty” word; more often it’s a vague watermark-shaped ghost.

Fastest fix: if you’re on a Stable Diffusion family model (SDXL, SD 3.5, Pony, Illustrious), add watermark, signature, logo, text to your negative prompt and re-roll; that clears it in most cases. If you’re on Flux or Midjourney, negative prompts work differently (see below) so go straight to cropping the outer ~5% or inpainting the corner out.

This is training-data residue, not a tracking watermark. The model was trained on millions of stock photos that carried watermarks, so it learned that “professional photo” sometimes comes with a watermark-shaped artifact. It reproduces the shape even though there’s no real logo or attribution behind it. (This is unrelated to invisible provenance watermarks like Google’s SynthID or C2PA metadata, which are a separate topic and can’t be removed by re-prompting.)

Which bucket are you in?

SymptomMost likely causeGo to
Same corner every time, center cleanResolution / corner artifactingCause 4, Step 3
Legible “getty”/“shutterstock”/“alamy” textStock-style prompt words or brand nameCause 2/5, Steps 1-2
Random watermark-ish blob, varies per seedNo negative-prompt blocker (SD)Cause 1, Step 1
Happens on every model you tryStock-style style words, not the modelCause 2, Step 2
Only on one checkpoint, clean on othersCheckpoint trained on watermarked dataCause 3, Step 5

Common causes

Ordered by hit rate, highest first.

1. No negative-prompt watermark blocker (SD-family only)

On Stable Diffusion models, without watermark, signature, logo, text overlay in the negative prompt the model freely generates them whenever it thinks “professional photo” warrants it. Note: Flux ignores negative prompts in its standard distilled/guidance pipeline, and Midjourney uses the --no parameter instead of an inline negative field, so this cause and Step 1 apply specifically to SD-family tools.

How to spot it: you’re on SDXL/SD 3.5/Pony/Illustrious and your negative prompt is missing those words.

2. Style words that evoke stock-photo training data

"stock photo style, professional photography, commercial photography,
high quality photograph, editorial photography, cinematic"

These phrases are over-represented in watermarked training data, so the model associates them with the watermark itself. This is the one cause that follows you across every model, including Flux and Midjourney.

How to spot it: prompt contains stock photo, professional photography, editorial, or commercial. Replace with neutral terms (Step 2).

3. Checkpoint has heavy stock-photo training

Some checkpoints (older SDXL fine-tunes, certain “photoreal” merges, models trained on loosely web-scraped data) show far more watermark residue than others.

How to spot it: the same prompt on a known-clean checkpoint (Juggernaut XL v9+, RealVisXL v5+, FLUX.1 dev or FLUX.2 dev base) produces no watermark, so the original model is the source.

4. Generated at a resolution where corners get messy

Some models produce more corner artifacts at off-native resolutions (e.g., 768×768 on SDXL, whose native training size is 1024×1024). The center is fine; the corners collect garbage.

How to spot it: the artifact is always in the same corner and the center is clean. Re-run at the model’s native resolution.

5. A brand or press-style prompt the model ties to watermarks

shot like a Getty Images photo, Reuters style, documentary press photography: all of these carry brand association in training data, and the model may reproduce the brand watermark with the look.

How to spot it: your prompt names a watermarked-source brand or agency. Drop the brand name (Step 2).

Shortest path to fix

Step 1: Negative-prompt the watermark (SD-family)

For SDXL / SD 3.5 / Pony / Illustrious, paste into the negative prompt:

watermark, signature, logo, text, text overlay,
stamp, copyright, branding, getty images, shutterstock,
adobe stock, alamy, depositphotos, watermark text,
attribution text, artist signature, frame border, photo frame

This single addition clears the watermark in roughly 70-80% of SD-family cases. Keep the list tied to the actual problem; SDXL tends to flatten detail if you bloat the negative prompt with unrelated terms, so don’t pile on generic quality words here.

For Midjourney (V8.1, the current default, and V7), use the --no parameter instead of an inline negative field:

--no watermark, signature, text, logo

Note that --no reads each word independently (it applies roughly a -0.5 weight per term), so keep the terms simple and unambiguous.

For Flux (FLUX.1 / FLUX.2 dev): negatives are not honored, so skip to Step 2 (rephrase the prompt) or Step 4 (inpaint).

Step 2: Drop watermark-evoking style words

Remove from the positive prompt:

stock photo, stock photography, professional photography,
commercial photography, editorial photo, getty style,
shutterstock style, reuters style, AP photo

Replace with neutral descriptors:

photograph, 35mm film, natural photo, documentary,
candid moment, available light

This is the fix that works on every model, including Flux and Midjourney, because it removes the trigger rather than fighting it.

Step 3: Crop the outer ~5% and re-upscale

Watermark residue almost always hides in the corners, so a crop plus upscale clears most of it:

# Photoshop / Pixelmator (manual)
1. Crop ~5% off each edge
2. Resize back up to original dimensions (bicubic or AI upscale)
3. Done the corner artifact is gone

# Command line (ImageMagick 7)
magick input.png -gravity center -crop 90%x90%+0+0 -resize 1024x1024 output.png

# Or compose with an intentionally tighter crop
"... --ar 4:5"   # Midjourney: a taller frame naturally trims corner artifacts

Step 4: Inpaint over the watermark

If cropping isn’t acceptable (you need the full frame):

# Mask the watermark region, then regenerate just that patch
- Photoshop / Affinity / Pixelmator: Generative Fill / Remove tool
- SDXL Forge / ComfyUI: inpaint with a prompt matching the surroundings
- FLUX.1 Kontext: "remove the watermark in the corner" (natural-language edit)
- Gemini "Nano Banana" image edit: same, natural-language removal
- Cleanup.pictures / Photoroom: free browser tools for a one-off

Modern inpaint tools reconstruct from surrounding pixels rather than just painting over, so the patch blends seamlessly even on textured backgrounds.

Step 5: Switch checkpoint

Try the identical prompt on a cleaner model:

# Known cleaner
- Juggernaut XL v9+
- RealVisXL v5+
- FLUX.1 dev / FLUX.2 dev base
- Midjourney V8.1 / V7 (heavily filtered training set)

# Known watermark-heavy (avoid for stock-style work)
- Older SDXL base / early fine-tunes
- Generic "photoreal" merges
- Some loosely web-scraped fine-tunes

Step 6: Push generation quality up

# Midjourney V7 (legacy)
--quality 1   # default on V7; valid values are 0.25, 0.5, 1
              # affects only the first 4-image grid, not upscales/variations
              # raise it only if you had explicitly lowered it to 0.25/0.5
              # NOTE: V8.1 (the current default) dropped --quality; on V8.1 just
              # use the default model and rely on Steps 1-5 plus HD mode instead

# SDXL
- More steps (30-40) + a better sampler (DPM++ 2M Karras)
- CFG 6-7 — the model commits harder to "no watermark" once you've specified it

How to confirm it’s fixed

  1. Zoom to 100-200% on every corner and along the bottom edge; that’s where residue hides.
  2. Generate 3-4 seeds with the corrected prompt, not just one; a single clean roll can be luck.
  3. If you cropped or inpainted, check the patch edges for a seam or a blur halo at full resolution before delivery.

Prevention

  • Bake watermark, signature, text, logo into your default SD negative-prompt template, and --no watermark, signature, text into your Midjourney preset.
  • Avoid stock photo / professional photography style words; use photograph / 35mm film instead. This is the single highest-leverage habit because it works across all models.
  • For commercial work, default to known-clean checkpoints (Juggernaut, RealVisXL, FLUX dev).
  • Always inspect corners on every generated image before delivery.

FAQ

Why does AI add a watermark when I never asked for one? It isn’t adding a real watermark. The model saw millions of watermarked stock photos in training and learned that “professional photo” sometimes includes a watermark-shaped blob, so it paints the shape from memory. There’s no logo file behind it, which is why it usually looks garbled.

Negative prompts aren’t removing the watermark on Flux. What gives? Flux’s standard pipeline doesn’t honor negative prompts, so adding watermark there does nothing. On Flux, remove the stock-style trigger words from your positive prompt (Step 2), or inpaint/crop the corner out (Steps 3-4).

Is it legal to remove a watermark-shaped artifact from my AI image? A training-data artifact isn’t anyone’s actual logo or copyrighted mark, so removing the smudge from your own generation is generally fine. That’s different from stripping a real third-party watermark off someone else’s photo, and different again from invisible provenance signals like SynthID or C2PA metadata, which identify AI origin and aren’t removed by re-prompting.

The watermark is always in the exact same corner. Why? That’s a resolution/corner-artifacting signature, not a content one. Run at the model’s native resolution (1024×1024 for SDXL), or just crop the outer ~5% and upscale (Step 3).

Which checkpoints are cleanest for stock-style photography? As of June 2026, Juggernaut XL v9+, RealVisXL v5+, and the FLUX dev bases are reliably clean. Avoid older SDXL base, generic “photoreal” merges, and loosely web-scraped fine-tunes for commercial work.

Tags: #Image generation #Debug #Troubleshooting