Skip to content

Notes and textComparison

10 min read

How to export a table from a web page to CSV or ExcelTable Capture vs. Excel's From Web vs. Google Sheets IMPORTHTML vs. Page Scanner

Excel and Google Sheets can fetch a table from its address and fetch it again later, so the numbers stay current. A browser extension reads the table from the page in front of you when you ask. Here are the steps for each of four tools, and what each one gives you.

There are two ways to get a table off a web page and into a spreadsheet. The spreadsheet can fetch the page itself: Google Sheets has a formula for it and Excel has a connector, and both can fetch the page again on a schedule, so the cells follow the site. Or a browser extension can read the table from the page your browser is showing and hand it to you as a file or on the clipboard. That is a one-off, taken from the page as it looks when you ask. If the table is public and changes every week, start with the spreadsheet. If you need it from the tab in front of you, use an extension.

Four tools at a glance

Table CaptureExcel's From WebGoogle Sheets IMPORTHTMLPage Scanner
What it isa browser extensiona Power Query connector in Excela formula in a cella browser extension, a command and an MCP server
What it readsthe page in your browserthe address you give itthe address you give itthe page in your tab, captured whole
What you getthe clipboard or a Google Sheet; .xlsx and .csv with Proa table in the workbookcells in the sheeta .csv, or a .zip with a CSV per table
Refreshes on its ownwith Cloud: "Real-time sync to Google Sheets"✓ every set number of minutes, or on opening the file✓ "every hour while the document is open"✗
Data not in a <table>✓ "div-based tables (or any repeating items in a website)"by example, with Add Table Using Examples✓ lists, with "list"with table roles, or laid out as one CSS grid
Tables split over pages, or loaded as you scroll✓ with Pro✗ only the rows drawn when it was captured
Pages that need a sign-inWindows, Basic, Web API or an organizational account✓ the tab you are signed in to
Runs inChrome, Edge, FirefoxExcel on Windows, 2016 or later, or Microsoft 365Google SheetsChrome and Edge
Pricefree up to 250 rows; Pro $12 or $120 a yearpart of Excelpart of Google Sheetsfree

✓ yes, ✗ no. An empty cell is one the product's own pages do not answer.

Table Capture

Table Capture "Copies HTML tables to the clipboard or exports them to Microsoft Excel, CSV, Google Sheets, Office 365, etc.", in its Chrome Web Store listing's words. It is an extension for Chrome, Edge and Firefox by George Mike, and the only one of the four built for tables and nothing else. The free version copies a table to the clipboard "with the necessary column & row separators (tab and newline respectively)", so it pastes into any spreadsheet as cells, copies several tables at once, and creates a Google Sheet from a table. For data that is not a table element it has the Table Capture Workshop, which captures "div-based tables (or any repeating items in a website) by selecting text".

The files are Pro: "Download tables as Excel (.xlsx) and CSV (.csv) files directly". So are tables that load as you scroll, tables split over several pages, auto-paging, which will "Automatically click the next-page button", tables from PDFs and copying as Markdown. The plans page says "Exports without a Pro plan are limited to 250 rows". Pro Basic is "$12/year" for "Exports of up to 1,000 rows", and Pro Max is "$120/year" with "No limits on export size". A Cloud subscription, separate from Pro, adds "Real-time sync to Google Sheets" and AI column parsing.

The two sources differ on Excel. The store listing's free features include "Batch export tables to the clipboard, Excel & Google Sheets", while the listing and the site both put "Download tables directly as an Excel spreadsheet or as a CSV file" under Pro.

Verdict: the dedicated tool, and the one of the four that says it handles tables split over pages and tables that load as you scroll. A CSV file, more than 250 rows and those long tables need a subscription.

Excel: Data > From Web

Excel reads a web page through Power Query's web connector: you give it the address, and it lists the tables it found on the page. The steps, from Microsoft Support:

  1. On the Data tab, in the Get & Transform group, select From Web (or Get Data > From Other Sources > From Web).
  2. Paste the page's address and select OK.
  3. The first time you connect to a site, choose how to sign in. Anonymous is for a page that "doesn't require any credentials"; the others are Windows, Basic, Web API and an organizational account.
  4. Pick one of the Suggested Tables in the Navigator window. If you cannot tell which is which, the Web View tab shows the page with each table it detected highlighted.
  5. Select Load to put it on a sheet as an Excel table, or Transform Data to clean it up in the Power Query Editor first.

When the data is not in a table, Add Table Using Examples lets you type a few values from the page, and Power Query "extracts data that fits the pattern of example entries".

The refresh is what sets it apart. Select the table and then Query > Refresh to fetch the page again. For a schedule, open the query's properties (Data > Queries & Connections > Connections, right-click the query, Properties), and on the Usage tab tick Refresh every and enter the minutes, or tick Refresh data when opening the file. For a CSV, use File > Save As and choose CSV (Comma delimited); Excel reminds you "that only the current worksheet will be saved to the new file".

Check your Excel first. Microsoft's table of Power Query sources by version lists Web for Excel 2016 and later on Windows and for Microsoft 365 there. Its lists for Excel for Mac and Excel for the web do not include it.

Verdict: the one to use on Windows when the table changes and the workbook should change with it, with a cleanup step in Power Query if the table needs one.

Google Sheets: IMPORTHTML

IMPORTHTML "Imports data from a table or list within an HTML page." The syntax is IMPORTHTML(url, query, index):

  • url is the page's address "including protocol (e.g. http://)", in quotation marks or as a reference to a cell that holds it.
  • query is "table" or "list".
  • index says which one, counting from 1, "as defined in the HTML source". Tables and lists are counted separately, so a page can have a table 1 and a list 1.

The steps:

  1. Click an empty cell in a sheet.
  2. Type the formula. Google's own example takes the fourth table of a Wikipedia article: =IMPORTHTML("http://en.wikipedia.org/wiki/Demographics_of_India","table",4)
  3. The first time an import function is added to a sheet, "a warning banner will appear as the sheet will be able to send and receive data to external parties". An editor of the sheet selects Allow access.
  4. If another table comes back than the one you wanted, change the index.
  5. For a file, use File > Download and choose a file type.

The import functions "automatically check for updates every hour while the document is open, even if the formula and sheet don't change". Reopening the sheet does not do it: "If you open and refresh the document, it won't trigger a refresh on any of the functions." Deleting the formula and adding it back, or writing the same formula over it, does. With many import formulas across your sheets, Google may answer "Loading data may take a while because of the large number of requests." Its help does not say whether IMPORTHTML can read a page that needs a sign-in.

Verdict: the shortest path for a public page: one formula, nothing to install, and the cells update hourly while the sheet is open.

Page Scanner

I build Page Scanner, so weigh this section accordingly. It captures the page in your own browser, and the editor's Output Format panel has CSV beside PDF, PNG, JPEG, Markdown and Word. CSV writes the tables inside the crop: one table gives a .csv, several give a .zip with a CSV for each, named after the page, -1.csv onward, in the page's order. To take a single table, crop to it, or press Pick an element in the popup (Alt+Shift+E on the page), widen the green outline to the whole table with ↑ and click; the editor opens with the crop on its box. Before you extract, the panel counts what it will write, for example "2 tables, a CSV each in a ZIP: 5 rows × 3 columns, 4 rows × 2 columns".

It finds a <table>, a table the page draws with roles (role="table", grid or treegrid), which is how many data grids and pricing comparisons are built, and a CSS grid of short cells laid out as a table. A cell is its words on one line, a link is its text, and an icon is its name. Every row is as wide as the widest, so a short row ends in empty fields. The page's header row comes first when it had one; when it had none, none is made up. The file follows RFC 4180, with CRLF line endings, and starts with a UTF-8 byte order mark, which is what makes Excel read it as UTF-8. It writes CSV, not .xlsx.

What it costs: Chrome or Edge with the extension, and the file is a snapshot. Nothing refreshes it; scan again to get the table as it is now. A table drawn with divs and no roles is not in it, and neither are rows that are each a grid of their own. A grid that draws only the rows on screen gives the rows it had drawn. A cell spanning several columns is written in the first of them, and a nested table is one cell's words. CSV is not offered for a file opened from disk, or while a blur, a redaction or an erase is on the capture. The capture and the file stay on your machine; the extension does send anonymous counts of which features are used, which the settings can switch off.

Scripts and agents get the same tables as JSON rather than CSV. The command line writes <name>.tables.json beside the file, each table's rows as lists of cell text:

page-scanner scan --url https://example.com/pricing --tables

The MCP server's scan_page takes tables and returns them in the result or writes the same file.

Verdict: the one to use for a table on a page you are signed in to, or one built from roles or a grid, when you want it once as a CSV and a PDF of the same page beside it.

Which should you use?

Use Google Sheets IMPORTHTML if the table is on a public page and you want it in a sheet that updates itself, with one formula.

Use Excel's From Web if you are on Windows, the workbook should refresh on a schedule or on opening, or the table needs cleaning up before it lands.

Use Table Capture if tables are your daily work: tables split over pages, tables that load as you scroll, or data you pick out by hand from repeating items.

Use Page Scanner if the table is on a page you are signed in to, you want a CSV file from an extension without a subscription, or you want the page as a PDF next to the table. If you also want the page's text, how to convert a web page to Markdown compares the tools for that, and web clipper or page capture? covers the difference between a note and a file.

Frequently asked questions

Why does IMPORTHTML return the wrong table? The index counts tables and lists separately, "as defined in the HTML source". Try the next number, or the one before.

Will the CSV open correctly in Excel? Page Scanner's starts with a UTF-8 byte order mark, which is what makes Excel read it as UTF-8. For the others, Excel's From Web and IMPORTHTML put the table straight into the spreadsheet, so there is no file to open until you save one.

Can I get the table as a picture instead? Yes. How to screenshot a single element has the steps for Chrome's DevTools, Firefox and Playwright, and for Page Scanner's picker, which also gives you the table as a PDF with its text still text.

What happens to merged cells? Page Scanner writes a cell spanning several columns in the first of them. The pages linked below for the other three do not say.

Where this comes from

Keep reading