ntfy
FreePush a notification to your phone with one line of curl
An HTTP-based push notification service. Subscribe to a topic in the phone app, and any script, program or service that can send a PUT or POST to that topic makes your phone buzz. Use the public ntfy.sh server without signing up, or host the server yourself.
Why we picked it
Dual-licensed Apache-2.0 and GPL-2.0, 34,413 stars.
It compresses "have my script notify me" into one line:
curl -d "Backup done" ntfy.sh/mytopic
Install the ntfy app, subscribe to mytopic, and the message pops up. No bot to register, no
token to configure — scheduled backups, long builds, server alerts, finished downloads, anything
that can run curl can use it. Messages can carry a title, priority, tags, a click-through link and
attachments. Many self-hosted services, including Uptime Kuma and Home Assistant, offer ntfy as a
notification channel.
The server is a single statically linked binary that runs on Linux and Windows, with Docker images as well. Self-hosted, there are no message quotas; just change the server address in the app.
To be clear about:
- On the public server, the topic name is the password. Without an account, anyone who knows the topic can read and write it. Pick a hard-to-guess name and keep sensitive content off the public server.
- A self-hosted server lets everyone read and write every topic by default. For a private
instance, set
auth-default-accesstodeny-alland create an account for yourself. - ntfy.sh has paid plans (Supporter $6, Pro $12, Business $25 per month) that buy higher message limits and reserved topics on the public server. Self-hosting needs none of them.
- The Google Play build of the Android app uses Firebase for topics on ntfy.sh; the F-Droid build contains no Firebase and uses instant delivery for everything.
- For instant notifications on iOS from a self-hosted server, set
upstream-base-url: "https://ntfy.sh"so wake-up requests are forwarded through the public server; without it, delivery can take hours.