Neatbo.

Split CSV by column

Separate one CSV into files for each distinct group and download a manifest mapping group values to output filenames.

Browser-local processingInputFile / TextOutputFile / TextOne UTF-8 CSV, up to 1 MiB
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

Paste or import a CSV to choose its grouping column.

Preparing the tool…

Before you start

Paste or import one UTF-8 CSV, choose a grouping column from its header, then download a ZIP with one CSV per group and a filename manifest.

How to use this tool

  1. Paste a CSV or import a UTF-8 .csv file and review its detected rows and columns.
  2. Select the grouping column from the header and check the number of groups before splitting.
  3. Download the ZIP and keep its manifest.json. Sum manifest row counts to reconcile with the source.

Supported inputs and limits

One CSV up to 1 MiB and 200,000 parsed cells; at most 100 nonblank groups. Exact strings, including leading zeroes, define the groups. Blank group values are rejected.

The ZIP contains a header-bearing CSV per group plus manifest.json. Numbered filenames avoid group-label path and collision problems; the separate manifest download maps exact labels to files and row counts. CSV cells that resemble formulas gain an apostrophe.

Worked example

Example input

team,name
A,Ada
B,Bo
A,Cy
Example options
{"key": "team"}

Example output

[
  {
    "value": "A",
    "rows": 2,
    "file": "group-001.csv"
  },
  {
    "value": "B",
    "rows": 1,
    "file": "group-002.csv"
  }
]

When something does not work

Choose a column found in the CSV header, correct malformed rows and blank group values, and split or filter a source with more than 100 groups or 200,000 cells.

Frequently asked questions

How do I match group values to output filenames?

The ZIP and separate manifest.json use safe numbered filenames. Each manifest entry gives the original group value, its row count and its CSV filename.

What should the example produce?

Group A contains Ada and Cy; group B contains Bo. Add output row counts to verify the input total.

Which cases are outside its scope?

The tool accepts one UTF-8 CSV up to 1 MiB and 200,000 cells, with no more than 100 nonblank group values. It does not split a wide table by column positions or process large files.

Documentation & further reading

Related tools