# Syntax

Markdown tables

Last updated July 2026

A Markdown table is rows of cells separated by pipes (|), with a line of dashes under the header row to mark it as a table. Colons in that dash line set how each column aligns. Tables are a GitHub extension, not part of the original Markdown, so they work in tools that support GitHub Flavored Markdown.

Each row is one line of plain text, and each | is a column edge. The dashed second line is what marks the rows as a table rather than pipe-separated text.

The basic syntax

Here is a three-column table:

| Name   | Role     | Location |
| ------ | -------- | -------- |
| Mara   | Designer | Lisbon   |
| Theo   | Engineer | Berlin   |

The first row is the header. The second row is dashes, one group per column. Every row after that is data. This renders as a table with Name, Role, and Location across the top and two rows of people beneath them.

The spacing does not have to be tidy. You can line the pipes up by hand so the source reads well, or you can leave them ragged. Both produce the same table:

| Name | Role | Location |
| - | - | - |
| Mara | Designer | Lisbon |

A column needs at least one dash in the divider row. Padding the dashes out to match the column width is for your eyes only.

Set column alignment with colons

Add a colon to the dash row to align a column. The colon goes on the side you want the text to sit.

| Item       | Qty | Price |
| :--------- | :-: | ----: |
| Notebook   |  3  |  4.50 |
| Pen        | 12  |  1.20 |
  • :--- aligns the column left.
  • :--: centers it.
  • ---: aligns it right.

In that example the item names sit left, the quantities center, and the prices line up on the right, which is what you want for numbers. A column with no colon defaults to left.

Inline formatting inside cells

Cells take the usual inline Markdown. You can put bold, italic, links, and inline code in a cell:

| Setting    | Default | Notes                    |
| ---------- | ------- | ------------------------ |
| Autosave   | **On**  | Saves as you type        |
| Theme      | Default | See `Settings`           |
| Docs       | New     | [Read the guide](#)      |

What you cannot do is break a cell across multiple lines. A table row is a single line of text. If you need a line break inside a cell, the GitHub convention is to write <br> where the break should go. For anything longer than a short note, a list under the table usually reads better than a cramped cell.

A pipe inside a cell

Because | marks a column edge, a literal pipe in your text would split the cell. Escape it with a backslash:

| Command        | What it does        |
| -------------- | ------------------- |
| `cat a \| b`   | Pipes a into b      |

The \| shows as a normal pipe character instead of starting a new column.

In Unmarked

Tables render. Write a table with the syntax above and Read mode shows it as a clean table, with the header styled and the alignment you set respected. Unmarked uses GitHub Flavored Markdown, so a table written for GitHub looks right here.

In Write mode you can edit a table cell by cell rather than wrangling pipes by hand. The "+ Insert" menu has a Table option (or press ⌥⌘T) to drop in a starter table, and you tab between cells to fill it. When you export, tables carry through: PDF gives them proportional column widths, and Word export produces a real Word table.

Unmarked is a free, private Markdown reader and editor for Mac. Read the story , or get in touch.