---
title: "BigQuery Sandbox: Free Limits, Setup and Upgrade"
canonical: "https://www.owox.com/blog/articles/bigquery-sandbox"
updated: "2026-10-26"
---

# 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.

[Google BigQuery](/blog/topics/bigquery) · Updated October 16, 2026 · [Alyona Samovar](/team/alyona-samovar) · 10 min read

![BigQuery sandbox: free limits, setup and what happens when you upgrade](https://cdn.owox.com/www/content-marketing-article/bigquery-sandbox/thumbnail/1-10fo58.png/public)

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._

## What the sandbox limits are

Google’s [sandbox page](https://cloud.google.com/bigquery/docs/sandbox) (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](/blog/articles/bigquery-data-manipulation-language) 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](https://cloud.google.com/bigquery/docs/scheduling-queries) (read in October 2026) says scheduled queries “use features of BigQuery Data Transfer Service”.

## 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](/blog/articles/bigquery-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:

1.  **`LIMIT` does not reduce the bytes** on an ordinary table, as the dry runs above show. Google’s [pricing page](https://cloud.google.com/bigquery/pricing) (read in October 2026) notes one exception: on a clustered table, `LIMIT` can reduce the bytes scanned.
2.  **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.

## 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.

1.  Open BigQuery Studio at `https://console.cloud.google.com/bigquery`.
2.  Sign in with a Google account, or create one.
3.  On the welcome page, pick your **Country**, tick the **Terms of Service** box, optionally tick **Email updates**, and click **Agree and continue**.

![The Google Cloud welcome page, with country and terms of service to accept before continuing.](https://cdn.owox.com/www/webflow/678eae34d4036bb81a1d8f61_58111.png/public)

4.  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.

![The New Project form, with a project name, a location and a Create button.](https://cdn.owox.com/www/webflow/678eae345f7c7367aad0a33f_58115.png/public)

5.  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

Google Analytics 4 can write its BigQuery export to a sandbox project. Google’s [Set up BigQuery Export](https://support.google.com/analytics/answer/9823238) 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](https://support.google.com/analytics/answer/7029846) 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_YYYYMMDD` table 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](/blog/articles/ga4-bigquery-export-event-table-schema-and-dates) and [querying GA4 event data](/blog/articles/query-ga4-event-data-in-bigquery).

## 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](https://cloud.google.com/bigquery/pricing) for the free tier, which it says is available “during and after the free trial period”, and Google’s [free features page](https://cloud.google.com/free/docs/free-cloud-features) 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](/blog/articles/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

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](https://cloud.google.com/billing/docs/how-to/modify-project) (read in October 2026):

1.  Open the **My projects** page in the **Billing** section of the Google Cloud console. A sandbox project shows “Billing is disabled”.

![The Billing page listing a project with billing disabled.](https://cdn.owox.com/www/webflow/678eae333cdb460791aa9a2e_58127.png/public)

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

![The Actions menu on a project with billing disabled, offering Change billing.](https://cdn.owox.com/www/webflow/678eae3440ccde6ecaa557ae_58129.png/public)

3.  Pick a billing account and click **Set account**.

![The Set the billing account dialog, listing the billing accounts you manage.](https://cdn.owox.com/www/webflow/678eae33c67ca29fd270cc76_58131.png/public)

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](https://cloud.google.com/bigquery/docs/updating-datasets) (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](/blog/articles/bigquery-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](/blog/articles/bigquery-to-csv-export) to a spreadsheet by hand, which works until the second request. In [OWOX Data Marts](https://www.owox.com/app-signup), 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 [data model](/product/data-modeling) 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](/blog/articles/google-bigquery-functions-overview).

## FAQ

## 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.

## Who wrote this

![Alyona Samovar](https://cdn.owox.com/www/webflow/6799099d337aa8a997b03b56_Alyona-Samovar.png/public)

[Alyona Samovar](/team/alyona-samovar) Senior Digital Analyst

Alyona Samovar is a Senior Digital Analyst who spent years at OWOX helping enterprise clients design analytics systems, build BigQuery reporting pipelines, and optimize marketing measurement. She specializes in SQL-based analytics, data modeling, and turning raw marketing data into actionable insights. Alyona writes about practical analytics workflows, BigQuery best practices, and data-driven decision-making.

[Google BigQuery](/blog/topics/bigquery)

## Related articles

[Google BigQuery · How to Load Data into BigQuery: Every Method and When to Use It · October 6, 2026](/blog/articles/loading-data-into-bigquery)

[Google BigQuery · Is BigQuery a Data Warehouse or a Data Lake? A Marketing Guide · October 6, 2026](/blog/articles/why-gbq-perfect-data-lake)

[Google BigQuery · BigQuery Aggregate Functions: COUNT, SUM, STRING\_AGG, ARRAY\_AGG and More · October 16, 2026](/blog/articles/bigquery-aggregate-functions)

[See all articles →](/blog/articles)

## Links

Pages this page links to, on this site and on docs.owox.com. Where the page has a Markdown twin, its address follows the link.

- [Google BigQuery](https://www.owox.com/blog/topics/bigquery) — /blog/topics/bigquery.md
- [Alyona Samovar](https://www.owox.com/team/alyona-samovar) — /team/alyona-samovar.md
- [DML](https://www.owox.com/blog/articles/bigquery-data-manipulation-language) — /blog/articles/bigquery-data-manipulation-language.md
- [public datasets](https://www.owox.com/blog/articles/bigquery-public-datasets) — /blog/articles/bigquery-public-datasets.md
- [GA4 BigQuery Export guide](https://www.owox.com/blog/articles/ga4-bigquery-export-event-table-schema-and-dates) — /blog/articles/ga4-bigquery-export-event-table-schema-and-dates.md
- [querying GA4 event data](https://www.owox.com/blog/articles/query-ga4-event-data-in-bigquery) — /blog/articles/query-ga4-event-data-in-bigquery.md
- [BigQuery pricing](https://www.owox.com/blog/articles/bigquery-pricing) — /blog/articles/bigquery-pricing.md
- [partitioned tables](https://www.owox.com/blog/articles/bigquery-partitioned-tables) — /blog/articles/bigquery-partitioned-tables.md
- [export a result](https://www.owox.com/blog/articles/bigquery-to-csv-export) — /blog/articles/bigquery-to-csv-export.md
- [OWOX Data Marts](https://www.owox.com/app-signup)
- [data model](https://www.owox.com/product/data-modeling) — /product/data-modeling.md
- [BigQuery functions overview](https://www.owox.com/blog/articles/google-bigquery-functions-overview) — /blog/articles/google-bigquery-functions-overview.md
- [Google BigQuery · How to Load Data into BigQuery: Every Method and When to Use It · October 6, 2026](https://www.owox.com/blog/articles/loading-data-into-bigquery) — /blog/articles/loading-data-into-bigquery.md
- [Google BigQuery · Is BigQuery a Data Warehouse or a Data Lake? A Marketing Guide · October 6, 2026](https://www.owox.com/blog/articles/why-gbq-perfect-data-lake) — /blog/articles/why-gbq-perfect-data-lake.md
- [Google BigQuery · BigQuery Aggregate Functions: COUNT, SUM, STRING_AGG, ARRAY_AGG and More · October…](https://www.owox.com/blog/articles/bigquery-aggregate-functions) — /blog/articles/bigquery-aggregate-functions.md
- [See all articles →](https://www.owox.com/blog/articles) — /blog/articles.md
