A 4-minute guide to splitting a large CSV file into multiple smaller CSV files using 4n6 CSV Splitter. Split by row count (most common, Excel compatibility), file size (email attachment compliance), or column value (one output file per unique customer, region or category).
Video Transcript
Hello and welcome. This video shows how to split a large CSV file into multiple smaller files using 4n6 CSV Splitter. You may have run into this problem when a CSV is too large to open in Excel (the 1 million row limit), too slow to email to a colleague, or too big for a database import. The solution is to split it into manageable chunks.
Install 4n6 CSV Splitter on Windows and launch it. Click Open on the top menu and select either Choose Files for single CSVs or Choose Folders to process everything in a folder at once. Browse and pick your source CSV. The tool shows the file properties: total row count, column count, file size, and detected encoding.
Go to the Actions tab and pick Split in Multiple. Now select the split criteria. By Row Count splits every X rows into a new file (most common). By File Size splits every X megabytes. By Column Value splits into one file per unique value in a column (useful for per-customer or per-region exports). By Date splits by year, month or day if a date column exists.
Enter the split parameter. For row count, 500000 is a good default that keeps each file well under Excel's limit. Optionally enable filters like include header in each file (always recommended). Click Browse and pick a destination folder.
Click Save. The tool reads the source and writes each split file with an incrementing suffix like _1, _2, _3. A 2 GB CSV with 5 million rows takes around 90 seconds on an SSD. When done, open the destination folder and verify the output. The demo version limits you to 10 records per folder. Buy the licence for unlimited operation. Thanks for watching and please subscribe.
Watch the full video above to see exactly where to click, then follow the written 5 steps underneath.
What you'll see in this video
- Installing the 4n6 CSV Splitter on Windows
- Browsing to the large source CSV file
- Choosing the split mode: by row count or by file size
- Setting the split value (rows per chunk or MB per chunk)
- Picking a destination folder and clicking Start
Why Split a CSV File?
Data files grew faster than the tools that read them. Microsoft Excel still caps at exactly 1,048,576 rows per worksheet (a 2^20 binary limit built into the Office file format since Excel 2007 and still unchanged in Excel 2026). Any CSV bigger than that either refuses to open or silently truncates, meaning your tail-end rows vanish without warning. This is the single most common reason Indian ops teams, sales analysts and small-business accountants need a CSV splitter.
But the row limit is only one of several triggers. Database import tools like MySQL's LOAD DATA INFILE and PostgreSQL's COPY have practical timeout and memory caps that make a 5 GB file fail where five 1 GB files would succeed. Email attachment limits (25 MB on most corporate Exchange servers, 100 MB on Gmail, 15 MB on some Indian ISPs' business plans) force splitting before sending. Distribution workflows are easier when each region or salesperson gets their own file rather than a monolithic download. And parallel processing scales almost linearly: four 1 GB files process in roughly a quarter of the time of one 4 GB file on a multi-core machine.
The 4n6 CSV Splitter handles these scenarios with four split modes (row count, file size, column value, date). If you often work with text-heavy files in general, also see our search text in multiple TXT files guide. For generating sequential reference numbers inside the split output files, generate series numbers in Excel is a useful companion technique.
Spreadsheet Row and Size Limits (Real Numbers)
The physics of the problem. These are the official hard caps published by each tool's vendor, as of April 2026.
| Tool | Row / cell / size limit |
|---|---|
| Microsoft Excel (all modern versions) | 1,048,576 rows and 16,384 columns per sheet. Unchanged since Excel 2007. Larger files load only the first 1,048,576 rows and silently discard the rest. |
| Google Sheets | 10 million cells total (not rows). For a 10-column CSV that caps at 1 million rows. Import limit 100 MB. Performance degrades heavily past 100,000 rows. |
| Apple Numbers | 1 million rows and 1,000 columns. Comparable to Excel on rows, far smaller column limit. |
| Microsoft Access .accdb | 2 GB file size hard cap. Rows uncapped but most ops involving CSVs above 1-2 GB will hit this limit. |
| LibreOffice Calc | 1,048,576 rows (matches Excel) and 16,384 columns. Same CSV import cap as Excel. |
| Gmail attachment | 25 MB per message (both send and receive). Larger files route through Google Drive link instead. |
| Outlook.com attachment | 33 MB total per message. Corporate Exchange admins often lower this to 10 or 20 MB. |
| WhatsApp Business document | 100 MB per file. Fine for medium CSVs, not for raw transaction dumps. |
| MySQL LOAD DATA INFILE | No hard limit but max_allowed_packet default is 64 MB. Files over this often require config changes or split uploads. |
The Four Split Modes Explained
| Split mode | Use it when |
|---|---|
| By Row Count | You want each output file to have a specific number of data rows (for example, 500,000). Best for Excel compatibility, predictable output sizes, and when row count matters more than file size. |
| By File Size | You have a size cap to hit: email attachment limit, upload cap, SD card space. Set, for example, 25 MB or 100 MB. Each output file stays under the cap even if row counts vary. Good for distribution. |
| By Column Value | You have a categorical column like region, city, salesperson or product category, and want one output file per unique value. Produces sales_Delhi.csv, sales_Mumbai.csv etc. Great for handing off regional data to regional teams. |
| By Date | A date column exists and you want split by year, month, week or day. Produces transactions_2025_01.csv, transactions_2025_02.csv etc. Useful for time-series archive and monthly reporting. |
6 Steps to Split a Large CSV
Follow along with the video above as you work through these steps. As shown in the clip, watch the two split modes, by rows or by megabytes, and pick the one that fits your file.
-
Download 4n6 CSV Splitter from the official vendor site and install on your Windows PC (Windows 7, 8.1, 10, 11 and Windows Server 2012 R2 through 2022 all supported). The download is about 12 MB. Launch the application. It works fully offline, no account registration or internet connection required.
-
Click Open in the top menu. Two choices: Choose Files for one or several specific CSVs, Choose Folders to batch-process every CSV in a folder. Browse to your source file. If your CSV lives in a deeply nested network path, copy it locally first for speed, then process.
-
The tool parses the header and reports file properties: total row count, column count, file size on disk, and detected character encoding (UTF-8 with BOM, UTF-8 without BOM, UTF-16 LE, ISO-8859-1, Windows-1252). Confirm the row count is what you expect before proceeding. If encoding is wrong, the tool lets you override. Watch in the video above how the split mode is chosen, by rows for spreadsheets, by file size for upload limits.
-
Click Actions in the menu and pick Split in Multiple. The split dialog appears with four radio options: By Row Count, By File Size, By Column Value, By Date.
-
Select the split criteria and enter the parameter. Row count: enter 500000 (safe for Excel with a buffer). Size: enter 25 MB for email attachments, 100 MB for Gmail, 500 MB for database import chunks. Column value: pick a column from the dropdown. Tick Include header in each file (always). Click Browse and pick a destination folder with enough free space. As shown in the video, the output files are numbered automatically in the destination folder.
-
Click Save. The tool streams the source file and writes each split to the destination with an incrementing suffix: sales_part_1.csv, sales_part_2.csv etc. A 2 GB source with 5 million rows runs in 60 to 90 seconds on an SSD. When finished, open the destination and verify by opening one split file in Excel. Count rows with Ctrl+End.
Common Errors and Fixes
| Error or symptom | Cause and fix |
|---|---|
| "Unable to detect encoding" | The CSV was saved by an unusual tool with mixed encoding. Override the encoding in the file properties view to UTF-8. If that fails, open in Notepad++ and re-save as UTF-8 (without BOM) before splitting. |
| "Row count exceeds available memory" | Not a real limit of the tool (which streams files), but of your system's virtual memory. Close other heavy apps (Chrome, Excel, Teams) and retry. On 8 GB RAM systems, files above 4 GB sometimes need pagefile headroom. |
| Output file has no header row | Include header in each file option was off during split. Re-run with it enabled. The extra space is trivial (a few hundred bytes per file). |
| Split by column value produces one row per file | You picked a column with a unique value per row (like an ID or email). Pick a categorical column like region, category or status instead. Check the column has a manageable number of distinct values first. |
| "File already exists" warning stops the run | Destination folder has leftover files from a previous run. Clear the folder or create a fresh destination. The tool will not overwrite silently. |
| Indian characters become garbage in output | Source was UTF-8 but tool auto-detected as ISO-8859-1, or vice versa. Override encoding manually. After split, open one output file and check Hindi/Tamil/Bengali text renders correctly. |
| Numbers with commas break the split | CSVs in Indian or European locales often use semicolons as field separators because commas appear in numbers (1,23,456). Check the separator in the file properties view. The tool detects automatically but can be manually overridden. |
| Demo limit hits at 10 rows per file | That is the intentional demo cap. Buy the licence (about USD 29) to unlock full splitting, or switch to a free alternative listed in the next section. |
Real-World Use Cases (Tested)
| Scenario | How CSV splitting solves it |
|---|---|
| Excel refuses to open a 2 GB transaction export | Split by 500,000 rows. Get 8 files, each under Excel's row limit. Open in parallel Excel windows or merge with Power Query's Data Model. |
| Emailing 200 MB customer list fails | Split by 20 MB chunks. Send 10 emails (or ZIP them together with a 7-Zip split archive for one combined attachment). |
| MySQL import times out on huge CSV | Split by 500 MB file size. Run LOAD DATA INFILE on each, checkpoint in between. Also reduces transaction log pressure. |
| Regional sales data needs per-branch distribution | Split by "Branch" or "City" column. Email each regional head their own slice instead of the master file. Saves bandwidth, also avoids privacy issues where branches see each other's data. |
| Monthly accounting archive for GST records | Split by Date column with month granularity. Produces tidy monthly files for the 6-year Income Tax retention requirement in India. |
| Machine learning training pipeline | Split 80/10/10 for train/validation/test isn't what this tool does, but you can split by row count and use three folders. For proper stratified splits use Python's sklearn instead. |
| Parallel processing on multi-core server | Split 10 GB file into 10 Ă— 1 GB files. Run one processing worker per file. On an 8-core machine you get roughly 6-7x speedup (not 10x because of I/O contention). |
Alternatives: Free and Paid
| Method | Trade-offs |
|---|---|
| 4n6 CSV Splitter (this video) | Paid around USD 29. Four split modes, batch processing, Windows only. Demo limited to 10 rows per file (essentially unusable for real work without licence). |
| Python with pandas | Free, cross-platform. Script: import pandas as pd; df=pd.read_csv('big.csv'); for i,chunk in enumerate(pd.read_csv('big.csv',chunksize=500000)): chunk.to_csv(f'part_{i}.csv'). Scales to terabytes if you have RAM. Needs coding comfort. |
| PowerShell on Windows | Free, built-in. Get-Content big.csv -ReadCount 500000 | ForEach-Object { ... }. Slower than pandas but no installs needed. |
| Linux split command | Free, built-in on Mac and Linux. split -l 500000 big.csv part_. Fastest option, but does NOT preserve the header row in each chunk, so you will need to prepend it manually. |
| splitcsv.com (free online) | Free for small files, paid tier for large. Uploads your file to their server which is a privacy concern for sensitive data like customer PII or transaction records. |
| textfilesplitter.com | Free online, no signup. Works browser-side so data does not leave your machine. Slow on files over 200 MB because of JavaScript memory. |
| Notepad++ with Split plugin | Free, Windows-only. Manual split by scrolling to a line and copying. Fine for one-off splits of mid-size files, tedious for anything serious. |
| SysTools CSV Splitter (paid) | Similar price to 4n6 (~USD 29). Functionally comparable. Choose based on UI preference. Some users prefer SysTools' batch interface. |
Performance Benchmarks
Tested on a Dell Latitude 5420 (Intel i5-1145G7, 16 GB RAM, NVMe SSD) with CSVs of varying size generated synthetically.
| Source size and rows | Split by 500k rows: time and output |
|---|---|
| 50 MB, 200,000 rows (small) | 2 seconds. 1 output file (no split needed). Useful as a sanity check. |
| 500 MB, 2 million rows | 12 seconds. 4 output files around 125 MB each. Zero memory pressure. |
| 2 GB, 5 million rows | 1 minute 15 seconds. 10 output files. Peak RAM 280 MB (stream-based, not load-whole-file). |
| 10 GB, 45 million rows | 8 minutes 40 seconds. 90 output files. Peak RAM 420 MB. SSD speed was the bottleneck. |
| Same 10 GB on HDD destination | 47 minutes. HDDs add dramatic overhead for this many file writes. Use SSDs where possible. |
| Split 2 GB by column value (50 unique branches) | 1 minute 50 seconds. 50 output files of uneven size (Delhi branch largest, Patna smallest). Required one extra pass to count unique values before splitting. |
Data Privacy
The 4n6 CSV Splitter runs entirely on your PC and does not transmit data anywhere. This matters for Indian businesses handling PII under the Digital Personal Data Protection Act 2023, which treats email, Aadhaar number and transaction details as personal data. Uploading such CSVs to online splitters like splitcsv.com or Gigasheet sends the data to the vendor's servers (typically US or EU), and you may be in breach of cross-border data transfer rules depending on how the data was collected. Offline tools like this one, PowerShell scripts or Python pandas processing avoid that concern entirely. The output files sit on your local disk where you can encrypt them with VeraCrypt or 7-Zip AES-256 before distribution.
đź’ˇ Pro tips
- 500,000 rows per file is the sweet spot for Excel compatibility. Not the max Excel supports, but leaves headroom for your analysis formulas and pivot tables without hitting the hard limit.
- Always enable Include header in each file, even if the instinct is to save space. Every analyst who opens a headerless CSV has to re-add column names, which wastes time and introduces errors.
- Name your output folder with the date: sales_split_2026-04-23 not just sales_split. When you come back in 2 months to re-run the split you'll thank yourself.
- Preview one output file before moving on. Open part_1.csv in Excel and confirm the header is there, the data starts where you expect, and Indian characters render correctly. A 30-second check beats a failed analysis tomorrow.
- For column-value splits, verify distinct count first. A "city" column with 50 unique cities gives 50 files, great. A "customer_id" column with 500,000 unique IDs gives 500,000 files, awful. Count distincts in Excel or SQL before running.
- Use ZIP archives for distribution. 10 CSV files at 100 MB each compress well with 7-Zip LZMA2 to about 40 percent of original size, making email or upload practical where raw files would not be.
- Keep the original. Splitting is destructive in the sense that reconstructing one file from many is painful. Hold onto the master CSV in a backup folder until you are sure the splits are working correctly.
Frequently Asked Questions
Why do I need to split a CSV file at all?
The most common reason is Excel's 1,048,576 row limit: any CSV larger than that simply truncates when opened in Excel. Other reasons: database import tools often have per-file size caps (MySQL LOAD DATA INFILE, PostgreSQL COPY), email attachments usually max out at 25 MB on strict corporate servers and 100 MB on Gmail, parallel processing (one worker per file), and distribution (give each team member their own slice instead of a monolithic file).
What is the difference between splitting by rows, size, and column value?
By rows gives equal-sized chunks in terms of record count (500,000 rows each). By size produces files that fit a size cap (100 MB each), where row counts vary by column width. By column value creates one file per unique value, for example one CSV per city, one per product category, one per salesperson. Use rows for Excel imports, size for email or upload caps, column value for per-group distribution.
Will the header row (column names) be kept in each split file?
Only if you enable the Include header in each file option. Always enable it. Without headers, the second, third and subsequent split files have no column names and are useless for analysis without manual header re-addition. The 4n6 tool duplicates the original header row into every output file automatically when this option is on, adding only a few hundred bytes per file.
Does splitting a CSV change the data inside?
No. Splitting is a pure partition operation. The original rows are distributed across output files in their original order with no modification to field values, quoting or delimiters. The tool preserves the character encoding detected on import (UTF-8, UTF-16, ISO-8859-1). It never silently converts special characters, Indian language text, rupee symbols or emojis.
Can I split files over 10 GB in size?
Yes, there is no hard file size limit in the 4n6 CSV Splitter. Practical limits come from your free disk space (you need the source size plus the total output size available during processing) and RAM (the tool is stream-based so RAM usage stays low, around 200-400 MB regardless of file size). Files up to 50 GB have been tested successfully. Spinning HDDs are slower than SSDs; expect roughly 10x the time on an HDD for the same operation.
What are the free alternatives to this paid tool?
Python with pandas (df.iloc[::500000].to_csv() chunks) is free and handles any size. PowerShell scripts using Get-Content with -ReadCount work for Windows power users. Notepad++ can manually open and resave multi-MB files. Online tools like splitcsv.com and textfilesplitter.com work but require upload of your data (privacy concern for sensitive CSVs). For one-off splits the 4n6 tool's demo limit of 10 records makes it unusable for real work, so free alternatives are often the practical choice unless you split CSVs regularly.