BigQuery free tier and sandbox
BigQuery gives every account 1 TiB of query processing and 10 GiB of storage free each month, and the sandbox lets you use it without a credit card. What is free, what the sandbox limits, and how fast the free TiB runs out.
BigQuery’s free tier is 1 TiB of query data processed and 10 GiB of storage each month. It is part of the Google Cloud Free Tier, and Google says the limits apply during and after the free trial. The sandbox is BigQuery without a billing account: you get the free tier and some limits, and you don’t need a credit card.
What is free
| What | Free amount | After that |
|---|---|---|
| Query processing (on-demand) | First 1 TiB per month | $6.25 per TiB (US multi-region) |
| Storage | First 10 GiB per month | $0.023 per GiB-month active logical (us-central1) |
Prices as of October 2026. BigQuery ML models and their training data stored in BigQuery count toward the 10 GiB.
Some operations are free at any volume. Loading data from Cloud Storage or a local file in a batch job is free when it uses the shared slot pool, and so are copying a table, exporting with an extract job, and deleting tables, partitions, views and functions. You still pay for storing the data afterwards. Other things that cost nothing:
- Queries that return an error
- Queries served from the query cache
- Dry runs
- Table previews,
bq headandtabledata.list, which also don’t count toward quotas. The console and Querylab.io both have a table Preview tab; Querylab.io’s shows 50 rows per page and bills nothing (see Table information)
The free query TiB counts bytes processed, so it applies to on-demand queries. See On-demand vs capacity pricing for the other model.
How far 1 TiB goes
It goes a long way if your queries read big columns once. It goes less far if you run many small queries, because every table a query reads is billed at least 10 MiB:
SELECT 1 << 40 AS free_bytes_per_month, 10 * 1024 * 1024 AS minimum_billed_bytes, DIV(1 << 40, 10 * 1024 * 1024) AS minimum_size_queries
| free_bytes_per_month | minimum_billed_bytes | minimum_size_queries | |
|---|---|---|---|
| 1 | 1099511627776 | 10485760 | 104857 |
About 104,857 queries that each read one small table use up the whole free tier. A dashboard that runs 50 small queries per page view, 100 times a day, would use 5,000 minimum-size queries a day, which is the full free TiB in about three weeks. If the same queries hit the cache, they are billed 0.
For queries over large tables the opposite is true. A single SELECT * on a few-terabyte table can use the whole month. Check the estimate first, as described in Controlling costs.
Who gets the free TiB
The pricing page lists the free TiB per month per account, and it says that pricing models “apply to accounts, not individual projects”. Google’s cost guide says “each project is provided with 1 TB of free tier querying”. The two pages disagree. The pricing page is the one the free tier is defined on, so assume one free TiB for each billing account. If you run many projects under one account, they share it.
Queries on public datasets, like bigquery-public-data, use your free TiB too. The owner of shared data doesn’t pay for queries that others run on it. The person who runs the query does.
On your bill, the free tier shows up as a credit in the Savings section of the Cloud Billing report, not as a separate line.
The sandbox
You start the sandbox by opening BigQuery in the Cloud console and creating a project without enabling billing. It is meant for trying BigQuery, and it has these limits:
- 1 TiB of query data processed each month, as in the free tier
- 10 GiB of storage. Google describes this as a lifetime limit that isn’t refunded when you delete data
- Every table, view and partition expires after 60 days by default
- No streaming inserts
- No DML statements (
INSERT,UPDATE,DELETE,MERGE) - No BigQuery Data Transfer Service
- All the usual BigQuery quotas and limits
The missing DML is the one that surprises people: you can’t update or delete rows in place.
If you use up the 1 TiB, queries fail with:
Your project exceeded quota for free query bytes scanned
The fix Google gives is to upgrade the account to a paid Cloud Billing account. Upgrading means enabling billing on the project. Google advises updating the default expiration times of your datasets after you upgrade. Check them if you want to keep your tables past 60 days.
Using the free tier without losing track
Past the free TiB, queries are billed. Two habits help. Run a dry run on anything that reads a big table. And set a custom quota on projects you share, so a bad day stops at a number you chose instead of at the 200 TiB default.