Skip to content

Release notes

Binaries for all releases can be found on the GitHub releases pages for the ntfy server and the ntfy Android app.

ntfy server v2.11.0

Released May 13, 2024

This is a tiny release that fixes a database index issue that caused performance issues on ntfy.sh. It also fixes a bug in the rate visitor logic that caused rate visitors to be assigned to seemingly random topics. Nothing major this time.

❀️ Quick reminder that if you like ntfy, please consider sponsoring us via GitHub Sponsors and Liberapay, or buying a paid plan via the web app. ntfy will always remain open source.

Bug fixes + maintenance:

  • Re-add database index idx_topic to the messages table to fix performance issues on ntfy.sh (no ticket, big thanks to @tcaputi for finding this issue)
  • Do not set rate visitor for non-eligible topics (no ticket)
  • Do not cache config.js (#1098, thanks to @wunter8)

ntfy server v2.10.0

Released Mar 27, 2024

This release adds support for message templating in the ntfy server, which allows you to include a message and/or title template that will be filled with values from a JSON body (e.g. curl -gd '{"alert":"Disk space low"}' "ntfy.sh/mytopic?tpl=1&m={{.alert}}"). This is great for services that let you specify a webhook URL but do not let you change the webhook body (such as GitHub, or Grafana).

Features:

  • Message templating: You can now include a message and/or title template that will be filled with values from a JSON body (#724, thanks to @wunter8 for implementing)

ntfy server v2.9.0

Released Mar 7, 2024

A small release after a long pause (lots of day job work). This release adds for larger messages and longer message delays in scheduled delivery messages. The web app also now supports pasting images from the clipboard. Other than that, only a few bug fixes and documentation updates, and a teeny tiny breaking change 😬.

Info

⚠️ Breaking change: The Rate-Topics header was removed due to a DoS issue. This only affects installations with visitor-subscriber-rate-limiting: true, which is not the default and likely very rarely used. Normally I'd never remove a feature, but this is a security issue, and likely affects almost nobody.

Features:

Bug fixes + maintenance:

  • ⚠️ Remove Rate-Topics header due to DoS security issue if visitor-subscriber-rate-limiting: true (#1048)

Documentation:

ntfy iOS app v1.3

Released Nov 26, 2023

This release (hopefully) fixes the issues with the iOS UI not updating properly when new notifications arrive, as well as notifications not being received (anymore) after previously working. Both issues have been annoying and known bugs for a long time, and I hope that they are finally fixed.

Many thanks to @tcaputi for fixing the issues, and to the anonymous donor for sponsoring these fixes.

Bug fixes:

ntfy server v2.8.0

Released November 19, 2023

This release brings a handful of random bug fixes: two unrelated access control list fixes, a fix around web app crashes for languages with underscores in the language code (e.g. zh_Hant, zh_Hans, pt_BR, ...), a workaround for the Priority header (often used in Cloudflare setups), and support among others support for HTML-only emails (finally), web app crash fixes

Bug fixes + maintenance:

Additional languages:

ntfy server v2.7.0

Released August 17, 2023

This release ships Markdown support for the web app (not in the Android app yet), and adds support for right-to-left languages (RTL) in the web app. It also fixes a few issues around date/time formatting, internationalization support, a CLI auth bug.

Furthermore, it fixes a security issue around access tokens getting erroneously deleted for other users in a specific scenario. This was a denial-of-service-type security issue, since it effectively allowed a single user to deny access to all other users of a ntfy instance. Please note that while tokens were erroneously deleted, nobody but the token owner ever had access to it. Please refer to the ticket for details. Please upgrade your ntfy instance if you run a multi-user system.

Features:

Security: ⚠️

  • Fixes issue with access tokens getting deleted (#838)

Bug fixes + maintenance:

  • Fix issues with date/time with different locales (#700, thanks to @nimbleghost)
  • Re-init i18n on each service worker message to avoid missing translations (#817, thanks to @nihalgonsalves)
  • You can now unset the default user:pass/token in client.yml for an individual subscription to remove the Authorization header (#829, thanks to @tomeon for reporting and to @wunter8 for fixing)

Documentation:

ntfy server v2.6.2

Released June 30, 2023

With this release, the ntfy web app now contains a progressive web app (PWA) with Web Push support, which means you'll be able to install the ntfy web app on your desktop or phone similar to a native app (even on iOS! πŸ₯³). Installing the PWA gives ntfy web its own launcher, a standalone window, push notifications, and an app badge with the unread notification count. Note that for self-hosted servers, Web Push must be configured.

On top of that, this release also brings dark mode πŸ§›πŸŒ™ to the web app.

πŸ™ A huge thanks for this release goes to @nimbleghost, for basically implementing the Web Push / PWA and dark mode feature by himself. I'm really grateful for your contributions.

❀️ If you like ntfy, please consider sponsoring us via GitHub Sponsors and Liberapay, or buying a paid plan via the web app (20% off if you use promo code MYTOPIC). ntfy will always remain open source.

Features:

Bug fixes:

  • Support encoding any header as RFC 2047 (#737, thanks to @cfouche3005 for reporting)
  • Do not forward poll requests for UnifiedPush messages (no ticket, thanks to NoName for reporting)
  • Fix ntfy pub % segfaulting (#760, thanks to @clesmian for reporting)
  • Newly created access tokens are now lowercase only to fully support <topic>+<token>@<domain> email syntax (#773, thanks to gingervitiz for reporting)
  • The .1 release fixes a few visual issues with dark mode, and other web app updates (#791, #793, #792, thanks to @nimbleghost)
  • The .2 release fixes issues with the service worker in Firefox and adds automatic service worker updates (#795, thanks to @nimbleghost)

Maintenance:

Changes in tarball/zip naming:
Due to a change in GoReleaser, some of the binary release archives now have slightly different names. My apologies if this causes issues in the downstream projects that use ntfy:

  • ntfy_v${VERSION}_windows_x86_64.zip -> ntfy_v${VERSION}_windows_amd64.zip
  • ntfy_v${VERSION}_linux_x86_64.tar.gz -> ntfy_v${VERSION}_linux_amd64.tar.gz
  • ntfy_v${VERSION}_macOS_all.tar.gz -> ntfy_v${VERSION}_darwin_all.tar.gz

ntfy server v2.5.0

Released May 18, 2023

This release brings a number of new features, including support for text-to-speech style phone calls, an admin API to manage users and ACL (currently in beta, and hence undocumented), and support for authorized access to upstream servers via the upstream-access-token config option.

❀️ If you like ntfy, please consider sponsoring me via GitHub Sponsors and Liberapay, or by buying a paid plan via the web app (20% off if you use promo code MYTOPIC). ntfy will always remain open source.

Features:

  • Support for text-to-speech style phone calls using the X-Call header (no ticket)
  • Admin API to manage users and ACL, v1/users + v1/users/access (intentionally undocumented as of now, #722, thanks to @CreativeWarlock for sponsoring this ticket)
  • Added upstream-access-token config option to allow authorized access to upstream servers (no ticket)

Bug fixes + maintenance:

  • Removed old ntfy website from ntfy entirely (no ticket)
  • Make emoji lookup for emails more efficient (#725, thanks to @adamantike)
  • Fix potential subscriber ID clash (#712, thanks to @peterbourgon for reporting, and @dropdevrahul for fixing)
  • Support for quoted-printable in incoming emails (#719, thanks to @Aerion)
  • Attachments with filenames that are downloaded using a browser will now download with the proper filename (#726, thanks to @un99known99 for reporting, and @wunter8 for fixing)
  • Fix web app i18n issue in account preferences (#730, thanks to @codebude for reporting)

ntfy server v2.4.0

Released Apr 26, 2023

This release adds a tiny v1/stats endpoint to expose how many messages have been published, and adds support to encode the X-Title, X-Message and X-Tags header as RFC 2047. It's a pretty small release, and mainly enables the release of the new ntfy.sh website.

❀️ If you like ntfy, please consider sponsoring me via GitHub Sponsors and Liberapay, or by buying a paid plan via the web app. ntfy will always remain open source.

Features:

  • ntfy CLI (ntfy publish and ntfy subscribe only) can now be installed via Homebrew (thanks to @Moulick)
  • Added v1/stats endpoint to expose messages stats (no ticket)
  • Support RFC 2047 encoded headers (no ticket, honorable mention to mqttwarn and @amotl)

Bug fixes + maintenance:

  • Hide country flags on Windows (#606, thanks to @cmeis for reporting, and to @pokej6 for fixing it)
  • ntfy sub now uses default auth credentials as defined in client.yml (#698, thanks to @CrimsonFez for reporting, and to @wunter8 for fixing it)

Documentation:

  • Updated PowerShell examples (#697, thanks to @Natfan)

Additional languages:

ntfy server v2.3.1

Released March 30, 2023

This release disables server-initiated polling of iOS devices entirely, thereby eliminating the thundering herd problem on ntfy.sh that we observe every 20 minutes. The polling was never strictly necessary, and has actually caused duplicate delivery issues as well, so disabling it should not have any negative effects. iOS users, please reach out via Discord or Matrix if there are issues.

Bug fixes + maintenance:

  • Disable iOS polling entirely (#677/#509)

ntfy server v2.3.0

Released March 29, 2023

This release primarily fixes an issue with delayed messages, and it adds support for Go's profiler (if enabled), which will allow investigating usage spikes in more detail. There will likely be a follow-up release this week to fix the actual spikes caused by iOS devices.

Features:

  • ntfy now supports Go's pprof profiler, if enabled (relates to #677)

Bug fixes + maintenance:

  • Fix delayed message sending from authenticated users (#679)
  • Fixed plural for Polish and other translations (#678, thanks to @bmoczulski)

ntfy server v2.2.0

Released March 17, 2023

With this release, ntfy is now able to expose metrics via a /metrics endpoint for Prometheus, if enabled. The endpoint exposes about 20 different counters and gauges, from the number of published messages and emails, to active subscribers, visitors and topics. If you'd like more metrics, pop in the Discord/Matrix or file an issue on GitHub.

On top of this, you can now use access tokens in the ntfy CLI (defined in the client.yml file), fixed a bug in ntfy subscribe, removed the dependency on Google Fonts, and more.

πŸ”₯ Reminder: Purchase one of three ntfy Pro plans for 50% off for a limited time (if you use promo code MYTOPIC). ntfy Pro gives you higher rate limits and lets you reserve topic names. Buy through web app.

❀️ If you don't need ntfy Pro, please consider sponsoring ntfy via GitHub Sponsors and Liberapay. ntfy will stay open source forever.

Features:

Bug fixes + maintenance:

  • ntfy sub --poll --from-config will now include authentication headers from client.yml (if applicable) (#658, thanks to @wunter8)
  • Docs: Removed dependency on Google Fonts in docs (#554, thanks to @bt90 for reporting, and @ozskywalker for implementing)
  • Increase allowed auth failure attempts per IP address to 30 (no ticket)
  • Web app: Increase maximum incremental backoff retry interval to 2 minutes (no ticket)

Documentation:

  • Make query parameter description more clear (#630, thanks to @bbaa-bbaa for reporting, and to @wunter8 for a fix)

ntfy server v2.1.2

Released March 4, 2023

This is a hotfix release, mostly to combat the ridiculous amount of Matrix requests with invalid/dead pushkeys, and the corresponding HTTP 507 responses the ntfy.sh server is sending out. We're up to >600k HTTP 507 responses per day 🀦. This release solves this issue by rejecting Matrix pushkeys, if nobody has subscribed to the corresponding topic for 12 hours.

The release furthermore reverts the default rate limiting behavior for UnifiedPush to be publisher-based, and introduces a flag to enable subscriber-based rate limiting for high volume servers.

Features:

  • Support SMTP servers without auth (#645, thanks to @Sharknoon for reporting)

Bug fixes + maintenance:

Additional languages:

ntfy server v2.1.1

Released March 1, 2023

This is a tiny release with a few bug fixes, but it's big for me personally. After almost three months of work, today I am finally launching the paid plans on ntfy.sh πŸ₯³ πŸŽ‰.

You are now able to purchase one of three plans that'll give you higher rate limits (messages, emails, attachment sizes, ...), as well as the ability to reserve topic names for your personal use, while at the same time supporting me and the ntfy open source project ❀️. You can check out the pricing, and purchase plans through the web app (use promo code MYTOPIC for a 50% discount, limited time only).

And as I've said many times: Do not worry. ntfy will always stay open source, and that includes all features. There are no closed-source features. So if you'd like to run your own server, you can!

Bug fixes + maintenance:

  • Fix panic when using Firebase without users (#641, thanks to u/heavybell for reporting)
  • Remove health check from Dockerfile and document it (#635, thanks to @Andersbiha)
  • Upgrade dialog: Disable submit button for free tier (no ticket)
  • Allow multiple log-level-overrides on the same field (no ticket)
  • Actually remove ntfy publish --env-topic flag (as per deprecations, no ticket)
  • Added billing-contact config option (no ticket)

ntfy server v2.1.0

Released February 25, 2023

This release changes the way UnifiedPush (UP) topics are rate limited from publisher-based rate limiting to subscriber-based rate limiting. This allows UP application servers to send higher volumes, since the subscribers carry the rate limits. However, it also means that UP clients have to subscribe to a topic first before they are allowed to publish. If they do no, clients will receive an HTTP 507 response from the server.

We also fixed another issue with UnifiedPush: Some Mastodon servers were sending unsupported Authorization headers, which ntfy rejected with an HTTP 401. We now ignore unsupported header values.

As of this release, ntfy also supports sending emails to protected topics, and it ships code to support annual billing cycles (not live yet).

As part of this release, I also enabled sign-up and login (free accounts only), and I also started reducing the rate limits for anonymous & free users a bit. With the next release and the launch of the paid plan, I'll reduce the limits a bit more. For 90% of users, you should not feel the difference.

Features:

  • UnifiedPush: Subscriber-based rate limiting for up* topics (#584/#609/#633, thanks to @karmanyaahm)
  • Support for publishing to protected topics via email with access tokens (#612, thanks to @tamcore)
  • Support for base64-encoded and nested multipart emails (#610, thanks to @Robert-litts)
  • Payments: Add support for annual billing intervals (no ticket)

Bug fixes + maintenance:

  • Web: Do not disable "Reserve topic" checkbox for admins (no ticket, thanks to @xenrox for reporting)
  • UnifiedPush: Treat non-Basic/Bearer Authorization header like header was not sent (#629, thanks to @Boebbele and @S1m for reporting)

Documentation:

Additional languages:

ntfy server v2.0.1

Released February 17, 2023

This is a quick bugfix release to address a panic that happens when attachment-cache-dir is not set.

Bug fixes + maintenance:

  • Avoid panic in manager when attachment-cache-dir is not set (#617, thanks to @ksurl)
  • Ensure that calls to standard logger log.Println also output JSON (no ticket)

ntfy server v2.0.0

Released February 16, 2023

This is the biggest ntfy server release I've ever done πŸ₯³ . Lots of new and exciting features.

Brand-new features:

  • User signup/login & account sync: If enabled, users can now register to create a user account, and then login to the web app. Once logged in, topic subscriptions and user settings are stored server-side in the user account (as opposed to only in the browser storage). So far, this is implemented only in the web app only. Once it's in the Android/iOS app, you can easily keep your account in sync. Relevant config options are enable-signup and enable-login.

  • Topic reservations πŸŽ‰: If enabled, users can now reserve topics and restrict access to other users. Once this is fully rolled out, you may reserve ntfy.sh/philbackups and define access so that only you can publish/subscribe to the topic. Reservations let you claim ownership of a topic, and you can define access permissions for others as deny-all (only you have full access), read-only (you can publish/subscribe, others can subscribe), write-only (you can publish/subscribe, others can publish), read-write (everyone can publish/subscribe, but you remain the owner). Topic reservations can be configured in the web app if enable-reservations is enabled, and only if the user has a tier that supports reservations.

  • Access tokens: It is now possible to create user access tokens for a user account. Access tokens are useful to avoid having to paste your password to various applications or scripts. For instance, you may want to use a dedicated token to publish from your backup host, and one from your home automation system. Tokens can be configured in the web app, or via the ntfy token command. See creating tokens, and publishing using tokens.

  • Structured logging: I've redone a lot of the logging to make it more structured, and to make it easier to debug and troubleshoot. Logs can now be written to a file, and as JSON (if configured). Each log event carries context fields that you can filter and search on using tools like jq. On top of that, you can override the log level if certain fields match. For instance, you can say user_name=phil -> debug to log everything related to a certain user with debug level. See logging & debugging.

  • Tiers: You can now define and associate usage tiers to users. Tiers can be used to grant users higher limits, such as daily message limits, attachment size, or make it possible for users to reserve topics. You could, for instance, have a tier Standard that allows 500 messages/day, 15 MB attachments and 5 allowed topic reservations, and another tier Friends & Family with much higher limits. For ntfy.sh, I'll mostly use these tiers to facilitate paid plans (see below). Tiers can be configured via the ntfy tier ... command. See tiers.
  • Paid tiers: Starting very soon, I will be offering paid tiers for ntfy.sh on top of the free service. You'll be able to subscribe to tiers with higher rate limits (more daily messages, bigger attachments) and topic reservations. Paid tiers are facilitated by integrating Stripe as a payment provider. See payments for details.

ntfy is forever open source!
Yes, I will be offering some paid plans. But you don't need to panic! I won't be taking any features away, and everything will remain forever open source, so you can self-host if you like. Similar to the donations via GitHub Sponsors and Liberapay, paid plans will help pay for the service and keep me motivated to keep going. It'll only make ntfy better.

Other tickets:

  • User account signup, login, topic reservations, access tokens, tiers etc. (#522)
  • OPTIONS method calls are not serviced when the UI is disabled (#598, thanks to @enticedwanderer for reporting)

Special thanks:

A big Thank-you goes to everyone who tested the user account and payments work. I very much appreciate all the feedback, suggestions, and bug reports. Thank you, @nwithan8, @deadcade, @xenrox, @cmeis, @wunter8 and the others who I forgot.

ntfy server v1.31.0

Released February 14, 2023

This is a tiny release before the really big release, and also the last before the big v2.0.0. The most interesting things in this release are the new preliminary health endpoint to allow monitoring in K8s (and others), and the removal of upx binary packing (which was causing erroneous virus flagging). Aside from that, the go-smtp library did a breaking-change upgrade, which required some work to get working again.

Features:

  • Preliminary /v1/health API endpoint for service monitoring (no ticket)
  • Add basic health check to Dockerfile (#555, thanks to @bt90)

Bug fixes + maintenance:

  • Fix chown issues with RHEL-like based systems (#566/#565, thanks to @danieldemus)
  • Removed upx (binary packing) for all builds due to false virus warnings (#576, thanks to @shawnhwei for reporting)
  • Upgraded go-smtp library and tests to v0.16.0 (#569)

Documentation:

Additional languages:

ntfy server v1.30.1

Released December 23, 2022 πŸŽ…

This is a special holiday edition version of ntfy, with all sorts of holiday fun and games, and hidden quests. Nahh, just kidding. This release is an intermediate release mainly to eliminate warnings in the logs, so I can roll out the TLSv1.3, HTTP/2 and Unix mode changes on ntfy.sh (see #552).

Features:

Bug fixes + maintenance:

  • Remove --env-topic option from ntfy publish as per deprecation (no ticket)
  • Prepared statements for message cache writes (#542, thanks to @nicois)
  • Do not warn about invalid IP address when behind proxy in unix socket mode (relates to #552)
  • Upgrade nginx/ntfy config on ntfy.sh to work with TLSv1.3, HTTP/2 (#552, thanks to @bt90)

ntfy Android app v1.16.0

Released December 11, 2022

This is a feature and platform/dependency upgrade release. You can now have per-subscription notification settings (including sounds, DND, etc.), and you can make notifications continue ringing until they are dismissed. There's also support for thematic/adaptive launcher icon for Android 13.

There are a few more Android 13 specific things, as well as many bug fixes: No more crashes from large images, no more opening the wrong subscription, and we also fixed the icon color issue.

Features:

  • Custom per-subscription notification settings incl. sounds, DND, etc. (#6, thanks to @doits)
  • Insistent notifications that ring until dismissed (#417, thanks to @danmed for reporting)
  • Add thematic/adaptive launcher icon (#513, thanks to @daedric7 for reporting)

Bug fixes + maintenance:

  • Upgrade Android dependencies and build toolchain to SDK 33 (no ticket)
  • Simplify F-Droid build: Disable tasks for Google Services (#516, thanks to @markosopcic)
  • Android 13: Ask for permission to post notifications (#508)
  • Android 13: Do not allow swiping away the foreground notification (#521, thanks to @alexhorner for reporting)
  • Android 5 (SDK 21): Fix crash on unsubscribing (#528, thanks to Roger M.)
  • Remove timestamp when copying message text (#471, thanks to @wunter8)
  • Fix auto-delete if some icons do not exist anymore (#506)
  • Fix notification icon color (#480, thanks to @s-h-a-r-d for reporting)
  • Fix topics do not re-subscribe to Firebase after restoring from backup (#511)
  • Fix crashes from large images (#474, thanks to @daedric7 for reporting)
  • Fix notification click opens wrong subscription (#261, thanks to @SMAW for reporting)
  • Fix Firebase-only "link expired" issue (#529)
  • Remove "Install .apk" feature in Google Play variant due to policy change (#531)
  • Add donate button (no ticket)

Additional translations:

ntfy server v1.29.1

Released November 17, 2022

This is mostly a bugfix release to address the high load on ntfy.sh. There are now two new options that allow synchronous batch-writing of messages to the cache. This avoids database locking, and subsequent pileups of waiting requests.

Bug fixes:

  • High-load servers: Allow asynchronous batch-writing of messages to cache via cache-batch-* options (#498/#502)
  • Sender column in cache.db shows invalid IP (#503)

Documentation:

  • GitHub Actions example (#492, thanks to @ksurl)
  • UnifiedPush ACL clarification (#497, thanks to @bt90)
  • Install instructions for Kustomize (#463, thanks to @l-maciej)

Other things:

  • Put ntfy.sh docs on GitHub pages to reduce AWS outbound traffic cost (#491)
  • The ntfy.sh server hardware was upgraded to a bigger box. If you'd like to help out carrying the server cost, sponsorships and donations πŸ’Έ would be very much appreciated

ntfy server v1.29.0

Released November 12, 2022

This release adds the ability to add rate limit exemptions for IP ranges instead of just specific IP addresses. It also fixes a few bugs in the web app and the CLI and adds lots of new examples and install instructions.

Thanks to some love on HN, we got so many new ntfy users trying out ntfy and joining the chat rooms. Welcome to the ntfy community to all of you! We also got a ton of new sponsors and donations πŸ’Έ, which is amazing. I'd like to thank all of you for believing in the project, and for helping me pay the server cost. The HN spike increased the AWS cost quite a bit.

Features:

  • Allow IP CIDRs in visitor-request-limit-exempt-hosts (#423, thanks to @karmanyaahm)

Bug fixes + maintenance:

  • Subscriptions can now have a display name (#370, thanks to @tfheen for reporting)
  • Bump Go version to Go 18.x (#422)
  • Web: Strip trailing slash when subscribing (#428, thanks to @raining1123 for reporting, and @wunter8 for fixing)
  • Web: Strip trailing slash after server URL in publish dialog (#441, thanks to @wunter8)
  • Allow empty passwords in client.yml (#374, thanks to @cyqsimon for reporting, and @wunter8 for fixing)
  • ntfy pub will now use default username and password from client.yml (#431, thanks to @wunter8 for fixing)
  • Make ntfy sub work with NTFY_USER env variable (#447, thanks to SuperSandro2000)
  • Web: Disallow GET/HEAD requests with body in actions (#468, thanks to @ollien)

Documentation:

Additional translations:

Sponsorships::

Thank you to the amazing folks who decided to sponsor ntfy. Thank you for helping carry the cost of the public server and developer licenses, and more importantly: Thank you for believing in ntfy! You guys rock!

A list of all the sponsors can be found in the README.

ntfy Android app v1.14.0

Released September 27, 2022

This release adds the ability to set a custom icon to each notification, as well as a display name to subscriptions. We also moved the action buttons in the detail view to a more logical place, fixed a bunch of bugs, and added four more languages. Hurray!

Features:

  • Subscriptions can now have a display name (#313, thanks to @wunter8)
  • Display name for UnifiedPush subscriptions (#355, thanks to @wunter8)
  • Polling is now done with since=<id> API, which makes deduping easier (#165)
  • Turned JSON stream deprecation banner into "Use WebSockets" banner (no ticket)
  • Move action buttons in notification cards (#236, thanks to @wunter8)
  • Icons can be set for each individual notification (#126, thanks to @wunter8)

Bug fixes:

  • Long-click selecting of notifications doesn't scroll to the top anymore (#235, thanks to @wunter8)
  • Add attachment and click URL extras to MESSAGE_RECEIVED broadcast (#329, thanks to @wunter8)
  • Accessibility: Clear/choose service URL button in base URL dropdown now has a label (#292, thanks to @mhameed for reporting)

Additional translations:

Thank you to @wunter8 for proactively picking up some Android tickets, and fixing them! You rock!

ntfy server v1.28.0

Released September 27, 2022

This release primarily adds icon support for the Android app, and adds a display name to subscriptions in the web app. Aside from that, we fixed a few random bugs, most importantly the Priority header bug that allows the use behind Cloudflare. We also added a ton of documentation. Most prominently, an integrations + projects page.

As of now, I also have started accepting donations and sponsorships πŸ’Έ. I would be very humbled if you consider donating.

Features:

  • Subscription display name for the web app (#348)
  • Allow setting socket permissions via --listen-unix-mode (#356, thanks to @koro666)
  • Icons can be set for each individual notification (#126, thanks to @wunter8)
  • CLI: Allow default username/password in client.yml (#372, thanks to @wunter8)
  • Build support for other Unix systems (#393, thanks to @la-ninpre)

Bug fixes:

  • ntfy user commands don't work with auth_file but works with auth-file (#344, thanks to @Histalek for reporting)
  • Ignore new draft HTTP Priority header (#351, thanks to @ksurl for reporting)
  • Delete expired attachments based on mod time instead of DB entry to avoid races (no ticket)
  • Better logging for Matrix push key errors (#384, thanks to @christophehenry)
  • Web: Switched "Pop" and "Pop Swoosh" sounds (#352, thanks to @coma-toast for reporting)

Documentation:

Additional translations:

ntfy server v1.27.2

Released June 23, 2022

This release brings two new CLI options to wait for a command to finish, or for a PID to exit. It also adds more detail to trace debug output. Aside from other bugs, it fixes a performance issue that occurred in large installations every minute or so, due to competing stats gathering (personal installations will likely be unaffected by this).

Features:

Bug fixes:

  • Fix slow requests due to excessive locking (#338)
  • Return HTTP 500 for GET /_matrix/push/v1/notify when base-url is not configured (no ticket)
  • Disallow setting upstream-base-url to the same value as base-url (#334, thanks to @oester for reporting)
  • Fix since=<id> implementation for multiple topics (#336, thanks to @karmanyaahm for reporting)
  • Simple parsing in Actions header now supports settings Android intent= key (#341, thanks to @wunter8)

Deprecations:

  • The ntfy publish --env-topic option is deprecated as of now (see deprecations for details)

ntfy server v1.26.0

Released June 16, 2022

This release adds a Matrix Push Gateway directly into ntfy, to make self-hosting a Matrix server easier. The Windows CLI is now available via Scoop, and ntfy is now natively supported in Uptime Kuma.

Features:

Bug fixes:

  • Web app: Show "notifications not supported" alert on HTTP (#323, thanks to @milksteakjellybeans for reporting)
  • Use last address in X-Forwarded-For header as visitor address (#328)

Documentation

ntfy iOS app v1.2

Released June 16, 2022

This release adds support for authentication/authorization for self-hosted servers. It also allows you to set your server as the default server for new topics.

Features:

  • Support for auth and user management (#277)
  • Ability to add default server (#295)

Bug fixes:

  • Add validation for selfhosted server URL (#290)

ntfy server v1.25.2

Released June 2, 2022

This release adds the ability to set a log level to facilitate easier debugging of live systems. It also solves a production problem with a few over-users that resulted in Firebase quota problems (only applying to the over-users). We now block visitors from using Firebase if they trigger a quota exceeded response.

On top of that, we updated the Firebase SDK and are now building the release in GitHub Actions. We've also got two more translations: Chinese/Simplified and Dutch.

Features:

  • Advanced logging, with different log levels and hot reloading of the log level (#284)

Bugs:

  • Respect Firebase "quota exceeded" response for topics, block Firebase publishing for user for 10min (#289)
  • Fix documentation header blue header due to mkdocs-material theme update (no ticket)

Maintenance:

  • Upgrade Firebase Admin SDK to 4.x (#274)
  • CI: Build from pipeline instead of locally (#36)

Documentation:

Additional translations:

ntfy iOS app v1.1

Released May 31, 2022

In this release of the iOS app, we add message priorities (mapped to iOS interruption levels), tags and emojis, action buttons to open websites or perform HTTP requests (in the notification and the detail view), a custom click action when the notification is tapped, and various other fixes.

It also adds support for self-hosted servers (albeit not supporting auth yet). The self-hosted server needs to be configured to forward poll requests to upstream ntfy.sh for push notifications to work (see iOS push notifications for details).

Features:

  • Message priority support (no ticket)
  • Tags/emojis support (no ticket)
  • Action buttons support (no ticket)
  • Click action support (no ticket)
  • Open topic when notification clicked (no ticket)
  • Notification now makes a sound and vibrates (no ticket)
  • Cancel notifications when navigating to topic (no ticket)
  • iOS 14.0 support (no ticket, PR#1, thanks to @callum-99)

Bug fixes:

  • iOS UI not always updating properly (#267)

ntfy server v1.24.0

Released May 28, 2022

This release of the ntfy server brings supporting features for the ntfy iOS app. Most importantly, it enables support for self-hosted servers in combination with the iOS app. This is to overcome the restrictive Apple development environment.

Features:

  • Regularly send Firebase keepalive messages to ~poll topic to support self-hosted servers (no ticket)
  • Add subscribe filter to query exact messages by ID (no ticket)
  • Support for poll_request messages to support iOS push notifications for self-hosted servers (no ticket)

Bug fixes:

Additional translations:

ntfy iOS app v1.0

Released May 25, 2022

This is the first version of the ntfy iOS app. It supports only ntfy.sh (no selfhosted servers) and only messages + title (no priority, tags, attachments, ...). I'll rapidly add (hopefully) most of the other ntfy features, and then I'll focus on self-hosted servers.

The app is now available in the App Store.

Tickets:

Thanks:

  • Thank you to all the testers who tried out the app. You guys gave me the confidence that it's ready to release (albeit with some known issues which will be addressed in follow-up releases).

ntfy server v1.23.0

Released May 21, 2022

This release ships a CLI for Windows and macOS, as well as the ability to disable the web app entirely. On top of that, it adds support for APNs, the iOS messaging service. This is needed for the (soon to be released) iOS app.

Features:

Bug fixes:

  • Support underscores in server.yml config options (#255, thanks to @ajdelgado)
  • Force MAKEFLAGS to --jobs=1 in Makefile (#257, thanks to @oddlama)

Documentation:

Additional translations:

Thank you to the many translators, who helped translate the new strings so quickly. I am humbled and amazed by your help.

ntfy Android app v1.13.0

Released May 11, 2022

This release brings a slightly altered design for the detail view, featuring a card layout to make notifications more easily distinguishable from one another. It also ships per-topic settings that allow overriding minimum priority, auto delete threshold and custom icons. Aside from that, we've got tons of bug fixes as usual.

Features:

  • Per-subscription settings, custom subscription icons (#155, thanks to @mztiq for reporting)
  • Cards in notification detail view (#175, thanks to @cmeis for reporting)

Bug fixes:

  • Accurate naming of "mute notifications" from "pause notifications" (#224, thanks to @shadow00 for reporting)
  • Make messages with links selectable (#226, thanks to @StoyanDimitrov for reporting)
  • Restoring topics or settings from backup doesn't work (#223, thanks to @shadow00 for reporting)
  • Fix app icon on old Android versions (#128, thanks to @shadow00 for reporting)
  • Fix races in UnifiedPush registration (#230, thanks to @Jakob for reporting)
  • Prevent view action from crashing the app (#233)
  • Prevent long topic names and icons from overlapping (#240, thanks to @cmeis for reporting)

Additional translations:

  • Dutch (incomplete, thanks to @diony)

Thank you:

Thanks to @cmeis, @StoyanDimitrov, @Fallenbagel for testing, and to @Joeharrison94 for the input. And thank you very much to all the translators for catching up so quickly.

ntfy server v1.22.0

Released May 7, 2022

This release makes the web app more accessible to people with disabilities, and introduces a "mark as read" icon in the web app. It also fixes a curious bug with WebSockets and Apache and makes the notification sounds in the web app a little quieter.

We've also improved the documentation a little and added translations for three more languages.

Features:

  • Make web app more accessible (#217)
  • Better parsing of the user actions, allowing quotes (no ticket)
  • Add "mark as read" icon button to notification (#243, thanks to @wunter8)

Bug fixes:

  • Upgrade header check is now case in-sensitive (#228, thanks to @wunter8 for finding it)
  • Made web app sounds quieter (#222)
  • Add "private browsing"-specific error message for Firefox/Safari (#208, thanks to @julianfoad for reporting)

Documentation:

  • Improved caddy configuration (no ticket, thanks to @Stnby)
  • Additional multi-line examples on the publish page (#234, thanks to @aTable)
  • Fixed PowerShell auth example to use UTF-8 (#242, thanks to @SMAW)

Additional translations:

Thanks for testing:

Thanks to @wunter8 for testing.

ntfy Android app v1.12.0

Released Apr 25, 2022

The main feature in this Android release is Action Buttons, a feature that allows users to add actions to the notifications. Actions can be to view a website or app, send a broadcast, or send a HTTP request.

We also added support for ntfy:// deep links, added three more languages and fixed a ton of bugs.

Features:

Bug fixes:

  • Validate URLs when changing default server and server in user management (#193, thanks to @StoyanDimitrov for reporting)
  • Error in sending test notification in different languages (#209, thanks to @StoyanDimitrov for reporting)
  • "[x] Instant delivery in doze mode" checkbox does not work properly (#211)
  • Disallow "http" GET/HEAD actions with body (#221, thanks to @cmeis for reporting)
  • Action "view" with "clear=true" does not work on some phones (#220, thanks to @cmeis for reporting)
  • Do not group foreground service notification with others (#219, thanks to @s-h-a-r-d for reporting)

Additional translations:

Thanks for testing:

Thanks to @s-h-a-r-d (aka @Shard), @cmeis, @poblabs, and everyone I forgot for testing.

ntfy server v1.21.2

Released Apr 24, 2022

In this release, the web app got translation support and was translated into 9 languages already πŸ‡§πŸ‡¬ πŸ‡©πŸ‡ͺ πŸ‡ΊπŸ‡Έ 🌎. It also re-adds support for ARMv6, and adds server-side support for Action Buttons. Action Buttons is a feature that will be released in the Android app soon. It allows users to add actions to the notifications. Limited support is available in the web app.

Features:

  • Custom notification action buttons (#134, thanks to @mrherman for reporting)
  • Added ARMv6 build (#200, thanks to @jcrubioa for reporting)
  • Web app internationalization support πŸ‡§πŸ‡¬ πŸ‡©πŸ‡ͺ πŸ‡ΊπŸ‡Έ 🌎 (#189)

Bug fixes:

  • Web app: English language strings fixes, additional descriptions for settings (#203, thanks to @StoyanDimitrov)
  • Web app: Show error message snackbar when sending test notification fails (#205, thanks to @cmeis)
  • Web app: basic URL validation in user management (#204, thanks to @cmeis)
  • Disallow "http" GET/HEAD actions with body (#221, thanks to @cmeis for reporting)

Translations (web app):

Integrations:

Apprise support was fully released in v0.9.8.2 of Apprise. Thanks to @particledecay and @caronc for their fantastic work. You can try it yourself like this (detailed usage in the Apprise wiki):

pip3 install apprise
apprise -b "Hi there" ntfys://mytopic

ntfy Android app v1.11.0

Released Apr 7, 2022

Features:

  • Download attachments to cache folder (#181)
  • Regularly delete attachments for deleted notifications (#142)
  • Translations to different languages (#188, thanks to @StoyanDimitrov for initiating things)

Bug fixes:

  • IllegalStateException: Failed to build unique file (#177, thanks to @Fallenbagel for reporting)
  • SQLiteConstraintException: Crash during UP registration (#185)
  • Refresh preferences screen after settings import (#183, thanks to @cmeis for reporting)
  • Add priority strings to strings.xml to make it translatable (#192, thanks to @StoyanDimitrov)

Translations:

Thanks:

ntfy server v1.20.0

Released Apr 6, 2022

Features::

  • Added message bar and publish dialog (#196)

Bug fixes:

Documentation:

Integrations:

ntfy server v1.19.0

Released Mar 30, 2022

Bug fixes:

  • Do not pack binary with upx for armv7/arm64 due to illegal instruction errors (#191, thanks to @iexos)
  • Do not allow comma in topic name in publish via GET endpoint (no ticket)
  • Add "Access-Control-Allow-Origin: *" for attachments (no ticket, thanks to @FrameXX)
  • Make pruning run again in web app (#186)
  • Added missing params delay and email to publish as JSON body (no ticket)

Documentation:

ntfy server v1.18.1

Released Mar 21, 2022
This release ships no features or bug fixes. It's merely a documentation update.

Documentation:

ntfy Android app v1.10.0

Released Mar 21, 2022

Features:

  • Support for UnifiedPush 2.0 specification (bytes messages, #130)
  • Export/import settings and subscriptions (#115, thanks @cmeis for reporting)
  • Open "Click" link when tapping notification (#110, thanks @cmeis for reporting)
  • JSON stream deprecation banner (#164)

Bug fixes:

  • Display locale-specific times, with AM/PM or 24h format (#140, thanks @hl2guide for reporting)

ntfy server v1.18.0

Released Mar 16, 2022

Features:

Bug fixes:

Deprecations:

  • Removed the ability to run server as ntfy (as opposed to ntfy serve) as per deprecation

ntfy server v1.17.1

Released Mar 12, 2022

Bug fixes:

  • Replace crypto.subtle with hashCode to errors with Brave/FF-Windows (#157, thanks for reporting @arminus)

ntfy server v1.17.0

Released Mar 11, 2022

Features & bug fixes:

  • Replace web app with a React/MUI-based web app from the 21st century (#111)
  • Web UI broken with auth (#132, thanks for reporting @arminus)
  • Send static web resources as Content-Encoding: gzip, i.e. docs and web app (no ticket)
  • Add support for auth via ?auth=... query param, used by WebSocket in web app (no ticket)

ntfy server v1.16.0

Released Feb 27, 2022

Features & Bug fixes:

  • Add auth support for subscribing with CLI (#147/#148, thanks @lrabane)
  • Add support for ?since= (#151, thanks for reporting @nachotp)

Documentation:

Technical notes:

  • As of this release, message IDs will be 12 characters long (as opposed to 10 characters). This is to be able to distinguish them from Unix timestamps for #151.

ntfy Android app v1.9.1

Released Feb 16, 2022

Features:

  • Share to topic feature (#131, thanks u/emptymatrix for reporting)
  • Ability to pick a default server (#127, thanks to @poblabs for reporting and testing)
  • Automatically delete notifications (#71, thanks @arjan-s for reporting)
  • Dark theme: Improvements around style and contrast (#119, thanks @kzshantonu for reporting)

Bug fixes:

  • Do not attempt to download attachments if they are already expired (#135)
  • Fixed crash in AddFragment as seen per stack trace in Play Console (no ticket)

Other thanks:

  • Thanks to @rogeliodh, @cmeis and @poblabs for testing

ntfy server v1.15.0

Released Feb 14, 2022

Features & bug fixes:

  • Compress binaries with upx (#137)
  • Add visitor-request-limit-exempt-hosts to exempt friendly hosts from rate limits (#144)
  • Double default requests per second limit from 1 per 10s to 1 per 5s (no ticket)
  • Convert \n to new line for X-Message header as prep for sharing feature (see #136)
  • Reduce bcrypt cost to 10 to make auth timing more reasonable on slow servers (no ticket)
  • Docs update to include public test topics (no ticket)

ntfy server v1.14.1

Released Feb 9, 2022

Bug fixes:

  • Fix ARMv8 Docker build (#113, thanks to @djmaze)
  • No other significant changes

ntfy Android app v1.8.1

Released Feb 6, 2022

Features:

  • Support auth / access control (#19, thanks to @cmeis, @drsprite/@poblabs, @gedw99, @karmanyaahm, @Mek101, @gc-ss, @julianfoad, @nmoseman, Jakob, PeterCxy, Techlosopher)
  • Export/upload log now allows censored/uncensored logs (no ticket)
  • Removed wake lock (except for notification dispatching, no ticket)
  • Swipe to remove notifications (#117)

Bug fixes:

  • Fix download issues on SDK 29 "Movement not allowed" (#116, thanks Jakob)
  • Fix for Android 12 crashes (#124, thanks @eskilop)
  • Fix WebSocket retry logic bug with multiple servers (no ticket)
  • Fix race in refresh logic leading to duplicate connections (no ticket)
  • Fix scrolling issue in subscribe to topic dialog (#131, thanks @arminus)
  • Fix base URL text field color in dark mode, and size with large fonts (no ticket)
  • Fix action bar color in dark mode (make black, no ticket)

Notes:

  • Foundational work for per-subscription settings

ntfy server v1.14.0

Released Feb 3, 2022

Features:

  • Server-side for authentication & authorization (#19, thanks for testing @cmeis, and for input from @gedw99, @karmanyaahm, @Mek101, @gc-ss, @julianfoad, @nmoseman, Jakob, PeterCxy, Techlosopher)
  • Support NTFY_TOPIC env variable in ntfy publish (#103)

Bug fixes:

  • Binary UnifiedPush messages should not be converted to attachments (part 1, #101)

Docs:

  • Clarification regarding attachments (#118, thanks @xnumad)

ntfy Android app v1.7.1

Released Jan 21, 2022

New features:

  • Battery improvements: wakelock disabled by default (#76)
  • Dark mode: Allow changing app appearance (#102)
  • Report logs: Copy/export logs to help troubleshooting (#94)
  • WebSockets (experimental): Use WebSockets to subscribe to topics (#96, #100, #97)
  • Show battery optimization banner (#105)

Bug fixes:

  • (Partial) support for binary UnifiedPush messages (#101)

Notes:

  • The foreground wakelock is now disabled by default
  • The service restarter is now scheduled every 3h instead of every 6h

ntfy server v1.13.0

Released Jan 16, 2022

Features:

ntfy Android app v1.6.0

Released Jan 14, 2022

New features:

  • Attachments: Send files to the phone (#25, #15)
  • Click action: Add a click action URL to notifications (#85)
  • Battery optimization: Allow disabling persistent wake-lock (#76, thanks @MatMaul)
  • Recognize imported user CA certificate for self-hosted servers (#87, thanks @keith24)
  • Remove mentions of "instant delivery" from F-Droid to make it less confusing (no ticket)

Bug fixes:

  • Subscription "muted until" was not always respected (#90)
  • Fix two stack traces reported by Play console vitals (no ticket)
  • Truncate FCM messages >4,000 bytes, prefer instant messages (#84)

ntfy server v1.12.1

Released Jan 14, 2022

Bug fixes:

  • Fix security issue with attachment peaking (#93)

ntfy server v1.12.0

Released Jan 13, 2022

Features:

Bug fixes:

  • Make postinst script work properly for rpm-based systems (#83, thanks @cmeis)
  • Truncate FCM messages longer than 4000 bytes (#84)
  • Fix listen-https port (no ticket)

ntfy Android app v1.5.2

Released Jan 3, 2022

New features:

  • Allow using ntfy as UnifiedPush distributor (#9)
  • Support for longer message up to 4096 bytes (#77)
  • Minimum priority: show notifications only if priority X or higher (#79)
  • Allowing disabling broadcasts in global settings (#80)

Bug fixes:

  • Allow int/long extras for SEND_MESSAGE intent (#57)
  • Various battery improvement fixes (#76)

ntfy server v1.11.2

Released Jan 1, 2022

Features & bug fixes:

  • Increase message limit to 4096 bytes (4k) #77
  • Docs for UnifiedPush #9
  • Increase keepalive interval to 55s #76
  • Increase Firebase keepalive to 3 hours #76

ntfy server v1.10.0

Released Dec 28, 2021

Features & bug fixes:

Older releases

For older releases, check out the GitHub releases pages for the ntfy server and the ntfy Android app.

Not released yet

ntfy server v2.12.0 (UNRELEASED)

Features:

  • Add username/password auth to email publishing (#1164, thanks to @bishtawi)

Bug fixes + maintenance:

  • Add Date header to outgoing emails to avoid rejection (#1141, thanks to pcouy)

Documentation:

ntfy Android app v1.16.1 (UNRELEASED)

Features:

  • You can now disable UnifiedPush so ntfy does not act as a UnifiedPush distributor (#646, thanks to @ollien for reporting and to @wunter8 for implementing)

Bug fixes + maintenance:

  • UnifiedPush subscriptions now include the Rate-Topics header to facilitate subscriber-based billing (#652, thanks to @wunter8)
  • Subscriptions without icons no longer appear to use another subscription's icon (#634, thanks to @topcaser for reporting and to @wunter8 for fixing)
  • Bumped all dependencies to the latest versions (no ticket)

Additional languages: