BiLingoPlus › GridScoop › Export a web table to Excel

How to export a table from a website to Excel

Updated 16 October 2026 · 8 min read

Short answer: For a small, simple table, select it, copy and paste into Excel. For a public page you want to refresh later, use Excel's Data → From Web (Power Query) or Google Sheets' IMPORTHTML. For tables that are built by JavaScript, sit behind a login, or only load rows as you scroll, use a browser extension that reads the page you are looking at — and check the row count, because that last kind of table is where most methods quietly lose data.

Which method to use

MethodGood forWhere it breaks
Copy and pasteOne small, plain table, onceMerged cells, grids made of <div>s, numbers and dates pasted as text, rows off screen
Excel From WebPublic pages you want to refreshPages behind a login, grids that only draw visible rows
Sheets IMPORTHTMLPublic pages, live in a sheetSame as above, plus tables drawn by JavaScript; you must guess the table's number
Browser extensionJavaScript grids, logged-in pages, repeat workDepends on the tool — virtualized grids are the real test

1. Copy and paste

  1. Drag-select the table from the first header cell to the last cell.
  2. Copy it (Ctrl+C, or Cmd+C on a Mac).
  3. In Excel, click the first cell and paste. If formatting from the website comes along, use Paste Special → Text or Keep Text Only instead. In Google Sheets, Ctrl+Shift+V pastes values only.

This works more often than people expect for plain HTML tables. It goes wrong in predictable ways:

2. Excel: Get Data → From Web (Power Query)

Excel can fetch a web page itself and list the tables it finds. In Excel for Microsoft 365 on Windows:

  1. Open the Data tab and click From Web (it is in the Get & Transform Data group; on some versions it is under Get Data → From Other Sources → From Web).
  2. Paste the page address and click OK. If asked how to connect, choose Anonymous for a public page.
  3. The Navigator lists the tables Excel found. Click each to preview it, pick the right one and click Load — or Transform Data to clean it up in Power Query first.
  4. Later, Data → Refresh All fetches the page again and updates the table.

This is the best free option for public tables that change — exchange rates, sports results, statistics pages. Its limits:

3. Google Sheets: IMPORTHTML

In any cell of a Google Sheet, type:

=IMPORTHTML("https://example.com/page", "table", 1)

The last number picks which table on the page to import, starting at 1; if you get the wrong one, try 2, 3 and so on. Use "list" instead of "table" for bulleted lists. To get an Excel file afterwards, use File → Download → Microsoft Excel (.xlsx).

The catch is like Excel's, only stricter: the page is fetched by Google's servers, not by your browser. They do not run the page's JavaScript and they are not signed in as you. If IMPORTHTML returns an error, an empty result or only part of the table, the table is almost certainly built by a script or behind a login. Changing the number will not fix that.

4. A browser extension

An extension reads the page that is open in your tab — after its JavaScript has run, with you logged in. That is the main advantage over the two importers above, and it is why extensions handle dashboards, admin panels and reporting tools that the importers cannot see.

Extensions come in two broad kinds. Table exporters look for tables and data grids and turn each into a spreadsheet. List scrapers look for any repeating pattern — product cards, search results, directory entries — and turn the pattern into rows. If your data looks like a grid with column headers, you want the first kind; if it looks like a feed of cards, you want the second. We compare the popular ones on Table Capture and Instant Data Scraper alternatives.

Whichever you use, compare the number of rows you got with the number the site says it has. That check catches the problem in the next section.

The case most tools miss: grids that only render visible rows

Large web grids are often virtualized. The page knows about all 12,000 rows, but to stay fast it keeps only the 30–50 rows you can see in the page and swaps them as you scroll. Infinite-scroll tables are a cousin: more rows load as you reach the bottom.

For exporting, this means the rest of the table is not in the page at the moment you copy or export. Copy-paste gets what is on screen. Excel From Web and IMPORTHTML get what the server sent, often nothing. A plain exporter reads the page once and produces a tidy file with 40 rows — and nothing tells you the other 11,960 are missing.

How to tell: the grid has its own scrollbar inside the page; the footer says something like “1–50 of 12,480”; or rows appear and disappear as you scroll. If any of these is true, check the row count of whatever you export.

Your options, in order of preference:

  1. The site's own export. Many web apps have an Export or Download CSV button, sometimes hidden in a menu above the grid. It reads the data, not the screen.
  2. Show more rows per page, if the grid lets you, then export page by page.
  3. A tool that scrolls and stitches. It scrolls the grid, collects the rows each time they render, removes duplicates and joins them into one table.

The third option is what GridScoop was built around. When you open it on a page, it lists the tables and grids it found, biggest first, and marks grids it detects as virtualized. Capture full grid then scrolls that grid and stitches every row into one table. It stops at 100,000 rows, 4 million cells, 400 screens of the grid or 90 seconds, whichever comes first, and says so when it stops early rather than handing you a short file without comment.

To use it:

  1. Open the page with the table and click the GridScoop icon.
  2. Pick the table from the list. If it is marked virtualized, click Capture full grid and keep the popup open until it finishes.
  3. Click Excel or CSV to download, or Copy for Sheets to paste into Google Sheets. There are also JSON, Copy Markdown, Merge pages for tables split across pages, and All tables → Excel for one workbook with a sheet per table.

What it cannot do, so you do not waste time: grids inside a shadow root (common in web-component UIs) are not scanned in version 1.0; tables inside a frame need the frame opened in its own tab first; Merge pages works only when the next page loads in place, without a full page reload; and grids that also virtualize their columns export only the columns that were rendered. Plain exports stop at 20,000 rows.

GridScoopExports any table or data grid to Excel or CSV, including grids that only render visible rows · every feature free, 300 rows a day
Add to Chrome — free

Saving as CSV instead of Excel

If you need CSV — for an import, a database or a script — get the table into a spreadsheet by any method above and save it: in Excel, File → Save As and choose CSV UTF-8 (Comma delimited); in Google Sheets, File → Download → Comma-separated values. Pick the UTF-8 option in Excel when the table has accents or non-Latin text, or they may come out garbled. GridScoop's CSV download is UTF-8 with a byte-order mark, which Excel recognises when it opens the file, and it guards cells that start with characters a spreadsheet could treat as a formula.

Questions

Why does my exported table have fewer rows than the website shows?

The grid is probably virtualized: it keeps only the rows on screen in the page and swaps them as you scroll. Copy-paste, Excel From Web, IMPORTHTML and most exporters read the page once, without scrolling, so they get only those rows. Use the site's own export if it has one, or a tool that scrolls the grid and stitches the rows together.

Can I export a table from a page I have to log in to?

Excel From Web and Google Sheets IMPORTHTML fetch the page themselves, without your browser session, so they usually cannot see pages behind a login. Copy-paste and browser extensions work on the page you are already looking at, so they can.

How do I export an HTML table to CSV instead of Excel?

Bring the table into Excel or Google Sheets with any method on this page, then save as CSV: in Excel, File, Save As, CSV UTF-8; in Google Sheets, File, Download, Comma-separated values. A browser extension can also save CSV directly.

Is GridScoop free?

Every feature is in the free plan, with 300 exported rows a day. A single table larger than that still exports in full, once a day. GridScoop Pro costs $15 a year and removes the daily allowance.

Does GridScoop upload the tables I export?

No. Extraction and file building happen inside your browser. The only network request GridScoop makes is the Pro licence check, which sends the licence key, the extension ID and its version.

RelatedGridScoop — how it worksTable Capture and Instant Data Scraper alternatives