Security and privacy · Edition No. 7 · 1 Sep 2026

data-privacy-stack/presidio

Detects and masks names, emails, phone and card numbers in text before anything is sent to a model.

← Security and privacyRead the whole edition →

10.7k stars · MIT · 2.2.364 on PyPI (2026-07-22); GitHub release 2.2.362 (2026-03-18)

Detects and masks names, emails, phone and card numbers in text before anything is sent to a model.

Repo detailsthe review · specs · pros & cons · install

What it is

Microsoft's open framework for finding and removing personal data in text: names, emails, phone numbers, card numbers, national identifiers and more, through a mix of pattern matching, checksums, context words and NLP models. It can redact, mask, hash or replace what it finds, and you can add your own recognisers.

Why it matters

Think about who actually has a four-hundred-message thread worth mapping. It is somebody working: a consultant with a client discussion, a manager with a project channel, a researcher with interview notes. Every one of them hesitates at the same moment, and the hesitation is not about your features — it is "what happens to this text?" Grasppy already has the strong answer, because Docling and BERTopic run locally on your own box. Presidio lets you go one step further and say something specific: names, emails and numbers are detected and masked before any text is sent to a model for labelling. That is a sentence on your landing page, a paragraph in your docs, and a genuine feature — and it separates you from every competitor whose pipeline is a thin wrapper around somebody else's API. It is also the honest engineering position: if you are going to send chunks to an LLM to name topics, you should know what is in them. Do not oversell it in your copy — call it a reduction of risk, not a guarantee, because that is what it is.

Stars10.7k
LicenceMIT
Latest2.2.364 on PyPI (2026-07-22); GitHub release 2.2.362 (2026-03-18)
Good
  • MIT, from Microsoft, actively released, and squarely aimed at the exact step your ingest pipeline performs
  • Turns a vague trust claim into a demonstrable behaviour — the best kind of marketing, because it is true and checkable
  • Extensible with your own recognisers, so a client code or an internal project name can be masked as easily as an email address
Watch for
  • Detection is statistical, never complete. It will miss things and it will flag things that are not personal data — promising more than "significantly reduced" would be dishonest and eventually costly
  • The good detection needs an NLP model (spaCy or a transformer) loaded in memory, which is a real cost on a small VPS. Start with the light spaCy model and measure it with beszel
  • Russian coverage is much thinner than English. Test on real Russian text before you make any claim that covers both languages
Install
source venv/bin/activate
pip install presidio-analyzer presidio-anonymizer
python -m spacy download en_core_web_lg

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.