SecurityGuides

PII Masking vs Redaction vs Restriction: Choosing the Right Control

HTMLvault Team·September 17, 2026·10 min read
Margo Sterling has a partner dashboard due at noon and a black rectangle problem: the last one she shipped had every account name blacked out, which made it useless to the partner who owned those accounts. PII masking, redaction, and access restriction are three different controls, and teams routinely reach for the most destructive one on content that needed the gentlest — then ship the widely-distributed page with nothing at all.

This is a decision guide. It assumes you already know how to find sensitive fields in a document (the PII detection and redaction pillar covers the mechanics) and focuses on the harder question: once the scanner flags a field, which of the three controls should you apply?

The three controls, side by side

The three options sit on a spectrum of how much of the original data survives.

Redaction removes the data. The value is deleted from the HTML before the link is published. A redacted SSN is not recoverable from the page, the page source, or the DOM, because it is not there. Redaction is irreversible by design — that is the point, and also its cost: you cannot un-redact a page for the one recipient who legitimately needed the number.

PII masking obscures the data but keeps its shape. ••••1847 still tells a reader it is a four-digit-suffixed account, still sorts, still lets a support rep confirm they are looking at the right record. Masking preserves utility that redaction destroys. Masking must happen before the HTML is published, on the server side. If the full value sits in the markup and CSS or JavaScript hides it, that is not masking — that is a value one "view source" away from the reader.

Restriction leaves the data intact and controls who can open it. Password protection, a short expiry window, a tight retention setting. Nothing is destroyed; the page is simply hard to reach and does not stay reachable forever. Restriction is the right answer far more often than teams assume, because most sensitive documents go to a small audience that is already entitled to every field in them.

Redact, mask, and restrict compared by what survives in the published HTML What survives in the published page REDACT SSN: [REMOVED] Value deleted from source NOT RECOVERABLE MASK ACCT: ••••1847 Shape kept, value gone SERVER-SIDE ONLY RESTRICT ACCT: 4429 1847 Intact, behind a password EXPOSED IF FORWARDED Data destroyed Utility preserved Data intact
Redaction and PII masking change the page itself; restriction changes who can open it — which is why a restricted link that gets forwarded is still a full-fidelity document.

The four criteria that decide it

Four questions settle almost every case. Answer them in order.

1. How large is the audience? One named recipient behaves differently from a distribution list of forty. Under roughly five known people, restriction does the work. Above that, assume at least one copy leaves your control and change the page.

2. Is the recipient already entitled to the data? A customer reviewing their own contract is entitled to their own billing details; redacting them is theatre that makes the document worse. A partner looking at aggregate performance is not entitled to end-customer emails. Entitlement is the single biggest predictor of over-redaction, because it is the question nobody asks before reaching for the black rectangle.

3. What does retention require? If policy says the artifact cannot persist past a deadline, no amount of masking helps — you need an expiry window and a retention setting that deletes the underlying record. Controls on the content and controls on its lifespan answer different auditors.

4. Will it be forwarded? Not "is forwarding allowed" — will it happen. Anything a champion needs to show their CFO will be forwarded. Anything in a campaign email is already public. When forwarding is likely, the control has to live in the page, because the password will travel in the same thread as the link.

Margo answered question two honestly and un-redacted the partner dashboard's account names, which the partner owned. Then Pennyman saw the draft and asked, in a forty-minute meeting, whether "the soul of the data" was being adequately protected. She shipped the same page behind a password and he called it a compromise.

The decision table

Four artifacts, four different answers. Map yours to the closest row.

Decision table matching four shared artifacts to a PII control Artifact to control, by audience and entitlement ARTIFACT AUDIENCE ENTITLED CONTROL Signed customer proposal 2–4 named Yes RESTRICT Internal lead list Whole sales org Partly MASK Partner-facing dashboard One org, forwarded Aggregate MASK Public landing page Unbounded No REDACT
Only the unbounded-audience artifact earns full redaction; the two mid-size cases are where PII masking preserves the utility a black rectangle would destroy.

Signed customer proposal → restrict. The buyer is entitled to their own pricing, terms, and contact details. Redacting anything makes the document unusable for the thing it exists to do. Publish it intact, set a password, and give it an expiry that matches the deal cycle rather than a default 30 days — our expiry window guide walks through picking one.

Internal lead list → mask. Reps need enough to identify and contact a lead in their own territory; they do not need the whole company's personal phone numbers in a page that will sit in someone's browser history for a year. Mask phone and email to their last segments, keep names and firmographics intact.

Partner-facing dashboard → mask. The partner is entitled to aggregate performance, not to the end-customer records underneath. Masking keeps the row counts honest while removing the identities, and the page survives being forwarded to the partner's own team.

Public landing page → redact. An unbounded audience means no control over the page survives publication, so nothing sensitive can be in it. This is the one case where destroying the data is correct, and it is the case teams most often under-protect — a sample report with real customer names in it, published as a lead magnet.

Data masking vs redaction, in one line

Redaction removes the value; masking removes the value but leaves a placeholder that preserves format and utility. Choose redaction when nobody downstream needs to know the field existed. Choose masking when the reader needs to recognize a record, match a row, or confirm they are looking at the right account.

Data masking vs encryption

Encryption protects data in transit and at rest — it is why the link is served over HTTPS and why the stored record is not readable from a disk image. It is reversible by anyone holding the key, and the browser rendering your page holds one. Encryption never decides what the reader sees.

Masking decides what the reader sees. The two are complements, not alternatives: an encrypted page with unmasked SSNs shows those SSNs to whoever opens the link. If a vendor answers "is PII masked?" with "everything is encrypted," they have answered a different question.

How the controls stack

These are layers, not a menu. Apply them in order, because each one assumes the previous is done.

  1. Scan and treat the content first. HTMLvault's regex scanner checks generated HTML for SSNs, financial identifiers, API keys, passport numbers, addresses, names, dates of birth, emails, and phone numbers before publication — no AI tokens, no cost. Teams and Enterprise can layer an AI scan on top using their own Anthropic, OpenAI, or Google key. Redact or mask what the scan flags before the link exists.
  2. Restrict access second. Password-protect the link. A password on an unscanned page protects nothing once the link is forwarded with the password attached; a password on a masked page is a second wall in front of a smaller target.
  3. Set expiry third. Anything from an hour to never on Pro and above. Expiry converts an indefinite exposure into a bounded one.
  4. Set the retention window last. Expiry stops the link resolving; retention governs how long HTMLvault keeps the underlying record and analytics — configurable from auto-delete up to two years, and the setting your auditor asks about.
Order matters: treating the content first means every later layer is protecting a smaller target, not a full-fidelity document.
The password Margo set was "Partner2024" because Lumberg had asked, not instructed, that passwords stay "memorable for the field." She changed it after the dashboard came back to her in a forwarded thread with the password in the line above the link. The masked page was fine. The one she had shipped un-masked the week before was the one she spent Thursday thinking about.

What these controls cannot do

Redaction does not undo a delivered page. If the link was live for six minutes with an unmasked SSN and one person opened it, that view happened. You can delete the link, but you cannot retrieve the screenshot. Analytics tell you whether anyone opened it and from where, which converts an unknown exposure into a documented one — useful for the incident report, useless as prevention.

Client-side masking is not masking. Dots rendered by CSS over a value still present in the HTML is a visual effect. Any reader who opens developer tools, saves the page, or reads the source sees the original. Masking has to modify the markup before publication.

A password is not a per-person control. One shared password means one shared secret, and you cannot revoke it for one recipient. When you need a per-person audit trail of who opened what, use recipient-specific links and read the four obligations that actually get audited before deciding a single password satisfies your policy.

The regex scanner has a known ceiling. Structured fields — SSNs, card numbers, keys, emails, phones — match reliably. Free-text disclosure in a paragraph ("the buyer mentioned her diagnosis") does not match a pattern, which is what the optional BYOK AI layer is for. A scanner is a floor under human review, not a replacement for it.

Not all PII carries the same weight. A work email and a health record are both PII and should not get the same treatment; the PII vs SPII distinction is where that line sits and why it changes the control you pick.

Running it as a default, not a decision

The framework above is a judgment call you should have to make roughly twice, after which it becomes a template. Set link defaults per content type — proposals get password plus a 30-day expiry, lead lists get masking plus a seven-day expiry, campaign pages get scanned and published with no PII at all — and the choice stops being a per-link deliberation.

If links are created from Claude, ChatGPT, Zapier, Clay, or Gemini through the REST API or MCP, encode those defaults in the call. scan_html before create_link, with password and expiry parameters set per template, means the treatment happens whether or not anyone remembered the policy that morning.

For Margo, that is the whole payoff: the partner dashboard ships at noon with account names her partner is entitled to see, end-customer records masked, a password that isn't in the same email, and a retention window Angela signed off on once rather than every quarter. Shipping fast and shipping safe stopped being a trade-off the moment the treatment became a property of the template instead of a decision she had to relitigate at 11:40.

pii maskingdata masking vs redactionredact piisecuritycompliancelink sharing
HTMLvault

Share HTML securely — without losing your job.

The enterprise-grade platform for sharing HTML pages, reports, and dashboards with full PII scanning, access controls, and audit trails.

Start for free

Related Posts