BigQuery sandbox: free limits, setup and what happens when you upgrade
The BigQuery sandbox lets you use BigQuery with no billing account and no credit card. This guide lists its limits as Google states them in October 2026, including the 10 GiB storage cap that deleting data does not give back, shows how far 1 TiB of free queries goes with tested byte counts, walks through setup and the upgrade, and explains why tables made in the sandbox still expire after you add billing.
The BigQuery sandbox is BigQuery with no billing account attached. You sign in with a Google account, create a project, and query, without a credit card. In exchange, Google caps storage and compute, deletes every table after 60 days, and switches off a few features.
| Sandbox rule | What it means in practice |
|---|---|
| No billing account, no credit card | nothing can be charged |
| 10 GiB of storage, lifetime | deleting data does not give the space back |
| 1 TiB of query data processed per month | the same as the free tier on a billed account |
| Tables, views and partitions expire after 60 days | your work disappears unless you upgrade |
| No streaming, no DML, no Data Transfer Service | no INSERT/UPDATE/DELETE, no scheduled queries |
| Upgrade = enable billing on the project | old tables keep their 60-day expiry until you change it |
Note: Originally published in April 2024. Fully rewritten in October 2026: the limits are quoted from Google’s sandbox and pricing pages as read on 16 October 2026, and every byte count and result below was produced by running the query in BigQuery on 16 October 2026.
Reading to get this done?
What the sandbox limits are
Google’s sandbox page (read in October 2026) lists these limits:
- All BigQuery quotas and limits apply. The sandbox is not a smaller engine; it is the same BigQuery with extra caps.
- Storage: a lifetime limit of 10 GiB. Google adds that this quota “is not refunded upon data deletion”. Loading 8 GiB, deleting it and loading it again does not work: you have used 8 of your 10.
- Compute: 1 TiB of processed query data each month, the same as the BigQuery free tier.
- Expiration: every dataset has a default table expiration, and all tables, views and partitions expire after 60 days.
- Not supported: streaming data, data manipulation language (DML) statements, and the BigQuery Data Transfer Service.
The last line has two effects most guides skip. No DML means no INSERT, UPDATE, DELETE or MERGE; you build tables with CREATE TABLE ... AS SELECT or by loading files instead. And no Data Transfer Service means no scheduled queries, because Google’s scheduled queries page (read in October 2026) says scheduled queries “use features of BigQuery Data Transfer Service”.
How far 1 TiB of free queries goes
How far 1 TiB of free queries goes
BigQuery bills on-demand queries by the bytes read in the columns you select. The fastest way to use up the sandbox is SELECT *. Google’s own sandbox tutorial queries the NYC Citi Bike trips table in the public datasets, so here is that table, counting trips per start station:
SELECT
start_station_name,
COUNT(*) AS num_trips
FROM `bigquery-public-data.new_york.citibike_trips`
GROUP BY start_station_name
ORDER BY num_trips DESC
LIMIT 5;| start_station_name | num_trips |
|---|---|
| E 17 St & Broadway | 291615 |
| 8 Ave & W 31 St | 291577 |
| Lafayette St & E 8 St | 277060 |
| W 21 St & 6 Ave | 275348 |
| West St & Chambers St | 260911 |
The job processed 699,461,121 bytes and billed 700,448,768 (668 MiB). The table holds 33,319,019 rows and 4,916,537,671 bytes; the query read one column of fifteen. Here is what the same table costs with different queries, measured with a dry run:
Query on citibike_trips |
Bytes processed | Runs that fit in 1 TiB |
|---|---|---|
start_station_name with GROUP BY, LIMIT 5 |
699,461,121 | about 1,570 |
same, no LIMIT |
699,461,121 | about 1,570 |
SELECT * ... LIMIT 10 |
4,916,537,671 | about 220 |
Two rules fall out of that table:
LIMITdoes not reduce the bytes on an ordinary table, as the dry runs above show. Google’s pricing page (read in October 2026) notes one exception: on a clustered table,LIMITcan reduce the bytes scanned.- Selecting all columns cost seven times more than selecting one, for ten rows of output.
The query editor shows the estimate before you run it, next to a check mark. In the sandbox, read it every time.
Small queries have a floor. Google charges a minimum of 10 MB per table referenced and per query. A week of the public GA4 sample:
SELECT
event_date,
COUNT(*) AS events,
COUNT(DISTINCT user_pseudo_id) AS users
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20210101' AND '20210107'
GROUP BY event_date
ORDER BY event_date;| event_date | events | users |
|---|---|---|
| 20210101 | 22096 | 2160 |
| 20210102 | 23599 | 2581 |
| 20210103 | 24743 | 2579 |
| 20210104 | 31395 | 3079 |
| 20210105 | 42827 | 4101 |
| 20210106 | 56076 | 5486 |
| 20210107 | 44473 | 4171 |
It processed 7,518,449 bytes and billed 10,485,760: the 10 MB minimum. Without the _TABLE_SUFFIX filter the dry run reads 131,761,313 bytes for the whole sample, about 17 times more.
Hand this to your AI
Don't start from scratch. Have your AI assistant lay the foundation with you.
Set up a data foundation for my team: connect my data, model the business, and see the numbers everyone trusts.
How to track what you have used this month
How to track what you have used this month
To see how much of the 1 TiB you have used, query the jobs view. Run this in your sandbox project, changing region-us to the location of your data:
SELECT
COUNT(*) AS queries,
ROUND(SUM(total_bytes_billed) / POW(1024, 4), 3) AS tib_billed,
ROUND(100 * SUM(total_bytes_billed) / POW(1024, 4), 1) AS pct_of_free_tib
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE job_type = 'QUERY'
AND creation_time >= TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), MONTH);| queries | tib_billed | pct_of_free_tib |
|---|---|---|
| 2084 | 0.529 | 52.9 |
That result is from our own test project between 1 and 16 October 2026: 2,084 queries had used 52.9% of a terabyte. The view covers one project in one region; on a billed account the free 1 TiB is counted per billing account, so add up every project on it.
How to start the sandbox
These steps follow Google’s sandbox page as read in October 2026.
- Open BigQuery Studio at
https://console.cloud.google.com/bigquery. - Sign in with a Google account, or create one.
- On the welcome page, pick your Country, tick the Terms of Service box, optionally tick Email updates, and click Agree and continue.

- Click Create project. On the New Project page, enter a Project name. For Organization, choose one or No organization; accounts managed by a school or company must choose their organization. If asked for a Location, click Browse and pick one.

- Click Create. You return to BigQuery, and a sandbox notice appears at the top of the page.
There is no separate “sandbox login”. The sandbox is a state of a project: any project without billing is in it. Public datasets are already visible in the bigquery-public-data project, so you can run the queries above straight away. To bring your own data, load a CSV or a Google Sheet as a table; it counts against the 10 GiB and expires in 60 days.
What the GA4 export does in a sandbox
What the GA4 export does in a sandbox
Google Analytics 4 can write its BigQuery export to a sandbox project. Google’s Set up BigQuery Export page (read in October 2026) says you can export “to the BigQuery sandbox free of charge (sandbox limits apply)”. Those limits change what you get:
- Daily export only. Google’s export schema page says that in the sandbox “there is no intraday import of events”. The streaming export, which fills
events_intraday_YYYYMMDD, needs an upgraded project. - 60 days of history at most. Each
events_YYYYMMDDtable is a table in the sandbox, so it expires 60 days after it is created, and the export does not send past days again, so expired days are gone. - The 10 GiB cap stops the export. Google lists “Cloud project over quota” as a reason export tables stop populating and notes the quota “is small for free projects (10GB)”. It also warns that switching the project from free to paid can make the export fail if the project is already over 10 GB.
For a site you want to analyse for longer than two months, enable billing before linking GA4. How to link the property and read the tables is in the GA4 BigQuery Export guide and querying GA4 event data.
Sandbox, free tier and free trial
Sandbox, free tier and free trial
| BigQuery sandbox | Free tier on a billed account | Google Cloud Free Trial | |
|---|---|---|---|
| Card or billing account | none | billing account required | card or other payment method at signup |
| Query processing | 1 TiB a month | first 1 TiB a month free | free tier plus $300 of credit |
| Storage | 10 GiB, lifetime | first 10 GiB a month free | free tier plus credit |
| Table expiration | 60 days | none by default | none by default |
| DML, streaming, transfers | not available | available, billed | available, paid from credit |
| Ends | when you enable billing | does not end | after 90 days or when the $300 is spent |
Sources, read in October 2026: Google’s BigQuery pricing page for the free tier, which it says is available “during and after the free trial period”, and Google’s free features page for the trial. Beyond the free tier, on-demand queries cost $6.25 per TiB on the pricing page; more on that in BigQuery pricing.
The difference that matters most is storage. On a billed account the 10 GiB is free each month; in the sandbox it is a one-time allowance.
How to upgrade, and the expiration trap
How to upgrade, and the expiration trap
Google’s upgrade instructions are two lines: enable billing for the project, then choose a pricing model. In the console, per the Cloud Billing docs (read in October 2026):
- Open the My projects page in the Billing section of the Google Cloud console. A sandbox project shows “Billing is disabled”.

- In the project’s row, open the Actions menu and choose Change billing.

- Pick a billing account and click Set account.

The project is now out of the sandbox. Your existing tables are not safe yet. Google’s sandbox page says you “should update the default expiration times” after upgrading, and its dataset docs (read in October 2026) explain why: when you change a dataset’s default, “any tables that already exist expire according to the original table expiration setting”. Changing the dataset protects new tables only. Every old table still has a date on it.
Clear the dataset defaults first. This statement was validated by dry run, not run:
ALTER SCHEMA your_dataset
SET OPTIONS (
default_table_expiration_days = NULL,
default_partition_expiration_days = NULL
);Then clear each existing table and view. Rather than typing them, generate the statements from INFORMATION_SCHEMA. Shown here against the public new_york dataset so the output is visible; replace it with your dataset:
SELECT
FORMAT('ALTER %s `%s.%s` SET OPTIONS (expiration_timestamp = NULL);',
IF(table_type = 'VIEW', 'VIEW', 'TABLE'), table_schema, table_name) AS statement
FROM `bigquery-public-data.new_york.INFORMATION_SCHEMA.TABLES`
ORDER BY table_name
LIMIT 3;| statement |
|---|
ALTER TABLE `new_york.311_service_requests` SET OPTIONS (expiration_timestamp = NULL); |
ALTER TABLE `new_york.citibike_stations` SET OPTIONS (expiration_timestamp = NULL); |
ALTER TABLE `new_york.citibike_trips` SET OPTIONS (expiration_timestamp = NULL); |
Views need ALTER VIEW: in our dry run, ALTER TABLE on a view failed with “ALTER TABLE SET OPTIONS only supports setting options for tables”. Both forms passed the dry run on the right object type. For partitioned tables, also check the table’s own partition_expiration_days option, since the sandbox applies the 60 days to partitions too.
Do this soon after upgrading. A table created on day one of a sandbox project is deleted on day 60 whether or not billing is on. Before you do, set a budget alert on the billing account; the free tier still applies after the upgrade, but nothing stops a SELECT * on a large table from passing it.
When you outgrow the sandbox
The sandbox is good for learning SQL, testing a public dataset and checking whether BigQuery fits. It stops being enough on the day a query result has to reach someone else on a schedule: there are no scheduled queries, and the tables behind a report vanish after 60 days.
After the upgrade, the usual next step is to export a result to a spreadsheet by hand, which works until the second request. In OWOX Data Marts, you publish the query once as a Data Mart and deliver it to Google Sheets, Data Studio, Excel, email or Slack on a schedule, with one model behind every report. OWOX Data Marts runs your SQL as written, in your own BigQuery project, and does not transform the data. The function families you will use in that SQL are mapped in the BigQuery functions overview.
Hand this to your AI
Don't start from scratch. Have your AI assistant lay the foundation with you.
The ask
Set up a data foundation for my team: connect my data, model the business, and see the numbers everyone trusts.
Who answers
Your assistant interviews you about your sources and goals; OWOX Data Marts hold the models and the SQL.
The handoff
Open the prompt in your assistant. It reads this page, asks what it is missing, and sets OWOX up with you.
The result
Published Data Marts you can use in Sheets and ask about in your own AI chat.
Example from our demo shop
7 sources, 75 Data Marts
Seven ad platforms, the store and a plan sheet become 75 published Data Marts in 7 business contexts, joined by defined relationships and read by the same assistant.
We ran this on 9 November 2026.
Prefer to start on your own? Get started free
Frequently Asked Questions
How do I upgrade from the BigQuery sandbox to a paid account?
Enable billing on the project: in Manage billing accounts, open the My projects tab, choose Change billing from the project's Actions menu and click Set account. Then clear the 60-day expiration on the dataset defaults and on every existing table and view, because tables created in the sandbox keep their original expiration after the upgrade.
What are the limits of the BigQuery sandbox?
As of October 2026, Google gives the sandbox a lifetime 10 GiB of storage that is not refunded when you delete data, 1 TiB of processed query data per month, and a 60-day expiration on all tables, views and partitions. Streaming, DML statements such as INSERT and UPDATE, and the BigQuery Data Transfer Service, which scheduled queries depend on, are not supported.
How do I set up the BigQuery sandbox?
Open console.cloud.google.com/bigquery, sign in with a Google account, choose your country and accept the terms on the welcome page, then create a project. A project without a billing account is in the sandbox, and a sandbox notice appears on the BigQuery page; no credit card is asked for.
Who should use the BigQuery sandbox?
Anyone learning BigQuery SQL, trying public datasets or checking whether BigQuery fits before asking for a billing account. It is not suited to reporting that must run on a schedule or keep data longer than 60 days.
What is the BigQuery sandbox?
It is BigQuery used in a Google Cloud project with no billing account, so nothing can be charged and no credit card is needed. It runs the same BigQuery engine, with caps on storage and queries, a 60-day table expiration and a few features switched off.
Is the BigQuery sandbox the same as the BigQuery free tier?
No. Both give 1 TiB of free queries a month, but the free tier on a billed account gives 10 GiB of storage free every month with no table expiration, while the sandbox gives 10 GiB once and deletes tables after 60 days.
