Firebase Cloud Messaging — per-Project Rate Limits & Scale Planning (as of 2025)
FCM messages are free on both plans. If you send from your own backend server (.NET, Node, etc.), the FCM API costs nothing regardless of plan.
| Limit | FCM Hard Value | Your Usage | Status |
|---|---|---|---|
| FCM Cost Per message sent |
FREE — always | $0 | ✓ Free |
|
Project Rate Limit All msgs/min across your project PER FIREBASE PROJECT |
600,000 / min | — | — |
|
Per-Device Rate (Android) Max to one device PER DEVICE |
240 / min 5,000 / hr |
— | — |
| Collapsible Messages Silent/data messages per app per device |
Burst 20 +1 per 3 min refill |
— | Design aware |
| iOS (APNs) Apple controls these separately |
Apple set | — | Check APNs docs |
💡 Rate limits reset every minute (not clock-aligned — so a spike at :59 counts with :00).
📈 Quota increase request requires ≥80% sustained for 5+ consecutive minutes daily + <5% client error rate.
🔁 Limits are per Firebase Project — if you have multiple apps sharing one project, they share the quota.
Costs only arise from adjacent infrastructure used to trigger notifications:
| Component | Spark Free Tier | Blaze Paid |
|---|---|---|
| FCM Messages | ∞ Free | ∞ Free |
| Your Own Backend Server .NET, Node, etc. calling FCM HTTP API |
Your hosting cost | Your hosting cost |
| Cloud Functions If triggering via Firebase Functions |
2M invocations/mo free | $0.40 / million after free tier |
| Firestore triggers If watching DB to send notifs |
50K reads/day free | $0.06 / 100K reads |
Max users supportable at various notification rates before hitting FCM project rate limit (600K msgs/min). Your current setting is highlighted.
| Notifs/User/Month | ≈ per day | Max Users (project rate) | Per-Device OK? | Bottleneck |
|---|
Assumes 20% concurrent users active over 12h/day.
Project limit: 600K msgs/min. Device limit: 5,000 msgs/hr per device.