Anonymization & Data Masking for PostgreSQL

Anonymization & Data Masking for PostgreSQL

postgresql_anonymizer is an extension to mask or replace personally identifiable information (PII) or commercially sensitive data from a PostgreSQL database.

The project is aiming toward a declarative approach of anonymization. This means we’re trying to extend PostgreSQL Data Definition Language (DDL) in order to specify the anonymization strategy inside the table definition itself.

We’re still in Beta

This project is at an early stage of development and should be used carefully.


Once the masking rules are defined, you can access the anonymized data in 3 different ways :

In addition, various Masking Functions are available: randomization, faking, partial scrambling, shuffling, noise, or even your own custom function!

Read the Concepts section for more details and for information about the latest version.

Screenshot of postgresql_anonymizer


  1. Add the PostgreSQL Official RPM Repo to your system. It should be something like:

    $ sudo yum install https://.../pgdg-redhat-repo-latest.noarch.rpm
  2. Install (Replace 12 with the major version of your instance)

    $ sudo yum install postgresql_anonymizer12
  3. Add ‘anon’ in the shared_preload_libraries parameter of you postgresql.conf file. For example:

    shared_preload_libraries = 'pg_stat_statements, anon'
  4. Restart your instance.


PostgreSQL Anonymizer is licensed under PostgreSQL license.


We need your feedback and ideas! Let us know what you think of this tool, how it fits your needs and what features are missing.

You can either open an issue or send a message at


PostgreSQL Anonymizer is maintained by the following Dalibo Labs team members, with of many from the open source community: