Share a CSV

Share a CSV as a link, not an attachment

Free CSV hosting, no signup: curl -T data.csv https://rows.page returns a link that opens as a table. Files up to 100 MB, links live 7 days, or for good with a free account that keeps 10. CSV, TSV, JSON, JSONL or Parquet; drop a file here and press Share for the same link without a terminal.

.csv.tsv.json.jsonl.parquet
Drop a file here
Stays in your browserUp to 1.5 GB

No file handy? Open CO2 emissions by country and year (50k rows, 14 MB).

One command, one link

curl -T data.csv https://rows.page answers in plain text: the public link, an owner link with the token, and one line with rows, columns, size and the expiry date. Add -H "Accept: application/json" for JSON. No key, no account, nothing to install besides curl, and requests.put("https://rows.page/data.csv", data=open("data.csv", "rb")) does the same from Python.

Without an account you get 50 pushes and 1 GB per day per IP, 10 pushes per minute, 100 MB per file. The browser route is the same thing: open the file here, press Share.

What the other side gets

A table, not a download prompt. Whoever opens the link can sort, filter (region:EMEA amount:>1000), run SQL, see column stats, and export CSV, Parquet, JSON, JSONL or Markdown, on a phone too. Nobody needs an account to view; viewing is never paywalled on any plan.

The original bytes stay available at /<id>/raw.csv with CORS headers, so a script, a notebook or a web page can fetch the file directly.

Push again and it becomes a version

The owner link carries a token. Push the next export to the same link, curl -T data.csv -H "Authorization: Bearer rpt_..." https://rows.page/<id>, and it becomes version 2. The page shows how many rows are new, gone or changed against the previous version, matched by a key column you name with ?id_column=sku, and which columns were added or removed.

Identical bytes answer unchanged: true and add nothing. Anonymous links keep up to 20 versions; a free account opens the last 3, Pro keeps 90 days of versions, Max 365.

Private links and bigger files

Anonymous and free links are public but unguessable: 10 random characters, and the page is marked noindex so search engines leave it alone. Pro ($12/month) adds private datasets, 100 datasets, files up to 500 MB; Max ($39/month) goes to 1,000 datasets and 2 GB files. Files over 100 MB upload in 64 MB parts through the API.

Scripts on a plan use an API key (rpk_...) and can upsert by name: curl --data-binary @report.csv -H "Authorization: Bearer rpk_..." "https://rows.page/api/v1/push?key=nightly-report" updates the same dataset every night instead of minting a new link.

From CI, agents and webhooks

A GitHub Actions step is the curl line; the link lands in the job log or a PR comment. Agents use the MCP server at rows.page/mcp, which exposes push, get_dataset, list_datasets, delete_dataset and pin_finding, so a model can publish a result table and read it back with filters instead of pasting rows into chat.

The bin viewer on webhooks.sh has an Open in rows.page button that pushes captured requests as a table. Anything that can send an HTTP PUT can publish a dataset.

Limits for sharing a CSV link

WhatLimit or price
Price$0, no account; opening a link is always free
File size per push100 MB without an account or on Free; 500 MB on Pro; 2 GB on Max
Link lifetimeDeleted 7 days after creation without an account; kept on any account
Pushes without an account50 per day and 1 GB per day per IP, 10 per minute
VersionsUp to 20 without an account; last 3 on Free; 90 days on Pro; 365 days on Max
FormatsCSV, TSV, JSON, JSONL, Parquet
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

Do people need an account to open my link?

No. The link opens as a table for anyone, with filters, sort, SQL and export. Only keeping and private links need an account.

Is the link public?

Public but unguessable: a 10-character random id, and the page is marked noindex so search engines don't list it. Private datasets, which need the owner to sign in to view, come with Pro and Max.

How do I delete a shared file?

Open the owner link and use Delete dataset, or send DELETE /api/v1/datasets/<id> with the token. Deleted files leave storage within the hour. Anonymous links also delete themselves 7 days after creation.

Can I update the file behind the link?

Yes. Push again to the same link with the token from the owner link and it becomes the next version. Old versions stay available, and the page shows how many rows are new, gone or changed.

Can I share an Excel file?

Not as .xlsx. Save the sheet as CSV first and push that. CSV, TSV, JSON, JSONL and Parquet are accepted.

More tools

Pushing data from a script or agent? Read the docs.