CSV Anonymizer is a desktop app for reducing sensitive-data exposure in CSV files and pasted data. It helps you inspect columns, choose how values should be protected, preview the result, and create a safer copy without changing the source file.
The standard detection and transformation engine runs locally on your computer. Optional Smart replacement uses an Ollama model configured on the loopback interface and is disabled by default.
CSV Anonymizer reduces exposure; it does not guarantee that output is anonymous. Always review the preview and privacy report before sharing a generated file.
Download the latest installer from GitHub Releases.
- Choose
aarch64.dmgfor Apple Silicon Macs. - Choose
x64.dmgfor Intel Macs. - Open the DMG and drag CSV Anonymizer into Applications.
macOS builds are signed and notarized.
Choose the format that fits your system:
.AppImagefor a portable application.debfor Debian and Ubuntu.rpmfor Fedora, RHEL, and compatible distributions
Debian and Ubuntu users can also enable the signed package repository:
bash <(curl -fsSL https://ddv1982.github.io/csv-data-anonymizer/install-apt-repo.sh)
sudo apt update
sudo apt install csv-anonymizerDirect Linux downloads include signed checksum files and the public archive keyring.
- Select a CSV file or switch to Paste Sample.
- Review each column's detected format, privacy meaning, action, and risk.
- Select the columns that should be transformed.
- Adjust an action when the suggested choice does not fit your use case.
- Preview the output and review any warnings.
- Choose a new output location and run the transformation.
- Read the privacy report before sharing the result.
The original file is never overwritten. File output must use a different path, and incomplete runs do not leave a partially written destination behind.
| Action | What it does | Keeps repeated values linkable |
|---|---|---|
| Redact | Replaces selected values with a constant descriptive marker. | No |
| Mask | Hides most of each value while retaining a limited visual shape. | No |
| Pseudonymize | Creates readable or shape-preserving replacement values. | Yes |
| Tokenize | Creates opaque tok_... replacement values. |
Yes |
| Label with column name | Gives each distinct value a numbered label based on its column. | Yes |
| Smart replacement | Uses an optional Ollama model for more natural-looking replacements. | Yes |
| Pass through | Leaves values unchanged. | Not applicable |
Actions that keep repeated values linkable produce pseudonymized data, not anonymous data. A reader may still learn that several rows refer to the same source value, and value frequencies can sometimes help reconnect replacements to their originals.
CSV Anonymizer recognizes common structured and personal-data formats, including:
- names and contact details
- email addresses and phone numbers
- addresses and postal codes
- dates and timestamps
- persistent record identifiers
- financial and government identifiers
- IP addresses, URLs, and device addresses
- credentials and secrets suggested by headers
Detection uses both column headers and sampled values. A detected format describes what values look like; the privacy meaning describes what the available evidence supports. Ambiguous columns are marked for review instead of being presented as certain.
Header detection includes maintained terminology for English, Dutch, German, French, Spanish, Portuguese, and Italian, with limited Japanese coverage for a small set of unambiguous headers. Value-based validators operate independently of header language for supported structured formats.
- Streaming CSV file workflow for large UTF-8 CSV files
- Paste workflow for CSV, JSON, XML, YAML, plain text, and logs up to 5 MiB
- Quick generation by data type when no source data is needed
Files that appear binary or use an unsupported encoding are refused rather than guessed. Re-save those files as UTF-8 before processing them.
Smart replacement is intended for selected values where rule-based output is too mechanical. It requires Ollama and is off by default.
- Install and start Ollama.
- Open Local AI setup in CSV Anonymizer.
- Download or select a supported local model.
- Enable Smart replacement only for the columns that need it.
- Review generated examples before running the transformation.
Selected values are sent to the configured loopback Ollama endpoint. A loopback address alone cannot prove where an independently configured Ollama runtime performs inference, so review your Ollama configuration before using sensitive data. CSV Anonymizer refuses documented cloud-model name forms and does not bundle model weights or runtime binaries.
CSV rows are streamed, but actions that keep repeated values consistent must remember each distinct source value and its replacement for the duration of a run. Memory use therefore grows with the number of distinct transformed values, not simply with file size.
Redact and Mask keep no replacement map and use substantially less memory. Preflight warns when a selected combination may require a large mapping. Extremely large mappings are refused instead of silently becoming inconsistent or leaving incomplete output.
CSV Anonymizer is designed to reduce exposure for activities such as testing, demonstrations, support, and controlled data sharing. It does not provide:
- a formal anonymity guarantee
- differential privacy
- aggregate-only output
- a fully synthetic dataset
Unselected columns and values using Pass through remain unchanged. Structural details, retained shapes, repeated-value patterns, and combinations of otherwise ordinary fields may still identify people or records. Treat generated output according to its remaining risk.
- If analysis asks you to review a column, inspect its explanation and samples before choosing an action.
- If a file is refused because of encoding, export it as UTF-8 and try again.
- If Smart replacement is unavailable, verify that Ollama is running and that the selected model is installed.
- If a large run reports high projected memory use, use Redact or Mask for high-cardinality columns.
- Report reproducible problems through GitHub Issues.
The application uses a Rust core, a Tauri desktop shell, and a React frontend. Development and release details live in the repository documentation:
Install frontend dependencies and run the canonical local gate with:
npm ci --prefix frontend
npm run validateThe project is licensed under the MIT License.