PrivacyLayer

Safe AI experimentation for teams

Try any AI model.
Without the risk.

New AI models launch every week. Enterprise approval takes months. Teams test them anyway - and sensitive data ends up in prompts.

PrivacyLayer strips personal data in your browser before it reaches any AI tool. Real values are restored in the response.

privacy-scan.tswaiting...
scanning
4 found
NAMEDr. Maria Bernasconi[NAME_01]
AHV756.1234.5678.97[AHV_01]
IBANCH93 0076 2011...[IBAN_01]
EMAILmaria@bluewin.ch[EMAIL_01]
ready to send to any AI model

Any model

ChatGPT, Claude, Gemini & more

0 bytes

Personal data to any server

100%

Runs in your browser

The gap

Model speed vs procurement

New AI models launch weekly. IT approval takes months. Teams test ChatGPT, Claude, Gemini, and others anyway. That's shadow AI - and it's already happening in your org.

Sensitive data follows every prompt

Teams paste real documents into tools they're testing. Names, IBANs, AHV numbers, diagnoses, financial data - all exposed to model providers with no visibility or control.

One layer for every model

PrivacyLayer works across every AI tool - browser extension or SDK. One control layer. No IT rollout. No data policy rewrite. Teams stay flexible. Compliance stays intact.

How it works

01

Paste or upload

Drop in a PDF, paste text, or use the browser extension. 50+ detection patterns scan your content and replace every personal identifier with a safe placeholder - locally, in your browser.

02

Send to any AI

The cleaned version goes to ChatGPT, Claude, Gemini - or any other tool. The model works with placeholders. It never sees real names, addresses, IDs, or financial data.

03

Get the real answer back

The AI responds using placeholders. PrivacyLayer swaps them back to real values. You read a natural, complete response - the AI never knew the actual names or numbers.

Chrome Extension

Works inside ChatGPT, Claude, Gemini and Perplexity.

No tab switching. No copy-paste. Click one button inside the chat — your data never reaches the AI.

chatgpt.com
PrivacyLayer active

Your message

Passenger complaint — [NAME_01], DOB [DOB_01], AHV [AHV_01], IBAN [IBAN_01]

4 hidden — safe to send

ChatGPT

Dear Maria Bernasconi, thank you for bringing this to our attention. We sincerely apologize for the inconvenience...

Real values restored locally — AI never saw them

Open DevTools → Network tab → zero outbound requests with personal data. Verify it yourself.

ChatGPT

supported

Claude

supported

Gemini

supported

Perplexity

supported

One click

Click Protect. Tokens replace real data. The AI sees only placeholders. Click again to undo.

Auto-restore

When the AI responds with tokens, real values come back automatically — highlighted in green, right inside the chat.

Verify yourself

Open DevTools, Network tab. Zero personal data in outbound requests. Verify it yourself.

Get the extension

Chrome Web Store submission in progress. Join the waitlist for early access.

Join the waitlist →

See it in action

From exposed prompt to safe AI response in seconds.

01

Without PrivacyLayer

User types:
Patient: Dr. Maria Bernasconi
AHV: 756.1234.5678.97
→ sent raw to ChatGPT

02

Extension detects PII

NAME_01 detected
AHV_01 detected
IBAN_01 detected
4 items flagged

03

Safe prompt sent

Patient: [NAME_01]
AHV: [AHV_01]
IBAN: [IBAN_01]
→ AI sees only tokens

04

Real answer back

AI responds with tokens
Extension restores values
Dr. Bernasconi reads
real names in response

“Every time we use AI for a real case, someone has to manually strip out the names, IBANs, and insurance numbers first. That's 10 minutes of friction before every single task. If PrivacyLayer removes that, it's gone instantly.”

SH

Sandra

Operations · Healthcare, Zurich

How can you be sure your data stays private?

All scanning, redaction, and encryption happens in JavaScript in your browser tab. Open the Network tab - zero outgoing requests with personal data. No backend. Not a promise - a technical guarantee you can verify yourself.

Data flow

Your DocumentPDF, image, or text
Privacy Scannernames, addresses, IDs
Token VaultAES-256 encrypted
Clean Documentzero personal data
AI ModelClaude / Gemini / GPT
Restored Outputreal values back

The AI model (greyed) receives only anonymized text - it operates inside the same pipeline as any other vendor.

What we detect and protect

Personal data typeToken
Full name[NAME_01]
Email address[EMAIL_01]
Phone number[PHONE_01]
Social security / AHV[SSN_01]
Bank account / IBAN[IBAN_01]
Home address[ADDRESS_01]
Date of birth[DOB_01]
Credit card[CREDIT_CARD_01]
Passport / ID number[PASSPORT_01]
Insurance / Patient ID[ID_01]
IP address[IP_01]
Tax ID / EIN[TAX_ID_01]

Compliance

Built for the regulatory reality of enterprise AI.

Every regulation that governs personal data - HIPAA, GDPR, the EU AI Act, Swiss DSG - shares one requirement: don't expose it unnecessarily. PrivacyLayer enforces that at the prompt level, before data reaches any model.

EU AI Act

Article 10 requires AI deployments to avoid processing unnecessary personal data. PrivacyLayer strips it before the model ever sees it - making compliance automatic.

HIPAA Safe Harbor

All 18 HIPAA identifiers detected and replaced. De-identified output is not PHI and can be sent to any AI provider without violating HIPAA.

GDPR Article 4

No personal data leaves your device. GDPR only governs personal data - anonymized data is out of scope. PrivacyLayer anonymizes before transmission.

Swiss DSG / nDSG

Built with Swiss data standards in mind. AHV numbers, CH-IBANs, and Swiss address formats are detected by default.

Also relevant for teams working under CCPA, SOC 2, ISO 27001, and PCI-DSS requirements.

For developers

If you build AI-powered apps, PrivacyLayer drops into your existing code in one line.

one-line integration
import { wrapLanguageModel } from "ai";
import { privacyLayer } from "privacylayer";
 
// Before - personal data goes straight to the model
streamText({ model, messages });
 
// After - one line. Zero personal data leaves your app.
streamText({
model: wrapLanguageModel(model, privacyLayer()),
messages,
});