String Transposer

Treats each line as a row of delimited fields and swaps rows for columns, turning a table's first column into its first row, its second column into its second row, and so on. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-07-22

Overview

Introduction

Sometimes a table would be easier to read or process with its rows and columns swapped, a wide table with few rows turned into a narrow one with many.

This tool does that swap directly on delimited text.

What Is String Transposer?

A transposer that splits each line into fields by your chosen delimiter, then rebuilds the output so what was a column becomes a row.

It runs entirely client-side as part of this site's String Tools collection, so nothing you paste is ever uploaded to a server.

How String Transposer Works

Each line is split into a row of fields; the tool then iterates by column index across all rows, joining the values at that index from every row into one new line.

The transformation happens synchronously in JavaScript the moment you type, with no network round trip involved.

When To Use String Transposer

Use it when a delimited table would be easier to read, paste into a different tool, or process with its rows and columns swapped.

It's a fast way to get the answer without opening a code editor, a REPL, or writing a one-off script just to check.

Often used alongside Text Splitter and Text Joiner.

Features

Advantages

  • Handles ragged rows (differing field counts) by treating missing fields as empty.
  • Works with any single delimiter, not just commas.

Limitations

  • Doesn't handle quoted fields containing the delimiter the way a full CSV parser would.

Examples

Transposing a small table

Input

a,b,c
1,2,3

Output

a,1
b,2
c,3

The two rows become three rows, one per original column.

Best Practices & Notes

Best Practices

  • For CSV with quoted fields containing commas, parse with CSV to JSON first, then re-flatten, rather than transposing raw text directly.

Developer Notes

The transpose loop iterates by column index up to the widest row's field count (`Math.max(...rows.map(row => row.length))`), filling in an empty string for any row shorter than that, so ragged input still produces a clean rectangular result.

String Transposer Use Cases

  • Flipping a wide delimited table into a narrow one for easier reading
  • Preparing transposed data for a spreadsheet paste
  • Reorganizing tabular data before further processing

Common Mistakes

  • Using this on CSV with quoted, delimiter-containing fields, which it doesn't parse specially.

Tips

  • Set the delimiter to match your data exactly, including tab if working with TSV.

References

Frequently Asked Questions