Use Google Sheets as a database
A spreadsheet is a table, and a table is most of what a small app needs. With a REST API in front of it, a Google Sheet can back content, config, and reference data — editable by anyone on your team, no admin panel required.
Last updated
Key facts
- A Google Sheet is capped at 10 million cells (or 18,278 columns), which is the real ceiling on using one as a database. source
- Sheets has no indexes, no transactions and no concurrency control. It is a spreadsheet: the guarantees a database gives you simply are not there.
-
The Google Sheets API allows 300 read requests per minute per project and 60 per minute per user. Past that it returns
429 RESOURCE_EXHAUSTED. source - Where it genuinely wins is read-mostly data a non-engineer owns — a price list, a directory, a changelog. Editing a row in a familiar UI beats a CMS migration.
Can you use Google Sheets as a database?
Yes, for read-heavy workloads. A sheet is a perfectly good table: rows are records, columns are fields, and your teammates already know how to edit it. Where it breaks down is concurrent writes, relational joins, and transactions — a spreadsheet has none of those guarantees.
The practical rule: if your data is mostly read and occasionally hand-edited, a sheet is an excellent database. If it is written by your application at speed, or two writers can touch the same row at once, use a real database. PasteSheet is built for the first case — it puts a fast, cached, read-only JSON API in front of the sheet.
When a sheet is a great database
- Content and copy your non-technical teammates should edit directly.
- Config, feature flags, pricing tables, and lookup data.
- Low-to-medium read traffic that is mostly reads, not writes.
- Prototypes and MVPs where you want data live in minutes.
When to reach for a real database
- High write concurrency or transactional integrity requirements.
- Millions of rows, or complex multi-table joins.
- Per-user row-level security and heavy relational modeling.
Google Sheet vs a real database
A sheet is not trying to be Postgres. Use it where it wins, and reach for a database where it does not:
| Google Sheet + PasteSheet | A real database (Postgres / Airtable) | |
|---|---|---|
| Writes & concurrency | Read-heavy; edited by hand | Concurrent writes and transactions |
| Size ceiling | 10 million cells | Effectively unbounded |
| Relational joins | No — one flat table | Yes — multi-table joins |
| Access control | Endpoint-level key | Per-user, row-level security |
| Who edits the data | Anyone who knows spreadsheets | Engineers or an admin UI |
| Setup | Paste a share URL | Provision, model, and migrate |
| Cost to start | Free | Hosting + engineering time |
Set up a Google Sheets database in four steps
- 1 Put one record per row under a single header row — the headers become your field names.
- 2 Share the sheet as Anyone with the link so it can be read without a login.
- 3 Paste the share URL into PasteSheet; it infers each column's type and publishes a cached JSON endpoint.
- 4 Query it over HTTP like a table — filter, sort, search, and page with URL parameters.
Query it like a table
A GET against the endpoint returns typed rows plus paging metadata — here, active products, newest first:
curl 'https://pastesheet.com/api/your-endpoint-id?status=active&sort=created&order=desc&limit=2'
{
"data": [
{ "id": 42, "name": "Blue Widget", "price": 19.99, "status": "active" },
{ "id": 41, "name": "Red Widget", "price": 24.5, "status": "active" }
],
"total": 128,
"limit": 2,
"offset": 0
}Where to go next
Building for a specific target? See a Google Sheets database for a website, or learn to query it like SQL.
Frequently asked questions
Can you use Google Sheets as a database?
Yes, for read-heavy content, config, and reference data at small-to-medium scale. Put a REST API in front of it so your app can query rows instead of parsing cells.
What are the limits?
Sheets is not built for high write concurrency, transactions, millions of rows, or complex joins. For those, use a traditional database.
How do I query it?
Through PasteSheet's REST API: exact filters, contains matches, full-text search, sort/order, and limit/offset — all as URL parameters.
How many rows can a Google Sheets database hold?
A single Google Sheet is capped at 10 million cells — rows times columns. That is plenty for content, config, and reference data, but not for millions of records.
How is this different from Airtable?
Airtable is a hosted relational database with its own UI and write API. A Google Sheet plus PasteSheet keeps your data in the spreadsheet your team already edits and publishes it as a read-only, cached JSON API. Choose Airtable for relational writes; choose a sheet for read-mostly data a non-engineer owns.
Sources
Related guides
Google Sheets Database for a Website
Use Google Sheets as a database for your website: serve content, listings, and copy as JSON your pages fetch. Editable by your team, cached, and code-free.
Is Google Sheets Good as a Database?
Is Google Sheets good for a database? An honest look at where a spreadsheet-backed API shines, where it breaks down, and how to use it without regret.
Turn Google Sheets Into a REST API (No Code)
Turn a public or restricted Google Sheet into a live JSON REST API with filtering, sorting, and pagination — no backend, no code.
How to Query Google Sheets With SQL
Query Google Sheets like SQL: the built-in QUERY() function for in-sheet queries, and a REST API for SQL-style filtering, sorting, and grouping from your app.
Turn your sheet into an API in minutes
Paste a Google Sheet URL and get a live REST API and MCP server — no backend, no code, free to start.