Skip to main content
WizTools123
WizTools123
Free Online Tools

Tool Categories


CSV Tools New Tool

Free Online CSV to HTML Table and Markdown Table

Turn a CSV into an HTML table or a Markdown table in your browser. Values are escaped properly, so an ampersand or an angle bracket cannot break the markup, pipes inside values are handled, and numeric columns are aligned right. The Markdown output is padded so the raw text is still readable.

Free Forever Nothing Uploaded HTML and Markdown Escaped properly
Free Online CSV to HTML Table and Markdown Table
Share this tool
Advertisement Slot (Top Banner) Google AdSense Unit • Responsive Banner
CSV to HTML and Markdown Table Your file is read inside this tab. Nothing is uploaded anywhere.
Drop your CSV files here Several files become several tables, downloaded together as a zip. Choose files Up to 25 MB per file. Nothing is uploaded.
0%
Or paste it
Reading the file
Make
The HTML
The Markdown
Rows rows, or 0 for all of them

0 files 0 rows 0 columns 0 columns aligned right

Your data
Nothing to show yet.
The table
0 characters 0 lines
Buy Us A Coffee

Enjoying WizTools123? Help keep our server infrastructure 100% free and open for everyone.

Buy Us A Coffee
Sponsored Content (Below Tool) Google AdSense Placement

How to Turn a CSV Into a Table

A few steps, and nothing is uploaded.

1
Drop the file in One CSV or several. Rows can also be pasted straight out of a spreadsheet.
2
Choose HTML or Markdown Or both, which gives you one after the other in the same output. The options change to match.
3
Set the details For HTML, the class your site uses and whether to add a thead and a caption. For Markdown, whether to pad the columns.
4
Copy it out The copy button takes the markup. With several files loaded, the zip gives you one file per table.

What to Know About CSV Tables

Escaping, alignment, and what Markdown tables cannot do.

Escaping is not optional in HTML. A value containing an angle bracket becomes a tag if it is not escaped, and a value with an ampersand becomes an entity or a parse error. "Bracket <M8>" has to be written with escapes to appear as itself. Pasting unescaped CSV into a page is also how a hostile value becomes a script.
Markdown tables break on a pipe, and there is no way round it but escaping. A pipe inside a value ends the cell early and shifts everything after it. It is written as an escaped pipe, which every Markdown renderer understands.
A Markdown cell cannot contain a real line break. The format is line based: one row per line, full stop. A value with a line break in it has to become a br tag or be flattened to a space. That is a limit of Markdown rather than a choice made here.
Padding the Markdown is for the person reading the source. Renderers ignore the extra spaces entirely, so the published table looks identical either way. The difference is whether somebody opening the README sees a tidy grid or a ragged mess, and in a file people edit by hand that matters.
Numeric alignment is worked out from the column, not guessed per cell. If every filled value in a column is a number, the column is aligned right, which is how figures are meant to be read. One piece of text in the column and it stays left, because a half aligned column looks like a mistake.
The scope attribute is there for screen readers. It tells assistive software that a cell is the heading for its column, which is how a table is read aloud sensibly. It costs nothing and is left on by default.

Key Features & Capabilities

What this tool does, and what it deliberately does not.

Two formats HTML and Markdown from the same source, separately or one after the other.
Escaped properly Angle brackets, ampersands and pipes handled, so a value cannot break the markup or inject a tag.
Numbers aligned right Columns that hold only numbers are aligned right automatically, in both formats.
Readable source Markdown columns padded to one width so the raw text is a tidy grid, which renderers ignore.
Accessible HTML A real thead, scope on the heading cells and an optional caption, which is what screen readers need.
Several at once Convert a folder of files and take one table per file away as a zip.

About the CSV Table Converter

Data has to end up in a document far more often than it ends up in a database. A table in a README, a wiki page, a ticket, a blog post, a static site. The data starts as a CSV because that is what everything exports, and the destination wants HTML or Markdown, so somebody retypes it or writes a throwaway script.

The reason to use a tool rather than a quick script is the escaping, which is easy to forget and silent when it goes wrong. An unescaped angle bracket in HTML is read as a tag, so the value disappears from the page and the layout quietly changes. An unescaped pipe in Markdown ends the cell early and shifts the rest of the row, so the table renders with columns in the wrong place. Neither produces an error message.

The smaller thing, which matters more than it should, is padding the Markdown. Renderers ignore the extra spaces, so the published result is identical, but a README is a file people open and edit by hand. A padded table reads as a grid in the source; an unpadded one is a wall of pipes that nobody wants to touch. It costs nothing to get right and makes the difference between a table that gets maintained and one that goes stale.

Frequently Asked Questions

Escaping, alignment, line breaks and classes.

They were escaped, which is what makes them appear as themselves on the page. Written literally they would be read as a tag, so the value would vanish and the layout could break.

It is escaped. Written literally it would end the cell early and shift every value after it in that row, which renders as a table with its columns out of place.

Not as a real line break, because the format is line based. The line break becomes a br tag, which most renderers display as a new line inside the cell, or it can be flattened to a space.

No. Renderers ignore the extra spaces completely. The padding is only for the person reading or editing the source, which in a README is usually a person.

By the column rather than the cell. If every filled value in a column is a number, that column is aligned right. One piece of text and it stays left, since a partly aligned column looks like an error.

Yes, type them into the table class box and they are put on the table element. The responsive container switch adds a wrapping div for frameworks that expect one.

Other CSV Tools

Advertisement Slot (Bottom Banner) Google AdSense Unit • Responsive Banner