Skip to content
Developers · 8 min read

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.

Updated By the Pusharoo team
In short
  • 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 PushFirebase Cloud Messaging (web)
SetupVAPID key pair + service workerFirebase project, JS SDK, config, VAPID key in console, firebase-messaging-sw.js
Subscription identifierPushSubscription (endpoint + keys)FCM registration token
SendingEncrypted POST to each endpoint (library does it)FCM HTTP v1 API with Google OAuth service-account credentials
BrowsersAll with Push APIFCM routes to browsers’ push services
CostFree protocol; your server/tool costsCloud Messaging listed as no-cost (Nov 12, 2026)
Lock-inPortable if you keep your VAPID keysTokens 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 API

Compare 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.

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.