Firepulse · Developer tools · Free estimator

Firestore Cost & Usage Estimator

Project your monthly Firebase bill before it arrives.

Enter your expected monthly Firestore reads, writes, deletes, stored data, and outbound bandwidth. The estimator applies the current Firestore pricing tiers, subtracts the free allowance, and shows you the cost breakdown by line item — so you can optimise before you scale.

Firepulse app icon
Want live Firebase metrics on your phone?
Firepulse reads Firestore, Crashlytics, and Analytics — read-only, no laptop needed.
Get on Google Play

Monthly usage inputs

Free tier: 1,500,000/month (50K/day)
Free tier: 600,000/month (20K/day)
Free tier: 600,000/month (20K/day)
Free tier: 1 GB included
Free tier: 10 GB/month
Monitor Firestore usage in real time — on your phone, read-only
Firepulse shows live reads/writes, Crashlytics, and Analytics across all your Firebase projects — no laptop, no browser tabs.
Get it on Google Play

How Firestore billing works

Firestore charges on four independent meters. Understanding each one is the difference between a $5 bill and a $500 surprise at end of month.

Document reads

$0.06 per 100,000 reads

Every document returned by a get, query, or real-time listener snapshot counts as one read. A query returning 200 documents costs 200 reads regardless of how many fields you actually access. The free tier gives 50,000 reads per day (~1.5M/month).

Document writes

$0.18 per 100,000 writes

Each set, add, or update counts as one write — even if you only change a single boolean field. Transactions count each write separately. Multi-region deployments (nam5, eur3) multiply writes by ~1.2× due to replication overhead. Free tier: 20,000 writes/day.

Storage

$0.18 per GB stored

Storage includes document data, indexes, and metadata. Indexes are often larger than the raw document data — every array field and map creates additional index entries. The free tier includes 1 GB of total storage. Deleting documents reduces storage costs but not immediately.

Outbound bandwidth

$0.12 per GB egress

Data transferred from Firestore to your clients counts as egress. Reads from the same Google Cloud region as your Firestore instance are free. Cross-region reads within GCP are reduced rate. Reads from outside GCP (mobile apps, browsers) incur the full $0.12/GB rate. Free tier: 10 GB/month.

Firestore pricing reference (2026)

Meter Free tier Paid rate
Document reads 50,000 / day $0.06 / 100K
Document writes 20,000 / day $0.18 / 100K
Document deletes 20,000 / day $0.02 / 100K
Storage 1 GB $0.18 / GB
Outbound bandwidth 10 GB / month $0.12 / GB

Source: Firebase pricing page. Free tier amounts are daily limits for reads/writes/deletes and a monthly limit for storage and bandwidth. Multi-region instances (nam5, eur3) apply a ~1.2× multiplier to write operations only.

How to reduce your Firestore bill

Strategy 1 — Cache aggressively

Use Firestore offline persistence

Firestore's built-in offline cache serves documents from local storage without hitting the network. For read-heavy apps, this alone can reduce billed reads by 30–70%. Enable it with enableIndexedDbPersistence() on web or the default SDK cache on iOS/Android.

Strategy 2 — Denormalise data

Reduce documents per screen

Each document read in a query costs one read. A screen loading a list of 20 items reads 20 documents. Denormalising frequently co-read data into fewer documents can cut reads dramatically. Store derived counts and summaries directly in parent documents rather than aggregating from subcollections.

Strategy 3 — Limit query results

Always use .limit() on queries

An unbounded query on a collection that grows over time will progressively increase read counts. Paginate with .limit(25) and cursor-based pagination. A feed of 100 posts returning 100 documents per load at 10,000 daily active users = 1 million reads per day, just for one screen.

Strategy 4 — Debounce writes

Batch updates instead of per-keystroke writes

Real-time sync features (collaborative editing, live presence) can generate enormous write counts. Use debounce timers (500ms–2s) to batch rapid state changes into single writes. Firestore's WriteBatch API lets you bundle up to 500 writes into a single atomic operation counted as 500 writes — but it eliminates round-trip overhead.

Strategy 5 — Prune indexes

Disable single-field index exemptions

Firestore automatically creates indexes on every field in every document. For large text fields, array fields, and map fields with high cardinality, these auto-indexes consume significant storage and add write overhead. Use the Firestore console to add single-field index exemptions for fields you never query.

Strategy 6 — Monitor in Firepulse

Watch usage trends on your phone

Firestore cost surprises usually follow a usage spike — a blog post goes viral, a feature ships with a missing .limit() call, or a new release triggers a read storm. The Firepulse app tracks Firestore reads and writes across all your projects. Get a daily digest notification before the month-end bill arrives.

How to use this estimator

Step 1 — Find your usage numbers

Pull metrics from Firebase console

Open the Firebase console → Usage and billing tab. The "Firestore" section shows reads, writes, deletes, storage, and network egress for the current billing month. Use 30-day averages rather than peak-day values for realistic estimates.

Step 2 — Estimate growth

Project reads per DAU

Reads are usually the largest line item. Estimate reads per daily active user per session (typical range: 20–200 reads per user). Multiply by your DAU and 30 days. For a new project, use the "Load example" button to start with a realistic 50K DAU scenario.

Step 3 — Input and calculate

Enter values and review the breakdown

Fill in each field and click "Calculate cost." The results show each line item, how much is covered by the free tier, and the billable cost. The bar chart lets you see which meter dominates your bill — usually reads for consumer apps, writes for collaboration tools.

Step 4 — Monitor on your phone

Track actuals with Firepulse

Once live, the Firepulse app shows Firestore reads and writes across your Firebase projects. Set up a daily digest notification to get a morning summary of usage across all projects — without logging into the Firebase console. Free on Google Play.

Common Firestore cost scenarios

Real Firestore bills vary enormously by app type. These illustrative scenarios help calibrate your estimates against typical apps at each scale tier.

Scenario A · Hobby project

Under free tier

100 DAU · 50 reads/user/day · 5 writes = 150K reads, 15K writes/day. Both under free limits. Monthly bill: $0.00.

Scenario B · Growing app

~5K DAU

5K DAU · 100 reads · 10 writes/user/day = 15M reads, 1.5M writes/month. ~5 GB stored, 20 GB egress. Monthly bill: ~$30–40.

Scenario C · Scale

~50K DAU

50K DAU · 80 reads · 8 writes/user/day = 120M reads, 12M writes/month. 50 GB stored, 150 GB egress. Monthly bill: ~$200–280.

FAQ

How does Firestore charge for reads?

Firestore charges $0.06 per 100,000 document reads after the free tier of 50,000 reads per day (about 1.5 million per month). A "read" is one document fetched from the database, whether by direct get, query result row, or real-time listener snapshot. Each document returned in a query counts as one read even if you only examine one field.

What is included in Firestore's free tier?

The Spark (free) plan includes: 50,000 document reads/day, 20,000 document writes/day, 20,000 document deletes/day, 1 GB storage, and 10 GB/month outbound bandwidth. Once you exceed these limits, your project requires the Blaze (pay-as-you-go) plan and you are billed only for usage beyond the free allowances.

Does this include Firebase Authentication or Hosting costs?

No. This tool estimates Firestore-specific costs only: reads, writes, deletes, storage, and outbound bandwidth. Firebase Authentication, Cloud Functions, Hosting, Realtime Database, Cloud Messaging, and other Firebase services have separate pricing structures not included here.

Is my data safe when using this estimator?

Yes. All calculations happen locally in your browser using JavaScript. Input values are saved to localStorage under the key fp-firestorecostestimator-v1 so they persist across page refreshes. Nothing is ever sent to any server.

Why might my real bill differ from this estimate?

Several factors can cause differences: free-tier limits reset daily (not monthly), queries that return zero documents still count as one read, transactions count each read and write separately, multi-region configurations apply a write multiplier, and Cloud Functions that read/write Firestore incur costs on the Functions side not shown here.

Related Firepulse resources

Watch your Firestore usage live — on your phone

Firepulse delivers a daily push digest of your Firebase metrics. Spot cost spikes before the month-end bill.