You see a table on a web page. You want it in a spreadsheet. You select it, copy, paste into Excel — and the columns shatter into a single mangled cell. Numbers turn into text. Merged cells go everywhere. You end up re-typing it by hand.
I hit this often enough that I built a small tool to never do it again. Sharing it here in case it saves you the same annoyance.
The problem with copy-paste
HTML tables and spreadsheet cells are two different worlds. When you copy a rendered table, the browser hands the spreadsheet a blob of text that looks tabular but rarely maps cleanly — especially when the table uses rowspan / colspan, has nested markup inside cells, or is styled with <div>s pretending to be a grid.
The usual escape hatches all have a tax:
- Write a scraper — overkill for one table, and now you're maintaining Python and a CSS selector.
- Paste into a "paste special" dialog — fiddly, and still breaks on merged cells.
- Use a heavyweight extension — most cap the free tier at a few hundred rows or push you to sign up.
I wanted something that's one click, free, and doesn't send my data anywhere.
Table Grab
Table Grab is a tiny Chrome extension that copies and downloads any HTML table on a page to CSV, Excel, Markdown or JSON — in one click.
No sign-up. No API key. No backend. Everything runs locally in your browser; nothing is uploaded.
How it works
- Open any page that has a table.
- Click the Table Grab icon. It instantly lists every table on the page — each with a smart title pulled from the surrounding content, not a useless "Table 1, Table 2, Table 3".
- Hover a table in the list to preview it, and watch it get highlighted right on the page so you know exactly which one you're grabbing.
- Pick a format — CSV, Excel, Markdown or JSON — and click Copy or Download.
That's the whole loop. On a heavy page with dozens of tables it still opens instantly, because it only reads each table's structure up front and extracts the full cells lazily, when you actually pick one.
Four formats, and when to reach for each
CSV — opens directly in Excel, Google Sheets or Numbers. UTF-8 with a BOM, so accented characters and CJK text don't turn into garbage.
Excel — same data, spreadsheet-ready.
Markdown — paste straight into Notion, Obsidian, GitHub issues, or your docs. This one is my favorite; turning a web table into a clean Markdown table used to be a manual chore.
JSON — structured rows for quick reuse: feed it to a script, a notebook, or an LLM without writing a parser.
The details that usually break
-
Merged cells (
rowspan/colspan) are expanded correctly instead of collapsing into the wrong columns. - Excel-friendly CSV — no more "why is my CSV one giant column" or garbled UTF-8.
- Lots of tables on one page? A search box filters them by title or content, so you find the right one fast.
Why local-only
The extension only reads the table on the page you're looking at, only when you click the icon. No login, no account, no analytics, nothing leaves the browser. The privacy practices are declared right on the Chrome Web Store listing: no data collected.
For something that touches whatever page you happen to be on, that felt like the only honest default.
Try it
It's free, with no row limit: Table Grab on the Chrome Web Store
If you try it, I'd genuinely like to hear about any table it fails to parse — drop the URL in the comments and I'll dig into it. That feedback is what shapes the next version.





Top comments (0)