Build with open source PII redaction.

Quickstarts, runnable samples, and reference docs.

Start here → GitHub

Philterd for developers

Philterd builds open source software that finds and replaces PII and PHI in text. It runs inside your own infrastructure, so the data you are protecting never leaves your boundary.

Redact in your own code

Here is the whole thing, with no server to deploy:

pip install phileas-redact
from phileas.policy.policy import Policy
from phileas.services.filter_service import FilterService

policy = Policy.from_dict({"name": "demo", "identifiers": {
    "emailAddress": {"emailAddressFilterStrategies": [{"strategy": "REDACT"}]},
    "ssn": {"ssnFilterStrategies": [{"strategy": "REDACT"}]}}})

print(FilterService().filter(
    policy=policy, context="demo", document_id="doc-1",
    text="Contact john@example.com or call about SSN 123-45-6789.",
).filtered_text)
Contact {{{REDACTED-email-address}}} or call about SSN {{{REDACTED-ssn}}}.

Java and .NET do the same thing. Walk through all three →

Redact over HTTP

Philter is the same engine behind a REST API, with policy management and an audit trail. It suits several applications sharing one policy set, or callers that are not Java, Python, or .NET programs.

cat > default.json <<'JSON'
{ "name": "default",
  "identifiers": {
    "emailAddress": { "emailAddressFilterStrategies": [ { "strategy": "REDACT" } ] },
    "ssn": { "ssnFilterStrategies": [ { "strategy": "REDACT" } ] } } }
JSON

docker run -d -p 8080:8080 \
  -v "$PWD/default.json:/opt/philter/policies/default.json" \
  philterd/philter:3.4.1
curl -k -X POST "https://localhost:8080/api/filter" \
  -H "Content-Type: text/plain" \
  --data-binary "Contact john@example.com or call about SSN 123-45-6789."
Contact {{{REDACTED-email-address}}} or call about SSN {{{REDACTED-ssn}}}.

The full reference is in Philter’s documentation.

Detection is probabilistic. These tools are designed to reduce how much sensitive data passes through a pipeline, and you should validate their output against your own data before relying on them.