ntfy

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 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:

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:

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:

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:

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:

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:

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:

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

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.