Best Push Notification Services for Indie Apps (2026)
Most indie apps can send push notifications for $0. Firebase Cloud Messaging is listed as no-cost, Expo's push service has no sending charge, and web push needs only a service worker and VAPID keys. Paid tools such as OneSignal, Pusher Beams, Knock and Courier buy you a dashboard, segmentation and multi-channel workflows, and their bills scale with users or messages.

Key takeaways
- Firebase Cloud Messaging is listed as 'No-cost' on both Firebase plans, and Expo says there is no cost to send through its push service, with a limit of 600 notifications per second per project.
- OneSignal's free plan gives unlimited mobile push for up to 1,000 monthly active users. Growth starts at $19/mo plus $0.012 per mobile MAU and $0.004 per web push subscriber.
- Pusher Beams prices by concurrent subscribers (devices): free for 1,000, then $29/mo for 10,000 and $99/mo for 50,000.
- Knock, Courier and Novu are orchestration layers priced per message or workflow run, each with a 10,000 per month free allowance. They sit on top of FCM and APNs rather than replacing them.
- Ask for permission in context, not on first launch. Apple and Android's own docs both say so, and on Android 13+ notifications are off until the user grants POST_NOTIFICATIONS.
On this page 26
- TL;DR
- How push notifications actually get delivered
- Comparison table
- The free options
- Firebase Cloud Messaging
- APNs
- Expo push service
- Web push with VAPID
- ntfy
- The paid platforms
- OneSignal
- Pusher Beams
- Amazon SNS
- Knock, Courier and Novu
- Worked cost example: 5,000 and 50,000 MAU
- Our picks by situation
- Ask for permission the right way
- How push fits retention and revenue
- Frequently asked questions
- What is the best free push notification service for an indie app?
- Is OneSignal free?
- Do I need to pay Apple to send push notifications?
- How much does Amazon SNS cost for mobile push?
- When should I ask users for notification permission?
- Launch your app
- Sources
Short answer: For most indie apps the best push notification service is the free one your stack already supports: Firebase Cloud Messaging for native and Flutter apps, Expo's push service for Expo apps, and plain web push for web apps. Add OneSignal (free up to 1,000 monthly active users, then from $19/mo) when you want a dashboard and segments without building them, and look at Knock, Courier or Novu only when push is one channel among several.
Every price and limit below comes from the vendor's own pricing page or docs, checked on 9 Nov 2026. The picks and the worked example are ours and are marked as such.
TL;DR#
- Free transport: Firebase lists Cloud Messaging as "No-cost" (Firebase pricing). Expo says "There is no cost associated with sending notifications through Expo push notification service" (Expo push FAQ).
- Free with a dashboard: OneSignal's free plan has unlimited mobile push for up to 1,000 MAU; Growth "Starts at $19/mo" plus $0.012 per mobile MAU (OneSignal pricing).
- Flat tiers: Pusher Beams is free for 1,000 subscribers, then $29/month for 10,000 (Pusher Beams pricing).
- Pay per message: Knock, Courier and Novu each give 10,000 messages or runs a month free, then charge per unit.
- Self-host: ntfy is open source and web push needs only a service worker and VAPID keys.
Disclosure: ZeroRaised is a launch site for bootstrapped products and has no commercial relationship with any vendor in this post. We earn nothing if you sign up. Facts come from the linked sources as checked on 9 Nov 2026.
How push notifications actually get delivered#
Almost every service here sits on the same pipes: APNs on iOS, where your server must "establish either token-based or certificate-based trust with APNs using HTTP/2 and TLS" (Apple: remote notification server), FCM on Android, and each browser's push service on the web. So the real choice is how much you build yourself: token storage, segments, scheduling and analytics. Free transport means you build those; paid tools sell them back to you.
Comparison table#
| Service | Free tier | Paid entry | Platforms | Pricing unit |
|---|---|---|---|---|
| Firebase Cloud Messaging | "No-cost" on Spark and Blaze | None listed | Android, iOS (via APNs) | Free |
| APNs (Apple) | No per-notification fee listed | Apple Developer Program $99/yr | iOS, macOS | Membership |
| Expo push service | No cost to send; 600/sec per project limit | None for push | iOS, Android (Expo apps) | Free |
| OneSignal | Unlimited mobile push up to 1,000 MAU; web push max 10,000 subscribers per send | Growth from $19/mo | iOS, Android, web, email, SMS | Mobile MAU and web subscribers |
| Pusher Beams | 1,000 subscribers | $29/month (10,000) | iOS, Android, web | Concurrent subscribers (devices) |
| Amazon SNS | 1 million mobile push deliveries per month | Not verified | Mobile push endpoints | Deliveries |
| Knock | Up to 10,000 messages/month | $250/month (50,000 included, then $0.005 each) | Multi-channel, uses your push providers | Messages sent |
| Courier | 10,000 sends/month | $0.005 per send | Multi-channel | Sends |
| Novu | 10,000 workflow runs/month | Pro from $30/month (30,000+ runs) | Multi-channel, includes push | Workflow runs |
| ntfy | Try free without sign-up; self-host free | Supporter from $5 to $6/month | iOS, Android, web, desktop | Messages per day (hosted) |
| Web push (self-hosted) | Free | None | Browsers, iOS 16.4+ Home Screen web apps | Your server costs |
Sources are linked in each section below.
The free options#
Firebase Cloud Messaging#
Firebase's pricing table lists "Cloud Messaging (FCM)" as "No-cost", and FCM sits in its list of no-cost products alongside Analytics and Crashlytics (Firebase pricing). The Spark plan needs no payment method. We found no per-message cap on the pricing page.
FCM is the Android default and can deliver to iOS through APNs once you upload your Apple key. You do not get a marketing dashboard, so store user attributes yourself. Still choosing a backend? Our Supabase vs Firebase comparison covers the wider trade-off; FCM works alongside either.
APNs#
Apple does not list a per-notification fee for APNs. What you pay for is the Apple Developer Program, a "$99 annual membership" (Apple Developer Program), which you need to ship a native iOS app anyway. If you only send to iOS, you can talk to APNs directly from your server with a token-based connection and skip any middleman.
Expo push service#
If your app is built with Expo, its push service is the easiest path. Expo's FAQ says there is no cost to send, and "There is a limit of 600 notifications per second per project that can be sent" (Expo push FAQ). Its server SDK for Node handles throttling for you. Note that Expo's pricing page MAU figures apply to over-the-air updates, not push (Expo pricing).
Web push with VAPID#
For a web app or PWA, you do not need a vendor at all. MDN says the Push API lets web apps receive messages "whether or not the web app is in the foreground, or even currently loaded", and that the app "has to have an active service worker" (MDN Push API). Authentication uses VAPID application server keys (web.dev). The web-push library for Node.js is MPL 2.0 licensed.
Apple supports this too: "You don't need to join the Apple Developer Program to send web push notifications", and it works for "Home Screen web apps in iOS 16.4 or later" (Apple: web push). Safari does not support invisible pushes, so every message must show something.
ntfy#
ntfy is "dual-licensed under the Apache 2.0 and GPLv2 license", and "since it's open source, you can always self-host it" (ntfy). It has iOS, Android and web apps. Our read: it suits alerts for yourself or a technical audience, not a consumer app, because users subscribe to topics in the ntfy app rather than yours. Hosted plans run from Supporter at $5 to $6 a month (depending on billing period) with 2,500 messages per day, to Pro at $10 to $12 with 20k messages per day.
The paid platforms#
OneSignal#
Our read: OneSignal is the easy upgrade from raw FCM because its free plan is real. It includes "Unlimited Mobile Push Notifications" for "organizations with up to 1,000 monthly active users", and web push with a "Max 10,000 subscribers per send" (OneSignal pricing).
Growth "Starts at $19/mo", with mobile push at "$0.012 per monthly active user" and web push at "$0.004 per web push subscriber". Sends are unlimited; you pay for users, not messages. Watch the MAU definition: a mobile subscription record active in the last 30 days, "regardless of whether it has opted in for mobile push notifications". So users who refused notifications still count.
Pusher Beams#
Beams uses flat tiers: Sandbox free for 1,000 subscribers, Startup $29/month for 10,000, Pro $99/month for 50,000, Business $199/month for 115,000 and Premium $399/month for 250,000 (Pusher Beams pricing). Usage is "the total number of concurrent Subscribers across all your Beams instances", and each registered device counts as a subscriber (Beams docs). One user with a phone and a tablet is two subscribers.
Amazon SNS#
SNS suits apps already on AWS. Its FAQ says "you can send 1 million free push notifications every month" (Amazon SNS FAQ). We could not confirm a per-million price above that on AWS's pages today, so check the AWS calculator before relying on it at scale.
Knock, Courier and Novu#
These are notification orchestration tools: one API that routes a message to push, email, SMS, Slack or in-app, with templates, preferences and batching. They still need FCM and APNs credentials underneath.
- Knock: free for up to 10,000 messages a month; Starter is "$250/ month + additional usage" with 50,000 messages, then $0.005 each (Knock pricing). A message is "a single message delivered to a single user on a single channel."
- Courier: "Start free with 10,000 sends/month, then $0.005 per send" (Courier pricing).
- Novu: free for 10,000 workflow runs a month; Pro "Starting from $30 / month" with 30,000+ runs, then $1.20 per 1K (Novu pricing).
Our read: for a solo app that only needs push, these are overkill. They earn their price when one event ("your export is ready") must reach a user on whichever channel they prefer.
Worked cost example: 5,000 and 50,000 MAU#
Example, our assumptions: every MAU has one device and receives 20 pushes a month, so 5,000 MAU means 100,000 pushes and 50,000 MAU means 1,000,000 pushes. For orchestration tools we count one push as one message, send or workflow run. Arithmetic is ours from the published prices above.
| Service | 5,000 MAU (100k pushes) | 50,000 MAU (1M pushes) |
|---|---|---|
| FCM / APNs direct | $0 (plus $99/yr Apple membership) | $0 (plus $99/yr) |
| Expo push | $0 | $0 |
| Web push, self-hosted | Your server only | Your server only |
| Amazon SNS | $0 (inside 1M free deliveries) | $0 (exactly at the 1M free limit) |
| OneSignal Growth | Up to $79/mo ($19 + 5,000 × $0.012) | Up to $619/mo ($19 + 50,000 × $0.012) |
| Pusher Beams | $29/mo (Startup, 10,000) | $99/mo (Pro, 50,000; any more devices means Business at $199) |
| Novu | $114/mo ($30 + 70 × $1.20) | $1,194/mo ($30 + 970 × $1.20) |
| Courier | $450/mo (90,000 × $0.005) | $4,950/mo (990,000 × $0.005) |
| Knock | $500/mo ($250 + 50,000 × $0.005) | $5,000/mo ($250 + 950,000 × $0.005) |
OneSignal is shown as "up to" because its page does not say whether the first 1,000 MAU stay free on Growth. The pattern is clear either way: per-user pricing stays modest as you send more, while per-message pricing grows with every push. If you plan frequent notifications, avoid per-message billing for push.
Our picks by situation#
| Your situation | Our pick |
|---|---|
| Native iOS/Android or Flutter app, $0 budget | FCM (plus APNs via FCM) |
| React Native app built with Expo | Expo push service |
| Web app or PWA | Self-hosted web push with VAPID |
| Non-technical founder who wants campaigns and segments | OneSignal free, then Growth |
| You want a fixed, predictable bill | Pusher Beams |
| Already all-in on AWS | Amazon SNS |
| Push is one of several channels (email, in-app, Slack) | Novu for price, Knock or Courier for depth |
| Alerts for yourself or a technical audience | ntfy |
Ask for permission the right way#
Apple says: "Make the request in a context that helps people understand why your app needs authorization", and that doing so "provides a better experience than automatically requesting authorization on first launch" (Apple: asking permission). Apple also offers provisional authorization, delivered "quietly", so users can try your notifications before deciding.
On Android 13 (API level 33) and higher, "your app's notifications are off by default" until the user grants the POST_NOTIFICATIONS runtime permission (Android docs). Google suggests triggering the prompt from a user action, such as when "The user taps an "alert bell" button", or waiting "until the third or fourth time the user launches your app."
Our read, in practice:
- Show a short in-app screen first explaining what you will send ("We'll tell you when your order ships").
- Trigger the system prompt only after the user taps "Turn on".
- If they say no, do not nag. Offer a settings toggle instead.
How push fits retention and revenue#
Push is a retention channel, not an acquisition one. Our read: send things the user asked for (a reply, a finished task, a price drop), not "we miss you" blasts that train people to switch notifications off. Pair it with the free tactics in how to market a mobile app with no budget to get installs in the first place.
If your app earns from subscriptions, push can remind trial users before a trial ends or announce a feature that justifies the upgrade. Our guide on how to monetize a mobile app covers which models suit which apps.
Frequently asked questions#
What is the best free push notification service for an indie app?#
For a native or Flutter app, Firebase Cloud Messaging, which Firebase lists as no-cost on both its Spark and Blaze plans. For a React Native app built with Expo, the Expo push service, which Expo says has no cost to send. For a web app, standard web push with VAPID keys and an open source library such as web-push for Node.js.
Is OneSignal free?#
Yes, up to a point. OneSignal's free plan includes unlimited mobile push notifications for organizations with up to 1,000 monthly active users, and web push with a maximum of 10,000 subscribers per send. Above that, Growth starts at $19/mo plus $0.012 per mobile monthly active user and $0.004 per web push subscriber.
Do I need to pay Apple to send push notifications?#
To ship a native iOS app you need the Apple Developer Program, which costs $99 a year, and your server talks to APNs using token or certificate based trust. Apple does not list a per-notification fee. For web push, Apple's docs say you do not need to join the Apple Developer Program, and Home Screen web apps on iOS 16.4 or later can receive web push.
How much does Amazon SNS cost for mobile push?#
Amazon's SNS FAQ says the free tier includes 1 million mobile push deliveries, so you can send 1 million free push notifications every month. We could not verify a per-million price for mobile push deliveries above that on AWS's pages on 9 Nov 2026, so check the AWS pricing calculator before you rely on SNS at scale.
When should I ask users for notification permission?#
After they understand why notifications help them. Apple says to make the request in a context that helps people understand why your app needs authorization, and that this beats asking on first launch. Android's docs suggest triggering the prompt from a user action, such as tapping an alert bell, or waiting until the third or fourth launch.
Launch your app#
ZeroRaised is a launch directory for products built without institutional VC. Once your notifications are wired up, submit your app for free and put it in front of people who back bootstrapped makers. For more guides like this one, join the ZeroRaised newsletter.
Sources#
- Firebase pricing, last checked 9 Nov 2026
- Apple Developer Program, last checked 9 Nov 2026
- Apple: Setting up a remote notification server, last checked 9 Nov 2026
- Apple: Asking permission to use notifications, last checked 9 Nov 2026
- Apple: Sending web push notifications in web apps and browsers, last checked 9 Nov 2026
- Android: Notification runtime permission, last checked 9 Nov 2026
- Expo push notifications FAQ, last checked 9 Nov 2026
- Expo pricing, last checked 9 Nov 2026
- OneSignal pricing, last checked 9 Nov 2026
- Pusher Beams pricing, last checked 9 Nov 2026
- Pusher Beams subscribers, last checked 9 Nov 2026
- Amazon SNS FAQ, last checked 9 Nov 2026
- Knock pricing, last checked 9 Nov 2026
- Courier pricing, last checked 9 Nov 2026
- Novu pricing, last checked 9 Nov 2026
- ntfy, last checked 9 Nov 2026
- MDN: Push API, last checked 9 Nov 2026
- web.dev: Push notifications overview, last checked 9 Nov 2026
- web-push library for Node.js, last checked 9 Nov 2026
Frequently asked questions
What is the best free push notification service for an indie app?
For a native or Flutter app, Firebase Cloud Messaging, which Firebase lists as no-cost on both its Spark and Blaze plans. For a React Native app built with Expo, the Expo push service, which Expo says has no cost to send. For a web app, standard web push with VAPID keys and an open source library such as web-push for Node.js.
Is OneSignal free?
Yes, up to a point. OneSignal's free plan includes unlimited mobile push notifications for organizations with up to 1,000 monthly active users, and web push with a maximum of 10,000 subscribers per send. Above that, Growth starts at $19/mo plus $0.012 per mobile monthly active user and $0.004 per web push subscriber.
Do I need to pay Apple to send push notifications?
To ship a native iOS app you need the Apple Developer Program, which costs $99 a year, and your server talks to APNs using token or certificate based trust. Apple does not list a per-notification fee. For web push, Apple's docs say you do not need to join the Apple Developer Program, and Home Screen web apps on iOS 16.4 or later can receive web push.
How much does Amazon SNS cost for mobile push?
Amazon's SNS FAQ says the free tier includes 1 million mobile push deliveries, so you can send 1 million free push notifications every month. We could not verify a per-million price for mobile push deliveries above that on AWS's pages on 9 Nov 2026, so check the AWS pricing calculator before you rely on SNS at scale.
When should I ask users for notification permission?
After they understand why notifications help them. Apple says to make the request in a context that helps people understand why your app needs authorization, and that this beats asking on first launch. Android's docs suggest triggering the prompt from a user action, such as tapping an alert bell, or waiting until the third or fourth launch.