readmes

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.

Example: an email address badge with fox ears, shown as an image

URL builder

Preview

Preview of the configured email badge

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

OptionEffect
pillRounded pill (default).
cardCard; puts the caption on its own line above the address.
plainNo background, just the icon and address.
caption-email, caption-contact, caption-mail-meCaption text: "Email", "Contact", "Mail me". No caption by default.
noiconHide the envelope icon.
earsAdd small fox ears on top.

Size and color

OptionEffect
size-NFont size in pixels, 10 to 40 (default 16).
border-NBorder width in pixels, 0 to 8 (default 0).
accent-RRGGBBIcon, caption and border color as 3 or 6 hex digits without #.
autoFollow the viewer's light or dark preference (default).
light, darkForce a theme.
transparentNo background for pill and card when there is no caption or border.

Scraper resistance

OptionEffect
jitter-NRandom per-letter offset, 0 to 3 (default 1). Changes on every load.
noise-NFaint 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.