Data Cleaner Performance Benchmarks
Data Cleaner runs entirely in your browser on a disk-backed OPFS streaming engine. Deduplicating 10 million rows completes in about 88 seconds, with peak memory held near 200 MB. Here is the methodology, the memory model, and what affects speed on your machine.
Test Configuration
Hardware & Software
| CPU | dev machine (Alder Lake class) |
| RAM | 64GB RAM (dual-channel) |
| Storage | NVMe SSD |
| OS | Windows 11 Pro (22H2) |
| Browser | Chrome (stable), single tab, extensions disabled |
| DevTools | Closed during all tests (no observer overhead) |
Test File Specifications
| Row count | 100K · 1M · 10M (three separate files) |
| Columns | 15 columns (mix of text, numeric, date, email) |
| Data type split | 40% text, 30% numeric, 20% date, 10% email |
| File size | 1M rows: ~33 MB · 10M rows: ~796 MB |
| Encoding | UTF-8, comma-delimited, CRLF line endings |
| Duplicates | Dedup baseline uses a no-duplicate fixture; files with real duplicates run slightly longer |
| NBSP injected | ~5% of text cells contain non-breaking spaces |
| Empty rows/cols | ~3% empty rows, 2 fully empty columns injected |
performance.now() in the Web Worker.What the Results Look Like
Memory Usage Benchmark
Peak Memory — Remove Duplicates (OPFS streaming)
Scalability Across File Sizes
Data Cleaner vs Alternatives (10M Rows, Deduplication)
Context matters. These numbers show what alternatives take for a comparable deduplication pass over a 10M row file.
When Data Cleaner Is Slower Than Expected
Low-RAM machine (under 8GB available)
Why: Deduplication streams through OPFS and stays memory-bounded, but parsing and result rendering still use RAM. On machines with 8 GB total RAM and other apps running, the OS may start swapping. Symptom: progress stalls.
Regex filter with backtracking patterns
Why: Poorly formed regex like /.*(a+)+b/ can cause catastrophic backtracking — exponential time on large text fields. Safe patterns like email validation or ^prefix are fast.
Wide files (100+ columns)
Why: Trim whitespace and case standardize iterate over all columns. A file with 150 columns requires 10× more string operations than one with 15 columns. Cleaning time scales roughly linearly with column count.
Safari (macOS / iOS)
Why: Safari's JavaScript engine (JavaScriptCore) has lower Web Worker throughput than Chrome's V8 on CPU-bound string operations. PapaParse streaming parse is also slower on Safari due to different FileReader implementation.
Excel (.xlsx) export for large files
Why: Excel export builds an XML-based .xlsx ZIP archive in memory; CSV export is a direct string stream and is always faster.
Filtering with AND logic and 5+ active filters
Why: AND filter applies each filter predicate in sequence — the dataset is scanned up to N times (once per filter). With 5 filters, this is 5 full passes over the dataset. OR logic is slightly faster because early exits are possible.
Calculate Your Annual Savings
ROI Calculator — Your Exact Savings
Full Test Methodology
Test Procedure
- 1Generate test CSV files using Python script (reproducible random seed). Inject known % of duplicates, NBSP, and empty rows/columns.
- 2Open Chrome fresh instance, disable all extensions, close DevTools.
- 3Load splitforge.app/tools/data-cleaner in a single tab.
- 4Drop test file into the tool. Wait for "Parse complete" signal.
- 5Click the operation button. Note start time via performance.now() logged in Worker.
- 6Wait for "complete" message. Record wall-clock time from Worker log.
- 7Repeat 10 times for each operation. Discard highest and lowest values.
- 8Average the remaining 8 values. Round to 1 decimal.
- 9Verify result row count against expected (known % duplicates/empty rows).
- 10Re-test after Chrome update if version changes.
Reproducibility
Test file generation: Python script with a fixed random seed (42) generates reproducible fixtures (1M and 10M rows). Test files are available upon request — contact via the SplitForge site.
Timing precision: Times measured via performance.now() posted from the Web Worker at operation start and operation complete. Precision: sub-millisecond. Reported to nearest 0.1 second.
What's included in timing: For "Smart Clean All" — includes parse time. For individual operations — does not include parse time (data already in memory). Export times — from button click to download dialog appearing.
Machine state during tests: No other browser tabs open. No other applications using significant CPU. System idle for 30 seconds before each test session. Tests run at ambient temperature (not during thermal throttle).
Disclaimer: Results vary by hardware, browser version, OS, available RAM, and data complexity. Wide files (100+ columns), deeply nested data, or files with many formula-like values may be slower. Mobile results typically 3–5× slower than the test hardware.
Benchmark Changelog
- Added NBSP detection to Trim Whitespace — catches 5–12% more whitespace issues.
- Deduplication migrated to a disk-backed OPFS 3-pass engine (was an in-memory Set) — peak memory now bounded near 200 MB at 10M rows, enabling files up to 10 GB. Legacy in-memory throughput figures no longer apply.
- Added per-column case transform — no measurable performance change vs all-column transform
- Column picker for Replace Empty Values: negligible additional overhead (<0.1s)
- Upgrade to PapaParse 5.3.2 from 5.3.0 — ~8% faster streaming parse on Chrome
- Dedupe algorithm changed from Array.sort to Set-based hashing (later superseded by the OPFS 3-pass engine in v2.3).
- Regex filter: pre-compile RegExp objects on filter apply (was re-compiling per row) — 3× faster regex filtering
Honest Limitations: Where Data Cleaner Falls Short
No tool is perfect for every use case. Here's where Excel might be a better choice, and the real limitations of our browser-based architecture.
Browser-Based Processing
Performance depends on your device's RAM and CPU. Modern laptops (2022+) handle 10M+ rows easily, but older devices may struggle with very large files.
No Offline Mode (Initial Load)
Requires internet connection to load the tool initially. Processing happens offline in your browser after loading.
Browser Tab Memory Limits
Most browsers limit individual tabs to 2-4GB RAM. This is the practical ceiling for file size.
No Formulas or Computed Columns
Cleans existing values — it does not compute new ones. There are no formulas or calculated columns; for derived data use Excel or the VLOOKUP & Join tool.
Flat Data Only — Formatting Not Preserved
Operates on flat tabular data. Cell formatting, colors, and multi-sheet workbook relationships are not preserved — values are extracted and cleaned, styling is dropped.
Exact-Match Deduplication Only
Deduplication is exact-match on whole rows or selected columns. Fuzzy or approximate matching (for example, treating 'Jon' and 'John' as the same) is not supported.
Very Wide Files Can Pressure Memory
Extremely wide files — thousands of columns — can still pressure memory, since each row's full column structure is held during streaming. Tall files (many rows, few columns) scale far better than wide ones.
When to Use Excel Instead
You need formulas, pivot tables, or charts
Excel is built for computation and analysis, not bulk cleaning.
You're exploring data interactively rather than applying repeatable cleaning operations
Bulk repeatable cleaning is SplitForge's strength; ad-hoc exploration is better in a spreadsheet.
Your file fits comfortably in Excel (roughly under 100,000 rows)
For small files, the familiar spreadsheet interface may be faster for one-off tasks.
You need fuzzy matching, scripted pipelines, or joins across multiple datasets
Python with pandas is the stronger fit for complex data engineering workflows.
Questions about limitations? Check our FAQ section below or contact us via the feedback button.
Known Limitations
Because deduplication streams through OPFS in passes, peak memory stays near 200 MB even at 10 million rows — files up to 10 GB have been smoke-tested in Chrome. Very wide files (many hundreds of columns) increase per-row work; if you hit a ceiling, use the CSV Splitter to process in chunks.
Excel (.xlsx) export builds an XML/ZIP archive and is slower than CSV export, which is a direct stream. For very large files, export as CSV and convert separately.
Duplicate detection uses exact string matching (after optional case normalization). "Jon Smith" and "John Smith" are treated as different records. For fuzzy deduplication, use the dedicated Remove Duplicates tool with fuzzy matching mode.
Mobile CPUs process string operations 3–5× slower than desktop CPUs. Safari iOS has additional Web Worker limitations. For files over 100K rows, desktop is recommended. Mobile works well for files under 50K rows.
Performance FAQs
How does Smart Clean All combine operations?
How does duplicate detection scale — is it O(n)?
How is my file read? Is it loaded into memory all at once?
What is the maximum file size Data Cleaner can handle?
Does the UI freeze while cleaning large files?
See These Speeds on Your Own Files
Drop your messy CSV into Data Cleaner. No signup, no upload, no wait.