Runs in your browser. Your files and text never leave your device - nothing is uploaded.
Create a Markdown Table From CSV in Seconds
The Tools Kit’s free Markdown Table Generator turns CSV, or cells copied from Excel or Google Sheets, into a ready-to-paste Markdown table. Paste your rows above, with the column names on the first line, edit any cell in the grid, and the table is built as you type: pipes between cells, a dashed divider under the header, and every column padded so the raw Markdown lines up as neatly as the rendered table.
It is the quick way to make a table for a README, a GitHub issue, or project documentation without counting pipes and dashes by hand. Everything runs in your browser, so the data you paste never leaves the page.
How to Use the Markdown Table Generator
- 1
Paste or type your data
Paste CSV, or cells copied straight from Excel or Google Sheets, with the column names on the first line. The delimiter is detected automatically, and spaces around each value are trimmed.
- 2
Edit the table and set alignment
Fix any cell in the grid, add or remove rows and columns, and choose Left, Center or Right alignment for each column.
- 3
Check the generated Markdown
The Markdown table appears below the input as you type, with a dashed divider row under the header and every column padded to its widest cell.
- 4
Copy the table
Click Copy Markdown and paste the table into a README, a GitHub issue or pull request, documentation, or any Markdown editor.
There is no generate button, account, or limit on how many tables you make.
Markdown Table Syntax Explained
A Markdown table has three parts: a header row, a divider row made of dashes, and the body rows. Cells are separated by the pipe character. Here is the sample data the tool starts with and the exact table it produces:
Name, Age, City
Alice, 30, New York
Bob, 25, London| Name | Age | City |
| ----- | --- | -------- |
| Alice | 30 | New York |
| Bob | 25 | London |The Name column is five characters wide because “Alice” is its longest value, City is eight wide for “New York”, and Age is three wide even though no value is longer than three characters, because three is the minimum column width. The divider row repeats dashes to the same width. Markdown renderers ignore the padding; it only exists to make the source readable and diff-friendly. If you want the rendered result as a web page, run the copied table through the Markdown to HTML converter to get the matching <table> markup.
How the Generator Handles Commas, Ragged Rows and Pipes
Each line is split on the delimiter, which is detected for you: tabs when you paste from a spreadsheet, otherwise commas (or semicolons, if there are more of them). A CSV value in double quotes, such as “Paris, France”, stays in one cell. If you need the same rows as structured data rather than a table, the CSV to JSON converter turns simple comma-separated lines into a JSON array.
The widest row decides how many columns the table has. Rows with fewer values are padded with empty cells, and a value past the last header column gets a column of its own with an empty header, ready to name in the grid. For example:
ID, Plan
1, Pro, extra
2| ID | Plan | |
| --- | ---- | ----- |
| 1 | Pro | extra |
| 2 | | |A pipe character inside your data is escaped automatically as \|, so a renderer shows it instead of starting a new cell. Blank lines in the middle of the input become empty rows; remove them with the × button in the grid. If the same record appears more than once, the duplicate line remover clears the repeats first. And if your column names are in a vertical list, the line break remover can join them with a comma and space into a single header line ready to paste here.
Getting Data Into the Right Shape
Cells copied straight from a spreadsheet work as they are, and so do CSV, semicolon-separated exports and existing Markdown tables (choose Pipe). If your data starts life as a JSON array, convert it with the JSON to CSV converter and paste the result here (any value that contained a comma comes out wrapped in double quotes, so tidy those cells first). For the rest of a page or document, the HTML to Markdown converter and the PDF to Markdown converter handle headings, text and formatting; they do not rebuild tables, so recreate any table here. More format tools are collected on the conversion tools page.
Set alignment with the menu above each column: Center writes :---: in the divider row and Right writes ---:, which is useful for number columns. Default keeps plain dashes, which most renderers show left aligned.
Common uses
- Adding a feature or pricing comparison table to a GitHub README
- Documenting API parameters, environment variables, or config options in a pull request
- Writing release notes or changelogs that list versions against changes
- Turning a short CSV export into a table for a wiki, Obsidian note, or static-site page
- Sharing benchmark or test results in an issue where the table needs to be readable
Markdown table terms explained
| Term | What it means here |
|---|---|
| Pipe ( | ) | The vertical bar that separates cells in a Markdown table; each row starts and ends with one in this tool’s output |
| Header row | The first row of the table, holding the column names; here it is always the first line you type |
| Divider (delimiter) row | The line of dashes directly under the header that tells a Markdown renderer the table has started |
| Alignment colon | A colon added to a divider cell (:--- , :---: , ---:) to left, center or right align a column; set it per column in the grid |
| GFM | GitHub Flavored Markdown, the Markdown dialect that popularized pipe tables and is used on GitHub, GitLab and many editors |
| CSV | Comma-separated values; this tool reads it including double-quoted fields, as well as tab, semicolon and pipe-separated data |
Frequently Asked Questions
A Markdown table is a header row of cells separated by pipes, a divider row of dashes, and one pipe-separated line per data row, for example "| Name | Age |" then "| --- | --- |" then "| Alice | 30 |". This generator writes all three parts for you from pasted data or the grid editor.
Paste the CSV with the header on the first line and one record per line. Cells are split on commas and trimmed, quoted fields such as "Paris, France" stay in one cell, and the Markdown table is generated instantly.
Yes, when the value is in double quotes, as CSV files write it: "New York, NY" stays one cell, and "" inside quotes becomes a literal quote mark. An unquoted comma starts a new cell, which you can fix in the grid.
Yes. Copying cells from a spreadsheet produces tab-separated text, and the generator detects the tabs automatically, so commas inside your values stay in their cells. You can also set the delimiter to Tab, Semicolon, Comma or Pipe yourself.
The widest row sets the number of columns, so nothing is dropped. A shorter row is padded with empty cells, and a longer one adds a column with an empty header, which you can name in the grid.
Yes. Each column in the grid has an alignment menu. Left writes :--- in the divider row, Center writes :---: and Right writes ---:, and the source is padded to match. Default keeps plain dashes, which most renderers show left aligned.
Each column is padded to the width of its longest cell, with a minimum of three characters, so the pipes line up in plain text. Markdown renderers ignore the padding, but it makes the source easier to read and review in a diff.
Just type it. The generator escapes it as \| (a backslash before the pipe) in the output, so a renderer shows the pipe instead of starting a new cell.
Yes. The output uses the pipe-table syntax from GitHub Flavored Markdown, which GitHub renders in READMEs, issues, pull requests and wikis. The same syntax works in GitLab, Obsidian and most modern Markdown editors.
No. The table is built by JavaScript in your browser as you type. The text you paste is not sent anywhere, and there is no signup or usage limit.
Reviewed by Raja Jahangir · Last reviewed: October 7, 2026
How do you create a Markdown table from CSV data?
To create a Markdown table, paste CSV or cells copied from a spreadsheet with the header on the first line, such as Name, Age, City. The table is generated instantly with pipe delimiters, a dashed separator row, and columns padded to their longest cell. Edit cells in the grid and set each column left, center or right aligned.
