Smart Header Row Detection
Automatically finds th elements or uses the first tr row as the JSON key source. Cell values are trimmed and cleaned before becoming object keys, so output is immediately usable without renaming fields manually.
500+ fast, free tools. Most run in your browser only; Image & PDF tools upload files to the backend when you run them.
Convert HTML table markup into JSON data
Some of the most useful data on the web lives inside HTML tables on Wikipedia pages or government portals — with no API to fetch it. HTML Table to JSON lets you paste raw HTML markup and walk away with a structured JSON array, no BeautifulSoup or Python required. Data scrapers, developers converting legacy HTML reports, and journalists pulling numbers all use this to skip parsing boilerplate. The tool finds th elements or the first tr row and uses those cells as JSON keys. Nested tags like a, span, and strong are stripped to inner text — exactly what you want for Wikipedia tables full of citation links. Multiple table elements are handled by an index picker or extract-all mode. Colspan and rowspan cells are expanded so every row has consistent shape. Type coercion turns strings like 1,234 into actual numbers or keeps them as strings.
Automatically finds th elements or uses the first tr row as the JSON key source. Cell values are trimmed and cleaned before becoming object keys, so output is immediately usable without renaming fields manually.
Strips a, span, strong, em, and other inline wrappers inside cells and keeps only the inner text. Wikipedia tables are full of citation superscripts and anchor links — the extractor ignores the markup and preserves only the data.
If your HTML contains several table elements, pick the one you need by zero-based index or extract all of them as a JSON array of arrays. No need to manually isolate a single table from a complex page.
Merged cells using colspan and rowspan are expanded so each output row has a consistent shape with the same set of keys. No missing fields and no index misalignment from spanning cells.
Numeric strings like "1,234" or "$19.99" can be parsed to the numbers 1234 and 19.99, or kept as their original strings for exact reproduction of the source. Toggle based on whether you plan to compute or just store the values.
Uses the browser's built-in DOMParser to process the HTML entirely locally. Your scraped HTML — which may contain authentication tokens, internal links, or confidential data — never makes a network request.
Input: <table> <tr><th>Name</th><th>Role</th></tr> <tr><td>Ada</td><td>Engineer</td></tr> <tr><td>Alan</td><td>Researcher</td></tr> </table>
Output: [ {"Name":"Ada","Role":"Engineer"}, {"Name":"Alan","Role":"Researcher"} ]
Input: <table> <tr><th>City</th><th>Population</th></tr> <tr><td><a href="/wiki/Tokyo">Tokyo</a></td><td>13,960,000</td></tr> <tr><td><a href="/wiki/Delhi">Delhi</a></td><td>16,787,941</td></tr> </table>
Output: [ {"City":"Tokyo","Population":13960000}, {"City":"Delhi","Population":16787941} ]
Input: <table> <tr><th>Q1</th><th>Q2</th><th>Q3</th></tr> <tr><td colspan="2">$10k</td><td>$5k</td></tr> </table>
Output: [ {"Q1":"$10k","Q2":"$10k","Q3":"$5k"} ]