Convert a list to a table

Paste rows of data, one per line, and get a table in the format you need. The column separator is detected for you, and the first row can act as the header.

  • Free
  • No sign-up
  • Runs in your browser
list-to-table

100% private — your text is processed in your browser and never sent to any server.

How it works

Paste your rows

One row per line, with the columns separated by commas, tabs, pipes or spaces.

Choose the format

Markdown, HTML, tab-separated, CSV, JSON or a text table with borders.

Copy the table

Paste it into a document, a README, a web page, a spreadsheet or code.

From loose rows to a proper table

Data often arrives as rows of text with the columns separated by commas, tabs or spaces: the output of a command, an email with figures, notes typed in a hurry or a cut and paste from a report. To use it in a README, a web page, a spreadsheet or a program, it has to be in a table format, and writing the pipes of a Markdown table or the tags of an HTML table by hand is tedious and easy to get wrong.

Pick the output you need

  • Markdown table: for READMEs, documentation, issue trackers and many note-taking apps. The header separator line is added and any pipe inside a cell is escaped.
  • HTML table: a clean table with thead and tbody, with the text escaped so that special characters do not break the page.
  • Tab-separated: when you copy it, a spreadsheet drops each value into its own cell.
  • CSV: with values quoted when needed, ready to save as a file.
  • JSON: an array of objects that uses the header row for the keys, ready for a program or an API test.
  • Text table with borders: a readable table made of characters, useful in plain-text emails and terminals.

Separator detection

By default the tool looks at the first line and picks the most likely separator: tabs, pipes, semicolons or commas, or runs of two or more spaces, and otherwise single spaces. You can also choose the separator yourself. Values in quotes are kept whole, so a cell such as "Madrid, Spain" is not split at its comma.

Header row

With "The first row is the header" ticked, the first line provides the column titles. If you untick it, the columns are named Column 1, Column 2 and so on in the formats that need names, such as JSON. Rows with fewer columns than the widest row are filled with empty cells, and the tool tells you when that happened.

What it does not do

It does not align numbers or merge cells, and it cannot infer types: every JSON value is a string, and dates and numbers are not converted. Text with a variable number of words per column and only spaces between columns cannot be split reliably; put a comma or a tab between columns.

Frequently asked questions

How do I convert text to a Markdown table?
Paste your rows, keep "Markdown table" selected and copy the result. The header separator row is added for you.
How does it know where the columns are?
It checks the first line for tabs, pipes, semicolons, commas or runs of spaces and picks the most likely separator. You can also pick one yourself.
Can I paste the result into a spreadsheet?
Yes. Choose "Tab-separated", copy the result and paste it into Excel or Google Sheets; each value lands in its own cell.
Can I get JSON from rows of text?
Yes. Choose JSON. The first row provides the keys and each following row becomes an object.
What if some rows have fewer columns?
The missing cells are left empty and the tool shows a warning.
Is my data uploaded anywhere?
No. The conversion runs in your browser.