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.
  • Sizes the output from the widest row rather than the first, so no data is lost when a later row carries more fields than the ones above it.

Limitations

  • Doesn't handle quoted fields containing the delimiter the way a full CSV parser would.
  • Fills missing fields with empty values, so ragged input becomes rectangular and the original row lengths cannot be recovered.

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.
  • Confirm every row uses the same delimiter before transposing, since a row split differently shifts all of its values onto the wrong output lines.
  • Transpose the header row along with the data, so the labels become the first column and stay attached to their values.

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.
  • Transposing data whose fields contain the delimiter, which splits those fields and misaligns every column after them.

Tips

  • Set the delimiter to match your data exactly, including tab if working with TSV.
  • Transposing is the quickest way to turn a wide table into a tall one for reading, since a long row is far harder to scan than a long column.

References

Frequently Asked Questions