One result is a verified measurement: the 1-million-row By Sheet XLSX test at 19.8 seconds (50,380 rows/sec). All other times shown on this page are projections calculated by dividing the target row count by 50,380, with overhead multipliers derived from the algorithmic complexity of each split mode and export format. They represent expected performance, not measured results. Your actual results will vary based on hardware, browser, file complexity, and available system memory. Always verify with your own files before committing to a time-sensitive workflow.
Processing Time by Row Count
By Sheet mode, XLSX export. One entry is measured — three are projected. Bars marked with a star are calculated from the 50,380 rows/sec baseline.
All projections assume XLSX output and By Sheet mode unless stated otherwise. Other modes are slower — see overhead table below.
Scalability by Split Mode
By Sheet is fastest. By Column Value is slowest — it must read all rows, group by unique value, then write each group. Overhead multipliers are algorithmic estimates, not measured results.
| File Size | By Sheet | By Max Rows | By File Size | By Column |
|---|---|---|---|---|
| Overhead factor | 1.00x (baseline) | ~1.12x | ~1.22x | ~1.55x |
| 100K rows | 2sprojected | 2.2sprojected | 2.4sprojected | 3.1sprojected |
| 250K rows | 5sprojected | 5.6sprojected | 6.1sprojected | 7.7sprojected |
| 500K rows | 9.9sprojected | 11.1sprojected | 12.1sprojected | 15.4sprojected |
| 1M rows— | 19.8smeasured | 22.2sprojected | 24.2sprojected | 30.8sprojected |
Split Mode: Algorithmic Overhead
Each split mode has different algorithmic complexity. These overhead ratios explain why By Column Value takes roughly 55% longer than By Sheet for the same row count.
Read entire sheet → write to one output file. Linear scan. No grouping or sampling required.
Read sheet → split into sequential chunks at the target row count → write each chunk. One additional pass to calculate chunk boundaries.
Sample a small chunk → estimate row density in bytes → calculate target row count → split sequentially. One extra export pass for the sample.
Read sheet → scan entire column for unique values → group all rows by value → write one file per group. Three passes: read, group, write.
Export Format Relative Performance
Relative to XLSX (1.0x baseline) for By Sheet mode at the verified 50,380 rows/sec. CSV and TSV are faster because text serialization is simpler than XLSX binary format. JSON and JSONL are slower due to object construction per row. These are algorithmic estimates, not independently measured.
Hardware and Memory Impact
Performance degrades predictably with lower-spec hardware. These estimates are based on typical CPU and memory performance differentials — not measured.
Calculate Your Time Savings
Monthly reports avg: 8–15 sheets
Weekly cadence = 4, daily = 22
Default 15 min — adjust to match your workflow
Data analyst avg $45–75/hr
Honest Limitations: Where SplitForge Excel Splitter Falls Short
No tool is perfect for every use case. Here's where Python openpyxl / pandas / AWS Glue 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.
Single-Threaded Processing — One CPU Core
The Web Worker runs on one thread. Modern i7/i9 processors with 12–24 cores provide no parallelism advantage for a single split operation. Only one core is used.
No True Streaming — Full Sheet in Memory
SheetJS sheet_to_json() loads the entire sheet into a JavaScript array before any processing begins. A 1M-row sheet requires ~200–400MB of browser heap depending on cell data types.
By Column Value: 2,000-File Hard Cap
Column value splitting stops at 2,000 output files regardless of unique value count. Files beyond the cap are silently dropped.
File Size Estimates Vary ±30%
By File Size mode samples 1,000 rows to estimate byte density per row, then targets a specific MB output. Density varies across rows — actual output files may be 70%–130% of the target size.
When to Use Python openpyxl / pandas / AWS Glue Instead
Sheets regularly exceed 1M rows or files over 1GB
Browser memory makes this unreliable. Performance degrades non-linearly above 1.5M rows per sheet.
Automated or scheduled Excel splitting in a pipeline
SplitForge has no API, CLI, or webhook. Cannot run headlessly.
Splitting 50+ files in a single session
SplitForge processes one workbook at a time. High-volume batch work is tedious.
Questions about limitations? Check our FAQ section below or contact us via the feedback button.
Performance FAQ
What hardware was used in the benchmark?
What does "calculated" mean on this page?
Why does my file take longer than the benchmark shows?
Does the tool use multiple CPU cores?
How does memory usage scale with file size?
What is the fastest split mode for large files?
When should I use Python instead for performance?
Can I estimate time for my file before running the split?
Ready to Put the Benchmark to Work?
Upload your workbook and see actual processing time for your files on your hardware. No install. No account. No uploads to any server.
Related: Excel Row Limit · Excel File Too Large · CSV Splitter · Excel Cleaner