Text Tools
Markdown Table Generator
Turn delimited text into a Markdown table you can copy into docs.
Markdown Table Generator tool
Loading tool…
Jump to a section
About This Tool
Markdown tables are useful in README files, GitHub issues, documentation, notes, and lightweight reports, but hand-formatting separator rows and escaping pipe characters is tedious. This generator converts pasted delimited rows into a valid GitHub-flavored Markdown table, lets you choose whether the first row is a header, supports per-column alignment, and keeps all processing in your browser.
How To Use It
- Paste rows from a spreadsheet, CSV file, plain text list, or another table source.
- Choose the delimiter that matches the pasted text: comma, tab, pipe, or semicolon.
- Decide whether the first row should become the table header or whether generated column names should be used.
- Set one alignment for every column or adjust individual columns before copying the Markdown.
- Review any uneven-row warnings, then paste the copied table into GitHub, a Markdown document, or a compatible notes app and preview it there.
Examples
README feature table
Paste feature rows from a spreadsheet and generate a copy-ready Markdown table for a project README without manually counting separator dashes.
GitHub issue comparison
Convert a quick CSV list of options, owners, and status values into a readable issue or pull request comment.
Pipe-safe documentation
Cells that contain the pipe character are escaped so they stay inside the intended column instead of splitting the table.
Rows without headers
When the pasted data has no heading row, disable First row is header and the tool creates Column 1, Column 2, and similar labels.
Useful Notes
GitHub-flavored Markdown
The output uses the common pipe-table syntax supported by GitHub and many Markdown renderers. Some editors support additional table features, but this tool intentionally generates portable, simple Markdown.
Uneven rows are padded
If one row has fewer cells than the widest row, the missing cells are filled with blanks and a warning is shown. This keeps the table structure valid while making the mismatch visible.
Column limit
Tables are limited to 200 columns so an unusually wide pasted row cannot create thousands of alignment controls and make the browser page unresponsive. Split wider datasets before converting them.
Escaping cell content
Pipe characters inside cells are escaped because an unescaped pipe would be interpreted as a column separator in Markdown. Backslashes are escaped first so the generated output remains predictable.
Delimiter limits
The parser supports delimiters inside double-quoted fields, doubled quote escapes, and quoted fields that span source lines. Because Markdown table cells cannot preserve literal line breaks portably, line breaks inside quoted fields become spaces in the generated table. Specialized CSV dialects or malformed exports may still need cleanup first.
Private local conversion
The pasted text is processed locally in the browser. Hanakash does not need to upload your table content to a server to generate the Markdown.
FAQ
Can I convert a spreadsheet column or table?
Yes. Copy rows from the spreadsheet, paste them into the input, and choose the delimiter that matches the copied format. Tabs usually work well for spreadsheet copies.
Does this support column-by-column alignment?
Yes. Use Set all columns for a quick default, then adjust any individual column to left, center, or right alignment before copying the Markdown.
Why did I get an uneven row warning?
At least one row has a different number of cells than the widest row. The generator pads missing cells with blanks so the Markdown remains valid, but you should review the source data.
Will it handle quoted CSV fields with commas?
Yes. Delimiters inside double-quoted fields stay in the same cell, doubled quotes are unescaped, and quoted multiline fields are joined with spaces for Markdown compatibility. Review unusual or malformed CSV exports before using the result.
Is my pasted table uploaded?
No. The conversion is performed locally in your browser and does not require a Hanakash API request.