100% Local · Free · No Sign-up

Convert CSV & TSV Files to Markdown Tables

Convert CSV to Markdown tables with the three decisions RFC 4180 leaves open made explicit: the delimiter, whether row 0 is a header, and per-column alignment. PapaParse tokenises quoted fields and embedded delimiters in a Web Worker on your own device, then emits a valid GFM pipe table with every | inside a cell escaped.
Drop a .csv or .tsv fileDrag & drop · .csv, .tsv
Conversion options

Processing happens 100% in your browser — nothing is uploaded.

100% Local Processing — Your files never leave your device

How to convert CSV to Markdown

  1. Provide the data: drop a .csv or .tsv file onto the dropzone, or switch to the “Paste Raw CSV / Text” tab and paste it directly.
  2. Local processing: PapaParse tokenises the rows in a Web Worker on your device — pick the delimiter (or leave auto-detect), confirm whether the first row is a header, and set alignment per column. Nothing is uploaded.
  3. Copy or download: the preview updates live — use “Copy Markdown” or save the result as a .md file.

Why Convert CSV to Markdown with MD Convert?

  • Quoted fields and embedded delimiters parsed correctly

    A comma inside a quoted value is the single most common cause of a broken table. PapaParse implements the RFC 4180 quoting rules — escaped double quotes written as two quotes, and genuine line breaks inside a quoted field — so one logical record spanning several physical lines still produces one row instead of silently shifting every column after it.

  • Forced delimiter selection, not just auto-detection

    Comma, semicolon, tab and pipe are all selectable alongside auto-detect. This is what rescues European exports, where the comma is the decimal separator and fields are separated by semicolons — the exact case where scoring-based detection guesses wrong and shreds every numeric value into fragments.

  • GFM alignment written into the delimiter row

    Per-column controls emit :--- for left, :---: for centre and ---: for right, so numeric columns line up at the decimal position. Because the alignment is generated syntax rather than applied styling, it travels with the document into GitHub, GitLab, Obsidian, Notion and any static site generator.

  • Pipe escaping, header synthesis and no type inference

    Pipes inside cells are escaped as \| so a value cannot split a row. With the header toggle off, placeholder Column 1, Column 2 headings are synthesised instead of consuming your first data row — a GFM table must have a header. Nothing is type-inferred, so 007 and 1.10 survive as written rather than being coerced into numbers.

CSV to Markdown: Before and After

A CSV with a quoted field containing a comma, converted to a GitHub Flavored Markdown pipe table with the numeric columns right-aligned.

Input · CSV
Region,Q1 2026,Q2 2026,Notes
EMEA,412500,486300,"Strong DACH pipeline, incl. renewals"
North America,738200,801450,Enterprise tier expansion
APAC,193400,264900,"New Singapore office, ramping"
Output · Markdown
| Region | Q1 2026 | Q2 2026 | Notes |
| :--- | ---: | ---: | :--- |
| EMEA | 412500 | 486300 | Strong DACH pipeline, incl. renewals |
| North America | 738200 | 801450 | Enterprise tier expansion |
| APAC | 193400 | 264900 | New Singapore office, ramping |

Understanding the CSV Format: RFC 4180

Format
Comma-Separated Values
Specification
RFC 4180
Media type
text/csv
Parser used
PapaParse

Technical Specifications & Delimiter Parsing Rules

  • RFC 4180 Quoting Compliance: Multiline fields and embedded commas enclosed in double quotes parse as single logical cells; escaped double quotes ("") resolve to literal quotes.
  • Explicit & Semicolon Delimiters: Supports comma, semicolon, tab, and pipe delimiters. Explicit selection prevents auto-detection errors on European exports where commas serve as decimal marks.
  • GFM Header Synthesis: When header toggle is disabled, placeholder Column 1, Column 2 headers are synthesised to ensure valid GitHub Flavored Markdown table syntax without consuming data row 0.
  • Pipe & Newline Escaping: Structural pipe characters within cell text are automatically escaped to \|; in-cell newlines collapse to single spaces to prevent breaking table row boundaries.
  • Preserved Raw Text Representation: No type coercion is applied; identifiers with leading zeros (e.g., 007) and semver strings (1.10) remain exact text strings without numeric truncation.

Developer Alternative: CLI (csvkit) & Python (Pandas) Extraction

For scheduled jobs or server-side pipelines, csvkit and Pandas produce the same kind of Markdown table outside the browser.

Bash (csvkit)
# Pretty-print CSV as a clean table in terminal using csvkit
csvlook input.csv
Python (Pandas)
# Programmatic CSV to Markdown table conversion using Pandas
# requires: pip install pandas tabulate
import pandas as pd

# Reads CSV and exports directly to a GFM pipe table
df = pd.read_csv("data.csv", sep=",", quotechar='"')
markdown_table = df.to_markdown(index=False)
print(markdown_table)

How You Can Verify the Privacy Claim

Browser-only

Zero server upload

Conversion runs inside your browser tab. Open DevTools, switch to the Network panel, and convert a file: for every format except URL to Markdown you will see no request carrying your document — because there is no endpoint to send it to.

Web Worker

Off the main thread

Heavy parsing is dispatched to a Web Worker, so a 500-page PDF or a large spreadsheet never freezes the interface. Everything is plain JavaScript — no native plugin, no WebAssembly toolchain, nothing to install.

No account

Nothing to sign up for

No login, no quota, no paywall, and no tracking tied to your files. Analytics are cookieless and aggregate only. Read the privacy policy for the full data-flow breakdown, including the one proxied exception.

The parsers doing the work

No proprietary black box: each format is handled by a widely audited open-source library, running client-side at the version pinned in our lockfile.

CSV to Markdown — FAQ

Does it handle CSV files with commas inside quoted fields?

Yes. PapaParse parses RFC 4180-compliant CSV, including quoted fields containing commas, double quotes escaped by doubling, and newlines inside a field. In-cell line breaks collapse to a single space, because a Markdown pipe table cell cannot contain a raw newline.

Can I force the delimiter instead of relying on auto-detection?

Yes. Comma, semicolon, tab and pipe are selectable, plus auto-detect. Forcing it is essential for locales where the comma is a decimal separator and fields are semicolon-separated, since detection scores candidates across the first rows and will pick the comma when numbers contain more of them.

How do I control column alignment in the Markdown table?

Each column has left, centre and right controls with an apply-to-all shortcut, written into the GFM delimiter row as :---, :---: or ---:. The controls appear after parsing, because the column count is not known until the data is read. Right-align numeric columns so magnitudes are comparable down the column.

Can I paste data copied straight out of Excel or Google Sheets?

Yes. Spreadsheet applications put tab-separated text on the clipboard, so paste it into the text tab and choose the Tab delimiter — auto-detect also handles this case reliably. To convert a workbook file rather than a clipboard selection, use the Excel to Markdown converter, which reads every sheet with SheetJS.

In-Depth CSV Guides