
Tokenized vs pseudonymized masking, explained
You want to send a draft to an AI model, but the text holds a client name, an account number, maybe a phone number. You cannot paste it as is. So you mask it first. The question most people skip is how to mask it, because there is more than one good answer. Adimen Velum gives you two: tokenized and pseudonymized. They protect the same data, but they read very differently in the result, and that difference decides which one you should reach for.
This post walks through both with small, clearly fictional examples, so you can pick the right mode without guessing.
How tokenized masking works
Tokenized mode swaps each private value for an opaque placeholder. A person becomes a marker like PERSON_1. An identifier becomes something like ID_1. The placeholder carries no meaning of its own. It is a label that says "a real value used to sit here," nothing more.
Here is a before and after. The original:
Please confirm whether Dilan Acar still holds account 4471-0099 before Friday.
After tokenizing:
Please confirm whether PERSON_1 still holds account ID_1 before Friday.
The model reads the structure of your request perfectly well. It knows someone holds an account and you want it confirmed by Friday. It just never sees who or which account. When the reply comes back, Velum restores the markers to the real values.
The reason tokenized mode is a good default for quick questions and drafting is the way it handles the reply. Models rephrase things. They reorder sentences, change tense, and restate your point in their own words. Tokenized reversal is tolerant of that. Even if the model writes "the account in question" near the marker or shifts the sentence around, PERSON_1 and ID_1 stay intact as anchors, so Velum can put the real values back reliably.
How pseudonymized masking works
Pseudonymized mode takes a different path. Instead of an opaque label, it substitutes a fake but realistic stand-in. A name becomes a different, plausible name. An identifier becomes one that is format-valid but invented. The text still reads like ordinary prose, because nothing in it looks like a placeholder.
The same original:
Please confirm whether Dilan Acar still holds account 4471-0099 before Friday.
After pseudonymizing:
Please confirm whether Mara Voss still holds account 8830-2215 before Friday.
Nobody named Mara Voss is involved, and account 8830-2215 is not real. But the sentence flows naturally, and that is the whole point. Pseudonymized mode is built for long prose: letters, contracts, briefs, anything where a string of PERSON_1 and ID_1 markers would read strangely and interrupt the model's sense of the document. A fake name lets the model treat the text as the finished piece it is meant to become.
Reversal here works by exact match. Velum looks for the exact stand-in it inserted and swaps the true value back in. That makes pseudonymized mode a strong fit when the model is asked to preserve your wording rather than rewrite it freely.
Why both keep the text consistent
One rule holds across both modes: the same input value always maps to the same replacement. If Dilan Acar appears four times in a letter, every instance becomes the same PERSON_1, or the same Mara Voss, depending on the mode. The model never sees four different people where there is one. Relationships in your text stay coherent, which matters when a contract refers to the same party again and again.
Choosing between the two
A short way to decide:
- Reach for tokenized when you are asking a quick question, drafting, or doing anything where the model will rephrase heavily. The tolerant reversal handles the churn.
- Reach for pseudonymized when the output is long prose meant to read naturally, like a letter or contract, where opaque markers would feel wrong on the page.
- Structured identifiers such as emails, phone numbers, and ID numbers are good candidates for realistic stand-ins, because a format-valid fake slots cleanly into the text without drawing attention.
- Person names deserve a more careful look. A realistic fake name can be mistaken for a real one by anyone reading an intermediate version, so pseudonymizing a name is a deliberate choice, not an automatic one. When in doubt, an opaque marker removes that ambiguity.
There is no universally correct mode. There is a correct mode for the job in front of you, and often the difference comes down to how the result needs to read.
The one step you must not skip
Whichever mode you pick, the masking only does its job if you finish the loop. The model returns its answer with placeholders or stand-ins still in place. Always restore, or unmask, that reply before you forward it, save it, or send it on. An unmasked draft is a draft that still has work left, and Velum handles the restore for you so the final text carries the real values and nothing else.
Masking is not about choosing between privacy and a usable result. With two modes that suit different jobs, you keep the data protected on the way out and get clean, correct text on the way back.
Ready to put this into practice? See how Velum masks and restores your data automatically, or request a demo to walk through both modes with your own examples.