CSV to Markdown table — paste data, get a GitHub-ready table

Paste CSV or spreadsheet data and get a Markdown table for GitHub, GitLab or your docs, with columns padded to line up and numeric columns aligned to the right.

Live demo · real result from this tool

Markdown table

|  id | name        | city              | joined     | score || --: | ----------- | ----------------- | ---------- | ----: ||   1 | Asha Rao    | Bengaluru         | 2024-03-01 |  92.5 ||   2 | Smith, John | London            | 2023-11-15 |    88 ||   3 | María López | Madrid            | 2025-01-20 |       ||   4 | Li Wei      | Shanghai "Pudong" | 2022-07-09 |    79 |

Processed on your device — nothing is uploaded.

How to use the CSV to Markdown table converter

  1. Paste your data into the CSV box, or copy cells from a spreadsheet.
  2. Leave Delimiter on Detect, or pick Comma, Semicolon, Tab or Pipe.
  3. Choose the Alignment: Numbers right, text left (default), Left, Centre, Right or None (—).
  4. Keep Pad columns to line up ticked for tidy source text.
  5. Copy the Markdown table or download table.md.

What it does and when to use it

Typing a Markdown table by hand means counting pipes and dashes, and one missing pipe breaks the whole table. This tool writes it for you from data you already have: a test-results export for a pull request, a price list for a README, a comparison for a wiki page or a changelog. The aligned source also reads well in plain-text diffs.

If the data starts as JSON, the JSON to Markdown tool fits better. For a plain-text table that stays CSV, use the CSV column aligner, and for spreadsheet tabs, convert with TSV to CSV first or simply choose Tab as the delimiter.

How it works

The papaparse library reads your text in the browser, handling quoted fields, commas inside quotes and doubled quotes, and skipping blank lines. Then the table is built:

  • Each cell is trimmed, | becomes \| and line breaks become <br>.
  • Short rows are padded with empty cells so every row has the same number of columns.
  • Column widths are measured in characters as you see them, so accented letters and emoji count as one.
  • The separator row uses --- for none, :--- for left, ---: for right and :---: for centre.

Worked examples

These are the tool’s own outputs.

The sample data. The id and score columns are numeric, so they align right; the empty score for María López stays an empty cell:

|  id | name        | city              | joined     | score |
| --: | ----------- | ----------------- | ---------- | ----: |
|   1 | Asha Rao    | Bengaluru         | 2024-03-01 |  92.5 |
|   2 | Smith, John | London            | 2023-11-15 |    88 |

Semicolons, centred. Plan;Price;Seats with two rows and Alignment set to Centre:

| Plan | Price | Seats |
| :--: | :---: | :---: |
| Free |   0   |   1   |
| Team | 12.50 |  10   |

A pipe inside a cell, no padding. 1,npm ci | tee log becomes | 1 | npm ci \| tee log | under a plain | --- | --- | separator.

Percentages. North,12% and South,-3% count as numbers, so the Growth column gets -----:.

Limits and tips

  • East Asian wide characters are counted as one column, so padded source may look slightly uneven in a monospace font. The rendered table is unaffected.
  • No cell formatting. Add bold, links or code marks to the result yourself.
  • Very wide tables are hard to read on GitHub; consider splitting columns.

Frequently asked questions

Which Markdown flavour does it produce?
GitHub Flavored Markdown (GFM) tables, the pipe-and-dash syntax that GitHub, GitLab, Bitbucket and most static-site generators understand. Plain original Markdown has no tables at all.
How does it decide a column is numeric?
With the default alignment, a column is right-aligned when every non-empty cell below the header looks like a number, such as 12, 1,299, 92.5, -3% or 12%. Text and dates such as 2024-03-01 stay left-aligned.
What happens to a | inside a cell?
It is escaped as \| so it does not start a new column. Line breaks inside a quoted cell become an HTML br tag, which GitHub renders as a line break.
Does the padding matter?
No, Markdown renders the same table either way. Padding only makes the raw text easy to read and edit. Untick Pad columns to line up for the shortest output.
Is the first row always the header?
Yes. Markdown tables need a header row, so the first row of your data is used for it. Add a header line to your CSV if it has none.

Written by the ToolsRift team · Last updated

Pages are drafted with AI assistance and checked by automated tests. How we write and check pages.

Was this tool useful?

Report a problem

Start typing to search every tool.

↑ ↓ to moveEnter to openEsc to close