csvkit.org
CSV (Comma-Separated Values) utilities, in the browser
Say hi →

Combine CSV Columns

separator or template · skip blanks · keep or drop originals

Fold several columns into one. Join first and last name into full_name, build a one-line address from four fields, or compose a key like 2026-03/north/pro to group or join on. Use a plain separator, or write a template with {column} placeholders when you need punctuation and fixed text between the values.

combine
columns to combine, in order
Or drop a .csv file here, or
ready

How to combine columns

  1. Paste the CSV or drop a file. The first two columns start ticked.
  2. Tick the columns you want joined — they combine in the file's column order, left to right.
  3. Set the separator: a space, - , /, or \t for a tab. Leave it empty to concatenate with nothing between.
  4. Name the new column, decide whether to keep the originals, and download.

Separator or template?

A separator is the same string between every value — fine for first last or a/b/c. A template gives you full control over the shape:

{street}, {city} {postcode}   →   12 Main St, Kyiv 01001
{last_name}, {first_name}     →   Lovelace, Ada
ORD-{year}-{seq}              →   ORD-2026-0042

Any {name} that matches a column header is replaced by that row's value; anything else is copied through literally. When a template contains braces it takes over from the ticked columns, and the originals are always kept — templates usually reference columns you still need.

Skip empty values, and why it matters

With a separator and no skipping, a missing middle name produces Ada Lovelace with a double space, and a missing address line leaves a dangling comma. Skipping empties drops those gaps before joining, which is what you want for names and addresses. Turn it off when the position carries meaning — a composite key like region/plan/month must keep its empty slots so values stay aligned.

FAQ

Can I control the order the columns are joined in?

They follow the file's column order. To change it, reorder the columns first with Keep / rename / reorder, or use a template, which lets you name them in any order.

What happens to the original columns?

They're removed by default so you don't carry duplicate data — tick keep original columns to retain them. Template mode always keeps them.

How do I split a column back apart?

Split column is the inverse, by delimiter, regex, or fixed width.

Is anything uploaded?

No — it runs entirely in your browser.

Privacy

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