Docs /Metadata and operations /Quotas and limits
Metadata and operationsOperations

BigQuery quotas and limits that matter

The BigQuery limits people actually run into, grouped by what you are doing. 1,500 writes per table per day, 5 metadata updates per table per 10 seconds, 2 concurrent UPDATEs per table, 10,000 partitions, 2,000 on-demand slots, a 6-hour query limit and a default 200 TiB daily query quota.

Google’s quota page lists hundreds of limits. Most never matter. This page collects the ones that do, grouped by what you are doing when you hit them, with what to do instead. Quotas marked “per project” can often be raised through Google Cloud support; limits are fixed. All values are from Google’s quota page as of October 2026.

Writing to tables

LimitValueWhen it bites
Table modifications per table per day1,500loading or appending to one table every minute; failed jobs count too
Table metadata updates per table5 per 10 seconds (50 for partitioned tables)scripts that ALTER or write the same table in a tight loop
Partition modifications per column-partitioned table per day30,000(11,000 for ingestion-time partitioning)
Concurrent UPDATE / DELETE / MERGE per table2 running, 20 queuedmany small updates from an application
INSERT statements per table per day before throttling1,500, then 10 at a timerow-by-row inserts
DML statements per table25 every 10 seconds

DML statements and streaming don’t count toward the 1,500 table modifications. The fix for most of these is to batch: collect changes and apply them with one MERGE or one load, or stream with the Storage Write API. See INSERT, UPDATE and DELETE, Loading data and Streaming.

Tables and schemas

LimitValue
Partitions per partitioned table10,000
Columns per table, query result or view10,000
Nesting depth of structs15 levels
Column name length300 characters
Nested view levels16
Clones and snapshots of one base table1,000
Row sizeabout 100 MB

10,000 partitions is 27 years of daily partitions, but only about 13 months of hourly ones, and integer-range partitioning runs into it quickly. Partition by a coarser unit or cluster instead. See Partitioning.

Queries

LimitValue
Query run time6 hours (a query may be retried internally, so up to 18 hours in total)
Query text1,024k characters; 12 MB after views and functions are expanded
Tables, views and functions referenced by one query1,000
Query parameters10,000
Response size10 GB compressed; larger results must be written to a table
Queued interactive queries per project1,000
Queued batch queries per project20,000
Concurrent scripts per project1,000
Concurrent queries with remote functions10

Compute and cost

LimitValue
Concurrent slots, on-demand2,000 per project, 20,000 per organization (bursts above are possible)
Query bytes per day, on-demand200 TiB per project by default; per user unlimited by default
Free query bytes1 TiB per month per billing account

The 200 TiB daily default is only a safety net. At the US on-demand price it is about $1,250 a day. Set a lower custom quota for the project and for each user. Querylab.io has its own daily, weekly and monthly byte budgets, but they apply only to queries run from the app (cost limits), so they don’t replace a quota. See Controlling costs.

Jobs

LimitValue
Load jobs per project per day100,000
Extract jobs per project per day100,000
Copy jobs per project per day100,000
Data per load job15 TB
Table data per exported file1 GB (use a wildcard URI for more)
Pending jobs per project and region50,000

Streaming

LimitValue
Storage Write API (gRPC) throughput3 GB/s in us/eu, 300 MB/s elsewhere
Storage Write API (gRPC) connections5,000 per region, 20,000 per multi-region
REST streaming throughput1 GB/s in us/eu, 300 MB/s elsewhere
REST request10 MB, 50,000 rows (500 recommended)

Seeing your usage

Quota errors name the quota, such as Exceeded rate limits: too many table update operations for this table or Your table exceeded quota for imports or query appends per table. The Quotas page in the Cloud console shows current usage for the quotas with a console entry, and INFORMATION_SCHEMA.JOBS shows the jobs behind it. Querylab.io’s query history lists the jobs of your projects, including ones run by other tools, and searches them by status and error message. See Common errors and Monitoring jobs and costs.

A rate limit error (rateLimitExceeded) is temporary: retry with exponential backoff. A daily quota error doesn’t clear until the quota window moves on.