Estimate what a query costs before you run it
This recipe tells you what already happened. The analyzer takes a query you have not run yet and estimates what it will scan, in your browser.
Which BigQuery tables are costing me the most to store?
Tables ranked by storage, split into active and long-term, logical and physical.
Reads metadata only, a fraction of a cent to run (10 MB minimum)Reviewed against Google’s docs, 23 Oct 2026
Permissions. Needs bigquery.tables.get and bigquery.tables.list for TABLE_STORAGE (BigQuery Metadata Viewer has them); bigquery.jobs.create to run any query (BigQuery Job User has it).
Pick the region your data is in: every INFORMATION_SCHEMA view here is qualified by region.
SELECT
table_schema,
table_name,
total_rows,
ROUND(total_logical_bytes / POW(1024, 3), 2) AS logical_gib,
ROUND(active_logical_bytes / POW(1024, 3), 2) AS active_logical_gib,
ROUND(long_term_logical_bytes / POW(1024, 3), 2) AS long_term_logical_gib,
ROUND(total_physical_bytes / POW(1024, 3), 2) AS physical_gib,
ROUND(time_travel_physical_bytes / POW(1024, 3), 2) AS time_travel_gib,
ROUND(SAFE_DIVIDE(total_logical_bytes, total_physical_bytes), 2) AS compression_ratio
FROM `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
WHERE NOT deleted
ORDER BY total_logical_bytes DESC
LIMIT 100;What it returns
- active_logical_gib
- Modified in the last 90 days, full price.
- long_term_logical_gib
- Untouched for 90+ days, roughly half price.
- compression_ratio
- Logical ÷ physical. Above about 2 means physical billing is probably cheaper ($0.04 a GiB against $0.02), before time travel and fail-safe.
How to read it
- You are billed on either logical or physical bytes depending on the dataset's billing model, and the cheaper one differs per dataset. The compression ratio is the deciding number.
- time_travel_gib is real storage. Under physical storage billing you pay for it on top; under logical billing it is included in the rate. A table rewritten daily can carry a time-travel footprint larger than the table.
- A table with high long-term bytes is cheap to keep. Do not delete it for savings that are already half realized.
Run this once, or have it run every day.
Finitizer evaluates this class of question continuously against your live BigQuery estate, tracks how each number moves between runs, and turns findings into assigned tasks. Read-only and keyless.
See how Finitizer works