Skip to main content

See how many Firestore reads a page costswhile you build.

Client modular reads in a localhost widget; Admin/server reads after one wrap — catch duplicate fetches, N+1, and heavy loads before traffic multiplies them.

$9 once · Dev-only · Client + Admin SDK

Loading interactive demo...

Works with your stack

Works with your favorite frameworks

Next.js

Next.js

Verified

SSR Compatible

Nuxt

Nuxt

Full Support

REST/proxy

Works with Nuxt Hooks

React

React

Verified

Works with React Hooks

Vite

Vite

Verified

Works with Vite Plugins

Angular

Angular

Compatible

Installer adds the widget to your HTML entry (e.g. src/index.html).

Vue

Vue

Compatible

Most Vue apps: follow our Vite guide. The bundled recordRead composable ships with Nuxt only.

Firestore bills don't grow gradually. They jump.

Firestore charges per document read, not per query. A page that looks harmless in development can become expensive once real users start loading it.

Data is taken from a personal project that uses all firebase services.

ReadMeter makes those page-load patterns visible early, before you ship.

Get ReadMeter — $9

One-time license · One device · Dev-only · Client + Admin SDK · Updates included

What ReadMeter is (and isn't)

ReadMeter is

in scope
  • a development-time Firestore read speedometer for client and Admin SDK
  • client reads per page load in the widget; Admin/server reads after one wrap
  • an early signal that a screen or API route may scale badly

ReadMeter is not

out of scope
  • a billing calculator or invoice predictor
  • production monitoring or Usage Insights
  • a guarantee of cost reduction

Real results

Firestore Wins

Stories from developers who caught expensive page-load patterns early. Not a leaderboard — proof that visibility helps you decide what to fix.

Read the case study
ProjectReadsChange
LWO logo
LWO

Primary Education app focusing on practising English as a second language. Teachers relies on daily reports for tracking students' progress so fetch massive up to date data on a daily basis.

Verified customer
5,400 → 800↓ 85%
The Globals logo
The Globals

Primary and Secondary Education App. Students & Teacher fetch units, submit assignments and work on reports so repeated actions causes too many reads.

Verified customer
312 → 64↓ 79%
Vestel Learning Academy logo
Vestel Learning Academy

Caught unbounded leaderboard and admin dashboard queries during development. Caching and query limits cut session reads by ~80%.

Verified customer
12,000 → 2,500↓ 79%

Verified customer means we confirmed a valid ReadMeter license. Reviewed story means we manually reviewed the public claim before publishing.

Measured on Learn with Odi

The query was already right. It still ran five times.

A Grade 3 student reload of /home showed 605 Firestore reads, caller load, collection grade3, 5 executions. The pasteable agent task found two sibling mounts of the same hook — not a missing limit().

01

Widget named it

Page
/home
Collection
grade3
Caller
load
Executions
5×
Reads
605

02

Pasteable agent task

Refactor load() on /home · "Learn with Odi":
- Executes 5× and triggers 605 reads on grade3
- Two sibling mounts fetch the same collection
- Share one fetch + short TTL cache; do not add a limit()

03

Reload measured the cut

Before

605

After

270

reads on this load

5×1 shared fetch

~55% fewer reads on that load

Execution count and caller name mattered more than “add a limit.” The bug was identity of the fetch.

Open the live demo app

Local development reload. Remaining ~270 reads are other /home work, out of scope for this pass.

Beyond a simple counter

Trace where reads come from, generate AI-ready fixes, and track local history while you build.

Deep Trace

See exactly which function caused each read

Pinpoint the hot path fast: route, caller, executions, and the collection that scales your bill.

Read Source
load()605 reads · Executed 5x
Collection: grade3
Suggestion: Deduplicate sibling mounts — share one fetch. Don't add a limit.

AI-Fix

Turn read spikes into actionable prompts

Copy a context-rich prompt to Cursor or Claude with offender details and optimization hints.

Prompt my AI agent:
Refactor load() on /home · "Learn with Odi":
- Executes 5× and triggers 605 reads on grade3
- Two sibling mounts fetch the same collection
- Share one fetch + short TTL cache; do not add a limit()

Local History

Track read trends across your dev session

Compare routes over time without external dashboards or production instrumentation.

/home · 5×605 reads
/home · after270 reads
/badgesno extra grade3

JSON Export

Export evidence for reviews and reports

Save route-level read data as JSON so you or your team can diff, audit, and discuss optimizations with context.

{
  "route": "/home",
  "totalReads": 605,
  "worstOffender": "load()",
  "collection": "grade3",
  "executions": 5
}

The root causes

Firestore bills per document read — not per query. That’s why cost can jump unexpectedly.

Most developers only see the total after a bill arrives — not the individual patterns that caused it.

One Fixed Price

One project: monthly Firestore costs dropped from ~$190 to ~$75 after catching expensive read patterns early.

  • No subscription, ever
  • One device, non-transferable — your license binds to the first machine only
  • Unlimited projects and updates included with your license
Get ReadMeter
Secure checkout