
XDA published a piece this week about giving up on email for home lab alerts and moving to ntfy instead. The write-up is right about the problem. Email alerts get lost in a promotional-tab shuffle, arrive minutes late, and stop working the moment a mail server hiccups. What ntfy does well is give you a curl-one-liner path to a real push notification with sound and vibration on a phone that is likely already in your pocket.
The follow-up question is which push service to actually pick. ntfy is elegant but not the only option, and it does not fit every setup. Some homes already speak Home Assistant. Some ops teams already have a paid Pushover account. Some setups need an audit trail more than a real-time ping. We tested seven ntfy alternatives against the same three use cases: a Bash cron job on a NAS, a Docker container health check, and a router flagging an outage.
Quick comparison
| App | Best for | Free plan | Starting price | Standout feature |
|---|---|---|---|---|
| Gotify | Fully self-hosted, one binary | Yes, open source | Free | No third party at all |
| Pushover | Reliable paid pipe | 30-day trial | About 5 USD per platform, one-time | Message priority tiers |
| Pushbullet | Cross-device messaging | Yes, limited | About 5 USD/month Pro | SMS mirror on Android |
| Home Assistant | Already-installed ecosystem | Yes, open source | Free | Deep integration with sensors |
| Uptime Kuma | Watching remote services | Yes, open source | Free | Live status page bundled |
| Healthchecks.io | Cron-job dead-man switch | Yes, up to 20 checks | About 5 USD/month | Alert when a job stops |
| Apprise Notify | Aggregator for other services | Yes, open source | Free | Fans out to Discord, Slack, ntfy, etc. |
Why people leave ntfy
Nothing on this list is a hard failure for ntfy. It works. The reasons people move come down to shape of the setup:
- The self-hosted binary needs a public endpoint if you want push to phones outside your LAN. That is a router config and a reverse proxy at minimum. Some homes never had one.
- Priority handling is basic. The Android app respects Do Not Disturb only after the first ping. A priority-tier scheme like Pushover’s is more forgiving for on-call rotations.
- No dead-man switch semantics. If your cron never fires, ntfy does not know it should have. That is by design, but it is exactly the failure mode most alerting is meant to catch.
- Message history is thin. The Android app keeps a rolling buffer, but a searchable audit trail across weeks lives elsewhere.
The seven alternatives below solve one or more of those, in order of how often we ended up recommending them.
The alternatives
1. Gotify — Best fully self-hosted replacement
Gotify is the closest one-for-one swap. It is a single Go binary that runs on any Raspberry Pi or NAS, exposes an HTTP API for pushing messages, and pairs to an Android client that behaves like ntfy’s. The database is SQLite by default, so backup is a file copy, and the whole surface is small enough to fit in a container.
Where it falls short: No priority tiers to speak of. No end-to-end encryption for message bodies, they travel in the clear inside your network. The Android client cannot subscribe to multiple servers as gracefully as the ntfy app.
Pricing:
- Free: everything, MIT open source
- Paid: none
- vs ntfy: identical cost profile
Migrating from ntfy: Curl calls need the endpoint rewritten and a token added as a header. Message body format is the same. Existing scripts port in a few minutes.
Download: Gotify on Aptoide · Google Play · F-Droid
Bottom line: Pick this if you already run ntfy self-hosted and want a very slightly simpler binary with an identical mental model.
2. Pushover — Best paid pipe when reliability matters
Pushover is the pick when you need someone else’s SRE team standing behind message delivery. Priority-tier semantics mean an “emergency” ping keeps re-sending until acknowledged, an “important” ping bypasses quiet hours, and a “low” ping never wakes you. On-call rotations use this every day.
Where it falls short: Not self-hosted. Message content sits on Pushover servers briefly. The one-time app fee per platform (Android, iOS, desktop) adds up if you use several.
Pricing:
- Free: 30-day trial only
- Paid: about 5 USD one-time per platform license, plus a 10 USD/month tier for teams
- vs ntfy: paid pipe versus free self-hosted
Migrating from ntfy: Replace the curl call. Pushover uses HTTPS POST with a user key and application token. Priority becomes an extra parameter.
Download: Pushover on Aptoide · Google Play
Bottom line: Pick this if the alerts have to arrive, and you would rather pay a small one-time fee than run infrastructure.
3. Pushbullet — Best if the notification lives inside a device flow
Pushbullet is not primarily a script-to-phone push tool, but it does that job cleanly. Its real strength is the two-way channel: your phone can mirror SMS to a desktop, and desktop clients can send a notification back. If your alerts already fit into a “beam messages between my devices” story, Pushbullet feels natural.
Where it falls short: Free tier is capped hard on message count and file size. The company has bounced through ownership changes and lost engineering polish along the way.
Pricing:
- Free: 100 messages/month, small file limit
- Paid: Pushbullet Pro at about 5 USD/month for unlimited messages and larger files
- vs ntfy: closer to a consumer product than a home-lab tool
Migrating from ntfy: The API is different in shape. You will replace URL and payload. Basic push-a-message calls stay a one-liner.
Download: Pushbullet on Aptoide · Google Play
Bottom line: Pick this if push is one piece of a broader multi-device workflow you already use.
4. Home Assistant — Best if you already run it
Home Assistant ships an Android companion app that receives push notifications from your Home Assistant instance. If your NAS, Docker stack, or scripts can talk to Home Assistant already (they usually can), routing alerts through it means one less service to run and one client on your phone instead of two.
Where it falls short: Overkill if you do not already run Home Assistant. Setting up notifications from scratch takes more YAML than a curl one-liner deserves.
Pricing:
- Free: everything, open source
- Paid: Home Assistant Cloud at about 7 USD/month, only needed for remote access
- vs ntfy: same license, more setup
Migrating from ntfy: Point your scripts at the Home Assistant REST API and call a notify service. The mental model is closer to a message bus than a topic.
Download: Home Assistant on Aptoide · Google Play
Bottom line: Pick this if Home Assistant is already the smart hub, and pushing alerts through it means one less container.
5. Uptime Kuma — Best if the alerts are about services
Uptime Kuma is a status-page-and-monitor combo that watches HTTP endpoints, ports, and DNS records, and pushes alerts through 90-plus channels including ntfy, Pushover, Discord, and Home Assistant. If most of your notifications are “did my service go down,” Uptime Kuma does both the watching and the notifying.
Where it falls short: Not a general-purpose notification service. If you want to page yourself from a Bash script that is not a health check, Uptime Kuma is not the tool.
Pricing:
- Free: MIT open source
- Paid: none
- vs ntfy: different job entirely, often used together
Migrating from ntfy: Uptime Kuma calls ntfy as a channel. Migration is usually additive, not a replacement.
Download: Kuma monitor on Aptoide — third-party mobile client for browsing the dashboard
Bottom line: Pick this if the alerts are about services and you want the monitoring bundled.
6. Healthchecks.io — Best dead-man switch
Healthchecks.io solves the failure mode ntfy cannot. It expects a ping at a schedule you define. If the ping stops arriving, it alerts you. That is the right shape for backups, cron jobs, and any batch that is only interesting when it fails to run. Self-hosting is a one-container deploy.
Where it falls short: Not for real-time push. The Android app is a viewer, not a push receiver on its own.
Pricing:
- Free: 20 checks, weekly emails
- Paid: Hobbyist at about 5 USD/month for 20 checks with SMS/phone, higher tiers for teams
- vs ntfy: complementary, not replacement
Migrating from ntfy: Every cron job gets a curl at the end. Failure alerts go through email or ntfy itself.
Download: Healthchecks.io on Aptoide · Google Play
Bottom line: Pick this alongside ntfy for anything time-based. It watches the silence, ntfy handles the noise.
7. Apprise — Best when you want fan-out
Apprise is a Python library and command-line tool that lets one call reach 90-plus notification services at once. Point a Bash script at Apprise and it delivers to Discord, Slack, Telegram, ntfy, Pushover, and email in one command. If your on-call rotation cares which channel got hit, Apprise takes the switching out of every script.
Where it falls short: Not a service you install once and forget. Every host that sends alerts needs the CLI or library present. No first-party mobile client, alerts arrive in whatever destination Apprise fanned to.
Pricing:
- Free: MIT open source
- Paid: none
- vs ntfy: an aggregator, so it makes ntfy stronger rather than replacing it
Migrating from ntfy: Wrap your existing calls with an Apprise CLI invocation that lists ntfy as one destination. Add other channels next to it.
Download: No dedicated Android app; alerts land in whichever destination Apprise pushes to.
Bottom line: Pick this if you want one interface across many channels, and you do not mind installing a CLI on every alerting host.
How to choose
- If you want the closest ntfy clone, self-hosted, free: Gotify.
- If reliability matters more than self-hosting: Pushover.
- If push is part of a broader multi-device flow: Pushbullet.
- If Home Assistant is already the hub: Home Assistant.
- If the alerts are about services staying up: Uptime Kuma.
- If a cron job going quiet is the real risk: Healthchecks.io.
- If you want one call to hit many channels: Apprise.
Stay on ntfy if the current setup already works, your public endpoint is fine, and you have not felt the ceiling. It is a lovely piece of software. Most people who move do it to add capabilities ntfy never claimed to cover.
FAQ
What makes ntfy different from a push notification API? ntfy is a self-hostable pub/sub server for phone notifications. Any HTTP client can publish, and the mobile app subscribes to topics. There is no account, no sign-in, and no vendor between the sender and the receiver.
Is Gotify a full replacement for ntfy? Close, but not identical. Gotify uses application tokens where ntfy uses topics, and it lacks ntfy’s stronger multi-server UX in the Android client. For a single-server home setup, the two are interchangeable.
Can I use Home Assistant instead of ntfy for cron alerts? Yes. Home Assistant’s REST API accepts a notify call from anywhere on your network. The overhead is only worth it if Home Assistant is already installed.
What is the cheapest paid push service? Pushover at about 5 USD one-time per platform is the lowest total cost for a paid pipe with priority tiers. Pushbullet Pro at about 5 USD/month is cheaper up front but recurring.
Do any of these work without a smartphone? Uptime Kuma and Healthchecks.io both push to email, webhooks, and desktop clients without a phone in the loop. ntfy itself can also fire desktop notifications via web push.