Docs
Benchmarks
How GiftingStack's gift rooms and gift sending behave under load: one room with 250,000 viewers, 200 gifts a second to 40,000 viewers, and a room held open for 48 minutes. All runs were made on the production service with real WebSocket viewers, in November 2026.
Results
| Test | Gifts sent | Delivery to viewers (median / p95) | What happened |
|---|---|---|---|
| One room, 250,000 viewers | 20 a second for 60 s (1,200) | 0.74 s / 1.6 s | All 1,200 sends accepted. Every gift reached every connected viewer, none twice. |
| Gift burst: 40,000 viewers | 200 a second for 60 s (12,000) | 0.76 s / 0.93 s | All 12,000 sends accepted (p95 280 ms). 462 million gift events delivered, none twice. Above 10 gifts a second the room groups gifts into one update. |
| 40,000 viewers | 20 a second for 60 s (1,200) | 0.39 s / 0.52 s | All 40,000 viewers connected. Every gift reached every viewer, none twice. |
| Long room: 40,000 viewers for 48 minutes | A steady trickle | 0.19 s / 0.22 s | All 40,000 viewers connected; 99.8% were still connected at the end. Every gift reached every connected viewer. |
Sending a gift (the API call that takes the coins and records the gift) answered in about 200 ms at the median and under 300 ms at p95 in every run, also at 200 gifts a second.
How it was measured
-
The production service (
api.giftingstack.com,rt.giftingstack.com), with a project on the Enterprise plan. Nothing was mocked. - Viewers were real WebSocket clients on 40 separate machines (GitHub-hosted runners, each with its own IP address). Each viewer used a client token minted through the public API, as an app does. Viewers joined at about 2,000 a second.
- Gifts were sent through the public API from another machine, into the room, while every viewer was connected.
- Delivery time runs from the moment the server stored the gift to the moment it arrived on the viewer's machine (corrected for clock differences), so it includes the room's fan-out and the internet path to the viewer.
- Runs: 11 to 14 November 2026.
What runs it
- Cloudflare Workers handle every API call and room connection at the data center closest to the caller.
- Each project's coins and gifts live in Cloudflare Durable Objects: every change is one transaction, written once, in order (idempotency).
- A large room is split into shards, up to 120, each a Durable Object that holds its share of the viewers. A gift is sent once to the room and fanned out by the shards. Idle connections hibernate, so a quiet room costs nothing to keep open.
- When gifts come fast (above 10 a second), the room groups them into one update, so viewers' phones keep up (gift rooms).
Room sizes on each plan
A live room holds up to 1,000 viewers on Starter, 5,000 on Growth and 20,000 on Scale. Larger rooms, such as the 40,000 and 250,000 viewer rooms above, are part of the Enterprise plan (pricing).
What these numbers are
They are the results of the runs described above, not a guarantee of capacity or speed for every app. What you see depends on where your viewers are, their networks, how many gifts are sent and how your rooms are used. For a launch that needs a very large room, write to support@giftingstack.com.