Privacy

Paste Shield: strip personal data before you paste

It strips names, addresses, account numbers, keys and passwords out of text before you paste it into ChatGPT, and it does all of that work inside your browser.

Paste Shield: removing personal data from text in the browser
The screen you get when you open it: your own text on the left, the safe version with labels instead of the data on the right.
Challenge

Every paste into ChatGPT is a potential leak

You paste a snippet of an email, a log, or a config into a model, and you easily leave names, addresses, account numbers, API keys and passwords behind. Tools that clean text on a server only move the leak somewhere else. So we built a filter that removes this data before it leaves the browser tab: no install, no account, no text sent to an external API.

How it works

Three detection layers, all on device

NER model
Data with no fixed shape: people's names, addresses and places. Understands sentence context. Runs in a Web Worker (@huggingface/transformers) on the CPU, through WebAssembly, so Chrome, Edge, Firefox and Safari all give the same result.
Checksum-verified rules
Data with a fixed shape: API keys, tokens, JWTs, private keys, IBANs, cards, national and tax IDs, e-mail addresses, phone numbers, dates, passwords. They run instantly, before the model even loads, because a leaked key is catastrophic.
Your always-hide list
Words only you know are sensitive: client names, project codenames. The model cannot infer them.

Hits from all three layers merge into one list, with no confidence cutoff: a miss is a leak, so over-redaction is the safe side of the error. Where a rule and the model describe the same span, the rule wins: a tax number proven by its checksum stays a tax number instead of being relabelled a bank account. The model runs fail-closed: a load error blocks copying until you reload the model.

First run

One download, then offline

The model downloads once, from huggingface.co, and stays in the browser's cache. The app's own request counter shows those megabytes live, so you do not have to take our word for it.

The model uses standard ONNX operators only, so it runs on the CPU through WebAssembly: the same in Chrome, Edge, Firefox and Safari, on a laptop and on a phone. There is no separate rules-only mode for weaker devices. When the browser reports a metered connection, the download waits for your tap. When there is no room to store the model, the app says plainly that it will download again next time.

Privacy

Zero requests, not a claim, an architecture

Your text never leaves your browser.

0
network requests carrying your text: it never leaves your browser, so there is nothing on a server to steal.
135 MB
the model downloads once and stays in your browser: 6.5 s on a fast link, about a minute on a 20 Mbit one. After that it works offline.
fail-closed
a model load error blocks copying: even a failure never lets unprotected text out.

Method: "zero requests" is about your text, not about the whole page. The one thing that does leave the machine is the model download, shown in the app as its own counter row: the file model_quantized.onnx is 135,359,829 bytes, plus a 2.9 MB tokenizer, and the time is counted from first paint to the model being ready. Cross-origin isolation headers (COOP/COEP/CORP) are set in next.config.ts and vercel.json. The app ships no analytics and no telemetry of any kind. Code: 2,473 lines of TypeScript in src (blank and comment-only lines excluded) and 206 unit tests.

Our own project. We built it and we run it ourselves.

Check these numbers in the live demo

Stack

Every choice has a reason

LayerChoiceWhat it does
FrameworkNext.js (App Router)The page computes everything on your machine, so there is no request that could carry the text out.
Modeldistilbert-base-multilingual-cased-ner-hrl, q8It recognizes names and addresses in every browser, with no graphics card.
Runtime@huggingface/transformers, ONNX RuntimeThe model runs in the background, so typing in the window never stutters.
Structured detectionRules on the main thread, model in a workerA number proven by its checksum is labelled for what it is instead of being guessed.
OfflineService worker + CacheStorageAfter the first download the app opens with no internet at all.
Contact

Describe the problem, we come back with a price

One sentence is enough to start. We read it ourselves, not a ticket queue, and we answer whether it can be done and at what price.

  • We reply within 48 hours on working days.
  • The intro audit costs nothing, and the report is yours whatever you decide.
  • Fixed price or we do not start. If the work takes us longer, there is no surcharge.
  • We take two projects at a time. If your deadline is tight, write early.

Or write straight to contact@tenzanlogic.com

Three questions that make the quote accurate. Optional.
What the problem is about
What you have today
Horizon

The form data is used only to answer your enquiry. Details in the privacy notice.