Astal Creates / Work / PrivacyShield
Live on Chrome Web Store

PrivacyShield

A zero-network Chrome extension that blurs sensitive on-screen data before you share your screen.

Built withManifest V3 ·TypeScript ·React 18 ·Web Crypto API
PrivacyShield — product screenshot
Introduction

PrivacyShield is a Chrome MV3 extension that detects and blurs sensitive content (emails, card numbers, API keys, SSNs, crypto addresses) on any webpage, either on-demand or automatically when a screen share starts. It's built for remote workers, support/sales teams doing live demos, streamers, and anyone who needs to share a screen without leaking credentials or PII. All processing runs locally in the browser: no backend, no network calls.

Context & user problem

Why it needed to exist

Screen sharing and screenshots routinely expose emails, tokens, card numbers, and other sensitive data that's simply visible on screen. Most privacy tools protect data at rest or in transit, not data that's rendered on the page during a live share.

What was built

Inside the product

Auto-detect & blur

A layered engine (regex + DOM structure + context keywords) scans page text across 6 categories (contact, financial, government ID, credentials, network, crypto) and blurs matches live.

Screen-share auto-protection

Hooks getDisplayMedia in the page's main world and automatically applies a blur profile the instant a share starts, restoring on end.

Meeting profiles

Six built-in profiles (client demo, interview, all-hands…) bundling blur rules, tab disguise, notification suppression, and bookmark hiding, plus custom/imported profiles.

Panic Mode & Blur All

Keyboard shortcuts instantly blur every tab or the active page, with reference-counted ownership so panic, manual toggle, and profiles don't clobber each other.

Pick & Blur

Click any element to persistently blur it per-site, stored as a CSS selector, with undo history and live removal from the Options page.

Demo Mode

Replaces detected sensitive text with realistic, locale-aware fake data (US/UK/IN/EU) in place, using uniquely-marked tokens so restoration is unambiguous.

Clipboard Guard

Synchronously scans copied text in the copy event and either redacts the clipboard or auto-clears it after a timeout.

Scheduled privacy & team policy

Time-based profile activation via chrome.alarms, plus JSON policy import for org-wide config, with no remote server.

Compliance reporting & audit log

Generates a local 7/30/90-day report of blur/panic/screen-share events with zero raw content, exportable as JSON.

How the system works

End to end

01Page content
02Local detection
03Blur / demo engine
04Chrome storage
05Screen-share protection
Hardest engineering decision

Manifest V3 service-worker state

MV3 service workers are unloaded and restarted by Chrome at any time, which silently reset in-memory module state (e.g. 'is Panic currently on?') and caused features like Panic Mode to invert, or screen-share protection to leave tabs permanently blurred after a worker restart. The fix moved that ephemeral cross-restart state into chrome.storage.session (survives worker sleep, clears on browser close) instead of module globals, and made every disable path DOM-authoritative, disableBlurAll() always queries and clears tracked elements regardless of what the in-memory flag says, so a desynced flag can never leave a page stuck blurred. A related concurrency issue, async profile apply/clear racing so a slow load lands after a newer clear, was fixed with a monotonic generation counter that invalidates superseded async work.

Result & current status

Where it stands

Live on the Chrome Web Store, version 1.1.0. 174 unit tests passing across 23 test files. A prior submission draft was rejected for keyword-stuffing and an unused scripting permission, both since fixed.

174
unit tests
23
test files
Technology used

The full stack

  • TypeScript (strict)
  • React 18
  • Vite 5
  • @crxjs/vite-plugin
  • Tailwind CSS
  • Chrome Extension Manifest V3
  • Web Crypto API (PBKDF2)
  • MutationObserver
  • Vitest + Testing Library
  • Playwright
  • ESLint
Next landmark

Continue along the river

Want something built like this?

This is one of several products shipped under Astal Creates. Tell me what you're building and I'll write back.