Binaries for all releases can be found on the GitHub releases pages for the ntfy server and the ntfy Android app.
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:
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:
tzdata
to Docker images for amd64 image (#894, #307)Priority
header if it resembles an RFC 9218 value (#851/#895, thanks to @gusdleon, see also #351, #353, #461)Additional languages:
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: ⚠️
Bug fixes + maintenance:
client.yml
for an individual subscription to remove the Authorization header (#829, thanks to @tomeon for reporting and to @wunter8 for fixing)Documentation:
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:
ntfy pub %
segfaulting (#760, thanks to @clesmian for reporting)<topic>+<token>@<domain>
email syntax (#773, thanks to gingervitiz for reporting)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
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:
X-Call
header (no ticket)v1/users
+ v1/users/access
(intentionally undocumented as of now, #722, thanks to @CreativeWarlock for sponsoring this ticket)upstream-access-token
config option to allow authorized access to upstream servers (no ticket)Bug fixes + maintenance:
quoted-printable
in incoming emails (#719, thanks to @Aerion)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 publish
and ntfy subscribe
only) can now be installed via Homebrew (thanks to @Moulick)v1/stats
endpoint to expose messages stats (no ticket)Bug fixes + maintenance:
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:
Additional languages:
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:
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:
pprof
profiler, if enabled (relates to #677)Bug fixes + maintenance:
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:
/metrics
endpoint for Prometheus if configured (#210, thanks to @rogeliodh for reporting)client.yml
for publishing and subscribing (#653, thanks to @wunter8)Bug fixes + maintenance:
ntfy sub --poll --from-config
will now include authentication headers from client.yml (if applicable) (#658, thanks to @wunter8)Documentation:
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:
Bug fixes + maintenance:
client.yml
(#650, thanks to @Xinayder)visitor-subscriber-rate-limiting
flag to allow enabling subscriber-based rate limiting (off by default now, #649/#655, thanks to @barathrm for reporting, and to @karmanyaahm and @p1gp1g for help with the design)visitor-subscriber-rate-limiting
is enabled (#643, thanks to @karmanyaahm and @p1gp1g for help with the design)Additional languages:
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:
Dockerfile
and document it (#635, thanks to @Andersbiha)log-level-overrides
on the same field (no ticket)ntfy publish --env-topic
flag (as per deprecations, no ticket)billing-contact
config option (no ticket)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:
up*
topics (#584/#609/#633, thanks to @karmanyaahm)Bug fixes + maintenance:
Authorization
header like header was not sent (#629, thanks to @Boebbele and @S1m for reporting)Documentation:
Additional languages:
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:
attachment-cache-dir
is not set (#617, thanks to @ksurl)log.Println
also output JSON (no ticket)Released February 16, 2023
This is the biggest ntfy server release I've ever done 🥳 . Lots of new and exciting features.
Brand-new features:
enable-signup
and
enable-login
.
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.
ntfy token
command. See creating tokens,
and publishing using tokens.
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.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.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:
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
">@deadcade
, @xenrox, @cmeis, @wunter8 and the others who I forgot.
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:
/v1/health
API endpoint for service monitoring (no ticket)Dockerfile
(#555, thanks to @bt90)Bug fixes + maintenance:
chown
issues with RHEL-like based systems (#566/#565, thanks to @danieldemus)upx
(binary packing) for all builds due to false virus warnings (#576, thanks to @shawnhwei for reporting)go-smtp
library and tests to v0.16.0 (#569)Documentation:
client.yml
(#562, thanks to @fleopaulD)Additional languages:
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:
--env-topic
option from ntfy publish
as per deprecation (no ticket)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:
Bug fixes + maintenance:
Additional translations:
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:
cache-batch-*
options (#498/#502)Documentation:
Other things:
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:
visitor-request-limit-exempt-hosts
(#423, thanks to @karmanyaahm)Bug fixes + maintenance:
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)ntfy sub
work with NTFY_USER
env variable (#447, thanks to SuperSandro2000)Documentation:
?auth=..
query parameter (#433, thanks to @wunter8)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.
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:
since=<id>
API, which makes deduping easier (#165)Bug fixes:
Additional translations:
Thank you to @wunter8 for proactively picking up some Android tickets, and fixing them! You rock!
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:
--listen-unix-mode
(#356, thanks to @koro666)client.yml
(#372, thanks to @wunter8)Bug fixes:
ntfy user
commands don't work with auth_file
but works with auth-file
(#344, thanks to @Histalek for reporting)Priority
header (#351, thanks to @ksurl for reporting)Documentation:
Additional translations:
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:
cache-startup-queries
option to allow custom SQLite performance tuning (no ticket)NTFY_PASSWORD
env variable (#327, thanks to @Kenix3)Bug fixes:
GET /_matrix/push/v1/notify
when base-url
is not configured (no ticket)upstream-base-url
to the same value as base-url
(#334, thanks to @oester for reporting)since=<id>
implementation for multiple topics (#336, thanks to @karmanyaahm for reporting)Actions
header now supports settings Android intent=
key (#341, thanks to @wunter8)Deprecations:
ntfy publish --env-topic
option is deprecated as of now (see deprecations for details)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:
ntfy serve
command (#314, thanks to @poblabs)Bug fixes:
X-Forwarded-For
header as visitor address (#328)Documentation
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:
Bug fixes:
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:
Bugs:
Maintenance:
Documentation:
poll_request
wording for iOS push notifications (#300, thanks to @prabirshrestha for reporting)Additional translations:
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:
Bug fixes:
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:
poll_request
messages to support iOS push notifications for self-hosted servers (no ticket)Bug fixes:
Content-Type
(#265, thanks to @dmbonsall)Additional translations:
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:
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:
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.
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:
Bug fixes:
Additional translations:
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.
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:
Bug fixes:
Upgrade
header check is now case in-sensitive (#228, thanks to @wunter8 for finding it)Documentation:
Additional translations:
Thanks for testing:
Thanks to @wunter8 for testing.
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:
Additional translations:
Thanks for testing:
Thanks to @s-h-a-r-d (aka @Shard), @cmeis, @poblabs, and everyone I forgot for testing.
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:
Bug fixes:
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
Released Apr 7, 2022
Features:
Bug fixes:
Translations:
Thanks:
Released Apr 6, 2022
Features::
Bug fixes:
EXPOSE 80/tcp
to Dockerfile to support auto-discovery in Traefik (#195, thanks to @s-h-a-r-d)Documentation:
Integrations:
Released Mar 30, 2022
Bug fixes:
upx
for armv7/arm64 due to illegal instruction
errors (#191, thanks to @iexos)delay
and email
to publish as JSON body (no ticket)Documentation:
Released Mar 21, 2022
This release ships no features or bug fixes. It's merely a documentation update.
Documentation:
Released Mar 21, 2022
Features:
Bug fixes:
Released Mar 16, 2022
Features:
Bug fixes:
Deprecations:
ntfy
(as opposed to ntfy serve
) as per deprecationReleased Mar 12, 2022
Bug fixes:
crypto.subtle
with hashCode
to errors with Brave/FF-Windows (#157, thanks for reporting @arminus)Released Mar 11, 2022
Features & bug fixes:
Content-Encoding: gzip
, i.e. docs and web app (no ticket)?auth=...
query param, used by WebSocket in web app (no ticket)Released Feb 27, 2022
Features & Bug fixes:
Documentation:
Technical notes:
Released Feb 16, 2022
Features:
Bug fixes:
Other thanks:
Released Feb 14, 2022
Features & bug fixes:
upx
(#137)visitor-request-limit-exempt-hosts
to exempt friendly hosts from rate limits (#144)\n
to new line for X-Message
header as prep for sharing feature (see #136)Released Feb 9, 2022
Bug fixes:
Released Feb 6, 2022
Features:
Bug fixes:
Notes:
Released Feb 3, 2022
Features:
NTFY_TOPIC
env variable in ntfy publish
(#103)Bug fixes:
Docs:
Released Jan 21, 2022
New features:
Bug fixes:
Notes:
Released Jan 16, 2022
Features:
listen-unix
Released Jan 14, 2022
New features:
Bug fixes:
Released Jan 14, 2022
Bug fixes:
Released Jan 13, 2022
Features:
Bug fixes:
listen-https
port (no ticket)Released Jan 3, 2022
New features:
Bug fixes:
Released Jan 1, 2022
Features & bug fixes:
Released Dec 28, 2021
Features & bug fixes:
For older releases, check out the GitHub releases pages for the ntfy server and the ntfy Android app.
!!! info
**Breaking change**: The `Rate-Topics` header was removed due to a [DoS issue](https://github.com/binwiederhier/ntfy/issues/1048). This only affects installations with `visitor-subscriber-rate-limiting: true`, which is not the default and likely very rarely used.
Features:
message-delay-limit
(see message limits, #1050/#1019, thanks to @MrChadMWood for reporting)message-size-limit
(use at your own risk, see message limits, #836/#1050, thanks to @zhzy0077 for implementing this, and to @nkjshlsqja7331 for reporting)Bug fixes + maintenance:
Rate-Topics
header due to DoS security issue if visitor-subscriber-rate-limiting: true
(#1048)Documentation:
mkdocs-simple-hooks
(#1016, thanks to @Tom-Hubrecht)Features:
Bug fixes + maintenance:
Rate-Topics
header to facilitate subscriber-based billing (#652, thanks to @wunter8)Additional languages: