Firebase web push vs. standard web push
Firebase Cloud Messaging can send to browsers, and it’s free. But for websites, standard Web Push with VAPID does the same job with fewer moving parts. Here’s how to choose.
- You don’t need Firebase to send web push; every browser accepts standard VAPID-signed requests.
- FCM for web adds an SDK, a Firebase project, FCM tokens and a Google-authenticated send API.
- Firebase’s pricing page lists Cloud Messaging as no-cost (read Nov 12, 2026).
- FCM makes most sense when you already use Firebase for native apps and want one sender.
Side by side
| Standard Web Push | Firebase Cloud Messaging (web) | |
|---|---|---|
| Setup | VAPID key pair + service worker | Firebase project, JS SDK, config, VAPID key in console, firebase-messaging-sw.js |
| Subscription identifier | PushSubscription (endpoint + keys) | FCM registration token |
| Sending | Encrypted POST to each endpoint (library does it) | FCM HTTP v1 API with Google OAuth service-account credentials |
| Browsers | All with Push API | FCM routes to browsers’ push services |
| Cost | Free protocol; your server/tool costs | Cloud Messaging listed as no-cost (Nov 12, 2026) |
| Lock-in | Portable if you keep your VAPID keys | Tokens tied to your Firebase project |
How FCM for web works
You add the Firebase JS SDK, initialise it with your project config and call getToken() with your web push certificate (a VAPID key from the Firebase console). Firebase registers its own service worker and returns a token. Your server sends to that token through the FCM HTTP v1 API, authenticated with a Google service account. FCM then delivers through each browser’s push service. Google retired the legacy FCM send APIs in 2024, so new code should use HTTP v1.
When FCM is a good fit
- You already use Firebase for Android/iOS apps and want one API for app and web.
- You want topic messaging or Firebase’s console for ad-hoc sends.
- Your backend already authenticates to Google Cloud.
When standard Web Push is simpler
- You only need to reach websites, not native apps.
- You don’t want a Google project, SDK and service account in your stack.
- You want your own subscription data and keys (portable list).
- You’re on PHP, Ruby, Go or any language with a Web Push library (PHP, Node).
What the FCM client looks like
import { initializeApp } from 'firebase/app';
import { getMessaging, getToken } from 'firebase/messaging';
const app = initializeApp({ /* your Firebase config */ });
const token = await getToken(getMessaging(app), { vapidKey: 'YOUR_WEB_PUSH_CERTIFICATE_KEY' });
// send `token` to your server; it sends via the FCM HTTP v1 APICompare with the standard approach in the Push API example — no SDK or Google project required.
Or neither: a hosted tool
FCM and raw Web Push both give you delivery only. You still build subscription storage, a prompt, segments, scheduling, automations and cleanup. Pusharoo provides all of that on standard Web Push — no Firebase project — free with no limits (what a push service does).
Questions
Is Firebase web push free?
Firebase’s pricing page lists Cloud Messaging (FCM) as a no-cost product on both plans (read Nov 12, 2026). You still pay for any servers you run.
Can I send web push without Firebase?
Yes. Generate VAPID keys, subscribe with the Push API and send with a Web Push library. All major browsers accept it.
Can I migrate from FCM tokens to standard subscriptions?
Not directly; FCM tokens and Web Push subscriptions are different identifiers. Browsers resubscribe with the new setup on their next visit.
Keep reading
The Web Push API in JavaScript: a working example
Register a worker, ask on click, subscribe with VAPID, store the subscription and send — complete code.
VAPID keys for web push, explained
What the key pair does, how the signed JWT works, how to generate keys and why rotation breaks lists.
The Web Push protocol, explained
RFC 8030 delivery headers, RFC 8291 encryption, RFC 8292 VAPID, status codes and payload size.
Choosing a push notification service for your website
A no-nonsense checklist: caps, badges, gated features, ownership, iPhone, setup effort.
More in Developers: Service worker push events, done right · Web push notifications with Node.js · Web push notifications in PHP · Laravel browser push notifications (no Firebase) · Web push notifications in React and Next.js · Declarative Web Push, explained · All guides
Free for life. No limits.
Unlimited subscribers, campaigns and automations. No badges. About five minutes to install.