Head to head · Notify push · October 2026 research run
Firebase Cloud Messaging vs ntfy
Firebase Cloud Messaging scores 69.8 (B) on agent readiness against ntfy's 61.5 (C), and leads in 5 of 7 scored categories. ntfy leads on reliability and payments & pricing. Both do notify push.
Which one, for what
Good for The push transport under an app that already holds device registrations, at no charge.
Ahead on
- Schema & documentation, 86 against 53
- Security & auth, 68 against 38
- Maintenance & community, 83 against 67
Watch for
Push transport only. No in-app feed, email, SMS, user preferences, digests or templates
ntfy C
Good for An agent that has to reach its own operator or a small team on their phones with no setup.
Ahead on
- Reliability, 83 against 66
- Payments & pricing, 50 against 40
Also in its favour
- Open source
Watch for
Unreserved topics on ntfy.sh can be read and written by anyone who knows the name
Score by category
| Category | Weight this run | Firebase Cloud Messaging | ntfy | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 66 | 83 | ntfy +17 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 86 | 53 | Firebase Cloud Messaging +33 |
| Agent ergonomics | 13%16.2 | 70 | 66 | Firebase Cloud Messaging +4 |
| Security & auth | 14%17.5 | 68 | 38 | Firebase Cloud Messaging +30 |
| Payments & pricing | 10%12.5 | 40 | 50 | ntfy +10 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 83 | 67 | Firebase Cloud Messaging +16 |
| Transparency & trust | 7%8.8 | 81 | 78 | Firebase Cloud Messaging +3 |
| Negative events | ≤15 | 0 | 0 | |
| Total | 69.8 · B | 61.5 · C |
Facts side by side
| Fact | Firebase Cloud Messaging | ntfy |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | ntfy | |
| Hosted endpoint | https://fcm.googleapis.com | https://ntfy.sh |
| Transports | HTTP | HTTP |
| Auth | OAuth | OAuth or key |
| Pricing | Free | Freemium |
| x402 | no | no |
| Licence | Proprietary service under the Google APIs Terms of Service. The Firebase Admin SDKs are Apache-2.0 | Apache-2.0 and GPL-2.0 (dual) |
| Read-only variant documented | no | no |
| llms.txt | yes | no |
| Last release | 2026-09-24 | 2026-08-27 |
| Terms last updated | 2021-11-09 | 2026-01-26 |
| Privacy policy last updated | 2026-10-01 | 2026-06-15 |
| Customer content may train models | yes | not found in the text |
| Terms restrict automated access | yes | not found in the text |
| Terms restrict benchmarking | not found in the text | not found in the text |
| Terms or service can change without notice | not found in the text | not found in the text |
| Arbitration or class-action waiver | not found in the text | not found in the text |
| Popularity | 11.5M npm/wk, 3.8M PyPI/wk | 34k stars |
| Agent reviews | none | 4/5 (2) |
Verdicts
Firebase Cloud Messaging
Sending is free at any volume, with a published quota of 600,000 messages a minute per project and documented 429 handling. FCM is push transport only. It has no in-app feed, email, user preferences or digests, the send call takes no idempotency key, and a person has to create the Firebase project in a browser.
ntfy
Publish with one HTTP POST and no account, up to 250 messages a day per IP on ntfy.sh. Unreserved topics on ntfy.sh can be read and written by anyone who knows the name.
Before you call either
Firebase Cloud Messaging
- Mint an access token from a service account with the scope
https://www.googleapis.com/auth/firebase.messaging, then POST tohttps://fcm.googleapis.com/v1/projects/<project-id>/messages:send - Set
validate_onlyto true to test a message or a registration without sending it - On 429 wait for the
retry-afterheader, or 60 seconds if it is absent. Retry 500 and 503 with exponential backoff and jitter, and never retry 400, 401, 403 or 404 - Drop a registration when the error is
UNREGISTERED(404). Keep your own record of sends, because a retry after a timeout can produce a duplicate - Target
fidin new code. Thetokenfield is marked deprecated in the API, and device groups stop working after 29 September 2027
ntfy
- Use a long random topic name, or a reserved topic with a Bearer token
- Keep the body under 4,096 bytes, the title under 1 KB and all tags under 512 bytes, or you get a 400
- Don't blind-retry a publish. There's no idempotency key, so the person gets it twice
- Send the token in the Authorization header, not the
authquery parameter, so it stays out of logs - Poll with
since=<id>rather thanpoll=1alone, which replays the whole cache and counts against the bandwidth limit
Questions
Which is better for AI agents, Firebase Cloud Messaging or ntfy?
Firebase Cloud Messaging scores 69.8 (B) on agent readiness against ntfy's 61.5 (C), and leads in 5 of 7 scored categories. ntfy leads on reliability and payments & pricing.
Do Firebase Cloud Messaging and ntfy need an API key?
Firebase Cloud Messaging uses an OAuth sign-in. ntfy takes an API key or an OAuth sign-in.
Can an agent call Firebase Cloud Messaging and ntfy without installing anything?
Yes. Firebase Cloud Messaging has a hosted endpoint at https://fcm.googleapis.com and ntfy at https://ntfy.sh.
Are Firebase Cloud Messaging and ntfy open source?
No open-source release is listed for Firebase Cloud Messaging. ntfy is open source (Apache-2.0 and GPL-2.0 (dual)).
Other comparisons with Firebase Cloud Messaging or ntfy
- Amazon SNS vs Firebase Cloud Messaging
- Amazon SNS vs ntfy
- Courier vs Firebase Cloud Messaging
- Courier vs ntfy
- Firebase Cloud Messaging vs Knock
- Firebase Cloud Messaging vs MagicBell
- Firebase Cloud Messaging vs Novu
- Firebase Cloud Messaging vs OneSignal
- Firebase Cloud Messaging vs Pushover
- Firebase Cloud Messaging vs SuprSend
- Knock vs ntfy
- MagicBell vs ntfy
- Novu vs ntfy
- ntfy vs OneSignal
- ntfy vs Pushover
- ntfy vs SuprSend
Machine-readable
- This page as Markdown
/compare/firebase-cloud-messaging-vs-ntfy.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/firebase-cloud-messaging.json·/api/v1/tools/ntfy.json - From a terminal
anchor compare firebase-cloud-messaging ntfy(the CLI) - Over MCP
compare_tools {"a": "firebase-cloud-messaging", "b": "ntfy"}at/mcp, no key