Privacy email badge
Show an email address on your GitHub profile as an image instead of text. When an address starts getting spam, the owner swaps to the next one with a single secret link, and every profile showing the badge updates.
URL builder
Preview
All options
Options are path segments after https://readmes.pages.dev/email/, in any order. A trailing .svg is allowed. An unknown option renders a small error badge.
Style
| Option | Effect |
|---|---|
pill | Rounded pill (default). |
card | Card; puts the caption on its own line above the address. |
plain | No background, just the icon and address. |
caption-email, caption-contact, caption-mail-me | Caption text: "Email", "Contact", "Mail me". No caption by default. |
noicon | Hide the envelope icon. |
ears | Add small fox ears on top. |
Size and color
| Option | Effect |
|---|---|
size-N | Font size in pixels, 10 to 40 (default 16). |
border-N | Border width in pixels, 0 to 8 (default 0). |
accent-RRGGBB | Icon, caption and border color as 3 or 6 hex digits without #. |
auto | Follow the viewer's light or dark preference (default). |
light, dark | Force a theme. |
transparent | No background for pill and card when there is no caption or border. |
Scraper resistance
| Option | Effect |
|---|---|
jitter-N | Random per-letter offset, 0 to 3 (default 1). Changes on every load. |
noise-N | Faint random specks, 0 to 3 (default 1). |
Swapping the address
The owner of a deployment holds a secret token. Opening /email/swap/<token> moves to the next address in the list, /email/swap/<token>/<n> jumps to address number n, and /email/status/<token> shows which one is live, with the address partly masked. A wrong token gets the same 404 as any missing page. The badge is never cached, so profiles show the new address within about a minute.
The demo on this site shows made-up addresses, and only its owner can swap them. To use it for your own addresses, deploy your own copy from the template repository.
What it protects against, and what it doesn't
The address never appears as text in the SVG source, and its pixels shift slightly on every load. Simple scrapers that search pages for text that looks like an address won't find it. A determined person or an OCR tool can still read it, because any image people can read, a machine can too. That is why the badge is built around swapping: when an address leaks, retire it and move on.