GA4 BigQuery Cost Estimator

The GA4 BigQuery export is free to turn on and easy to underestimate. Storage is cheap; the bill that surprises people is query scans, billed by the byte. This estimator splits the two so you can size the cost before you flip the switch — and see why one careless query can cost more than a month of storage.

Linking GA4 to BigQuery streams raw event data into a warehouse you can query with SQL. BigQuery’s on-demand model bills two things: active storage at about $0.02 per GB per month (halving after 90 days untouched) and queries at about $6.25 per TiB scanned, after a 1 TiB free monthly tier. This tool estimates storage from your events × bytes-per-event and query cost from the TB you scan. Pricing changes — always verify the current numbers on Google Cloud before you budget.

The calculator

GA4 BigQuery Cost Estimator inputs and result

GA4 events streamed to BigQuery monthly.
Stored size of one event row.
Total TB your queries read per month.
BigQuery on-demand includes 1 TiB free queries/month.
✓ Comfortably in low-cost territory
Estimated monthly BigQuery cost
$0.00
0storage / mo
0queries / mo
0data / mo
Export
Query cost at different monthly scan volumes
TB scanned / monthQuery costTotal with storage

Walkthrough

How to use this calculator

  1. Estimate monthly eventsPull your GA4 event count for a recent month, or multiply sessions by events-per-session. Active sites generate far more events than sessions once scroll, click and ecommerce events count.
  2. Set average bytes per eventThe nested GA4 export schema typically stores roughly 1-2 KB per event. For accuracy, divide your existing table's storage bytes by its row count.
  3. Enter the TB your queries scanThis is the cost driver. On-demand BigQuery bills by bytes read, so estimate total monthly scan volume — a few exploratory dashboards can read terabytes.
  4. Keep the free tier onOn-demand includes 1 TiB of free query scans per month. Leave the toggle on unless that allowance is already spent elsewhere in the project.
  5. Read storage vs. query splitIf queries dominate, the fix is scanning less — partition by date, cluster, and select only needed columns. Then verify the live pricing before you commit a budget.

From the desk

RGM Expert Says

Real Growth Matters — Analytics engineering practiceHow we use this tool with clients

We turn on the GA4 BigQuery export for almost every analytics client, because it unlocks raw, unsampled event data and joins to CRM and cost tables that the GA4 interface can never give you. But we set expectations on the bill in the same breath. The export itself is free; storage is genuinely cheap; the line item that blindsides teams is query cost, because BigQuery’s on-demand model charges for every byte a query reads, whether or not you use the result.

This estimator exists to separate those two costs before anyone panics or over-provisions. Nine times out of ten the storage number is trivial and the query number is the whole story. The classic mistake is a dashboard that runs SELECT * against the full events table on every refresh — that single pattern can scan terabytes a day and turn a $5 month into a $500 one. We design partitioned, clustered tables and column-selective queries so a refresh reads megabytes, not terabytes.

We label this a model on purpose. Cloud pricing moves, the free tier can change, and capacity (slot-based) pricing becomes cheaper than on-demand past a certain steady-state volume. We use the estimate to decide whether a client should stay on-demand or buy slots, then confirm against the live Google Cloud pricing page before we put a number in a budget. The tool sizes the decision; the pricing page settles it.

The math

How it works

BigQuery’s on-demand model has two independent meters. Storage bills for the bytes you keep; queries bill for the bytes they scan. This tool estimates each from your inputs:

Monthly data (GB) = (Events × Bytes per event) ÷ 1,000,000,000
Storage cost = Monthly data (GB) × $0.02 per GB
Billable query TB = Max(0, TB scanned − 1 TiB free)
Query cost = Billable query TB × $6.25 per TiB
Total = Storage cost + Query cost
  • Events × bytes — the raw size of one month's export.
  • Active storage — ~$0.02/GB/month, dropping to ~$0.01 after 90 days untouched.
  • Query (on-demand) — ~$6.25 per TiB scanned, after 1 TiB free per month.
  • Bytes scanned — what queries read, not what they return — the real cost driver.

Figures use published on-demand rates ($0.02/GB active storage, $6.25/TiB queries, 1 TiB free) and assume one month of export held as active storage. Long-term storage, streaming inserts, capacity (slot) pricing, and region can change the total. Always verify current pricing on Google Cloud before budgeting.

Why it matters

Why query cost, not storage, is the thing to watch

The instinct is to worry about storing all that event data, but storage is the cheap part. At roughly $0.02 per GB per month — and half that once a partition has sat untouched for 90 days — even a year of a busy site’s GA4 export usually costs less than a team lunch. The number that actually moves the bill is query scan, because BigQuery’s on-demand model charges about $6.25 per TiB read, regardless of how few rows the query returns.

That billing model rewards discipline and punishes SELECT *. A query that reads only the columns and date partitions it needs can cost pennies; the same logical question asked against the whole table can scan terabytes. The single highest-leverage habit is to partition the GA4 export by event date and cluster on the fields you filter most, then select explicit columns. Done well, a daily dashboard reads megabytes instead of terabytes.

Past a certain steady volume, the math flips toward capacity (slot-based) pricing, where you pay for compute capacity rather than per byte scanned. The break-even depends on how consistently you query, which is exactly why this estimator separates the two meters — and why you should always confirm the current rates and free tier on Google Cloud, since cloud pricing is not frozen.

Benchmarks

BigQuery on-demand pricing reference

Published on-demand rates as of this writing. Pricing, free tiers and regions change — treat these as a model and verify on Google Cloud.

MeterRateNote
Active storage~$0.02 / GB / monthModified within 90 days
Long-term storage~$0.01 / GB / monthUntouched 90+ days
On-demand queries~$6.25 / TiB scannedBills bytes read, not returned
Free query tier1 TiB / monthResets monthly
GA4 exportFree to enableYou pay only BigQuery costs
Rates per the Google Cloud BigQuery pricing page and the cost-control best practices. Always confirm current pricing before budgeting.

Voices worth trusting

What analytics engineers say

BigQuery bills for the bytes a query reads, not the rows it returns. Partition, cluster, and select columns — or one SELECT * will cost more than a month of storage.
RGM Analytics engineering
Field note
What gets measured gets managed — including your own warehouse spend. Preview the scan estimate before every expensive query.
Digital analytics author (paraphrase)

Go deeper

Books on measurement & data

Related on RGM

Keep learning

FAQ

Common questions

Is the GA4 BigQuery export free?
Enabling the export from GA4 to BigQuery is free. You pay only for BigQuery itself — storage of the exported data and the queries you run against it. Streaming exports can add a small ingestion cost.
How much does BigQuery storage cost for GA4 data?
Active storage is about $0.02 per GB per month and drops to roughly $0.01 per GB once a partition is untouched for 90 days. For most sites this is a small part of the bill; query cost usually dominates.
How is BigQuery query cost calculated?
On-demand queries cost about $6.25 per TiB of data scanned, after a 1 TiB free tier each month. Crucially, you pay for the bytes a query reads, not the rows it returns, so scanning fewer columns and partitions directly lowers cost.
Why did one BigQuery query cost so much?
A query that reads the entire events table — for example SELECT * with no date filter — scans every byte, which can be terabytes. Partitioning by date, clustering, and selecting explicit columns reduces bytes scanned and therefore cost.
How accurate is this estimator?
It is a planning model using published on-demand rates and your event, byte and scan inputs. It does not account for long-term storage discounts, streaming inserts, capacity pricing or region differences. Verify current pricing on Google Cloud before budgeting.
Should I use on-demand or capacity pricing?
On-demand (per byte scanned) suits variable or low-volume querying. Capacity (slot-based) pricing can be cheaper once you query large volumes consistently. Use this estimate to size the decision, then compare against current Google Cloud rates.

Related tools

Related tools