How to Control Your Snowflake Costs: A Practical Guide
The short version
Most of your Snowflake spend is a design decision
Snowflake does not overcharge you. It bills every choice your platform makes, by the second.
That is good news, because a design decision can be changed. An anonymous client of ours cut its Snowflake spend by 60%, about €50,000 per month.
Snowflake bills what you run, not what you own. Cost control is a design problem, not a procurement one.
In this article
What you will learn
- how the Snowflake bill is built, in five meters
- what a credit costs and how much each warehouse size burns
- a Snowflake pricing example, with the arithmetic
- where the money leaks, and how to find it in your own account
- how to keep spend visible, review it and negotiate from facts
How the bill works
Five meters run at once
Snowflake does not charge per user. It charges for what your workloads consume. The monthly bill is the sum of five meters:
- Virtual warehouse compute: credits burned while a warehouse runs queries, loads data or transforms it. This is usually the largest line.
- Serverless compute: features Snowflake runs for you, such as Snowpipe and dynamic tables, billed in compute-hours at rates that depend on the feature.
- Cloud services: authentication, query optimization and metadata work. It is only billed when it exceeds 10% of your daily warehouse usage, so a high ratio is a warning sign.
- Storage: compressed data, plus clones, Time Travel history and Fail-safe copies.
- Data transfer: moving data into Snowflake is free. Moving it to another region or another cloud is charged per byte.
Most of the savings sit in the first two. The surprises tend to come from the last three, because nobody watches them.
Credits
Snowflake warehouse sizes and credits per hour
A credit is the unit warehouses burn. Each size up doubles the rate:
- X-Small: 1 credit per hour
- Small: 2
- Medium: 4
- Large: 8
- X-Large: 16
- 2X-Large: 32, then 64, 128, 256 and 512 up to 6X-Large
Billing is per second, with a 60-second minimum each time a warehouse starts. Auto-suspend is on by default, which is why a warehouse that someone has set to never suspend deserves a question. The full rate table is in the Snowflake warehouse documentation.
Snowflake credit cost by edition and region
The price per credit depends on your edition, cloud, region and contract. Snowflake publishes the list prices in USD in its Service Consumption Table. On demand in AWS Frankfurt or Dublin, a credit costs $2.60 on Standard, $3.90 on Enterprise and $5.20 on Business Critical. In US East it is $2.00, $3.00 and $4.00. Use your own contract rate in every estimate below.
A pricing example
What one medium warehouse costs per month
Snowflake offers an official pricing calculator. This example shows the arithmetic behind it. Take a team that stores half a terabyte and runs a medium warehouse two hours a day, five days a week.
- Compute: 2 hours × 5 days × 4.33 weeks is about 43 hours a month. At 4 credits an hour that is about 173 credits.
- On Standard in an EU region ($2.60 per credit): about $450 a month.
- On Enterprise in an EU region ($3.90 per credit): about $675 a month.
- Storage: half a terabyte at about $23 to $24.50 per terabyte is roughly $12 a month. It barely moves the total.
Now take the same medium warehouse and never let it suspend. That is 730 hours a month, or 2,920 credits, about 17 times as much. On Enterprise in an EU region that is roughly $11,400 a month for the same work.
The warehouse did not get slower or faster. It just kept the meter running.
Where the money leaks
Six places to check first
- Auto-suspend. Idle warehouses burn credits. Set a short suspend time on every warehouse that does not need to stay warm.
- Warehouse size. Each size up doubles the hourly rate. Start small and scale only when a workload proves it needs it.
- AI features. Cortex functions consume credits per use. Batch experiments and watch the burn before they reach production.
- Time Travel retention. The default is 1 day. Enterprise edition and above allow up to 90 days, plus 7 days of Fail-safe, and all of it is billed as storage. Keep long retention for data that needs it.
- Cross-region and cross-cloud transfers. Replication and data sharing across regions or clouds incur egress charges. Within one region it is free.
- Cloud services ratio. If cloud services regularly exceed 10% of warehouse compute, look for constant creating and dropping of objects or very chatty tooling.
Finding the waste
Start with what each warehouse burns while idle
You do not need a new tool to find this. Snowflake already records it in the account usage views, which keep 365 days of history.
The warehouse metering history shows credits per warehouse per hour. It also shows how many of those credits went to running queries, which excludes idle time. The gap between the two is what the warehouse burned doing nothing. Sort warehouses by that gap and the first conversation writes itself.
The data lags by up to three hours, so this is a daily check, not a live dashboard.
Then check whether the size fits the work
The query history records the warehouse size, elapsed time, queue time and how much data spilled to storage for every query. Two patterns matter:
- Short, light queries on a large warehouse. You are paying a large hourly rate for work a smaller size would finish just as fast.
- Heavy spilling to remote storage. The warehouse is too small for that workload, so queries slow down and the saving from the small size disappears.
Right-sizing is not always smaller. It is the size where the query stops getting faster.
Governance
Make spend visible to whoever causes it
Cost control decays unless someone owns it. Tag warehouses by team or data product so every credit has an owner, then add two controls, because each covers a different part of the bill.
- Resource monitors set a credit quota for warehouses and can notify, suspend, or suspend immediately when usage reaches a threshold. They apply to warehouses only.
- Budgets cover what resource monitors cannot, such as serverless features and AI services.
The aim is not to limit what teams build. It is to make sure the person who starts a workload can see what it costs.
A review rhythm
Three numbers, every week
A fixed weekly review keeps savings from drifting away. Keep it short and look at the same three numbers every time:
- Idle share: the part of each warehouse's credits that did not run queries.
- Credits by owner: spend by team or data product, compared with last week.
- Spend against the limit: credits used against resource monitor quotas and budgets.
One person owns the review and one person can act on it. Without both, the dashboard exists and the spend still grows.
Pricing and contracts
Negotiate from your own usage, not from a quote
Snowflake credits are bought on demand, invoiced in arrears, or as capacity, a set dollar amount of usage purchased up front. The capacity price is the on-demand price with the discount from your order form applied. The risk runs both ways. Commit too little and you pay the on-demand price. Commit too much and you pay for credits you never use.
That is why cleaning up first matters. A renewal forecast built on a bloated baseline commits you to the waste. A forecast built on the cleaned-up usage, using the 365 days of history Snowflake already holds, gives you a number you can defend in the negotiation.
In practice
A 60% cut at an anonymous client
An anonymous client of ours, which spent about €1 million a year on Snowflake, now saves about €50,000 per month. That is about €600,000 a year, or 60% of its previous spend.
We cannot share the client's name or the exact changes. What we can share is the order of work, which is the structure of this article:
- Measure where credits go and how much of it is idle or oversized.
- Fix the cheap wins first: suspend times, warehouse sizes and retention.
- Put an owner, a budget and a weekly review on everything that remains.
- Renegotiate the contract from the cleaned-up usage.
What to do now
Six questions to start with
- Which warehouses never suspend, and why?
- Which workloads run on a larger size than they need?
- What is your actual price per credit, and does your forecast use it?
- Which teams can see what their workloads cost?
- Where is Time Travel retention longer than the data needs?
- Which AI features are running, and who pays for them?
If you cannot answer most of these in a few minutes, the first savings are usually in the answers.
FAQ
How much does Snowflake cost?
Snowflake charges for what you use: warehouse compute in credits, serverless features, cloud services above a threshold, storage per terabyte and data transfer out of region or cloud. The price per credit depends on edition, cloud, region and contract. A medium warehouse used two hours a day, five days a week costs about $450 a month on Standard and about $675 on Enterprise in an EU region.
Is Snowflake expensive?
It can be, but the bill follows your design, not your headcount. The same medium warehouse costs about $675 a month when it runs only when needed and about $11,400 when it never suspends. Most of that difference is configuration, not price.
What is a Snowflake credit?
A credit is the unit Snowflake uses to bill compute. A warehouse burns credits per hour according to its size, billed per second with a 60-second minimum each time it starts.
How many credits does a Snowflake warehouse use?
An X-Small warehouse uses 1 credit per hour, Small 2, Medium 4, Large 8 and X-Large 16. Each size up doubles the rate, up to 512 credits per hour for 6X-Large.
How do you reduce Snowflake costs?
Start with the largest meter, warehouse compute. Enable short auto-suspend, right-size warehouses, review AI feature usage, shorten Time Travel retention where it is not needed and avoid unnecessary cross-region transfers. Then make spend visible by owner so it stays down.
How do you find idle warehouse spend in Snowflake?
Use the warehouse metering history in the account usage views. Compare the credits a warehouse used with the credits attributed to queries. The difference is idle time.
Does Snowflake charge for data transfer?
Not for loading data in. Snowflake charges per byte when data leaves your account for another region or another cloud. Transfers within the same region are free.
How long does Snowflake Time Travel keep data?
One day by default. On Enterprise edition and above, permanent tables can be set up to 90 days. After that, Fail-safe holds data for another 7 days. The extra retention is billed as storage.
You do not control Snowflake costs by negotiating harder. You control them by deciding what runs.
Related: How to Make Snowflake AI-Ready Without Rebuilding Your Data Platform.


