✉️ Email Extract — extraction test bench (kitchen sink)

Scan this page (toolbar icon) or point the Entire-site crawl at it. Grey = what the row tests, green/red = the expected result (both are CSS labels, not real page text). Expected totals: page scan → 5 (4 below + 1 the script injects into the live DOM); crawl → 4 (a crawl fetches raw HTML and never runs the script). These totals do NOT include the "de-obfuscation removed" section below — every case there is a deliberate NEGATIVE (see docs/deobfuscation-removal.md).

✅ Should extract — 4 static cases

Email our team

Reach us here: plain@kitchensink.dev

splittag@kitchensink.dev

entity@kitchensink.dev

🔒 Should NOT extract — de-obfuscation intentionally removed (compliance pinning)

These 8 cases used to extract via normalizeObfuscation / decodeCfEmail (src/lib/deobfuscate.ts), both deleted. Recovering an address someone deliberately hid from scrapers defeats their expressed wish not to be harvested (CNIL fined KASPR €200,000 over exactly this in Jan 2025). Each row below is a NEGATIVE assertion now: it is kept in the fixture, unlike being deleted, specifically so a future regression that restores obfuscation recovery fails a real e2e test instead of shipping unnoticed. See docs/deobfuscation-removal.md for the sign-off.

brackets [at] kitchensink [dot] dev

parens (at) kitchensink (dot) dev

curly {at} kitchensink {dot} dev

upper AT kitchensink DOT dev

spelled at kitchensink dot dev

fullwidth@kitchensink.dev

spaced @ kitchensink . dev

[email protected]

🟡 Scan-only — JS-injected into the live DOM

🚫 Should NOT extract — false positives & known limitations

a link whose title attribute holds an address

a paragraph whose data-email attribute holds an address

idn@münchen.example

Follow @justahandle for updates

Install react@19.0.0 from npm

Requires node@18 or newer

Background: logo@2x.png

Doors @ 8, drinks 5 @ 10 . 00 all night