Convert a list to columns

Convert a one-item-per-line list into N-column rows with tab separators. Default is 2 columns. Items flow left-to-right in input order - first N items form row 1, next N form row 2, etc. The last row has however many items remain (not padded). Output uses real tab characters (`\t`) so it pastes cleanly into Excel / Google Sheets.

Input
Ready
Output
Live

Row-by-row regrouping with tab output

The op walks items in input order and groups them into consecutive slices of N. With Columns = 2 and 6 items, you get 3 rows × 2 cols. With Columns = 3 and 6 items, 2 rows × 3 cols. Odd remainders produce a short last row - no padding.

Separator is an actual U+0009 tab character, not spaces. That is what spreadsheets expect - paste into a single cell and the tabs split into adjacent cells automatically.

Blank lines are skipped before grouping. For the reverse (tab-separated input back to one-per-line), use Convert to rows or Split a list.

How to use convert a list to columns

  1. 1Paste one item per line into the input panel
  2. 2Set Columns (default 2)
  3. 3Output groups consecutive items into N-column tab-separated rows
  4. 4Paste into a spreadsheet - tabs split into adjacent cells automatically
  5. 5For plain one-per-line output, use Convert to rows

Keyboard shortcuts

Drive ListShift without touching the mouse.

Shortcut Action
Ctrl ZUndo last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor
EscExit fullscreen
Ctrl KOpen the command palette to jump to any tool
Ctrl SSave current pipeline draft Plus
Ctrl PRun a saved pipeline Plus

What this tool actually does

Slice input into N-item chunks, join each with tab.

N items per row, left-to-right

Items flow in input order. First N on row 1, next N on row 2, etc. No reshuffling or column-major fill.

Real tab separators

Output uses U+0009 tab characters - not spaces. Pastes cleanly into Excel, Google Sheets, Numbers, LibreOffice as separate cells.

Short last row when count does not divide evenly

7 items with Columns=3 → rows: `[1,2,3]`, `[4,5,6]`, `[7]`. Last row has 1 cell, not 3 padded cells. Empty-cell padding is not applied.

Blank lines skipped

Empty and whitespace-only lines are filtered before grouping. They do not consume column slots.

Inverse of Convert to rows

Convert to rows flattens delimited input to one-per-line. This tool regroups one-per-line back into tab-separated rows.

Worked example

Default Columns=2. Six items produce 3 rows × 2 columns. Tab separators between cells.

Input
Apple
Banana
Cherry
Date
Elderberry
Fig
Output
Apple	Banana
Cherry	Date
Elderberry	Fig

Settings reference

How the Columns option shapes the output using the sample above (6 items).

Setting What it does Effect on the sample
Columns: 2 (default) 3 rows × 2 columns `Apple\tBanana` / `Cherry\tDate` / `Elderberry\tFig`
Columns: 3 2 rows × 3 columns `Apple\tBanana\tCherry` / `Date\tElderberry\tFig`
Columns: 4 (does not divide 6) 2 rows: first has 4 cells, last has 2 `Apple\tBanana\tCherry\tDate` / `Elderberry\tFig`
Columns: 1 Equivalent to input (one item per row) Each item on its own line, no tab
Blank lines (automatic) Skipped before grouping Line count for grouping purposes excludes blanks

FAQ

What separator does the output use?
Tab characters (`\t`, U+0009). That is the spreadsheet paste convention - cells are separated by tabs, rows by newlines. Not spaces.
What happens when item count does not divide evenly by columns?
The last row is short. 7 items with Columns=3 gives two 3-cell rows and a 1-cell last row. No padding with empty cells.
Does it fill row-major or column-major?
Row-major only. Item 1 goes to row 1 col 1, item 2 to row 1 col 2, etc. First row fills before the second starts. Column-major (item 1 to row 1 col 1, item 2 to row 2 col 1, item 3 to row 3 col 1, then back to the top for col 2) is not supported - sorting the input first does NOT change the fill direction, it just reorders the items inside the same row-major pattern. If you need column-major output, rearrange the input into the column-major sequence yourself before running: for 6 items in 2 columns, enter `A` / `D` / `B` / `E` / `C` / `F` as six separate lines instead of `A` / `B` / `C` / `D` / `E` / `F`, and the row-major fill will visually produce `A⇥D` / `B⇥E` / `C⇥F`.
Can I use a different separator instead of tab?
Not on this tool. For configurable separators, use Join after chunking with this tool, or chain Replace to swap the tab character for something else.
How is this different from Convert list items into rows?
Convert to rows takes delimited input (commas, pipes, spaces) and splits to one item per line. This tool does the inverse - takes one-per-line input and regroups into N-column rows.