tsvkit.org
TSV Toolkit
Sample data Say hi →

Delete TSV Columns

remove columns by name or position · everything else kept in order

Drop the columns you don't want and keep the rest in their original order. The usual reasons: stripping personal data before sharing a file, removing the internal columns from an export, or getting a wide file down to something readable. The inverse is extract columns, which is the better choice when you're keeping fewer columns than you're dropping.

delete
Drop a .tsv file here, or
ready

How to use

  1. Paste or drop the file.
  2. List the columns to remove, comma-separated, by header name or 1-indexed position.
  3. Check the count in the status line — it reports how many columns were removed.
  4. Copy or download.

Before you delete personal data

Deleting the name and email columns is the obvious first step, and on its own it's often not enough: a row with a rare combination of postcode, birth year, and job title can identify someone even with the direct identifiers gone. If the file is leaving your organisation, think about the rest of the row too — anonymize can hash or mask a column while keeping it joinable, which is frequently more useful than deleting it outright.

Positions shift, names don't

When you delete by position, remember the numbers refer to the input file — all of them are resolved before anything is removed, so 2,3 deletes the second and third original columns rather than the second and then the new third. Deleting by name avoids the question entirely, which is why naming is worth the extra typing on a file you'll process more than once.

FAQ

What if a column I name isn't there?

You get an error naming the column, so you don't get a file that looks fine but kept something you meant to drop.

Can I delete all but one column?

Easier the other way round: extract the one you want.

How do I remove empty columns?

Transpose, then remove empty rows, then transpose back. Columns have no direct "remove if empty" operation.

What's the shell equivalent?

cut --complement -f2,3 -d$'\t' f.tsv on GNU cut, or awk -F'\t' -v OFS='\t' '{$2=$3=""; print}' — which leaves empty fields rather than removing them, a difference that trips people up.

Privacy

100% client-side. No upload. See the privacy policy.