Convert Excel to HTML Table
Convert .xlsx, .xls, or .csv to clean HTML table - headers, borders, striped rows, Bootstrap. Free, offline (after first load), client-side, instant, secure.
- Runs in your browser
- Nothing uploaded
- Free, no sign-up
Drop in a .xlsx, .xls, or .csv file and get clean
HTML markup with <thead> / <tbody> structure, optional
Bootstrap classes, responsive wrapper, and inline CSS for borders and striped rows.
Click or drag an Excel / CSV file here
.xlsx, .xls, .csv - max 5 MB
How to Use Convert Excel to HTML Table
- Upload your file. Click the drop zone or drag a
.xlsx,.xls, or.csvfile. Files are parsed locally via SheetJS - nothing is uploaded. 5 MB is the cap. - Pick a sheet. If the workbook has one sheet, it's selected automatically. With multiple sheets a dropdown appears so you can choose.
- Tune the conversion options. "First row as header" wraps row 0 in
<thead>with<th>cells. "Skip empty rows" drops fully-blank rows. "Add table borders" + "Striped rows" emit inline CSS (unless Bootstrap is on). "Bootstrap classes" replaces the inline CSS withclass="table table-bordered table-striped". "Responsive wrapper" wraps the table in<div>. "Row limit" caps the conversion at N rows for preview. - Click "Convert to HTML table" (or press Ctrl/Cmd + Enter). The output appears in the Code tab; click Preview to see it rendered.
- Copy or download. Copy puts just the table snippet on your clipboard. Download writes a complete standalone
table.htmldocument - useful for sharing or testing. - Customise. Set a custom Table ID for CSS targeting, toggle Bootstrap when integrating with that framework, or load the built-in example with "Load example" to see what the output looks like without uploading anything.
Frequently Asked Questions
Can I convert CSV files to HTML tables?
Yes. SheetJS parses CSV just as it does Excel – the same options (first row as header, skip empty rows, borders, striped, Bootstrap, responsive wrapper, row limit) all apply. The file extension drives the parser choice; everything downstream is identical.
Is my data uploaded to a server?
No. All parsing and HTML generation runs in your browser. The only network call is the one-time fetch of the SheetJS library from a CDN – once cached, the tool runs fully offline. Your spreadsheet bytes never leave the device.
What Excel versions are supported?
SheetJS handles Excel 2007+ (.xlsx, the modern Office Open XML format) and legacy .xls (the BIFF8 binary format from 1997-2003), plus .csv. Pivot tables, charts, conditional formatting, and macros are stripped – only cell values survive. Formulas are evaluated to their cached numeric / text result; the formula syntax itself isn’t included.
Can I style the HTML table?
Two paths. With “Bootstrap classes” off (default) the tool emits an inline <style> block with bordered / striped CSS scoped to the table or to your custom Table ID – paste-and-done. With Bootstrap on, the tool emits class="table table-bordered table-striped" and assumes you’ve already linked Bootstrap CSS in your page (the downloaded standalone HTML file includes the Bootstrap CDN link automatically).
How large can my Excel file be?
Hard cap 5 MB at upload time. Practical limit is whatever your browser can hold in memory – SheetJS reads the whole workbook into a JS object, so a 5 MB .xlsx with 100 K cells can use 50+ MB of RAM during parsing. Use the “Row limit” option to preview just the first N rows of huge sheets.
What about cell formatting – colours, fonts, alignment?
Cell values are preserved exactly. Cell formatting (colours, fonts, alignment, conditional formatting, merged cells) is dropped – the output is plain semantic HTML. If you need formatting, post-process with CSS, or use a CSS framework like Bootstrap. The tool prefers the formatted text (cell.w) over the raw value (cell.v) when present, so dates render as “2025-06-15” rather than the Excel serial number “45823”.
Are special characters in cells escaped?
Yes. The five HTML-sensitive characters (&, <, >, ", ') are HTML-entity-escaped in every cell value before insertion into the output. So a cell containing <script>alert(1)</script> emits <script>alert(1)</script> – rendered as literal text, not executed.
Is this tool free?
Yes – free, unlimited, no signup, no watermark. The generated HTML is yours to use anywhere. Attribution to is appreciated but not required.
Related Tools
BBCode to HTML Converter →
Generate standard semantic HTML arrays translating classic forum BBCode syntax cleanly explicitly mappings independently…
ASCII to HTML Entities Converter →
ASCII to HTML as entities - safe XSS escape, numeric decimal, or numeric hex.…
Convert HTML Entities to ASCII →
Decode HTML entities to ASCII safely - named, decimal, hex. ASCII-only enforcement. Batch breakdown.…
Convert HTML Entities to UTF-8 →
Decode HTML entities to UTF-8 with per-character byte breakdown. Named, decimal, hex. Free, offline,…
Convert Unicode to HTML →
Convert Unicode to HTML entities (hex/decimal/named/smart) with ASCII-safe option. Reverse direction parses all formats.…
Convert UTF-8 to HTML Entities →
Convert UTF-8 text into HTML entities so special characters display correctly in any page.…
Convert CSV to Markdown Table →
Convert CSV to GitHub-flavored Markdown table with per-column alignment, HTML preview, delimiter auto-detect. Free,…
Convert CSV to PDF Table →
Convert CSV to formatted PDF tables in your browser. Custom orientation, font size, alternate…
Draw ASCII Table →
Generate ASCII tables in pipe, Markdown, box-drawing, or CSV format. DEC/HEX/OCT/BIN columns, control names,…
Escape HTML Entities →
Escape &, <, >, ", ' to safe HTML entities - minimal, numeric (non-ASCII),…
Markdown to HTML Converter →
Convert Markdown into clean HTML, keeping headings, lists, links, and inline formatting.
Android AssetLinks JSON Generator - App Links →
Android AssetLinks JSON Generator files for Android App Links. Configure package names and SHA-256…