Stop writing Code Nodes to clean your data. Use this.
A production-ready n8n Community Node that cleans and transforms messy data without writing a single line of code. Built with zero runtime dependencies for maximum compatibility and verification compliance.
You're building automations in n8n, and your data is a mess:
- Names like
jOhN dOEinstead ofJohn Doe - Phone numbers in 15 different formats:
(555) 000-1111,555.000.1111,+1 555 000 1111 - Duplicate contacts that are almost the same but not quite
- Emails with random whitespace and uppercase letters
- JSON with inconsistent key naming (
firstName,first_name,FirstName)
The old way: Write complex JavaScript in Code Nodes, debug for hours, maintain spaghetti code.
The new way: Drop in the Data Cleaner node, configure in 30 seconds, done.
- Go to Settings > Community Nodes
- Select Install
- Enter
n8n-nodes-flowengine-data-standardize-clean - Click Install
# In your n8n installation directory
pnpm install n8n-nodes-flowengine-data-standardize-cleanRemove duplicate records using intelligent fuzzy matching. Perfect for cleaning contact lists, product catalogs, or any dataset with near-duplicates.
How it works:
- Uses Jaro-Winkler algorithm for short strings (names, emails)
- Uses Levenshtein distance for longer text
- Configurable similarity threshold (0.0 - 1.0)
- Compares across multiple fields simultaneously
Example:
Input:
{ "name": "John Smith", "email": "john@email.com" }
{ "name": "Jon Smith", "email": "john@email.com" } // Typo in name
{ "name": "Jane Doe", "email": "jane@email.com" }
Output (threshold: 0.8):
{ "name": "John Smith", "email": "john@email.com" }
{ "name": "Jane Doe", "email": "jane@email.com" }
Parameters:
| Parameter | Description | Default |
|---|---|---|
| Fields to Check | Comma-separated field names to compare | Required |
| Fuzzy Threshold | Similarity threshold (0.0 - 1.0) | 0.8 |
| Output Duplicate Info | Include metadata about removed duplicates | false |
Format phone numbers to E.164 international standard (+15550001111). Works with any input format.
Handles:
(555) 000-1111→+15550001111555.000.1111→+15550001111+44 20 7946 0958→+44207946095807946 0958(UK) →+447946095800
Parameters:
| Parameter | Description | Default |
|---|---|---|
| Phone Field | Field containing phone number | phone |
| Default Country Code | Country code when not detected | 1 (US/Canada) |
| Output Field | Save to different field (optional) | Same as input |
Convert text to proper Title Case with intelligent handling of common patterns.
Examples:
jOhN dOE→John DoeACME CORPORATION→Acme Corporationmcdonald's→Mcdonald's
Handles exceptions:
- Preserves acronyms:
IBM,NASA,CEO - Lowercase articles:
The Lord of the Rings - Roman numerals:
Henry VIII
Parameters:
| Parameter | Description | Default |
|---|---|---|
| Fields to Capitalize | Comma-separated field names | Required |
Clean and standardize email addresses.
What it does:
- Trims whitespace
- Converts to lowercase
- Corrects common domain typos (
gmial.com→gmail.com)
Example:
John.Doe@GMAIL.COM→john.doe@gmail.comjane@gmial.com→jane@gmail.com
Parameters:
| Parameter | Description | Default |
|---|---|---|
| Email Field | Field containing email | email |
| Output Field | Save to different field (optional) | Same as input |
Transform all JSON keys to consistent naming convention.
Modes:
snake_case:firstName→first_namecamelCase:first_name→firstName
Features:
- Recursively processes nested objects
- Handles arrays of objects
- Preserves values
Example (snake_case):
// Before
{ "firstName": "John", "contactInfo": { "phoneNumber": "555-1234" } }
// After
{ "first_name": "John", "contact_info": { "phone_number": "555-1234" } }Parameters:
| Parameter | Description | Default |
|---|---|---|
| Key Format | Target case format | snake_case |
This node is built with zero runtime dependencies by design:
- Verification Ready: Meets n8n Community Node verification requirements
- Security: Smaller attack surface, no supply chain vulnerabilities
- Performance: No bloat from unused library features
- Compatibility: Works across all n8n versions
- Reliability: No breaking changes from upstream dependencies
All algorithms (Jaro-Winkler, Levenshtein, phone parsing, etc.) are implemented natively in TypeScript with comprehensive documentation.
All operations support dot notation for nested fields:
contact.personal.firstName
address.phone.mobile
user.emails[0]
# Install dependencies
pnpm install
# Build the node
pnpm build
# Watch for changes
pnpm dev
# Lint and format
pnpm lint
pnpm format# Link for local development
pnpm link --global
# In your n8n installation
pnpm link --global n8n-nodes-flowengine-data-standardize-clean
# Start n8n
n8n startMIT - Use it however you want.
Contributions are welcome! Please read our contributing guidelines and submit PRs to the GitHub repository.
- Issues: GitHub Issues
- Documentation: n8n Community Nodes Docs
Built with care for the n8n community by FlowEngine.