Building the product · Edition No. 7 · 1 Sep 2026

binwiederhier/ntfy

A publish-and-subscribe notification service driven by plain HTTP requests.

← Building the productRead the whole edition →
ntfy: an alert from one request. Turns an HTTP request into a phone alert.

34.1k stars · Apache-2.0 · v2.28.0 (2026-08-27) · Track this in Rising ↗

Push notification to your phone from one line of curl — the missing last step of every alert and long job in this ledger.

Verified25 Oct 2026

Radar check

What we found when we opened it. Every bar is one fact, with its date.

Alive100

Last code pushed 25 Oct 2026, 2 days before this check.

Releases100

Latest release v2.34.0 on 24 Oct 2026.

Maturity90

Public since October 2021, about 5 years.

Adoption91

35,058 stars and 1,676 forks.

Activity100

443 commits and 74 new issues in the last 90 days.

Community100

436 contributors. 84 pull requests merged in 90 days.

Security80

A security policy says how to report a problem. No published security advisories.

Licence Apache-2.0 and GPL-2.0 | [ntfy.sh](https: free to use; software you hand out that includes it must be GPL tooSetup effort 1 of 5Payoff 4 of 5
How the bars are scored
  • Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
  • Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
  • Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
  • Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
  • Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
  • Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
  • Security. A published security policy 80, none 40; published advisories are listed, not scored.

Checked by Repo Radar on 25 Oct 2026 from the repository on GitHub. Covered in Edition 7.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You send an HTTP POST to a topic address, and the message appears as a notification on every device subscribed to that topic. There is a free public server at ntfy.sh and the same software can be run privately as one small program written in Go. Mobile applications exist for both phone platforms, and a browser can subscribe too. Messages carry a title, a priority, tags, a click action and file attachments, and a message can be scheduled for later. The private server can require accounts and restrict who may read or write each topic, store messages for a chosen period, and since version 2.30.0 it has an experimental mode in which several servers share one PostgreSQL database — the release notes say that mode is not ready for production. What it does not do is deliver anything by itself: it is the last step of somebody else's script, not a scheduler, a monitor or a workflow tool.

Why it matters

Who it suits. Anyone with scripts, backups, long builds or monitors whose results currently end in an email that gets read tomorrow. It suits the owner of a small server best of all, because wiring a shell script to a phone is otherwise a surprising amount of work. Skip it if the team already lives in a chat tool with webhooks, because the notification probably belongs in the channel people are already reading.

Verdict. Two minutes well spent, and the thing it fixes is real: a monitor that writes to a dashboard nobody opens has not told anyone anything. louislam/uptime-kuma (#1) has it as a built-in notification target, so connecting the two is a dropdown rather than a project. The caution is the public server: a topic name there works as the password, so anyone who guesses it can read the messages or post to it. Use a long random topic name, and move to a private server before anything sensitive goes through it. Self-hosting is one small program, although reliable notifications on iPhones are the fiddly part of an otherwise trivial setup. caronc/apprise is the better answer if the goal is to send to many different services rather than to run one.

Stars34.1k
LicenceApache-2.0
Latestv2.28.0 (2026-08-27)checked 7 Sep 2026
Written inGo
RunsSelf-hosted on your own server
Summary (Key Points)from the README
Key features
  • Plain HTTP messaging: Send notifications with simple PUT or POST requests from scripts on any computer.
  • No sign-up: The free ntfy.sh service requires no account to start sending notifications.
  • Self-hostable: Because ntfy is open source, you can run your own instance of the server.
  • Mobile apps: An open-source Android app is on Google Play and F-Droid, and an open-source iOS app is on the App Store.
  • Email receiving: The server uses go-smtp to receive e-mails.
  • Message cache: The server keeps a persistent message cache backed by go-sqlite3.
  • Push delivery: The server sends Firebase Cloud Messaging (FCM) messages and web push notifications (via webpush-go).
  • Command-line interface: The CLI is driven by urfave/cli.
  • Web app: A React and Material UI web app is included.
  • Paid hosted plans: Plans start at $5/month for users who don't want to self-host, and donations are accepted through GitHub Sponsors and Liberapay.
  • Translations: Contributors can translate the project through Hosted Weblate, with German, English and Bulgarian flags shown as examples.
Ways to install
Platform or methodWhat it needsEffort
ntfy.sh hosted serviceNothing beyond sending a PUT or POST request; no sign-up requiredNot stated in README
Self-hosting the serverRunning your own instance of the open-source server; the README links to Install / Self-hosting docs for detailsNot stated in README
Android appGoogle Play or F-DroidNot stated in README
iOS appApp StoreNot stated in README
Important
  • Paid plans: Hosted plans are sold through the web app, and the README does not list what each plan includes.
  • Beta access: iOS betas are offered through TestFlight, while Android betas go through Discord or Matrix, since the maintainer has not yet created a Google Play testing channel.
  • Contributions: Larger features should be discussed on Discord or Matrix before a pull request, according to the README.
  • Dual license: The project is licensed under both Apache License 2.0 and GPLv2, so check which terms suit your use.
  • Vendored code: Go's text/template is vendored under template/gotext/ with a patch that adds an execution deadline.

Written by an AI model from the project’s README; not part of the review, and it can be wrong.

Setup effort
1 / 5
Payoff
4 / 5
Good
  • curl -d "message" ntfy.sh/your-topic is the whole integration, from any language or shell.
  • Self-hosting is one small Go program, with optional accounts and per-topic permissions.
  • Attachments, priorities, tags and scheduled delivery are all built in.
Watch for
  • On the public server the topic name is the only secret, so a guessable name is an open channel.
  • Reliable delivery to iPhones is the hard part of running a private server; the Android path is much smoother.
  • Notifications are easy to overuse. Three topics are useful and thirty are noise.
Install
curl -d "ingest finished: 412 rows" \
  ntfy.sh/a-long-random-topic-name
Screenshots
binwiederhier/ntfy: GitHub preview cardbinwiederhier/ntfy: Screenshot 1binwiederhier/ntfy: Screenshot 2binwiederhier/ntfy: Screenshot 3binwiederhier/ntfy: Screenshot 4

On Stack Radar: Build & Ship › APIs & Developer Utilities › Webhooks.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.