Merge Lines - Combine Two Lists Side by Side
Merge two lists line by line with a custom separator. Combine first and last names, data columns, or two text blocks instantly.
Three steps to get started
Choose a separator
Select a separator to place between each pair of lines - space, comma, tab, pipe, or any custom string.
Paste List A and List B
Enter your two lists side by side, one item per line in each box.
Copy the merged result
The merged output appears instantly. Copy or download it.
Zip two lists together, line by line
Merging lines means combining two lists positionally: line 1 of List A is joined to line 1 of List B, line 2 to line 2, and so on, with a separator of your choice between each pair. Programmers know this operation as a zip - the same idea as Python's zip(), Excel's TEXTJOIN across two ranges, or paste in coreutils. What makes it useful outside a script is that the data usually arrives as two columns already, copied out of a spreadsheet or pasted from two different exports.
Position is the only thing that links the two sides. Nothing is matched by content, so the lists must already be in the same order - this is a positional join, not a lookup. Sorting one column but not the other, or leaving a stray blank line at the top of one box, silently shifts every pair after it. Because a misalignment produces output that looks perfectly well-formed, it is worth spot-checking a row near the bottom before trusting the whole result.
Examples of what you can build:
- Full names from separate first and last name columns
- "key: value" configuration pairs from two lists
- Email format "Name <email>" by merging names with addresses
- Tab-separated data from two columns for spreadsheet import
- SQL expressions like "column = value" from field names and values
- Formatted output like "1. Item - Description" from numbers and items
The separator field accepts any string - including spaces, punctuation, multi-character separators like " - ", or use the tab preset to produce TSV output. If one list has more lines than the other, the shorter list is padded with an empty string so no data is lost and the row count of the longer list is preserved.
Picking a separator
Tab is usually the best choice when the output is heading back into a spreadsheet, because Excel and Google Sheets split pasted text on tabs automatically and tabs almost never occur inside a data value. Comma looks natural but breaks the moment a value contains a comma of its own - a company name like "Acme, Inc." will silently split into two fields unless the field is quoted, which is why RFC 4180 requires quoting in CSV. Pipe avoids that collision entirely and is common in log formats and legacy data feeds.
For SQL and code generation, remember that the separator is inserted literally, so a separator of ', ' combined with your own quoting produces ready-to-run VALUES tuples. For email address lists, joining names to addresses with < gets you most of the way to RFC 5322 display-name format - you just need the closing bracket appended afterwards.
Merging is performed by JavaScript running on this page, with no upload step and no account. Customer lists, internal identifiers, and other data you would not paste into a hosted service stay on your own machine.