How to Make a Markdown Table (the Easy Way)
Updated 2026-06-21
A Markdown table is built from pipe characters and a divider row: write your header cells separated by pipes, add a second row of dashes to mark where the header ends, then add one row per line. The hard part isn't the syntax — it's keeping every row lined up as the data grows. The fastest fix is to edit the table visually and let a tool emit the Markdown for you.
The basic syntax
A minimal GitHub-Flavored Markdown (GFM) table looks like this in plain text:
- A header row: Name, Role, City — each cell wrapped in pipes.
- A divider row directly beneath it, made of dashes, one group per column.
- One data row per record, again with pipe-separated cells.
So three columns and two rows of data is four lines total: header, divider, then your two rows. The outer pipes at the start and end of each line are optional in GFM, but adding them keeps things readable. Cells do not need to be the same visual width — renderers ignore the extra spaces — but aligning them by hand makes the raw source much easier to scan.
Control column alignment
The divider row does double duty: it also sets text alignment. Add a colon to the dashes for each column:
- Colon on the left (like :---) aligns that column left.
- Colon on both ends (:---:) centers it.
- Colon on the right (---:) aligns it right.
This is the single most-forgotten feature. If your numbers look ragged, right-align the column and they'll line up on the decimal in most renderers.
Common pitfalls
- A literal pipe inside a cell breaks the table. Escape it as | so the renderer treats it as text, not a column boundary.
- Mismatched column counts — five header cells but four in a data row — produce a broken or truncated table. Every row needs the same number of cells.
- A missing divider row means it renders as plain text, not a table. The dashes are mandatory.
- Line breaks inside a cell aren't allowed; use an HTML break tag if your renderer supports it, or keep cells to one line.
Build it visually instead
Hand-aligning pipes gets painful past a few rows. The Markdown Table Editor gives you a spreadsheet-style grid: type into cells, add or delete rows and columns, set per-column alignment, and watch clean GFM Markdown update live. You can also paste existing CSV or an existing Markdown table to import it, then copy the formatted result straight into a README, a pull request, or your docs.
Because it runs entirely in your browser, nothing you type is uploaded — useful when the table holds internal data, draft release notes, or anything you'd rather not paste into a server-side site.
Stop counting pipes by hand. Open the Markdown Table Editor, fill in your grid, and copy perfectly formatted Markdown in seconds.