OxyPages

CSV To HTML Table: A Spreadsheet As A Web Page

Paste or drop a spreadsheet export and get a table you can put on a website.

Free. No account. Live in seconds.
CSV or Excel export in

Drop a .csv, .tsv or .txt file onto this box, or use Open file. Nothing is uploaded until you publish.

Live preview

12 rows

Brackman & Sons: Stock List
0042Bracket, heavy dutyFixings12.502402026-08-14Empty
0107Oak shelf 1200mmTimber38.00542026-08-19Cut to order
0113Screws, 4x40mm (box of 200)Fixings6.7511802026-08-21Empty
0128Pine batten 2400mmTimber4.9502026-08-02Back in stock in September, ask in store
0139Wall plug assortmentFixings3.208602026-08-23Empty
0146Sandpaper, 120 gritFinishing1.854302026-08-11Empty
0152Danish oil 500mlFinishing14.40962026-08-27Empty
0161Birch ply 8x4 18mmSheet64.00172026-08-05Empty
0175Hinge 75mm brassFixings2.405122026-08-29Empty
0188Beeswax polish 250mlFinishing9.95732026-07-30Empty
0194MDF 8x4 12mmSheet29.50312026-08-18Empty
0203Dowels, 8mm (bag of 50)Timber3.602042026-08-25Empty

This is what the code does — the headers really sort and the search really filters. Building a table by hand instead? HTML Table Generator. Need the data, not the markup? CSV to JSON.

Columns

Type decides how a sortable column sorts: Number compares 9 and 100 properly, Text compares them as words. A column of leading-zero identifiers — SKUs, room numbers, phone numbers — is left as Text on purpose. Changing the type never rewrites a cell; the zeros are always still in the markup.

12 rows × 7 columns · split on commasHTML: 10.7 KB
  • Warning: Line 8 has 6 cells, the header has 7. The missing cells are empty in the table.
Free. No account. Your table on a live link.

How It Works

How To Use The CSV To HTML Table

  1. 1

    Paste Or Drop Your Export

    Paste the contents of a CSV, or drop a .csv, .tsv or .txt file onto the left pane. Commas, semicolons, tabs and pipes are all detected, so an Excel export from a European machine works with no settings.

  2. 2

    Set The Table Up

    Switch on sortable columns, a search box or a sticky header, choose borders, padding and what should happen on a phone, then rename, hide, align or retype any column in the Columns strip.

  3. 3

    Copy The Code Or Publish It

    Take a complete page, a fragment with its CSS, or markup with class names only. Copy it, download it, or publish the whole table as a live page on a free link.

About This Tool

A Spreadsheet Export That Becomes A Table Worth Showing

Anyone can join cells with a <td>. The hard part is a table that sorts, filters, and does not fall off the side of a phone.

This tool takes a CSV or Excel export and gives you the HTML for it — but the conversion is the easy half. The output is the point. Switch on sortable columns and the generated code carries about thirty lines of plain JavaScript that sort a column when its header is clicked, numerically where the column holds numbers. Switch on the search box and rows that do not match what is typed are hidden, with a live count. A sticky header keeps the column names in view down a long table. None of it needs a library, a framework or a build step: it is a <style> block, a <table> and a <script> you can read.

Who It Is For

Anyone holding a file they did not write. A shop owner with a stock list, a treasurer with a fixtures table, a teacher with a results export, someone whose data came out of a chat with an assistant and now has to go on a page today. You do not need to know what a <thead> is. If you want to build a small table by hand instead, the HTML Table Generator is the tool with the grid in it; if you want the data rather than the markup, CSV to JSON converts the same file the other way.

How It Works

Everything runs in your browser. The file is read, parsed and turned into markup on your own machine, and nothing is sent anywhere unless you press Publish. The parser handles the cases that break a simple split-on-comma: a quoted field may contain commas, line breaks and doubled quotes; records may end with Windows, Unix or old Mac line endings; and the invisible byte order mark Excel writes at the start of a UTF-8 file is removed before it can corrupt the first column name. Every value is escaped on the way into the HTML, so a cell containing a tag stays text.

Columns, Numbers And Phones

Alignment is inferred per column: numbers go right, text goes left. A column of leading-zero identifiers is deliberately kept as text, because 0042 is a SKU and sorting it as a number puts it next to 42. In the Columns strip you can rename a heading, leave a column out, change its alignment, or set its type yourself — and changing the type never rewrites a cell, it only tells the sort what to do. The phone question gets a real answer too: horizontal scroll keeps the grid intact and is right up to about five columns, while the stacked card layout turns each row into a labelled block using the header names, which is what a wide table needs on a small screen.

Limits

A dropped file stops at 5 MB, because the whole conversion happens in one browser tab. The preview shows the first 200 rows; the code always holds every row. There are no merged cells, no formulas, no cell colours from the spreadsheet and no charts — a CSV does not contain any of those. Excel users export to CSV first; the .xlsx file itself is not read here.

Then Put It Online

A table is usually needed by someone else, today. Publish wraps your table in a complete page and puts it on a free OxyPages link with HTTPS in seconds, with no account. The link lasts 30 minutes unless you claim it, claiming is free, and from there you can pick your own address and connect a custom domain on a paid plan. See how it works.

Questions

Frequently Asked Questions

Save or export the sheet as CSV from Excel, then drop that file here. The delimiter is detected automatically, so a semicolon-separated export from a European copy of Excel works exactly like a comma-separated one. The .xlsx file itself is not read.

Try It Now

Still Here? Drop It In.

The whole pitch fits in one sentence: your HTML, on a link, in seconds.

Drag and drop your HTML file(s), folders, or ZIP file

or ·

No account needed. Your unclaimed website stays live for 30 minutes on a free subdomain. Claim it to your account to keep it permanently.

  • No Account Needed
  • Free SSL
  • 30-Minute Unclaimed Link, Claim To Keep It