Free ยท Private ยท Open Source ยท Runs entirely in your browser
๐ Try it live ยท ๐ฅ Install Guide ยท ๐ก Why ยท ๐ Deploy your own ยท ๐ค Contribute
WatermarkOut removes watermarks from AI-generated images (Gemini, DALLยทE, Midjourney, Bing Image Creator, Adobe Firefly, Meta AI) and short videos โ entirely client-side. The AI model runs in your browser via WebAssembly. Your files never touch any server. There is no server.
There are 3 ways to use WatermarkOut. Detailed steps for each in INSTALL.md.
๐ https://iamramgarhia.github.io/free-ai-watermark-remover/
- Open the link
- Drop in an image or video
- Pick a preset (Gemini โจ, DALLยทE, Midjourney, etc.) or draw your own rectangle
- Click Remove watermark
- Download the clean file
That's it. The file never left your browser.
Visit the URL โ your browser shows an "Install" icon in the address bar โ click it โ WatermarkOut now has a real desktop icon and opens in its own window. Works on Windows, macOS, Linux, iOS, Android. Zero downloads from any app store.
๐ฅ Full install steps per OS in INSTALL.md โ
git clone https://github.com/IamRamgarhia/free-ai-watermark-remover.git
cd free-ai-watermark-remover/static
python -m http.server 8000
# Open http://localhost:8000No build step. No npm install. No compilation. Just static files.
๐ฅ Step-by-step in INSTALL.md โ
Online watermark removers charge โน800โโน2,500 / month ($10โ$30), upload your private photos to unknown servers, and add their own watermark on the free tier. WatermarkOut runs the AI inside your browser tab โ verifiable in DevTools (Network tab stays empty after first load).
- โ Free forever โ costs $0 to host on GitHub Pages
- โ Open source under MIT โ fork, audit, modify
- โ Works offline after first visit
- โ Zero accounts, zero telemetry
| ๐ผ Image watermark removal | JPG, PNG, WEBP, BMP โ up to 100 MB |
| ๐ฌ Video watermark removal | MP4, WEBM, MOV โ audio preserved, real-time playback preview |
| ๐ค MI-GAN inpainting | Picsart Research ICCV 2023 model, 29 MB |
| โจ Watermark presets | Gemini, DALLยทE, Midjourney, Bing, Firefly, Meta AI |
| ๐จ Manual masking | Rectangle, brush, eraser, undo |
| ๐ BEFORE/AFTER compare | Toggle to see original vs cleaned |
| ๐ 100% offline AI | After first load, zero outbound requests |
| ๐ฑ Installable PWA | Desktop icon, standalone window, offline support |
- Any browser supporting WebAssembly + Service Workers:
- Chrome / Edge 90+
- Firefox 90+
- Safari 16.4+ (macOS / iOS)
- ~250 MB free storage (model + app cache)
- WebGPU is auto-detected and used when available (huge speedup); falls back to WASM multi-threaded otherwise
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Your Browser Tab โ
โ โ
โ [Image] โ [Canvas mask] โ [MI-GAN AI (WebAssembly)] โ
โ โ โ โ
โ โ โผ โ
โ โโโโโโโโโโโโโโโโโโโ [Composite result] โโโ โฌ Download โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
No server. No upload. No exit point.
The model
- MI-GAN (Picsart Research, ICCV 2023). A GAN-based inpainting model designed specifically for mobile / browser deployment.
- Exported to ONNX (29 MB) and hosted on Hugging Face.
- Runs via ONNX Runtime Web with WebGPU โ WebGL โ WASM fallback chain.
- Cached in IndexedDB after first download โ never re-downloads.
The pipeline (matches Picsart's official Python demo.py):
- Find user's mask bounding box; crop image with context.
- Resize crop to model's fixed 512ร512.
- Normalize image to
[-1, 1], mask to1=keep / 0=inpaint(yes, the polarity is inverted from LaMa). - Build 4-channel input:
[mask-0.5, R*mask, G*mask, B*mask]. - Run model. Output is
[-1, 1]float32; map to[0, 255]via(v * 0.5 + 0.5) * 255. - Composite into original at full resolution โ only masked pixels are replaced, rest stays pixel-identical.
Cross-Origin Isolation
A service worker injects COOP / COEP headers so the page is crossOriginIsolated. This unlocks WebAssembly multi-threading + SIMD + WebGPU. Without it, inference is single-threaded WASM (~5ร slower).
- Fork or clone this repo.
- Push to your own GitHub.
- Settings โ Pages โ Source: Deploy from a branch โ
main//static - Your site is live at
https://<username>.github.io/watermarkout/.
Connect the repo, set the publish directory to static/, deploy. All free for static sites.
- Create a
CNAMEfile instatic/containing your domain (e.g.watermarkout.dicecodes.com). - Add a DNS CNAME record pointing to
<username>.github.io. - Free HTTPS is auto-provisioned by GitHub Pages.
# Just serve the static/ folder over HTTP. ANY static server works.
cd static
python -m http.server 8000
# Then open http://localhost:8000There is no build step. No Node, no npm, no bundler. Edit a file, refresh, see the change. The Service Worker is registered at first visit; for code changes during dev:
Ctrl+Rโ pick up code changes (preserves the cached AI model)Ctrl+Shift+Rโ hard refresh (bypasses Service Worker; will redownload model)
| Key | Action |
|---|---|
| R | Rectangle tool |
| B | Brush tool |
| E | Eraser tool |
| Space | Toggle BEFORE / AFTER compare |
| Ctrl+Z | Undo brush stroke |
| Esc | Start over (with confirm) |
| D | Download result |
- No telemetry. No analytics, no error reporting, no "anonymous usage statistics."
- No accounts. No email, no signup, ever.
- No cloud. The model fetches once from Hugging Face. After that, nothing leaves your device.
- Auditable. Open DevTools โ Network tab โ use the app โ see zero requests. Source is MIT and inspectable.
| Limit | Why | Workaround |
|---|---|---|
| Image cap ~100 MB | Browser tab memory ceiling | Resize before upload |
| Short videos only (~30 s) | Per-frame processing overhead + memory | Trim long clips first |
| Model is fixed 512ร512 | MI-GAN ONNX export | Internally we crop + resize for higher effective resolution at the mask |
| Static-mask video mode | One AI pass + copy patch onto all frames | Best for corner watermarks (95% case); moving content behind the watermark may show a static patch |
| Complex backgrounds (faces, fine text, architecture) | LaMa/MI-GAN inpainting limitation, not a bug | Use a tighter mask; consider desktop tools like IOPaint for hard cases |
| WebGPU not in all browsers yet | Browser support catching up | Auto-falls back to WASM multi-threading |
watermarkout/
โโโ README.md
โโโ LICENSE
โโโ CONTRIBUTING.md
โโโ WATERMARKOUT_BUILD_SPEC.md
โโโ .gitignore
โโโ static/ โ deploy this folder
โโโ index.html main app
โโโ about.html about page (DiceCodes branding)
โโโ offline.html shown when offline & uncached
โโโ manifest.webmanifest PWA manifest
โโโ sw.js Service Worker (offline + COI headers)
โโโ css/
โ โโโ app.css
โ โโโ about.css
โโโ js/
โ โโโ app.js main controller
โ โโโ coi-bootstrap.js enables Cross-Origin Isolation
โ โโโ inpainter.js MI-GAN ONNX inference
โ โโโ model-cache.js IndexedDB model caching
โ โโโ mask.js canvas brush/rect/eraser
โ โโโ upload.js drag-drop, validation
โ โโโ video.js video pipeline (decode โ mask โ encode)
โ โโโ fs-folder.js File System Access API integration
โ โโโ debug.js diagnostic helpers (no UI)
โ โโโ toast.js notifications
โ โโโ updates.js Service Worker update flow
โ โโโ version.js
โโโ assets/
โโโ logo.svg
โโโ logo-icon.svg
โโโ prince-avatar.png (optional, falls back to GitHub avatar)
โโโ icons/ PWA icons (192/512/maskable)
Built solo by Prince Ramgarhia (DiceCodes) in Batala, Punjab ๐ฎ๐ณ.
Solo-built. No VC. No growth team. Just one developer trying to make pro-grade creative tooling permanently free for everyone.
- ๐ dicecodes.com
- ๐ง Contact@dicecodes.com
- ๐ @IamRamgarhia
If WatermarkOut saved you money, time, or a privacy headache:
- UPI (India):
princeramgarhiaa-1@okaxis - GitHub Sponsors: github.com/sponsors/IamRamgarhia
- โญ Star this repo โ free and helps others find it
- MI-GAN โ the inpainting model (Picsart-AI-Research, ICCV 2023)
- ONNX Runtime Web โ Microsoft's browser ML runtime
- lxfater/inpaint-web โ reference implementation we learned from
- Sanster/IOPaint โ gold-standard LaMa wrapper, source of our composite logic
- dinoBOLT/Gemini-Watermark-Remover โ reference for browser-based watermark removal
MIT โ fork, modify, use commercially. Made with โค๏ธ in India ๐ฎ๐ณ.