Split a TSV Column
One column holding two things — Smith, John, Berlin/DE, 2026-07-19 14:32, a semicolon-separated tag list — split into proper separate columns. The new columns are inserted where the original was, named after it, and every row gets the same number of them so the file stays rectangular even when some rows split into fewer parts.
How to use
- Paste or drop the file and name the column to split.
- Type the delimiter. A literal string —
,including the space if that's what separates the parts.\tand\nare understood as escapes. - Set max parts if the delimiter appears more times than you want splits — everything past the limit stays joined in the last column. Essential for names and addresses.
- Check the column count in the status line: it's set by the row that splits into the most parts.
The max-parts trap
Splitting full_name on a space with no limit gives you as many columns as the longest name has words — so one row with a middle name and a suffix produces four columns for the whole file, and everybody else gets two blanks. Setting max parts to 2 gives you first and everything else, which is nearly always the right shape.
The general rule: if the delimiter can appear a variable number of times, set a limit. Splitting city, region, country where region is sometimes absent will silently put the country in the region column for those rows — the classic misaligned-split bug. Check with value counts on the new columns afterwards; a country name showing up in a region column is easy to spot that way.
Regex mode
Tick treat as regex to split on a pattern: \s*[,;]\s* handles a list separated by either commas or semicolons with any surrounding spaces, \s{2,} splits on runs of two or more spaces (useful for fixed-width-ish text), and (?=[A-Z]) splits before each capital letter. Invalid patterns are reported rather than silently ignored. Note that max parts joins the remainder with your literal delimiter text, so combining a regex with a limit can produce a slightly different separator in the last column.
FAQ
Can I name the new columns?
They're named after the source — name_1, name_2 — and you can rename them in one step afterwards with header tools, which takes a comma-separated list of new names.
What if I want rows instead of columns?
A tag list that should become one row per tag is an unpivot-shaped problem: split into columns here, then unpivot with the ID columns kept and empty values skipped. Two steps, and the result is one row per tag.
Can I split on a fixed number of characters?
Not here. Regex gets close for simple cases — (?<=^.{3}) splits after three characters in browsers that support lookbehind — but genuinely fixed-width data is better handled by a dedicated parser.
How do I merge columns back together?
Concatenate columns, which takes a list of columns and a joiner and can remove the sources.
Privacy
100% client-side. No upload. See the privacy policy.