ToolConvoyToolConvoyv2.6
DEV

CSV to Markdown — Convert CSV Data to Markdown Tables

Convert CSV data to Markdown table syntax for READMEs, docs, and blog posts. Pipe-aligned output, runs entirely in your browser. No uploads, no limits.

● LOCAL · GENERATED IN YOUR TAB0 network requests since page load

CSV to Markdown Table

Convert CSV or tab-separated data to a formatted Markdown table. Auto-detects delimiter (comma, tab, semicolon) and aligns columns. Perfect for README files, GitHub issues, and documentation. Works entirely in your browser.

CSV to Markdown is the right conversion when the destination is a documentation site, a README, a blog post, or any other text-first surface. Markdown tables have a particular syntax — a header row of pipe-separated values, a delimiter row that specifies alignment with colons, and data rows that mirror the header’s column count — and a well-formed table renders as a properly aligned HTML table in any GitHub Flavored Markdown renderer. The conversion is short enough that pasting by hand is tempting, but the moment the input has more than a few rows, the alignment starts to drift and the result is a table that looks wrong in raw form and renders with weird column widths.

The non-obvious thing about generating Markdown tables is escaping. The pipe character (|) is the cell separator in Markdown table syntax, so any pipe character inside a cell value has to be escaped — typically as \| or wrapped in backticks. The other escape risk is the newline: a multi-line cell value (a quoted CSV cell with embedded newlines) does not fit Markdown’s single-line cell model, and the right workaround is to convert internal newlines to <br> tags, which GitHub and most other renderers honor. The tool handles both escapes automatically, so the output is portable across the GFM ecosystem without manual post-processing.

For a final hand-off: if the destination is a GitHub README or a documentation site that supports GFM, copy the output directly. If the destination is a plain CommonMark renderer (rare — most modern tools support GFM), convert to HTML instead and embed the HTML. If the destination is a spreadsheet or a data pipeline, this is the wrong conversion — route the same CSV through CSV-to-JSON or CSV-to-XML. The Markdown format is for human-readable documentation, not for machine-readable data interchange.

How to use

  1. Paste your CSV data

    Drop the CSV into the input area, or load a .csv file. The tool auto-detects the delimiter (comma, semicolon, tab) and the presence of a UTF-8 BOM. Multi-line cells are supported — newlines inside a quoted cell are preserved.

  2. Pick a Markdown flavor

    Choose between standard Markdown (works in GitHub, GitLab, Hugo, Jekyll), GFM (GitHub Flavored Markdown, identical to standard for tables), or a pipe-friendly variant (escapes pipes inside cells).

  3. Copy the table

    Copy the Markdown to your clipboard. The output is a single self-contained table — paste it into any Markdown document, and the static site generator will render it as a proper HTML table.

Frequently asked

Which Markdown flavors support tables?

Standard Markdown does not — tables are a GitHub Flavored Markdown (GFM) extension. GitHub, GitLab, Bitbucket, Hugo, Jekyll, Eleventy, Obsidian, and most static site generators support GFM tables. Plain CommonMark renderers will show the raw pipe syntax.

How are pipe characters in cell values escaped?

Pipes inside a cell are escaped as `\|` by default, which most Markdown renderers interpret as a literal pipe. The alternative is to wrap the cell in backticks, which the tool does when the cell value contains a pipe and the 'use backticks' option is enabled.

Can I align columns?

Yes — three alignment options: left (default, `:---`), right (`---:`), and center (`:---:`). Set alignment per column in the settings panel. The delimiter row in the output updates to match the chosen alignment.

What about cells with line breaks?

Markdown tables do not support multi-line cells in the strict spec, but most renderers (including GitHub) honor `<br>` tags. The tool converts newlines inside cells to `<br>` tags, producing output that renders correctly on GitHub and most other renderers.

Is the first row treated as a header?

Yes — the first row becomes the header row by default, with the delimiter row underneath. Toggle the 'no header' option to render all rows as data, useful when the CSV is a data-only export without column names.

Limitations

  • GFM tables onlyThe output is GFM table syntax. Plain CommonMark renderers (the strict spec) will show the raw pipes as text. For CommonMark-only destinations, convert to HTML instead and embed the HTML directly.
  • No colspan or rowspanMarkdown tables are a flat grid — they cannot represent merged cells. If the source has merged headers, the output renders each cell separately and you will need to edit the Markdown by hand to add HTML-level merging.
  • Cell width is not auto-sizedThe column widths in the output are based on the longest value in each column, but Markdown renderers ignore whitespace alignment and use the cell content to size columns. The padded output is easier to read in raw form but does not change the rendered table.

Platform notes

macOS
GitHub Desktop and Obsidian both render GFM tables inline. The Markdown output here is the standard syntax both accept. For a non-GitHub destination, test the output in the target renderer before publishing.
Windows
Typora and VS Code's Markdown preview both render GFM tables. The output is portable across both. For Notion or Confluence, copy the table and use the destination's table-insert feature rather than pasting raw Markdown.
Linux
Pandoc can convert CSV to a Markdown table directly: `pandoc input.csv -o output.md`. The browser tool is the right pick for one-off conversions or for content pasted from a chat, an email, or a documentation page.
Web
Runs entirely client-side. Works offline once the page has loaded. The output is portable — paste it into any GitHub README, GitLab issue, Hugo blog post, or Obsidian note without dependencies.