Extract Emails, Phone Numbers & SSNs From CSV — Without Uploading Them
8 pattern types. Luhn-algorithm credit-card validation. SSA-rule SSN validation. File contents never leave your device — extraction runs entirely in your browser.
Used by compliance teams, data analysts, and engineers who cannot afford to upload sensitive files
Why Everyone Else Gets This Wrong
Online tools upload your data
Every "free" online extractor sends your file to a server. For PII — emails, phone numbers, SSNs, credit cards — that's a HIPAA violation waiting to happen.
Python scripts take 20+ minutes to write
You need to write the regex, handle encoding issues, test edge cases, validate the output, and debug the script. That's 20–30 minutes every time — if you even know Python.
grep misses validation entirely
grep finds patterns, but it can't tell you if a credit card number passes the Luhn algorithm, or if a phone number is a real US number vs. a random 10-digit string.
A raw regex matches "1234567890" as a valid phone number. Balanced mode applies NANP rules — a real US number needs a full 10 digits and an area code that doesn't start with 0 or 1.
8 Pattern Types. Real Validation. Zero Upload.
Not just regex matching — algorithmic validation where it matters
Email Addresses
Practical email matching with three validation modes. Permissive catches broad patterns; balanced excludes test addresses and common fakes; strict enforces length limits and recognizes a curated list of ~33 common TLDs.
US Phone Numbers (NANP)
Matches US/NANP numbers in common notations: (555) 867-5309, 555-867-5309, +1 555 867 5309. Requires a full 10-digit number (area code mandatory), so 7-digit fragments and digits inside longer numbers (like card numbers) are skipped. Balanced mode drops area codes starting 0 or 1. Optionally normalize matches to E.164, US, or digits-only output.
Three Validation Modes
Permissive, balanced, and strict modes let you tune precision vs. recall for every pattern type. Strict mode applies the tightest rules; permissive casts the widest net.
Context View (100-char window)
See 100 characters of surrounding context for every match. Instantly distinguish a phone number in a 'contact' column vs. an account number in a 'transaction_id' column.
Post-Extraction Normalization
Optionally normalize extracted values: phone numbers → E.164 (+15558675309), dates → ISO 8601 (2024-03-15), email → lowercase. Makes downstream processing trivial.
Credit Card Luhn Validation
Extracts 13–19 digit card numbers and validates each one with the Luhn algorithm. Balanced mode also checks against known BIN prefixes (Visa: 4x, Mastercard: 51-55, Amex: 34/37, Discover: 6011).
SSN Detection + SSA Rules
Finds SSNs in NNN-NN-NNNN, NNNNNNNNN, and NNN NN NNNN formats. Strict mode applies SSA rules: no 000/666/900-999 area numbers, no 0000 group, no 0000 serial.
Sensitive Data Masking in UI
Credit card numbers and SSNs are automatically masked in the results UI (showing only last 4 digits) to prevent shoulder-surfing. Full values only appear in the exported CSV/JSON.
Pattern Extraction: SplitForge vs. The Alternatives
What you give up with grep, Python, or online tools
| Capability | grep / regex | Python + pandas | Online Tools | SplitForge |
|---|---|---|---|---|
| Works without coding | Needs CLI | Needs Python | Yes | Yes — browser UI |
| No file upload required | Local only | Local only | Uploads to server | 100% browser |
| Luhn credit card validation | No | Manual implementation | Varies / unclear | Built-in |
| SSA-rule SSN validation | No | Manual implementation | No | Built-in |
| Sensitive data masked in UI | No | No | No | CC + SSN masked |
| Post-extraction normalization | Manual post-processing | Manual post-processing | No | E.164, ISO 8601, lowercase |
| 100-char context window | Flag required | Extra code required | No | Built-in |
| Column-level targeting | File-level only | Yes — with code | No | Yes — UI dropdown |
| Deduplication by (value, type) | No | Manual code | No | Built-in |
| Export to CSV + JSON | Pipe to file | Yes | Usually CSV only | Both formats |
Why grep, Python, and Online Tools Each Have Fatal Flaws
The right tool depends on your constraints — here's what each approach actually costs you
grep / Command Line
- Fast for simple text searches on local files
- Requires writing and escaping regex patterns manually
- No CSV-awareness — treats commas as text, not delimiters
- Zero validation — matches any sequence that fits the pattern
- No deduplication, no normalization, no export formatting
Python + pandas
- Full control — you write exactly what you need
- 20–30 min to write, test, and debug a single extraction script
- Luhn and SSA validation require additional libraries or manual code
- Data still lives on your machine, but the barrier to entry is high
- Every new file or pattern type requires code modifications
Online Extraction Tools
- No coding required — paste or upload your file
- File contents transmitted to and processed on a remote server
- No Luhn or SSA validation in any tool we found
- HIPAA, GDPR, and PCI-DSS violations possible for regulated data
SplitForge
- Upload-free: file contents never leave your browser tab
- No coding required — point-and-click column targeting
- Luhn algorithm built in for credit cards
- SSA structural rules built in for SSNs
- Three precision modes: permissive, balanced, strict
- Context window, deduplication, and normalization included
- Export to CSV or JSON in one click
See What Extraction Actually Looks Like
Email List Cleanup
Phone Number Extraction
Credit Card Audit
Edge Cases We've Thought Through
Multiple patterns in one cell
A single notes field containing an email, phone number, and date — all in one cell.
International phone numbers
Phone numbers with country codes other than +1, or non-US formats.
Date formats and ambiguity
Is 04/05/2024 April 5th or May 4th? What about 2024-04 — a date or a code?
Credit card numbers near account numbers
Account numbers, invoice IDs, and transaction codes often have 16 digits — just like credit cards.
SSNs in encoded or redacted columns
What if SSNs are stored as '***-**-1234' or '1234' (last 4 only)?
Is SplitForge Pattern Extraction Right for You?
Perfect for
- Compliance and legal teams auditing PII in existing datasets
- Analysts extracting contact data from notes or freeform fields
- Healthcare teams processing patient records under HIPAA constraints
- Finance teams auditing transaction logs for exposed card numbers
- Non-coders who need regex-level results without writing any code
- Teams in regulated industries where file uploads are prohibited
- One-off extractions that don't justify writing a Python script
- QA teams validating that test datasets don't contain real PII
- Anyone who needs to normalize phone numbers or dates to a standard format
Not ideal for
- Non-US phone numbers: The phone engine matches US/NANP 10-digit numbers only. International numbers are not matched or normalized.
- Custom pattern types: You can only extract the 8 built-in types. Custom regex patterns are not supported — use grep or Python for those.
- Excel files over 200MB: Excel (.xlsx) is fully loaded into memory by SheetJS, so it's capped at 200MB. Convert large Excel to CSV first — CSV streams to disk and has no practical size limit.
- Encoded or encrypted data: The tool works on plaintext. Hash-encoded, base64-encoded, or encrypted PII will not be detected.
- Real-time streaming data: This is a file-based batch tool. It is not designed for streaming pipelines or API-based processing.
Zero-Upload Architecture: What It Actually Means
Not 'we don't store your data' — we never receive it. Your file content is parsed entirely inside your browser tab using a Web Worker. Nothing is transmitted over the network.
Time & Cost Savings Calculator
Estimate your annual savings vs. writing Python extraction scripts
1–8 pattern types
e.g., 52 = weekly
Used to calculate dollar savings
~187K Matches/Second — Measured at 10GB
Measured June 2026 on Chrome, Windows 11, dev machine (Alder Lake class), 64GB RAM. Output streams to disk, so memory stays flat (an ~18MB live floor) regardless of file size. Your results will vary by machine and data density.
Operation: Email extraction, 10.8GB CSV, 141.9M matches (high-density config)
Method: TRUE-10GB gate, forced-GC heap sampling, June 2026
Variance: ±15–20% by hardware/browser
Frequently Asked Questions
Does SplitForge send my file to a server?
Is this tool HIPAA compliant?
What does 'Luhn algorithm validation' mean for credit cards?
What are the SSA rules for SSN validation?
What's the difference between permissive, balanced, and strict modes?
Can I extract patterns from Excel (.xlsx) files?
How does column targeting work?
What does normalization do to my extracted values?
What file size limits apply?
Why is the credit card shown as '****0366' in the results?
Does deduplication affect multi-type matches?
Extract Emails, Phones & SSNs — Without the Upload Risk
8 pattern types. Luhn + SSA validation. Context window. Normalization. All in your browser, all free.
Also try: Data Masking · Data Cleaner · Data Validator · Remove Duplicates