You found a table on a web page β a pricing list, a sports stat sheet, a stock table, a Wikipedia comparison. You want it in Excel or Google Sheets so you can sort, filter or do math on it. You select it, copy, pasteβ¦ and the whole thing collapses into one mangled column. Numbers become text. Merged cells scatter. You end up retyping it by hand.
Here are the ways to get a web table into a spreadsheet cleanly β starting with the built-in methods (free, no install), and when each one breaks.
Method 1 β Excel's built-in "From Web"
Excel can pull a table straight from a URL.
- In Excel, go to Data β Get Data β From Web (on Excel for Windows; on Mac it's Data β From HTML or From Web depending on version).
- Paste the page URL and click OK.
- Excel's Power Query window lists the tables it detected. Pick one, click Load.
When it works: simple, well-structured tables on a public URL.
Where it breaks:
- The page is behind a login, or built by JavaScript after load β Power Query fetches the raw HTML and sees nothing.
- The "table" is actually a grid of
<div>s (lots of modern sites) β Power Query won't recognize it as a table at all. - You only want one small table on a page full of them, and Excel shows you a confusing list of "Table 0, Table 1, Table 2β¦" with no labels.
Method 2 β Google Sheets IMPORTHTML
Google Sheets has a formula for exactly this:
=IMPORTHTML("https://example.com/page", "table", 1)
The last argument is the table's index on the page (1 = first table, 2 = second, and so on).
When it works: public pages with real <table> elements.
Where it breaks:
- Same login / JavaScript-rendered problem as above β
IMPORTHTMLonly sees the initial HTML. - You have to guess the index. Getting the right table is trial and error: change the number, wait, check, repeat.
- It pulls a live link, not a snapshot β if the page changes or disappears, your data changes or breaks.
- No control over formatting; merged cells often land in the wrong place.
Method 3 β Paste Special
Sometimes plain paste fails but Paste Special β Text (or Paste values only in Sheets) does better, because it forces the spreadsheet to re-parse the clipboard.
Where it breaks: still chokes on merged cells (rowspan / colspan) and on tables that were styled with <div>s rather than real table markup.
Why copy-paste breaks in the first place
A rendered HTML table and a spreadsheet grid are two different data models. When you copy a table, the browser hands over a blob of text that looks tabular but rarely maps cleanly β especially with merged cells, nested markup inside cells, or <div>-based layouts pretending to be a grid. The spreadsheet does its best guess, and the guess is often wrong.
Method 4 β One-click with a browser extension
If you do this often, the fastest path is a browser extension that reads the table the same way your browser already rendered it (so JavaScript-built and <div>-based tables work), and hands you clean output.
Table Grab is a small, free Chrome extension that does this:
- Open the page with the table.
- Click the Table Grab icon β it lists every table on the page, each with a smart title pulled from the surrounding content (not "Table 1, Table 2").
- Hover to preview and highlight the exact table on the page.
- Click Copy or Download as CSV (opens directly in Excel / Sheets / Numbers), Excel, Markdown or JSON.
Because it reads the table from the page you're actually looking at:
- Pages behind a login or built by JavaScript work fine.
- Merged cells (
rowspan/colspan) are expanded into the correct columns instead of collapsing. - The CSV is UTF-8 with a BOM, so accented and CJK characters don't turn into garbage in Excel.
- No row limit, no sign-up, no API key, no backend β everything runs locally in your browser, nothing is uploaded.
Which method should you use?
| Situation | Best method |
|---|---|
| One simple table, public URL, you live in Excel | Excel From Web |
| You want a live, auto-updating link in Sheets | IMPORTHTML |
Table is behind a login / built by JavaScript / made of <div>s |
Browser extension (Table Grab) |
| You want it once, clean, in any of CSV/Excel/Markdown/JSON | Browser extension (Table Grab) |
The native methods are great when they work and cost nothing to try first. When they break β and on modern, login-gated, JavaScript-heavy pages they often do β a one-click extension is the reliable fallback.
Free, no sign-up: Table Grab on the Chrome Web Store















