Metadata-Version: 2.4
Name: gamma-watermark-remover
Version: 1.0.0
Summary: Remove the "Made with Gamma" watermark from PDF and PPTX exports — structural, lossless, offline.
Project-URL: Homepage, https://gammaremover.com
Project-URL: Repository, https://github.com/gammaremover/gamma-watermark-remover
Project-URL: Web version (no install), https://gammaremover.com
Author-email: GammaRemover <support@gammaremover.com>
License: MIT
License-File: LICENSE
Keywords: gamma,gamma.app,made-with-gamma,pdf,powerpoint,pptx,remover,watermark
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Office/Business
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Requires-Dist: pypdf>=4.0
Requires-Dist: python-pptx>=0.6.23
Description-Content-Type: text/markdown

# Gamma Watermark Remover

![Gamma Watermark Remover — remove the Made with Gamma badge from PDF & PPTX, free, no upload](assets/banner.webp)

Remove the **"Made with Gamma"** watermark from PDF and PowerPoint (.pptx) files exported from [Gamma.app](https://gamma.app) free accounts — structurally, losslessly, and completely offline.

> **Don't want to install Python?** The same engine runs **100% in your browser** (WebAssembly, no upload, no signup) at **[gammaremover.com](https://gammaremover.com)** — your files never leave your device.

## Before / After

| Before | After |
|--------|-------|
| ![Gamma export before watermark removal — Made with Gamma badge visible](examples/pdf-before.webp) | ![Gamma export after watermark removal — clean page](examples/pdf-after.webp) |

## Why this tool

The Gamma badge in an exported file is a **separate document object** — an image with a `gamma.app` hyperlink in PDFs, a hyperlinked shape on the slide master in PPTX files. That means it can be *deleted*, not painted over:

- **Lossless** — text stays selectable, slides stay fully editable; nothing is re-rendered or rasterized
- **Offline** — pure Python, runs locally; nothing is uploaded anywhere
- **Precise** — only objects linked to `gamma.app`/`gamma.to` are targeted; your content is never touched
- **Honest** — if an export flattened the badge into the page image (rare), the tool tells you instead of silently failing

## Install

```bash
pipx install gamma-watermark-remover
# or
pip install gamma-watermark-remover
```

Or straight from source:

```bash
git clone https://github.com/gammaremover/gamma-watermark-remover.git
cd gamma-watermark-remover
pip install .
```

## Usage

### CLI

```bash
# single file → writes deck-no-watermark.pdf next to it
gamma-watermark-remover deck.pdf

# custom output path
gamma-watermark-remover deck.pptx -o clean.pptx

# batch
gamma-watermark-remover exports/*.pdf exports/*.pptx
```

Example output:

```
deck.pdf: removed 12 watermark object(s) across 6 page(s) → deck-no-watermark.pdf
```

### Python API

```python
from pathlib import Path
from gamma_watermark_remover import clean_pdf, clean_pptx

result = clean_pdf(Path("deck.pdf").read_bytes())
Path("clean.pdf").write_bytes(result.cleaned)
print(result.removed, "objects removed,", result.units, "pages")

result = clean_pptx(Path("deck.pptx").read_bytes())
Path("clean.pptx").write_bytes(result.cleaned)
```

## How detection works

Transparency matters for a tool like this, so here is the exact logic:

**PDF** (`pypdf`): every page is scanned for (1) link annotations whose URI resolves to `gamma.app`/`gamma.to` — these are dropped, and (2) the draw operation of the small bottom-right image that forms the badge. The content stream's transformation matrix is tracked through `q`/`Q`/`cm` operators so each image's true position and size are known; a size guard (`≤45%` page width, `≤25%` height) guarantees full-page/background images are never touched. If a gamma link exists but no discrete badge image is found, the file is flagged `may_remain` — the badge was probably flattened into the page raster.

**PPTX** (`python-pptx`): Gamma stores the badge on the **slide layouts/masters**, which is why it appears on every slide. All masters, layouts, and slides are scanned; a shape is removed only if it (or a text run inside it) carries a `gamma.app`/`gamma.to` hyperlink, or its shape name contains `gamma`. Position alone never triggers removal, and the tool deliberately does **not** match bare "Made with" text — that would delete legitimate user content.

## Web version

[**gammaremover.com**](https://gammaremover.com) runs this same engine in your browser via Pyodide (WebAssembly):

- no installation, works on phones too
- no upload — processing is local, files never reach a server
- PDF preview of the cleaned result before download
- free, no account, no file limits

## Responsible use

This tool is for cleaning the export branding from **files you created or have the right to modify** — client decks, class submissions, portfolio pieces you authored. It is not for altering other people's work. Gamma's official watermark-free path is its paid plan, which also includes unlimited AI credits; if you use Gamma heavily, [it may genuinely be worth it](https://gammaremover.com/en/blog/gamma-free-vs-pro-watermark/). Keep your original exports and review cleaned files before sharing.

## License

[MIT](LICENSE)
