Replay storage costs: why most vendors price you out
A back-of-envelope on rrweb payload sizes at scale, the egress traps in cross-cloud setups, and how flat-rate replay is even possible.
The "aha" moment of session replay—watching exactly where a user clicked right before a crash—is quickly followed by the "oh no" moment: the first invoice after a traffic spike. A single ten-minute session in a DOM-heavy React app can generate several megabytes of compressed rrweb data. At 100,000 sessions a month, you're looking at half a terabyte of data that most vendors will happily charge you $500 to $1,500 to "manage"—despite the raw storage cost of that data being closer to twelve dollars.
So where does the other ~$1,400 go? Not into storage. The dirty secret of session-replay pricing is that the real cost driver isn't keeping your data; it's moving it and processing it—and that's where the markup hides. Once you understand the payload math and the egress trap, flat-rate replay stops looking like a pricing gimmick and starts looking like the obvious consequence of building on the right infrastructure.
The economics of the DOM: rrweb payload math
The first thing to internalize: session replay is not video. It's a stream of serialized DOM mutations. rrweb takes one full snapshot of the DOM when recording starts, then records incremental records—every attribute change, every node insertion, every text edit, every mouse move—as compact diffs. That architecture is why replay is feasible at all on normal bandwidth. It's also why the cost varies wildly by app.
Full snapshots vs. incremental mutations
The expensive part of any recording is the front: the initial full snapshot has to serialize the entire DOM tree at once. After that, you're only paying for what changes. A user who loads a page and reads it quietly generates almost nothing after the first snapshot. A user dragging items around a kanban board generates a steady stream of mutation records. The first five seconds are disproportionately costly; the next five minutes might be cheap.
The "Tailwind effect"
Here's a counterintuitive cost multiplier: utility-class CSS. Every DOM node in a Tailwind-style app carries a long string of class names, and every mutation record that touches that node has to carry those attributes too. A button with class="inline-flex items-center justify-center rounded-md text-sm font-medium ..." is heavier in every snapshot and every mutation than the same button with one semantic class. It's a fine trade-off—but it does inflate your replay byte count.
The practical range looks roughly like this:
- Static / marketing page: ~50 KB per minute. Little changes after load.
- Standard web app: ~150–300 KB per minute. Forms, navigation, modest interactivity.
- Complex dashboard / SaaS: 500 KB–1 MB per minute. Constant DOM churn, virtualized lists, live data.
You can run your own numbers through our replay storage calculator rather than guessing.
The egress trap: moving data costs more than storing it
This is the line item nobody puts on the pricing page. Storing a terabyte in object storage is genuinely cheap and getting cheaper. Moving a terabyte out of a cloud provider is not.
Cross-cloud taxes
Picture the typical setup: your app runs on AWS, but your replay vendor runs on GCP. Every replay payload your users generate has to leave AWS (or the vendor's ingest has to pull it across), and somebody pays the egress fee on that transfer. AWS data transfer out runs around $0.09 per GB at standard rates. At half a terabyte a month, that egress alone—just the movement, before any storage or compute—is real money, and it recurs every single month.
The middleman markup
Vendors price replay per session or per 1,000 events at rates that look small in isolation—a few cents here and there. Multiply by your session volume and the effective rate is many times the underlying bandwidth cost. You're not paying for storage; you're paying a margin on data movement, dressed up as a per-session fee.
Retention math: the 30-day luxury
Notice how many vendors default to 30 days of retention and charge steeply to extend to 90. That's not arbitrary.
The storage vs. queryability trade-off
Storing the raw replay blob is cheap. Making it findable—indexing the metadata so you can search "all sessions from iOS Safari that hit a 402 error last Tuesday"—is what costs money. The index, not the blob, is the expensive asset, and longer retention means a larger, more expensive index to keep hot and queryable.
Cold vs. hot storage
A common pattern: the vendor quietly moves older replays to cheaper cold storage tiers (the kind that charge for retrieval) while still billing you hot-storage rates. You pay premium prices for data that's sitting in the bargain bin. The retention upcharge is often pure margin layered on top of an already-discounted storage class.
Why traditional vendors can't (or won't) offer flat rates
Two forces keep the legacy players on per-event pricing.
The per-event incentive
Per-event pricing lets a vendor capture value from your growth even when their own costs stay roughly flat. Your traffic doubling doesn't double their infrastructure bill—but it does double your invoice. It's a business model that monetizes your success, which is exactly why it's so sticky and so hard to give up voluntarily. We dig into this dynamic in flat-rate vs. per-event pricing.
Legacy infrastructure debt
Many established tools are still running on architectures designed years ago, paying older-generation cloud prices for managed databases and bandwidth. When your own costs include a fat egress bill, you have no choice but to pass it on—usually with a markup. The pricing model is downstream of the infrastructure decisions made long before you signed up.
The Cloudflare advantage: how flat-rate replay is possible
Flat-rate replay isn't generosity; it's arithmetic. Remove the dominant variable cost and you can stop pricing against it.
R2 and zero egress
Cloudflare R2 charges no egress fees. Read that again, because it's the entire trick. The single biggest variable cost in session replay—getting the data out to serve it back to you in the replay viewer—drops to zero. When the largest line item disappears, the math that forced everyone else into per-session metering simply doesn't apply.
Edge ingestion
Processing and scrubbing PII at the edge, on Cloudflare Workers, before the data ever reaches a central database means less central compute and less data shuttled around internally. The scrubbing happens close to the user, which is both cheaper and better for compliance. Combined with R2, this keeps the per-session cost low and—crucially—predictable.
Sentry-SDK compatibility
There's a development-cost angle too. By being compatible with the open-source Sentry SDK rather than building a proprietary client, GlitchReplay avoids reinventing the client-side recording logic and avoids locking you in. You bring the instrumentation you already have; we change where it points. See the replay docs for setup.
Back-of-envelope: building vs. buying vs. GlitchReplay
For the engineering manager weighing options, two traps are worth naming explicitly.
The "build it yourself" fallacy
rrweb is open source, so the temptation is to self-host: how hard can it be? The recording is the easy 20%. The other 80% is building and maintaining a replay viewer, a search-and-index layer, a retention/pruning system, PII scrubbing you can defend to your compliance team, and the storage plumbing—and then keeping all of it running while your actual product waits. The infrastructure might cost a few hundred dollars a month; the engineer-months cost far more.
The "enterprise" tax
At the top end, a $50,000-a-year replay contract often breaks down as maybe $2,000 of actual infrastructure and $48,000 of account management, brand, and margin. You're paying for a sales relationship, not for terabytes. The whole point of flat-rate, edge-native pricing is to collapse that gap—you pay for the capability, not for someone else's go-to-market motion.
Stop paying a growth tax on your debugging data. The cost of session replay was never really the storage—it was the egress and the markup layered on top of it. Build on infrastructure with zero egress and that cost structure inverts. If you want Sentry-compatible, full-capture session replay at a flat rate, run your numbers through the storage calculator and see what your "oh no" invoice would have been instead.
GlitchReplay is Sentry-SDK compatible, includes session replay and security signals, and never charges per event. Free to start, five minutes to first event.