Synthetic vs. anonymized data: why masking isn't enough
For years, "anonymize it" was the standard answer to using sensitive data. Strip the names, hash the account numbers, blur the birthdays, and the data was declared safe. The problem is that anonymization has a long, well-documented history of failing — and every failure is a real person re-identified.
The three ways masking leaks
Re-identification. Removing direct identifiers isn't enough, because the combination of "quasi-identifiers" that remain is often unique. Classic research showed that ZIP code, birth date, and sex alone identify most of the population. Masked data that keeps realistic demographics keeps that fingerprint.
Linkage attacks. An attacker doesn't work from your dataset alone. They join it against public voter rolls, leaked breaches, or a data broker's file. Anonymized records that preserve real relationships light up like a match under linkage.
Inference. Even without pinpointing a row, an adversary can often infer a sensitive attribute — "customers in this segment almost always have condition X." Masking the diagnosis column doesn't help if the surrounding features give it away.
The utility tax
The usual response is to mask harder: generalize ages into decades, suppress rare values, add noise. Each step buys a little privacy and spends a lot of utility. Push far enough to be genuinely safe and you've destroyed the correlations a model needed in the first place. That's the anonymization dilemma — the safer it gets, the less useful it gets, and you rarely know where you landed.
Why synthetic data is different in kind
Anonymization edits real records. Synthetic data generates new ones. Instead of taking Jane's row and obscuring it, a generator learns the statistical structure of the whole dataset and samples fresh records from that structure. No synthetic row corresponds to Jane — or to anyone.
That changes the privacy question from "did we obscure enough of each person?" to "does any real person leak through the model?" — a question you can actually measure. And because the generator preserves distributions and correlations at the population level, the data stays useful even as individual traceability disappears.
"But synthetic isn't automatically safe either"
True, and worth saying plainly. A generator that overfits can memorize and reproduce real rows — reintroducing exactly the risk you were avoiding. The difference is that synthetic data makes this testable. You can measure whether any source record can be recovered (membership inference, distance-to-closest-record) and whether the data is still useful (train-on-synthetic, test-on-real). Anonymization gives you a vibe; synthetic data plus measurement gives you numbers. We dig into those metrics in how to measure synthetic data.
When to use which
Light masking still has its place — redacting a support ticket, hiding a column in a report. But for anything that feeds a model, moves between teams, or leaves your walls, "anonymized" is a promise you can't verify and often can't keep. Synthetic data is the stronger default: safer and more useful, with the receipts to prove both.