Free tool + Chrome extension · v2.1.0 live on the Web Store

Table Grabber

Copy any table on any web page into CSV, Excel, Markdown, JSON, SQL and eight more formats. Click the one you want, drag a box round something that is not a table at all, or paste your own data. Merged cells stay aligned, numbers stay numbers, and every row comes with you.

v2.1.0 · MIT licensed · Chrome, Edge, Brave, Opera and other Chromium browsers 116+

No account. No row limit. No server. No AI. Nothing you grab ever leaves your browser.

13Export formats
∞Row limit
0Sites it can access
0Bytes uploaded
0Cost, ever

Convert a table now

Select a table on any page, copy it, and paste it below. Browsers put the real HTML on the clipboard, so the structure survives — merged cells and all. This runs the same engine as the extension, entirely in your browser.

Paste anything with a table in it

Copy a table from any web page and paste it here — browsers put the real HTML on the clipboard, so merged cells survive. CSV, TSV, JSON, JSON Lines and Markdown tables work too, and the format is detected for you.

Try:

4 ways to grab something

With the extension installed, the page itself becomes the input. Every one of these ends the same way — a panel telling you what was found and how it was read, with copy buttons and a way back, including the attempts that come up empty.

Let it find them

Click the toolbar icon and every table on the page is listed with its row and column count. Copy one straight from the list as CSV, TSV or Markdown, or open it in the editor.

Alt+Shift+T

Click the one you want

Point at it. The outline follows the cursor with a live row and column count, and ↑ / ↓ widen or narrow the selection when it lands on the wrong container. Any element will do — if it is not a table, it is turned into one.

Alt+Shift+G

Drag a box round it

For the things that only look like tables. The text inside the box is clustered back into rows and columns by where it sits on screen. Cover half a real table and both readings are offered, with counts — the part you covered, or the whole thing.

Alt+Shift+B

Bring your own data

Paste CSV, TSV, JSON, JSON Lines, Markdown or an HTML table into the editor, or drop a file onto it. The format is detected and the delimiter sniffed, so it converts in every direction rather than only out of a page.

Paste or drop

Why tables are harder than they look

Copying a table sounds trivial until you meet a real one. These are the 7 cases that break ordinary extractors, and what Table Grabber does about each.

Merged cells

One cell spanning two rows occupies several positions in the grid. Read the cells in order and every column after the merge shifts left — so the numbers end up under the wrong headings, and nothing warns you.

What it does: Every cell is laid onto a coordinate grid before anything is read, so a merged cell still covers the positions it visually covers. You choose how those positions are filled: repeat the value, leave them blank, or mark them.

Multi-row headers

A grouped header — one 'Region' cell sitting above 'Country' and 'City' — is two header rows. Take only the first and you lose the columns; take only the second and you lose the group.

What it does: Header rows are detected, then stacked into one name per column, so you get 'Region – Country' rather than half the information.

Tables that are not tables

Plenty of web apps draw grids out of plain boxes with CSS. There is no table markup at all, so a tool looking for <table> finds nothing on a page that visibly contains a table.

What it does: Repeating structure is the signal: a container whose children look alike and each hold the same number of cells. That finds hand-rolled grids and the big JavaScript grid libraries alike, without hardcoding any library's class names.

Not a table in any sense

A price list in flexbox, a wall of dashboard tiles, a receipt in a <pre> block: you can see the rows and columns, but they exist nowhere in the markup — only in where the text landed on screen. No amount of reading the page finds a table, because there is not one.

What it does: Drag a box round it and the text inside is clustered back into a grid by position: fragments sharing a horizontal band become a row, fragments sharing a vertical band become a column. Right-aligned number columns, uneven row heights and missing values are all handled.

Rows that are not loaded

Large grids keep only the visible rows in the page and swap them as you scroll. Read the page once and you get twenty rows out of fifty thousand — and the twenty look perfectly complete.

What it does: The grid is scrolled in steps and the rows accumulated, re-read at each step with whichever reader matches the grid — so a grid built from divs collects too, not just a real table. Where the grid publishes its own row numbers, those place each row exactly; otherwise rows are matched by content, and you are told which happened.

The rest is on page 2

Pagination hides most of the data behind a Next button, and copying ten pages by hand is how an afternoon disappears.

What it does: The next control is found, clicked, and the new rows are collected once the table has actually changed — not after a hopeful fixed delay. Every page is merged into one export. It stops on the last page, and you can stop it sooner.

Tables inside other things

A table inside a shadow root or an iframe is invisible to an ordinary search of the page, so tools report there is nothing there.

What it does: Open shadow roots and same-origin iframes are searched too. Cross-origin frames are skipped, because the browser correctly forbids reading them and no extension should try.

13 formats, none of them paid

Marked formats are ones the most-installed table extension charges a subscription for. They are all pure computation in your browser, which is why they are free here.

CSV.csvpaid elsewhere

Comma-separated, RFC 4180 quoting, UTF-8 BOM so Excel opens accents correctly.

TSV.tsv

Tab-separated. Pastes into Sheets and Excel as real cells, not one.

Excel.xlsxpaid elsewhere

A real workbook with numeric cells, a frozen header and sized columns.

JSON.json

Array of objects keyed by header, with real numbers and booleans.

JSON rows.json

Array of arrays, header row first. Closer to the original grid.

JSON Lines.jsonl

One record per line — what log pipelines and bulk loaders expect.

XML.xml

One element per row, with header names sanitised into legal tag names.

Markdown.mdpaid elsewhere

GitHub-flavoured, padded to align, numeric columns right-aligned.

HTML.html

A clean table with none of the original page's styling.

SQL.sql

CREATE TABLE with inferred types, plus batched INSERTs. Postgres, MySQL or SQLite.

YAML.yaml

One document, a list of records, correctly quoted.

LaTeX.tex

A tabular environment with the special characters escaped.

Plain text.txt

Fixed-width columns, aligned. For terminals and code comments.

What else it does

Getting the rows out is the easy half. Most of the work went into the data being usable when it arrives.

Point at the one you want

If a page has fifteen tables, pick the one you mean by clicking it, with ↑ and ↓ to widen or narrow the selection. The overlay is drawn inside a shadow root, so it looks the same on every site no matter how aggressive the page's own CSS is — and Cancel, Esc or a right-click always gets you out.

Grab things that are not tables

Drag a box over a flexbox price list, a set of stat tiles or a block of fixed-width text and it is rebuilt into rows and columns from where the text sits on screen. Cover part of a real table and you are offered both readings with counts, rather than one being guessed at silently.

Any input, not just web pages

Paste CSV, TSV, JSON, JSON Lines or a Markdown table into the editor, or drop a file onto it, and it reads those too — guessing the format and sniffing the delimiter. So it converts in every direction: CSV to Markdown, JSON to a spreadsheet, a web table to SQL.

Edit the data, not just its shape

Double-click any cell and type. Enter commits and drops a row, Tab moves right, Escape abandons it. The value goes in underneath the clean-up settings rather than on top of them, so it is treated exactly as though the page had said it — and it is what gets exported.

Rows in the order you want them

Drag a row by its number, or move the selected one with Alt and an arrow key. Insert a blank row, duplicate one, delete one. Rearranging while a sort is running freezes that sort into a real order first and tells you — a row moved under a live sort would only spring back.

Nothing you do is destructive

Undo and redo run a hundred steps deep across edits, moves, insertions, deletions, hides and renames. Every change is a layer on top of the grabbed table rather than a write into it, so one button returns every value to what the page actually said.

Reshape before you export

Reorder columns by dragging their headers in the grid or the side panel, rename or hide them, transpose the whole thing, fill blank cells from the value above, find and replace across every cell, trim whitespace and footnote markers, and rewrite headers to snake_case or camelCase to match wherever the data is going.

Sorting that understands the column

Click a header to sort: numbers by value so 9 comes before 100, dates chronologically rather than alphabetically, blanks last in both directions, and ties left in the order they arrived. The sort is pinned to the column you chose, so hiding or reordering the others does not move it.

Know what you grabbed

Every column reports its detected type, how many cells are filled, how many values are distinct, and for numbers the min, max, sum and mean. It is how you notice a capture came up short or an ID column has duplicates.

Numbers that stay numbers

$1,234.00 pasted into a spreadsheet is text, and your SUM() returns zero. Column types are detected and values can be rewritten so the destination reads them as numbers — including European 1.234,56 and accounting negatives like (1,234).

Excel you can use immediately

The .xlsx export writes real numeric cells, a frozen header row and sized columns, so formulas and charts work the moment the file opens. No import wizard, no text-to-columns.

Paste that lands in cells

Copying as TSV also puts an HTML table on the clipboard, so Google Sheets and Excel receive real cells instead of one long string in A1. The copy buttons sit on the in-page result panel too, so a quick grab never has to open the editor.

No formula injection

A scraped cell reading =cmd|'/c calc'!A1 is a live formula the moment your CSV opens in Excel. Values starting with = + - @ are neutralised on export, which matters when the source is a page you do not control.

Compared with the paid extensions

Checked in August 2026 against the published listings and pricing pages of the most-installed table extensions. These tools are good; the point is narrower — the features behind their paywalls are pure browser-side computation, with no server and so no running cost.

Feature comparison between typical paid table extensions and Table Grabber
CapabilityTypical paid extensionTable Grabber
Rows per exportCommonly capped at 250 on the free tierUnlimited
Copy as MarkdownTypically a paid featureFree
Download CSV / Excel directlyTypically a paid featureFree
Multi-page and infinite-scroll captureTypically a paid featureFree
Real .xlsx with numeric cellsOften an HTML file renamed .xlsA real workbook
Merged cell handlingVaries; several misalign columns silentlyGrid-accurate, with a choice of fill policy
Editing cells before exportRare; usually export-onlyType into any cell, with undo
Reordering rows before exportSorting onlyDrag rows, insert, duplicate, delete
Tables built from divsSometimes supportedFound by repeating structure
Capturing an area that is not a table at allRareDrag a box; rebuilt from screen positions
Shadow DOM and iframesRarely supportedSearched
SQL, YAML and LaTeX outputRareIncluded
Site access required to installOften all sites, always onNone at all
Account requiredSometimesNever
Price$12–$120 a yearFree, and open source

Table Grabber vs Table Capture and the other table extensions

These are the tools people are usually choosing between, and where each one stops. Checked in August 2026 against their own store listings and pricing pages.

Table Capture

The most-installed table extension, and the one most people mean by “the table one”.

Where it stops
Its published pricing caps the free tier at 250 rows per export; PRO Basic is $12/year for 1,000 rows and PRO Max is $120/year for unlimited.
What Table Grabber does
Table Grabber has no row cap and no paid tier — a 40,000-row table exports the same way a 12-row one does, and there is nothing to upgrade to.
Where they’re better
It is far more established, has a long track record, and its Google Sheets round-trip is more polished than anything here.

HTML Table Exporter

The usual free recommendation, and a genuinely good one.

Where it stops
Free XLSX export with a documented ceiling around 10,000 rows, and a narrower set of output formats.
What Table Grabber does
Table Grabber adds SQL, YAML, LaTeX and TSV output, div-grid and shadow-DOM detection, and drag-a-box capture for things that are not tables at all.
Where they’re better
Simpler. If you only ever need XLSX from a normal <table>, it does that with less surface area.

Table to Excel

A lightweight one-job extension.

Where it stops
Excel and CSV only, with the larger exports behind a premium tier.
What Table Grabber does
Every format here is free, including the ones that are usually the paid ones.
Where they’re better
Tiny and fast for the one job it does.

Instant Data Scraper

A general-purpose scraper that guesses at repeating structures across pages.

Where it stops
It is aimed at crawling rather than at one table, and it asks for broad site access to do that.
What Table Grabber does
Table Grabber installs with no site access at all and reads a page only when you invoke it. It captures what is in front of you rather than crawling.
Where they’re better
If you actually want to walk 50 pages of results unattended, a scraper is the right tool and this is not it.

Copying by hand into Excel

Select, Ctrl+C, paste, then fix it.

Where it stops
Merged cells land in the wrong columns, numbers arrive as text, and rows that had not loaded yet are simply absent.
What Table Grabber does
Merged cells are expanded to a real grid, numeric cells stay numeric in a genuine .xlsx workbook, and lazy-loaded rows are collected as you scroll.

Who it’s for

Analysts

Pull a reference table off a stats site into Excel with the numbers already numeric, instead of retyping it or fighting text-to-columns.

Writers and documenters

Copy a table straight into a README or a blog post as Markdown, aligned and correctly escaped, in one click.

Developers

Turn a table of reference data into a SQL seed script, a JSON fixture or a typed array without writing a parser for a one-off job.

Researchers and students

Get a LaTeX tabular out of a web table without rebuilding it by hand, footnote markers already stripped.

New in 2.1.0: an editor you can actually edit in

Published to the Chrome Web Store on 26 August 2026. Until now the editor could reshape a table — hide a column, sort it, rename a header — but it could not change a single value, so one typo at the source or one row in the wrong place sent you to a spreadsheet to finish by hand. Now the grid itself is editable and the row order is yours. If you have an earlier version installed, Chrome will update you on its own.

Edit any cell

Double-click a cell, or select it and start typing. Enter commits and drops to the next row, Tab moves right, Escape abandons the change. Whatever you type is what gets exported — no round trip through a spreadsheet to fix one typo.

Put the rows in the order you want

Drag a row by its number, or move the selected one with Alt and an arrow key. Insert a blank row, duplicate one, delete one. Rearranging while a sort is running freezes that sort into a real order first and says so, because a row moved under a live sort would only spring back.

Move and rename columns from the grid

Drag a header to reorder it, or use the pencil on it to rename in place — no trip to the side panel. Hidden columns keep their position in the order, so unhiding one later puts it back where it belongs rather than at the end.

Undo, a hundred steps deep

Ctrl+Z and Ctrl+Shift+Z cover edits, moves, insertions, deletions, hides and renames. The side panel keeps a running count of what you have changed, with one button that discards all of it.

None of it touches what was grabbed

Edits are a layer keyed by row identity rather than by position, so a change follows its row through a sort, a filter and a reorder — and the table as the page served it is always one click away.

Keyboard all the way through the grid

Arrow keys, Home, End, PageUp and PageDown move the selection; F2 opens a cell; Alt with an arrow moves the row or column itself; Alt+Enter inserts a row; Ctrl+Delete removes one.

What 2.0.0 added, 18 August 2026
  • Drag a box round anything — a flexbox price list, a wall of dashboard tiles, a receipt in fixed-width text — and it is rebuilt into a table from where the text sits on screen.
  • Paste and drop: CSV, TSV, JSON, JSON Lines, Markdown or an HTML table, brought in yourself rather than read off a page.
  • Clicking a table works. In 1.0 the pick was answered into a popup that had already closed, so the button really was dead.
  • Every pick ends in a panel that says what happened, and Cancel, Esc or a right-click always gets you out.
  • Sorting that understands the column, and scroll capture that finally works on grids built from plain boxes.

Every change, including the fixes: read the changelog

Get the extension

The web version above handles anything you can copy. The extension does the three things a web page is not allowed to: read a table in place, scroll a grid that only loads rows as you go, and walk every page of a paginated table.

  1. Open the listing

    The Add to Chrome button goes straight to it. Click Add to Chrome there and confirm. Every Chromium browser installs from the same listing — Edge, Brave, Opera, Arc and Vivaldi included, though Edge shows a one-time banner asking you to allow extensions from other stores.

  2. Pin it

    Click the puzzle-piece icon in the toolbar and pin Table Grabber so it is one click away.

  3. Grab a table

    Open any page with a table and click the icon, or press Alt+Shift+T. To point at a particular one, press Alt+Shift+G and click it; to capture something that is not a table, press Alt+Shift+B and drag a box round it.

The ZIP is the same build as the listing, for installing unpacked — steps, the SHA-256 and what you give up are below.

Installing from the ZIP — steps and checksum

Byte for byte the same build as the listing, installed the way Chrome tests every extension before it is published. You give up automatic updates and gain the ability to read every line before you run it.

  1. Download and unzip

    Unzip it somewhere you will keep — Chrome loads the extension from this folder every time it starts, so a temporary folder will break it later.

  2. Open the extensions page

    Paste this into the address bar and press Enter.

    chrome://extensions
  3. Turn on Developer mode

    The switch is in the top-right corner of that page.

  4. Load unpacked

    Click Load unpacked and choose the table-grabber folder inside the archive — the one containing manifest.json.

  5. Pin it and go

    Pin it from the puzzle-piece menu, then open any page with a table and press Alt+Shift+T.

Check what you downloaded

Installing unpacked means trusting a file from the internet, so here is its fingerprint. Run one of these on the ZIP and compare — if the hash matches, the file arrived exactly as it was built.

c4fa5c052074042af6f8f41c5a1deb424c366ff9b1d872cf8a09b2b7f8b1f883
Windows (PowerShell) Get-FileHash table-grabber-2.1.0.zip
macOS shasum -a 256 table-grabber-2.1.0.zip
Linux sha256sum table-grabber-2.1.0.zip

Two things worth knowing. While any unpacked extension is installed, Chrome shows a “Developer mode extensions” notice on startup — that describes how the extension was loaded, not a problem with it. And unpacked extensions do not update themselves, so check back here for new versions, or install from the store and let Chrome handle it; the ZIP also contains an INSTALL.txt with these steps.

Privacy

The short version: nothing is collected, because there is nothing in it capable of collecting anything.

  • No network code at all. The extension makes no fetch, XMLHttpRequest, WebSocket or sendBeacon calls. There is no server behind it and no endpoint to send anything to — and this is enforced, not promised: the build fails if any of those appear anywhere in the source.
  • It installs with access to no sites. There is no host permission in its manifest, so adding it approves nothing and nothing runs in the background. Clicking the icon gives it that one tab, for as long as you stay on that page.
  • Nothing is stored on disk. A grabbed table is held in memory and cleared when the browser closes; the copy handed to the editor is deleted the moment it is read.
  • No analytics, no account, no identifiers. There is no way to tell one user from another, even in principle.
  • The web version is the same. Pasting a table into this page parses it in your own tab. There is no API route behind it and no server ever receives it.
  • Exports are yours. Files are generated in the browser and handed straight to the download manager. A table grabbed from a logged-in page can contain personal data, so treat the file as you would any other download.

Why this exists

This exists because of a one-star review. Someone had used a popular table extension for years, recommended it to everyone they knew, and then found the free tier limited to 250 rows. Another reviewer put the objection more precisely: needing a subscription to copy as Markdown is odd, because converting a table to Markdown requires no backend, and therefore has no continuous operating cost to recover.

That is exactly right, and it generalises. Reading a table out of a page, expanding its merged cells, working out which columns are numbers and writing the result as CSV, Markdown or a spreadsheet is arithmetic. It happens on your own machine, in your own browser, on data your browser already downloaded. Nobody is paying for servers to make it happen, because there are none.

So the whole thing is free and it will stay free, which is a promise that costs nothing to keep. There is no account to create, no row limit to hit, no format held back, and no upgrade screen. It is MIT licensed and the source is public, so you do not have to take any of that on faith.

The privacy position follows from the same logic. A tool that does its work locally has no reason to make a single network request, so this one contains no network code at all — and that is checked automatically, with the build failing if a fetch ever appears in the source. It installs with access to no websites, and reads a page only in the moment you ask it to.

Frequently asked questions

Is Table Grabber a free alternative to Table Capture?

Yes. As of August 2026 Table Capture's published pricing caps free exports at 250 rows, with PRO Basic at $12/year for 1,000 rows and PRO Max at $120/year for unlimited. Table Grabber has no row limit and no paid tier at all — a 40,000-row table exports exactly like a 12-row one. It also adds SQL, YAML, LaTeX and TSV output, handles tables built from divs, and can capture an area of a page that is not a table. Table Capture is the more established tool with a longer track record and a more polished Google Sheets round-trip; if you are hitting the free row cap, this is the free way past it.

What is the best Chrome extension to copy a table to Excel?

It depends on what breaks for you. For a plain HTML table, almost any of them work — Table Capture, HTML Table Exporter and Table to Excel all do the simple case. What separates them is the awkward cases: row limits on the free tier, tables built from divs rather than <table>, merged cells that silently misalign columns, rows that only load as you scroll, and content inside a shadow DOM or an iframe. Table Grabber handles all of those without a paid tier, and writes a real .xlsx workbook with numeric cells rather than an HTML file renamed .xls.

How do I copy a table with more than 250 rows?

Row caps are a pricing tier, not a technical limit — the work happens in your browser either way. Table Grabber does not have one: use it here on this page or install the extension, and export the whole table however many rows it has. If the rows only appear as you scroll, turn on scroll-capture and it will collect them as they load rather than exporting only the visible window.

Is it really free, or is there a paid tier later?

Really free, permanently, and open source under the MIT licence. The reasoning is not generosity: everything it does happens in your browser, so it costs nothing to run and there is nothing to recover. A row limit would exist only to sell you the absence of a row limit.

Can I edit the data before exporting it?

Yes, and it is the main addition in 2.1. Double-click any cell in the editor and type, or select it and start typing. Enter commits and drops to the next row, Tab moves right, Escape abandons the change. Whatever you type is what gets exported, so a typo at the source or a value the page got wrong no longer means a round trip through a spreadsheet. Undo runs a hundred steps deep, and a single button in the side panel puts every value back as the page had it — your edits sit in a layer on top of the grabbed table rather than being written into it.

How do I reorder the rows of a table before exporting?

Drag a row by its number in the editor's grid, or select a cell in it and press Alt+↑ or Alt+↓. You can also insert a blank row, duplicate a row and delete a row from the toolbar above the grid. If a sort is running when you move something, Table Grabber freezes that sort into a real order first and tells you it did — otherwise the row you moved would simply spring back to wherever the sort wants it.

How do I reorder or rename columns?

Drag a column header sideways in the grid, or drag its entry in the Columns list on the left; the two stay in step. The pencil on a header renames it in place, and so does clicking the name in the side panel. Hidden columns keep their position in the order, so unhiding one later puts it back where it belongs rather than at the end. Alt+← and Alt+→ move the selected column without a mouse.

If I edit a cell, does it change the web page?

No. The editor is a separate tab and it never writes to the page it read — that was true before and it is still true now that you can type into it. Edits live in the editor tab's memory, are applied on top of the grabbed copy, and vanish when you close the tab. Nothing is saved to disk except the file you explicitly download.

Why can I not edit cells when the table is transposed?

Transposing swaps rows and columns, so what was a row is now a column and there is no stable row identity left for an edit to attach to. Rather than guess which cell you meant and write to the wrong one, the grid goes read-only and says so. Untick Transpose, make your edits, then transpose again — the order is preserved either way.

Is there a row limit?

No. The editor draws the first few hundred rows for speed, and says so where you can see it, but exports always contain every row.

Does my data get uploaded anywhere?

No, and it cannot be. The extension contains no network code — no fetch, no XMLHttpRequest, no WebSocket, no analytics. This is enforced by a check in the build that fails if any of those appear in the source, so it is verifiable rather than merely promised.

What permissions does it need?

It installs with access to no websites at all — there is no host permission in its manifest, so nothing runs anywhere until you invoke it. When you click the icon it reads that one tab. It also asks for storage (to pass a table to the editor tab, in memory), downloads (to save your file) and contextMenus (for the right-click items). Neither 2.0 nor 2.1 added a permission — the editable grid in 2.1 needs none, because everything it does happens in the editor tab you are already looking at.

Can I grab something that is not really a table?

Yes. Press Alt+Shift+B, or choose 'Drag a box', and draw a rectangle round whatever you want — a flexbox price list, a grid of dashboard tiles, a receipt in fixed-width text. The text inside is clustered back into rows and columns by where it sits on screen, so it comes out as a table even though the page never contained one.

How do I stop a selection once I have started it?

Press Esc, right-click, or use the Cancel button on the control bar; reopening the popup mid-pick offers a Cancel too. Clicking a table that lives inside a link no longer follows the link, so a mis-click cannot navigate away and lose the grab.

What are the keyboard shortcuts?

Alt+Shift+T opens the popup and lists every table on the page, Alt+Shift+G starts a click-pick, and Alt+Shift+B a box-drag. While picking, the arrow keys widen or narrow the selection and Enter takes it. In the editor, click a column header to sort, double-click a cell (or press F2) to edit it, the arrow keys move the selection, Alt with an arrow moves the selected row or column, Alt+Enter inserts a row, Ctrl/Cmd+Delete removes one, Ctrl/Cmd+Z undoes, Ctrl/Cmd+S downloads, Ctrl/Cmd+Shift+C copies and Ctrl/Cmd+F jumps to the row filter. All three browser shortcuts can be rebound at chrome://extensions/shortcuts.

Why did my export come out with the columns shifted?

That is the merged-cell problem, and it is the main thing Table Grabber is built to get right. If you are seeing it here rather than in another tool, the table has a structure worth reporting — please send the URL.

The table on my page has thousands of rows but only twenty came through.

That grid keeps only the visible rows loaded. Open the editor and use 'Collect all rows', which scrolls the grid and accumulates the rest — including grids built out of plain boxes. If the data is paginated instead, use 'Walk every page'. Do it before you start editing: collecting re-reads the table from the page and renumbers its rows, so it asks first and clears any edits already made.

Why does Excel show my numbers as text?

Because the page wrote them as $1,234.00, which is a string. Tick 'Values as numbers' in the editor, or export as .xlsx, which writes genuine numeric cells so formulas work immediately.

Is it on the Chrome Web Store?

Yes. The current version, 2.1.0, went live on 26 August 2026, so the normal way to install it is the Add to Chrome button at the top of this page — one click, and Chrome keeps it updated from then on.

I installed 1.0 and clicking a table did nothing. Is that fixed?

Yes, and it is the reason for the rebuild. The pick was being answered into a popup that had already closed, so the button really was dead. The page now completes the grab itself, and every attempt ends in a panel that says what happened — including the ones that fail. If Chrome has not updated you yet, open chrome://extensions and press Update; you want 2.1.0 or newer.

Should I install from the Web Store or from the ZIP?

The Web Store, unless you have a reason not to: it is one click and it updates itself. The ZIP is the same build, kept here for anyone who would rather read every line before running it, or who cannot install from the store — you load it unpacked, and a published SHA-256 on this page lets you check the file arrived intact. Unpacked extensions do not update themselves.

Can I use it without installing anything?

Yes. The web version on this page runs the same extraction and export engine — copy a table from any page and paste it in, or paste the HTML. The extension exists for the things a web page cannot do: reading a table in place, dragging a box over part of a page, scrolling a virtualised grid, and walking pagination. Cell editing and row rearranging are in the extension’s editor.

Does it work on Firefox or Safari?

Not yet. It is built for Chromium browsers — Chrome, Edge, Brave, Opera, Arc and Vivaldi, version 116 or newer. A Firefox port is plausible since the code is nearly all standard web APIs.

Is it safe to run on a page I am logged into?

It reads what is on screen, which is the point, so an exported table can contain personal or account data — treat the file accordingly. Nothing is transmitted, and access ends when you leave the page.

Support

Something not working? Start here — these 11 cover nearly everything. If none of them fit, the report link at the bottom goes straight to me.

The popup says no tables were found, but I can see one

Why: What is on screen may not be a table at all — a layout of boxes with no repeating structure to recognise — or it lives in a cross-origin iframe, which no extension is permitted to read.

Fix: Use “Click a table” and click it directly; that reads whatever you point at. If it still comes out wrong, use “Drag a box” and draw one round it, which rebuilds a table from where the text sits rather than from the markup. For an embedded frame from another domain, open that frame in its own tab first.

Only a handful of rows came through

Why: The grid keeps just the visible rows loaded and swaps them as you scroll, so a single read genuinely only sees those.

Fix: Open the editor and press “Collect all rows”. If the data is paginated instead, use “Walk every page”. Leave the tab visible while it runs; a scroller that refuses to move now stops early and says so rather than grinding.

The box I dragged picked up the wrong thing

Why: A box that overlaps a real table is ambiguous: you might mean the part you covered, or the table it belongs to.

Fix: Both readings are offered with their row and column counts — take the other one. For a layout with no table behind it, redraw the box slightly wider: columns are found from the vertical bands the text falls into, so clipping a column edge loses it.

Columns are shifted or misaligned

Why: Almost always merged cells. This is the case Table Grabber is specifically built to get right, so seeing it here is a bug worth reporting.

Fix: Please send the page address — a table that defeats the grid builder is the single most useful thing you can report.

Excel shows my numbers as text

Why: The page wrote them as $1,234.00, which is a string, not a number.

Fix: Tick “Values as numbers” in the editor, or export as Excel (.xlsx) — that writes genuine numeric cells, so formulas work the moment the file opens.

I moved a row and it jumped straight back

Why: A sort was running. A sort is recomputed from the data every time, so it has the last word over any order you set by hand.

Fix: Nothing to do — the first move you make freezes that sort into a real order and tells you it has, and every move after it sticks. To choose the moment yourself, clear the sort first by clicking the chip beside the row filter.

I cannot type into a cell

Why: Either Transpose is on, or the cell is in a row the row filter is currently hiding.

Fix: Untick Transpose in the Shape panel — swapping rows for columns leaves no stable row for an edit to attach to, so the grid goes read-only rather than writing to a cell you did not mean. Otherwise clear the filter box, edit, and re-apply it.

My edits disappeared after collecting more rows

Why: “Collect all rows” and “Walk every page” re-read the table from the page, which renumbers its rows.

Fix: Collect first, then edit. The editor asks before running either of them when edits exist, precisely because reapplying an edit to whatever row now holds that number would be worse than losing it.

The page is dimmed and I want out

Why: A selection is still running.

Fix: Press Esc, right-click anywhere, click Cancel on the control bar, or reopen the popup and press Cancel there. Any of the four ends it and leaves the page untouched.

Nothing happens when I click the icon

Why: Chrome does not allow extensions to run on its own pages — chrome://, the Web Store, and the new-tab page are all off limits.

Fix: Open an ordinary website and try again. If it fails on a normal page, please report it with the address.

The extension is not in my toolbar

Why: Chrome hides new extensions behind the puzzle-piece menu by default.

Fix: Click the puzzle piece to the right of the address bar and pin Table Grabber. The keyboard shortcuts work whether it is pinned or not, and can be rebound at chrome://extensions/shortcuts.

Every keyboard shortcut

The three browser shortcuts can be rebound at chrome://extensions/shortcuts.

Keyboard shortcuts for the extension and the editor
KeysWhat it does
Alt+Shift+TOpen Table Grabber and list every table on the page
Alt+Shift+GGrab a table by clicking it
Alt+Shift+BGrab an area by dragging a box round it
↑ / ↓While picking: widen or narrow the selection
EnterWhile picking: take the current selection
Esc or right-clickWhile picking: cancel and leave the page alone
Double-click or F2In the editor: edit the selected cell
Enter / Tab / EscWhile editing: commit and drop down, commit and move right, or abandon
Alt+↑ / Alt+↓In the editor: move the selected row up or down
Alt+← / Alt+→In the editor: move the selected column left or right
Alt+EnterIn the editor: insert a blank row below
DeleteIn the editor: empty the cell — Ctrl/Cmd+Delete deletes the row
Ctrl/Cmd+ZIn the editor: undo — Ctrl/Cmd+Shift+Z redoes
Ctrl/Cmd+SIn the editor: download in the selected format
Ctrl/Cmd+Shift+CIn the editor: copy to the clipboard
Ctrl/Cmd+FIn the editor: jump to the row filter

Report a bug or ask a question

A table that comes out wrong is genuinely useful to me — the awkward ones are how this got good. Please include:

  • The address of the page with the table, if it is public
  • Which way in you used — the table list, click-a-table, drag-a-box or paste
  • What you expected, and what you got instead
  • Which browser and version (chrome://version)
  • The extension version, from chrome://extensions

There is no support inbox to be lost in and no ticket queue — it is one person, so please be patient, and include the page address if you can.

Privacy policy: how your data is handled · Source code · Changelog

What people look for

Everything below is something Table Grabber answers directly.

More free tools

Storage Inspector

Chrome Web Store extension — see every byte a site stores

Query Studio

Free SQL translator, formatter & validator

Git Rescue

Git cheat sheet & fix-it playbook

Browse all tools →