All tools
CSV and TSV matrices

CSV Transposer

Turn CSV rows into columns and columns into rows. Keep text, leading zeros, quoted line breaks and empty cells intact, with independent input and output delimiters.

CSV processing stays in a local browser worker. Inputs are not uploaded or saved; refreshing clears memory-only drafts.

Original CSV / TSV

0 B / 5 MiB UTF-8

Limits: 5 MiB input, 100,000 cells including blanks/padding, 5,000 rows, 5,000 columns and 10 MiB output. Import, parsing and transposition run in a local worker.

Every row is data, including apparent headers. Empty physical records count as one empty cell; a final record separator adds no extra row. Refreshing clears drafts.

How to transpose CSV or TSV

  1. Paste your table or import one UTF-8 CSV, TSV or TXT file. File import loads the draft; it does not automatically transform it.
  2. Choose comma, semicolon or tab for input and output independently. Both default to comma. Every row is data, including apparent headers.
  3. Leave padding off to require equal field counts. If short rows are intentional, enable Pad short rows: width becomes the longest row, shorter rows gain empty cells, and longer rows are never truncated.
  4. Press Transpose and review dimensions, added padding cells and both matrix previews. Changing input or settings immediately hides the old result.
  5. Copy or download the complete output, not just the preview. Clipboard denial opens selectable full text. Clear / Reset offers in-memory Undo; Cancel stops unfinished work.

Worked example: two rows become three

name,Alice,Bob
city,Paris,Oslo

The input has two rows and three columns. The output has three rows and two columns:

"name","city"
"Alice","Paris"
"Bob","Oslo"

The first row is not treated as a header. Transposing the result again restores the same cell matrix, although quoting and record separators may differ from the original bytes. This is a matrix transpose, not a pivot table: it does not group, aggregate or calculate values.

String preservation and blank records

The bundled CSV parser supports quoted delimiters, doubled double quotes, LF and CRLF record separators, and embedded LF/CRLF inside quoted cells. Cell whitespace, leading zeros, Unicode and formula-like text remain strings. One initial BOM is ignored as an encoding marker; additional or embedded BOM characters remain data. Files must be valid UTF-8, not legacy encodings or workbook formats.

The text box displays line breaks uniformly, but raw pasted/imported line endings are retained behind it. Unrelated edits preserve those existing cell line endings; newly typed line breaks use LF.

Empty text has no matrix. Two double quotes ("") represent one empty cell. A blank physical record also represents one empty cell; a final record separator terminates the preceding record without adding a phantom row. Logical records can span several physical lines. Ragged input reports the logical record number and expected/actual field counts; malformed quotes block export without replacing the input.

For an R-by-C matrix, output cell [j][i] contains input cell [i][j]. In padding mode, missing trailing cells become empty strings before the transpose. The result reports the exact number added; no column is dropped.

Raw UTF-8 exports and spreadsheet caution

Every exported field is quoted, including empty strings, and internal quotes are doubled. Record separators are LF with a final LF; line endings inside cells are preserved. Output contains no added encoding BOM. Downloads are named transposed.csv, or transposed.tsv for tab-delimited output.

Raw export does not sanitize spreadsheet formulas. Opening cells beginning with =, +, -, @ or other formula-like characters in spreadsheet software may cause interpretation. CSV quoting alone does not prevent that. This browser tool renders cells as text and does not execute formulas, HTML or links.

Limits, previews and privacy

Limits are 5 MiB of UTF-8 input, 100,000 cells, 5,000 rows, 5,000 columns and 10 MiB serialized output. Empty and padded cells count toward the rectangular cell total. Over-limit tables fail without partial exports. Parsing, file decoding and transposition use a cancellable local worker, with obsolete responses discarded.

Each matrix preview shows the first 20 rows and 20 columns, with explicit omitted counts and up to 160 characters per cell. The quoted text preview shows up to 8,192 characters. Copy, UTF-8 download and selectable full text contain the entire accepted result. Failed imports preserve the prior input. Workers and download URLs are released when finished, replaced or invalidated.

Drafts, settings, results and one-step Undo stay in memory only, not URLs, analytics, logs or browser storage. Refreshing clears them. This tool does not support Excel files, arbitrary transformations, header recognition, type inference or pivot-table aggregation.