How to Combine Two Lists Side by Side

Some list jobs aren't about comparing what's different - they're about combining two lists that are already related item-by-item. First names and last names that need to become full names. IDs and emails that need to be paired up. Two columns you'd normally join in a spreadsheet with TEXTJOIN or CONCAT, except what you actually have is two plain pasted lists, not a spreadsheet open in front of you.

Quick answer

Use Row Join mode in Zip/Merge Lists to combine same-index items from two or more lists onto a single line with a separator you choose - the same result as Excel's TEXTJOIN across columns. Use Zip mode instead if you want the lists alternated line by line rather than joined onto the same line. Uneven list lengths can be truncated, filled with blanks or a default value, or cycled.

Combine two lists now. Free, no account needed.

Open Zip/Merge Lists →

Row Join: the TEXTJOIN equivalent

Row Join takes the item at each position in every list and joins them onto a single output line using a separator you choose. Paste first names as one list and last names as another, set the separator to a space, and each output line is a full name - Alice, alice@example.com style pairing works the same way with a comma-and-space separator between an ID list and an email list. This is exactly the job a spreadsheet's TEXTJOIN or CONCAT function does when dragged down two columns, minus the need to have the data in a spreadsheet at all.

Zip: alternating instead of joining

Zip produces a different shape of output: instead of combining corresponding items onto one line, it alternates the lists, keeping every item on its own line - A1, B1, A2, B2 and so on. This is the right choice when you need the combined result to still be a flat list of individual items rather than paired rows - for example, interleaving two playlists or two sequences where each item needs to remain independently addressable afterward.

Handling lists of different lengths

Real lists rarely line up perfectly in length. Four options handle the mismatch:

  • Truncate - stop at the shorter list's length, dropping any extra items from the longer list.
  • Fill with blank - pad the shorter list with empty values so every row from the longer list is still represented.
  • Fill with a custom default - pad the shorter list with a specific placeholder value you choose, such as "N/A" or "unknown".
  • Cycle - repeat the shorter list from the beginning until it matches the longer list's length, useful when the shorter list is a small set of repeating labels or categories.

Reversing the operation with the Split tab

The Split tab in the same tool reverses these combine operations: "split columns" takes a list of joined rows and a separator, and splits them back into the original component lists - the exact reverse of Row Join. "Unshuffle" reverses a Weave operation, and "unstack" splits a single combined list back into its original pieces based on blank lines or a marker. This means the same tool handles both directions of the job rather than needing a separate utility to undo a combine.

Want the full walkthrough of every merge mode?

Stack, Zip, Weave, Row Join, and Coalesce, explained with examples.

Read the guide →

Frequently Asked Questions

How do I join two lists so item 1 from each is on the same line?
Use Row Join mode in Zip/Merge Lists - it joins same-index items from each list with a separator you choose, the same result as Excel's TEXTJOIN or CONCAT applied down two columns.
What's the difference between Row Join and Zip?
Row Join combines corresponding items onto the same line, joined by a separator - so 'Alice' and 'alice@example.com' become one line: 'Alice, alice@example.com'. Zip instead alternates the lists line by line, keeping each item on its own line: 'Alice', 'alice@example.com', 'Bob', 'bob@example.com'.
What happens if my two lists are different lengths?
You choose how uneven lists are handled: truncate to the shorter list's length, fill the missing side with blank values, fill with a custom default value you specify, or cycle the shorter list from the beginning to match the longer one's length.
Can I join first names and last names into full names this way?
Yes - that's a typical Row Join case: paste first names as List A and last names as List B, set the separator to a single space, and each row becomes a full name.
Can I reverse the process and split a joined column back apart?
Yes, the Split tab has a "split columns" mode that reverses row join - paste the combined lines and a separator, and it splits them back into their original component lists.
How is this different from a plain CSV join?
A CSV join typically combines many columns from structured tabular data into rows. Row Join in Zip/Merge is built for combining plain lists - two separate, unstructured lists of values - which is a simpler and more common starting point than a full CSV/spreadsheet export.
Can I combine more than two lists this way?
Yes, Row Join, Zip, and the other combine modes all accept more than two lists - each additional list is joined onto the same row (or alternated in, for Zip) alongside the first two.

Share this tool

Featured on ToolDirs
© 2026 ListDiff

Free online list and text processing tools.