What This Tool Does
Provide pasted HTML, an uploaded .html or .htm file, or one public http/https URL. The tool finds every <table>, including nested tables, resolves rowspan and colspan into a rectangular grid, and exports selected results as CSV, JSON, or XLSX.
How to Use the HTML Table Extractor
- Choose Paste / Upload HTML or Fetch Public URL.
- In Paste / Upload HTML mode, paste the markup or upload a file with the
.htmlor.htmextension; processing starts automatically. - In Fetch Public URL mode, enter one public URL; it is fetched and processed automatically after the URL is complete.
- Review the table cards. All detected tables are selected by default. Change the selection with the table checkboxes, Select all, or Select none.
- Click CSV, JSON, or XLSX under Export selected tables:.
If the input has no tables, the result reports No <table> elements were found in this HTML.
Preview, Selection, and Table Details
Each result shows the table index, caption, header source, row count, column count, and a preview. The preview shows up to 8 columns and the first 5 data rows. If more rows exist, a notice reports how many are not shown. Badges can also identify nested tables, merged cells, or missing cells.
All detected tables start selected after parsing. Use an individual checkbox, Select all, or Select none before exporting.
How Merged Cells and Missing Cells Are Resolved
The tool builds an explicit rectangular grid before export:
- A cell with
rowspanorcolspanhas its text duplicated in every grid position it covers. - Missing grid positions, including positions caused by short or malformed rows, are filled with explicit empty cells.
The parsed metadata tracks merged-cell and missing-cell counts.
Header Detection and Nested Tables
Leading rows from <thead> are treated as headers. Without <thead>, the tool uses a leading run of rows whose resolved cells are all <th>. If neither condition applies, it uses generic Column N headers and marks the header source as none detected.
A table inside another table is extracted as a separate selectable result and tagged with its parent table. It is not flattened into the parent cell text; the parent is marked as containing a nested table.
URL Mode: Limits and Failure Cases
URL mode makes a server-side request for raw, server-rendered HTML over http or https. It does not run JavaScript, use browser automation, or send cookies or credentials. The request may follow up to 5 redirects before parsing the final response, so it does not always read only the literal URL response.
- Responses are limited to 5 MB and the request has a 10-second timeout.
- Only publicly routable hosts are accepted.
- Non-HTML/text responses, unsuccessful HTTP statuses, and requests that exceed the redirect, size, or time limits are rejected.
- Client-rendered tables and login-protected pages may not work because the needed content is not in the fetched HTML.
For a client-rendered or login-protected page, use your browser's developer tools to copy the live, post-render DOM and paste it in Paste / Upload HTML. URL mode accepts one URL; it does not crawl links, scrape general page text, or fetch an entire website.
Export Formats
Export one selected table or all selected tables as CSV, JSON, or XLSX. CSV comment lines include the table index, caption, header source, row count, column count, and source. JSON includes table metadata fields such as nested-table status, merged-cell count, and missing-cell count. XLSX includes one sheet per table and a _metadata sheet with those metadata fields. The source identifies pasted HTML, the uploaded filename, or the fetched URL.
Frequently Asked Questions
How are rowspan and colspan handled?
Every table is resolved into an explicit rectangular grid before export. A cell with rowspan or colspan has its text duplicated into every grid position it covers, so a header spanning two columns appears in both of those columns rather than only the first. Any grid position with no source cell - from short or malformed rows - is filled with an empty, explicitly flagged cell instead of being silently dropped.
What happens to tables nested inside other tables?
A nested table is extracted and listed as its own separately selectable result, tagged with which table it's nested inside. It is not flattened into its parent cell's text - the parent cell is simply marked as containing a nested table.
Can this tool fetch tables from a URL I give it?
Yes, for public pages. The server fetches raw server-rendered HTML over http/https, may follow up to 5 redirects, and does not use cookies, credentials, browser automation, or JavaScript. Requests must reach a public host, return HTML/text with a successful status, finish within 10 seconds, and stay within 5 MB. If the page builds tables with JavaScript or requires a login, copy the live DOM from your browser's developer tools and paste it instead.
Does this tool crawl or scrape entire websites?
No. It accepts one URL, may follow up to 5 redirects, and extracts only <table> structures from the final HTML response. It does not follow page links, scrape general page text, or crawl a site.
What export formats are supported?
CSV, JSON, and XLSX. You can export a single selected table or every selected table at once. Each export includes the table's caption, header source, row/column counts, and source alongside the data.