# CSV anonymizer

- Human page: https://happytails.ai/en/data-tools/csv-anonymizer/
- Markdown: https://happytails.ai/en/data-tools/csv-anonymizer.md
- Structured JSON: https://happytails.ai/agents/en/data-tools/csv-anonymizer/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `csv-anonymizer` |
| Category | data-tools |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Use the visible action or interactive controls. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Replace identifiers consistently across up to 10 UTF-8 CSV files. These are linkable pseudonyms, not anonymous data: other columns and filenames can still identify people. Keep your secret separately. Mapping export includes original identifiers and is off by default. Processed on your device. CSV downloads protect spreadsheet formula prefixes by default, which changes affected cells.

### Inputs and settings

No free-text input is required. Use the file inputs and/or settings below.

Accepted browser files: `.csv,.tsv,text/csv,text/tab-separated-values`. Multiple files are supported.

Browser file-input limit: 1000000 bytes in total. HTTP limits can differ.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `delimiter` | Input CSV separator | select | "," | Allowed: ,, ;, 	 |
| `columns` | Identifying columns | text | "email" |  |
| `secret` | Private pseudonym secret | password | "" |  |
| `exportMapping` | Export sensitive original-to-token mapping | checkbox | false |  |
| `exportMode` | Spreadsheet formula handling | select | "Protect formulas" | Allowed: Protect formulas, Preserve original cells |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

Choose 1 to 10 strictly decoded UTF-8 CSV files. Selected exact headers must exist in every file. Maximum 1,000,000 aggregate file bytes, 10,000 aggregate data records, 100 columns per file and 100,000 aggregate data cells. Mapping export is bounded to 10,000 distinct original values. Aggregate CSV output is capped at 4,000,000 characters. The secret remains in browser memory during use; secure memory erasure is not claimed.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "csv-anonymizer",
  "category": "data-tools",
  "built": true,
  "requirements": "Choose 1 to 10 strictly decoded UTF-8 CSV files. Selected exact headers must exist in every file. Maximum 1,000,000 aggregate file bytes, 10,000 aggregate data records, 100 columns per file and 100,000 aggregate data cells. Mapping export is bounded to 10,000 distinct original values. Aggregate CSV output is capped at 4,000,000 characters. The secret remains in browser memory during use; secure memory erasure is not claimed.",
  "implementation": {
    "fields": [
      {
        "key": "delimiter",
        "label": "Input CSV separator",
        "value": ",",
        "type": "select",
        "values": [
          ",",
          ";",
          "\t"
        ]
      },
      {
        "key": "columns",
        "label": "Identifying columns",
        "value": "email",
        "type": "text",
        "help": "One comma-separated CSV record of exact headers. Quote a header containing a comma. Every selected column must exist in every file."
      },
      {
        "key": "secret",
        "label": "Private pseudonym secret",
        "value": "",
        "type": "password",
        "maxLength": 1024,
        "help": "Use a randomly generated secret of 32 to 1,024 UTF-8 bytes, and keep it separately. A long but predictable password is still weak. The same secret and exact value reproduce the same token across all selected columns and files."
      },
      {
        "key": "exportMapping",
        "label": "Export sensitive original-to-token mapping",
        "value": false,
        "type": "checkbox",
        "help": "Explicit opt-in. The mapping CSV contains original identifiers. Store it separately and securely. It is omitted by default."
      },
      {
        "key": "exportMode",
        "label": "Spreadsheet formula handling",
        "value": "Protect formulas",
        "type": "select",
        "values": [
          "Protect formulas",
          "Preserve original cells"
        ]
      }
    ],
    "registrationFamily": "csv-preparation",
    "presentation": "metrics",
    "note": "Replace identifiers consistently across up to 10 UTF-8 CSV files. These are linkable pseudonyms, not anonymous data: other columns and filenames can still identify people. Keep your secret separately. Mapping export includes original identifiers and is off by default. Processed on your device. CSV downloads protect spreadsheet formula prefixes by default, which changes affected cells.",
    "files": true,
    "multiple": true,
    "input": false,
    "accept": ".csv,.tsv,text/csv,text/tab-separated-values",
    "maxFileBytes": 1000000,
    "experience": {
      "automatic": false,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "CSV files",
      "placeholder": "Choose UTF-8 CSV files",
      "help": "Selected columns are pseudonymized consistently across files. Review remaining data for identifiers. Up to 1,000,000 characters. Review the settings before running.",
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}
```

## Page guide

Replace selected identifiers with consistent keyed pseudonyms across UTF-8 CSV files. Pseudonymization does not make data anonymous.

### How to use CSV anonymizer

1. Choose one or more UTF-8 CSV files and list the identifying column headers.
2. Enter a private random secret of 32 to 1,024 UTF-8 bytes and keep it separately.
3. Review and download all pseudonymized files. Export the sensitive original-to-token mapping only when explicitly needed.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

## Useful next steps

- [CSV column calculator](https://happytails.ai/en/data-tools/csv-column-calculator/) ([Markdown](https://happytails.ai/en/data-tools/csv-column-calculator.md))

- [CSV encoding repair](https://happytails.ai/en/data-tools/csv-encoding-repair/) ([Markdown](https://happytails.ai/en/data-tools/csv-encoding-repair.md))

## Pseudonyms remain linkable

The same secret and exact value produce the same full-length HMAC-SHA256 token across files and selected columns. Matching is case-sensitive and preserves spaces. Empty selected cells remain empty. Repeated tokens reveal repeated identifiers, and a weak or exposed secret permits guessing attacks.

### Review the whole dataset

Unselected values, headers, filenames and combinations of attributes can identify people. This tool does not guarantee anonymity, irreversible de-identification or legal compliance. Normal reports exclude the secret and selected cell values. Mapping export is unchecked by default and contains sensitive original identifiers when enabled.

### Local processing and exact strings

Processing runs on your device. CSV downloads quote every cell and protect spreadsheet formula prefixes by default, which changes affected strings. Preserve original cells is for trusted machine processing. Import identifiers as text in spreadsheet applications to preserve leading zeros.
