Google Sheets to CSV
How to export Google Sheets to CSV, plus a live CSV link
Google Sheets exports 1 tab per CSV, which rows.page opens free with no signup up to 1.5 GB: click File > Download > Comma Separated Values (.csv), or use the export URL with the tab's gid for a live link. The Drive API's export stops at 10 MB.
No file handy? Open CO2 emissions by country and year (50k rows, 14 MB).
How to download one Google Sheets tab as CSV
Open the spreadsheet, select the tab at the bottom and click File > Download > Comma Separated Values (.csv). Google exports only that tab, so a workbook with 5 tabs takes 5 downloads.
To skip the file, copy the cells, click Paste data on rows.page, paste them into the box and click Open. Copied cells arrive tab-separated and open as a table you can filter and export as CSV, Parquet, JSON, JSONL or a Markdown table of the first 1,000 rows.
How to get a live CSV link for a Google Sheet
Scripts, dashboards and coworkers often need a URL that always returns the current sheet. There are 3 ways to get one.
Export URL with gid
Keep the document ID from your spreadsheet URL and replace /edit and everything after it with /export?format=csv&gid=<gid>:
https://docs.google.com/spreadsheets/d/<id>/export?format=csv&gid=<gid>The <gid> is the number after #gid= in the address bar while the tab is open. The sheet must be shared as Anyone with the link for the URL to work outside your own browser session.
Publish to web as CSV
Click File > Share > Publish to web, choose the whole document or one tab, set the format to CSV and copy the link. Google notes that changes can take a few minutes to show on the published version.
Google Drive API
Drive's files.export with text/csv returns the first sheet only, and Google limits exported content to 10 MB.
| Method | Updates by itself | Needs sharing | Notes |
|---|---|---|---|
| File > Download > Comma Separated Values (.csv) | No | No | Current tab only; repeat for each tab. |
Export URL (export?format=csv&gid=<gid>) | Yes | Anyone with the link | Targets any tab by its gid. |
| Publish to web as CSV | Yes | No, the publish setting applies | Changes can take a few minutes to show. |
Drive API files.export | Yes | No, needs API credentials | First sheet only; exports limited to 10 MB. |
Open a live Google Sheets CSV in rows.page
Put the export link after rows.page/ to explore the current sheet without saving a file:
https://rows.page/https://docs.google.com/spreadsheets/d/<id>/export?format=csv&gid=<gid>Your browser fetches the link directly when the host allows it, as Google's export link does; otherwise rows.page uses its proxy, which takes files up to 100 MB within 30 seconds. Nothing is stored, and the format comes from the bytes, so the link opens as CSV without a .csv extension.
The grid has no row limit and loads rows in pages of 100. The Columns panel shows each column's type, distinct count, share of empty values, min and max for numbers and dates, and a histogram or the top 10 values. Filter with country:NL, price:>20 or -name:* (is empty), or run SQL against the table data:
SELECT country, count(*), avg(price)
FROM data
WHERE price > 20
GROUP BY country
ORDER BY 2 DESCThe filter, sort and visible columns are saved in the page address after #, so copying the URL from the address bar shares that exact slice of the live sheet. To keep a copy with its own link, versions and diffs, click Save to rows.page.
Snapshot a Google Sheet with curl for versions and diffs
A live export changes whenever the sheet does, so a renamed column or deleted rows can break downstream jobs. For a stable URL with version history and row-level diffs, download the CSV with curl and push it to rows.page:
curl -L -o sheet.csv "https://docs.google.com/spreadsheets/d/<id>/export?format=csv&gid=<gid>" && curl -T sheet.csv https://rows.pageThe push prints a https://rows.page/<id> link, an owner link with a #t= token, a summary line and the command for the next version. Each push takes up to 100 MB. Without an account you get 50 pushes and 1 GB per IP address per UTC day, and links expire after 7 days with up to 20 versions.
Push the next snapshot with the rpt_ owner token from the first push, or with one of the up to 20 rpk_ API keys any signed-in account can create:
curl -T sheet.csv -H "Authorization: Bearer rpt_..." "https://rows.page/<id>?id_column=id"Pushes become v1, v2, v3. From the second version on, a banner shows "+N new, N gone, N changed vs vN", matching rows on the id_column, and rows.page compares automatically when the previous version is 64 MB or less. Raw URLs send access-control-allow-origin: *:
https://rows.page/<id>/raw.csvserves the latest version withno-cache.https://rows.page/<id>/v1/raw.csvserves a pinned version that is cacheable for a year.
Sign in with Google and click Keep on my account to stop the link from expiring. The Free plan keeps 10 datasets with the last 3 versions visible.
What does Google Sheets lose when you export to CSV?
- Formulas become values: a cell with
=SUM(A1:A10)is written as its result. - Formatting is gone: fonts, colors, conditional formatting, merged cells and column widths do not exist in CSV.
- Each file or URL holds one tab, because a CSV holds a single table.
- A CSV exported from rows.page is comma-delimited UTF-8 without a BOM, and text cells starting with
=,+,-,@, a tab or a carriage return get a leading apostrophe so spreadsheets don't run them as formulas. - Skip
.xlsx: rows.page does not read Excel files, and pushing one returns "This looks like an Excel or zip file. Export it as CSV and push again."
rows.page limits and prices
| What | Limit or price |
|---|---|
| Open a file in your browser | Files up to 1.5 GB, $0, no account, nothing uploaded |
| Share a link without an account | $0, files up to 100 MB, link deleted 7 days after creation |
| Free account | $0, 10 datasets kept, last 3 versions |
| Pro | $12/month, 100 datasets, files up to 500 MB, private links |
| Max | $39/month, 1,000 datasets, files up to 2 GB, private links |
Questions
How do I export a specific tab from Google Sheets to CSV?
Open that tab and click File > Download > Comma Separated Values (.csv). For a link, use https://docs.google.com/spreadsheets/d/<id>/export?format=csv&gid=<gid> with the number after #gid= in the address bar.
Why does my Drive API CSV export miss tabs or fail?
Drive's files.export returns only the first sheet as CSV and limits exported content to 10 MB. For another tab, use the export?format=csv&gid=<gid> URL instead.
How big a CSV can rows.page open?
Up to 1.5 GB per browser tab for CSV, TSV, JSON and JSONL, free and without an account. A bigger CSV or TSV loads partially with a note saying how many rows fit, and links fetched through the proxy are capped at 100 MB.
Can I get a semicolon-delimited CSV or a BOM?
Not from either tool. Google Sheets downloads only comma (.csv) or tab (.tsv) files, and rows.page always exports comma-delimited UTF-8 without a BOM, with no delimiter, encoding or BOM option. On import, rows.page detects comma, semicolon, tab and pipe delimiters automatically.
How fast does a Publish to web CSV link update?
Google notes that changes can take a few minutes to show on a published file. If you need fixed copies instead, push snapshots to rows.page with curl; each push becomes a version (v1, v2).