CSV Column Tools
Pull one column out of a CSV as a plain list, or drop, reorder, rename and insert columns and download the new file — entirely on this device.
Keep, drop, reorder, rename and insert columns, then download the new CSV. A file with no header row stays headerless — unless you rename a column, which adds a header row.
Pick one column and take its values out as plain text.
—
Drop a .csv file here — it is read in this tab, never uploaded. Press ? for shortcuts
Do it offline:$ csvcut -c email data.csv
How to use it
- Paste the CSV, or drop a .csv, .tsv or .txt on the input pane — the badge names the delimiter found.
- Work down the column list: each row shows the index, the header and sample cells, and its tick keeps or drops it.
- Move a column with its up and down buttons, type over a header to rename it, or add a constant column.
- Pick the output: the One column as a list tab pulls one column out as values, the CSV file tab writes the plan back as CSV.
- Copy the result, download it, or share a link that reopens with the same plan.
Sometimes you want one column out of a wide export. Sometimes the same file back, with a column gone, two swapped and one header spelled properly. Paste the CSV: every column becomes a row you can tick, move or rename. Take the result as a list of values, or a new CSV file.
How it works
Every tick, move and rename addresses a column by its index in the file you pasted — index 0, index 1, and so on — never by its header text. The list prints that index beside the name.
Headers are labels, and labels repeat. A header row saying email twice would cost a column in any reader keyed on names, so the second becomes email_2 on the way in. The name email then means the first of the pair; an index means exactly one column.
A header cell can be empty, and a row can hold more values than the header row named; those columns take positional labels like col4. A file with no header row is listed as col1, col2, col3 for display, and stays headerless unless you rename something.
Examples
name,email,plan
Ada,ada@example.com,pro
Grace,grace@example.com,freeada@example.com
grace@example.comThe email column sits at index 1 of three. The list tab returns its values one per line; the count reads 2 of 2 values, 2 unique.
name,plan,signed_up
Ada Lovelace,pro,2026-01-04
Grace Hopper,free,2026-02-11Plan,Customer
pro,Ada Lovelace
free,Grace HopperThree columns in, two out, swapped and relabelled. Untick signed_up, move plan above name, type the new headers: the status line says 1 of 3 columns dropped, and cells carry across untouched.
name,email,email
Ada,ada@work.example,ada@home.example,pro
Grace,grace@work.example,grace@home.example,freeada@home.example
grace@home.exampleThis header row says email twice and stops one column short of its data, so the repeat becomes email_2 and the fourth column col4. Index 2 returns the home addresses; the name email returns the work ones.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
A shared link carries a plan, not a schema
Indexes are what a link stores, so reopening one against a narrower file can point past the last column — refused, naming the index wanted and the new width. Header names stay out of a link.
Quoting is recalculated for the file you get
A kept cell is re-examined against the delimiter you chose: one holding a semicolon is quoted in a semicolon file, bare in a comma one. Constants obey it too.
Two columns may end up with one name
Renaming two outputs to the same word warns rather than refuses — some readers keep only the last. Renaming to nothing is allowed; that column stays addressed by index.
List options apply in a fixed order
Trim runs first, then empty values drop out, then repeats fold with the first kept. Trimming can create the duplicates folding removes; the unique count shows either way.
Where csvcut differs from this page
csvcut needs csvkit installed and selects by name or 1-based number; renaming and reordering are separate steps there. Splitting a column is a text job neither side does.
Common errors
No output columns are selected, and a CSV file needs at least one. Keep at least one of the 3 columns, or insert a new column.- The 3 it names is the real width of the file in the pane, so a 40-column export says 40. Nothing is cleared: tick a row back on and the output returns. An empty plan never writes an empty file.
Output column 2 points at source column index 7, but this CSV has 3 columns (valid indexes 0 to 2). Choose a column in that range or remove the entry — a saved link opened with a different CSV can point past the last column.- Output columns count from 1 in that sentence; the source index is the 0-based address the plan holds. A restored session meeting a narrower file is the cause.
The plan asks for 513 output columns, over the 512-column limit for this tool. Remove 1 column, or run the job in two passes.- The ceiling counts output columns, not input ones, so copying one column often enough reaches it from a narrow file. It names how many entries have to go.
Output column 1 has a 257-character header, over the 256-character limit for one header. Shorten the name to 256 characters or fewer.- Both bounds are per entry: 256 characters for a header, 1,024 for the constant of an inserted column. Pasting a sentence into a header field is what usually trips it.
Input is larger than the 100 MB limit for this tool. For bigger payloads use the CLI: csvcut -c email data.csv- That ceiling belongs to the shared CSV reader and the check runs before parsing, so the pane keeps what you pasted. csvkit reads such files from disk instead.
FAQ
Two of my columns have the same header — which one gets extracted?
Neither is guessed at. The second becomes email_2 as the file arrives, so email means the left-hand column and email_2 the right one. Picking a row sends an index instead.
Can I keep the original column order and just drop one column?
Yes. Untick the one you do not want: the rest keep the order they arrived in, and only the drop is noted. Order moves under the up and down buttons.
Does renaming a header change the data?
No. A rename rewrites one cell of the header line; the values beneath are copied byte for byte. A headerless file gains a header only because renaming asks for names.
Keyboard shortcuts
- ⌘/Ctrl + Enter
- Apply the plan again.
- ⌘/Ctrl + S
- Save the result — .csv from the CSV file tab, .txt from the list.
- ⌘/Ctrl + C
- Copy the whole output pane when nothing is selected.
- ⌘/Ctrl + Shift + C
- Copy the output pane mid-selection.
- t
- Step to the next theme, unless the caret sits in a field.
- ? or ⌘/Ctrl + /
- Show this list of keys.
- Esc
- Close the frontmost dialog; panes keep their contents.