Split large CSV files online.
Drop a CSV file and cut it into smaller import-ready partials by row count, file count, byte size or column value. Headers repeated in every chunk. Runs in your browser, downloads as a ZIP.
When do you need a CSV splitter?
CSV files grow faster than the tools that need to ingest them. A 200 MB customer export from a CRM, a 1.5 GB orders dump from an ERP, a multi-million row event log — none of these can be opened in Excel and most cannot be imported as a single file into HubSpot, Salesforce, Mailchimp, Klaviyo or a typical batch import pipeline.
Splitting the CSV into smaller, equally-shaped partials solves the import-ready chunk problem without writing a script. The most common reasons people split a CSV by rows:
- CRM imports — fits HubSpot, Salesforce, Pipedrive row or size caps
- ERP migrations — break a multi-million row dump into manageable batches
- Email platforms — Mailchimp, Klaviyo and Sendgrid cap audience uploads
- Database loads — keep each partial under the timeout of LOAD DATA INFILE
- Sharing by email — most providers reject attachments above 25 MB
- Splitting for parallel processing — feed each partial to a different worker
How the CSV splitter works
MessyMatch reads the file in your browser using a Web Worker. The first row is detected as a header automatically, even when your data contains dates, phone numbers or accented values. From that point on the splitter streams the file: it never holds the whole CSV in memory more than once, which is why it works on files much larger than Excel can open.
You then choose how to cut the file. The simplest is split by row count — every output file gets exactly N rows except the last one, which may be smaller. You can also split by file count (N equal partials), by byte size (each partial under a target MB cap, useful for upload limits), or by a column value (one partial per unique value of a column — handy for partitioning orders by country, region or salesperson).
Keep headers in every partial
The default is to repeat the header row in every output file. That is what most importers expect — each file should be self-contained so column meaning is preserved. If your downstream tool concatenates the partials back together, you can turn the option off and only the first partial will carry the header.
Download all partials as a ZIP
When the split finishes you get a list of every partial with its row count. Download them one by one or grab the whole batch as a single ZIP. File names follow the pattern name_0.csv, name_1.csv, name_2.csv by default; you can change the template to anything that fits your downstream tool.
Browser-first by design
CSV contents are processed inside your browser via a Web Worker and are not transmitted to our servers. Our servers do not have an endpoint that ingests file contents — the Web Worker reads the file from disk, splits it locally and hands the partials back to the browser for download. We only record metadata about the operation (row count, file size, format, elapsed time) for abuse limits and analytics. See the privacy policy for the full list of what we collect and what we do not.
Related tools
Frequently asked questions
Can I split a CSV file by number of rows?+
Yes. Pick how many rows you want per partial and MessyMatch produces files of exactly that size (the last partial may be smaller). You can also split by file count, by byte size, or by a column value.
Are headers repeated in every partial?+
Yes, by default. Each partial includes the original header row so every file is importable on its own. You can turn this off if your downstream tool expects a header only on the first file.
Can I download all partials as a ZIP?+
Yes. After the split, you can download every partial as one ZIP file, or click any single partial to grab it on its own.
Are my CSV files uploaded?+
No. Parsing and splitting happen inside your browser via a Web Worker. File contents are processed in your browser via a Web Worker and are not transmitted to our servers.
What if my CSV is too large for Excel?+
Excel caps at about 1,048,576 rows per sheet and slows down well before that. MessyMatch is row-count agnostic — it streams rows from the file and produces partials Excel can open.
Can I split CSV files for CRM imports?+
Yes. Most CRMs (HubSpot, Salesforce, Pipedrive) cap import files at a fixed row count or file size. Choose a partial size that fits the cap, keep headers in every file, and import each partial as a separate batch.
Are there limits on file size?+
Anonymous users can split files up to 100 MB. Free accounts can split up to 250 MB. The full quota table is on the pricing page.