Skip to content

Remove Watermark AI: Install IOPaint v1.6.0 (Self-Hosted)

Deploy IOPaint v1.6.0 (the renamed Lama Cleaner) locally to remove watermarks from images. Step-by-step install with the real gotchas nobody mentions.

7 min readIntermediate

By the end of this guide you’ll have a self-hosted web app running at http://localhost:8080 that erases watermarks, logos, timestamps, and unwanted objects from your images – all offline, no API key, no quota. The tool is IOPaint v1.6.0, the current name for what used to be called Lama Cleaner.

This is the part most other remove watermark AI tutorials get wrong: they still tell you to pip install lama-cleaner. That package hasn’t moved since January 2023. The current one is iopaint.

What changed: Lama Cleaner is now IOPaint

The author refactored the project – new frontend, new backend – and renamed lama-cleaner to IOPaint (announced in discussion #420 on the GitHub repo). Same erase quality, different CLI name. The two install commands you’ll see online (lama-cleaner --model=lama vs iopaint start --model=lama) are not interchangeable.

Before you install, though: the IOPaint repository was archived by the owner on Aug 13, 2025 and is now read-only. You can still install from PyPI – the latest release is 1.6.0 (March 18, 2025) – but no new releases or bug fixes are coming from the original author. Whatever ships in 1.6.0 is what you get.

That’s worth sitting with for a moment. A 23k-star project, used in thousands of workflows, now frozen. It still works – but if a new Python version breaks it, no patch is coming. Plan accordingly: pin your Python version, pin your venv, and don’t assume pip install --upgrade iopaint will ever fetch anything new.

System requirements

The minimum spec for the default lama erase model is modest. Stable Diffusion modes need real GPU memory.

Resource Minimum (lama, CPU) Recommended (SD inpainting)
OS Windows 10+, macOS 11+, Linux Same, but ROCm only on Linux
Python 3.10 or 3.11 3.10 or 3.11
RAM 8 GB 16 GB+
GPU Optional (CPU works) NVIDIA 8 GB VRAM+ or Apple Silicon
Disk ~2 GB (lama model) 10-20 GB (SD checkpoints)

The Python version isn’t a polite suggestion. Users running pip3 install iopaint on Python 3.13 hit wheel-build failures – specifically Pillow refusing to compile – and the same error has been reported across multiple GitHub issues. Stick to Python 3.10 or 3.11 and most of the pain disappears. This is especially relevant now that the repo is archived: there’s no one to push a fix if 3.13 support breaks further.

Install IOPaint

Open a fresh terminal. Create a virtual environment – IOPaint pins specific dependency versions that will collide with other tools if you install globally.

python3.11 -m venv iopaint-env
source iopaint-env/bin/activate # Windows: iopaint-envScriptsactivate

NVIDIA GPU? Install the CUDA build of PyTorch first. Skip this and pip pulls the CPU wheel – your GPU sits idle:

pip3 install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu118

Then install IOPaint and start it:

pip3 install iopaint
iopaint start --model=lama --device=cpu --port=8080

Swap --device=cpu for --device=cuda on NVIDIA or --device=mps on Apple Silicon. The official install docs confirm that visiting http://localhost:8080 opens the web UI and models download automatically at first startup.

AMD users: per the official docs, ROCm pytorch only works on Linux – not supported on Windows. Save yourself the search.

First-time configuration

Model weights land in two places on first launch, per the official FAQ:

  • LaMa / erase models:~/.cache/torch/hub/checkpoints
  • Diffusion models:~/.cache/huggingface/hub

Diffusion checkpoints can be several GB each – easy to quietly fill a laptop SSD. If your home directory drive is tight, use --model-dir=/path/with/space on the start command to redirect downloads. Run iopaint start --help once to see the full flag list; there are useful options the README doesn’t highlight.

Note: The LaMa model is the right choice for watermark removal specifically. Diffusion-based inpainting produces more realistic fills in complex backgrounds but is dramatically slower – per the original README, a 1080×720 image takes about 8 seconds on an RTX 3090. On CPU, expect that to multiply. For clean logo and watermark erasure, --model=lama is faster and typically produces cleaner edges.

Verify it works

Three checks confirm a healthy install:

  1. Version:iopaint --version should print 1.6.0.
  2. Web UI: open http://localhost:8080, drag an image in, brush over a watermark, click Run. First inference is slow (model loading); subsequent ones are faster.
  3. API:http://localhost:8080/docs shows the auto-generated API documentation – useful if you plan to script batch jobs.

For batch processing, skip the UI:

iopaint run --model=lama --device=cuda 
 --image=./input_folder 
 --mask=./mask_folder 
 --output=./output_folder

The mask is a black-and-white PNG where white marks the area to erase. Batch mode is documented in the IOPaint README.

Common install errors and the actual fixes

These errors are from real GitHub issues – not invented worst-cases.

Error: “Could not build wheels for Pillow” / “Getting requirements to build wheel did not run successfully”
Python 3.13. GitHub issue #640 (May 2025) documents this exactly. Downgrade to 3.10 or 3.11 and re-create the venv from scratch.

Error: “lama-cleaner: command not found”
Old tutorial. The binary is iopaint now, not lama-cleaner. If iopaint itself is missing after install, either the venv isn’t active or the Python Scripts folder isn’t on PATH.

Error: “When localhost is not accessible, a shareable link must be created” (Windows installer)
A system proxy is intercepting localhost – not an IOPaint bug. Per the official FAQ (referencing issue #268): add set no_proxy=localhost, 127.0.0.1, ::1 to win_config.bat before the iopaint start-web-config call.

Error: ImportError on M1/M2 Mac about _opj_encoder_set_extra_options
An Anaconda Pillow conflict, reported in GitHub issue #580 on M1 Mac with Python 3.12 inside Anaconda. Fix: reinstall Pillow in a clean non-conda venv (pip install --force-reinstall pillow) or use the system Python.

Error: dependency conflicts on safetensors / huggingface-hub
An existing diffusers or transformers install in the same environment. Start fresh with a clean venv – IOPaint pins specific versions and won’t coexist cleanly.

Upgrade and uninstall

Upgrade command:

pip install --upgrade iopaint

Given the repo archive on Aug 13, 2025, the ceiling is currently 1.6.0. No further releases are expected from the original maintainer.

To remove: per the official FAQ, run pip uninstall iopaint for a pip install, or just delete the folder for the Windows installer. Then clear the model cache if you want the disk space back – but be careful: ~/.cache/torch/hub/checkpoints and ~/.cache/huggingface/hub are shared directories. Only delete IOPaint-specific model files, not the whole folder.

Is it worth deploying a frozen tool? For stable, well-defined tasks – removing a watermark, erasing a logo from product photos – yes. The LaMa model isn’t going to get worse. What you won’t get is support if something breaks, compatibility with future Python versions, or new features. Eyes open.

FAQ

Is removing watermarks with IOPaint legal?

Depends entirely on the image. Your own photos, your client’s content with permission – fine. Stock images, paid content, other people’s copyrighted work – copyright infringement in most jurisdictions, regardless of how good the AI is. The tool is neutral; the use isn’t.

Will IOPaint work without a GPU?

Yes – for the lama model on typical screenshots and photos, CPU is fine. A few seconds per image. Don’t try Stable Diffusion inpainting modes on CPU unless you enjoy watching progress bars.

What’s the difference between IOPaint and online tools like cleanup.pictures?

IOPaint is the free, self-hosted version – your images never leave your machine, no rate limits, no subscription. Hosted services like cleanup.pictures offer convenience (no install) but process your images on their servers and cap free usage. The tradeoff is setup time vs. privacy and cost. If you’re processing sensitive images or large volumes, self-hosting is the obvious choice. If you need to remove one watermark from a holiday photo, an online tool is faster. IOPaint also exposes a local REST API at http://localhost:8080/docs – useful for scripting batch jobs that no hosted service gives you for free.

Install Python 3.11, paste the four commands from the install section, and erase your first watermark in the next ten minutes.