At a glance
- Fastest start: ntfy, one curl command and no account.
- Already in a chat app: Discord, Slack and Telegram cost nothing.
- Paid but polished: Pushover, $4.99 once per platform, 10,000 messages a month.
- Fully self-hosted: Gotify or your own ntfy server.
The 9 options at a glance
| Service | Cost | Free limits | Setup | Arrives in |
|---|---|---|---|---|
| ntfy | Free on ntfy.sh or self-hosted; paid Pro tiers exist | 250 messages a day, 4,096 bytes each, cached 12 hours | No signup; pick a topic name | Android, iOS, web |
| Discord webhook | Free | 2,000 characters, 10 embeds per message | Create a webhook in a channel | Discord |
| Slack incoming webhook | Free with a Slack app | 1 message per second with short bursts | Create an app, pick a channel | Slack |
| Telegram bot | Free | 1 to 4,096 characters; about 1 message per second per chat | Token from @BotFather | Telegram |
| Pushover | 30-day trial, then $4.99 once per platform | 10,000 messages a month per account | Account, user key, app token | iPhone, iPad, Android, desktop |
| Gotify | Free, open source, self-hosted | Whatever your server handles | Run the server, create an app token | Android app, web UI |
| Pushbullet | Free tier; Pro is paid | 500 pushes a month without Pro | Account and access token | Pushbullet apps |
| Gmail SMTP | Free | More than 500 emails a day hits a limit | 2-Step Verification and an app password | Any mail client |
| Runpeek | No account needed | 5 webhooks per run; links expire after 30 idle minutes | pip install tqdm-live and a webhook URL | Discord, Slack or any webhook |
The options, one by one
1. ntfy
ntfy is open source with apps for Android, iOS and the web, and you publish to the public ntfy.sh server without an account. Public topics are open to anyone who knows the name, so use a long random topic or access control. The ntfy.sh limits are 250 messages a day, 4,096 bytes per message and a 12-hour cache, and attachments expire after 3 hours; self-host if that is too tight. See the ntfy guide for headers and self-hosting.
curl -d "Backup done" ntfy.sh/your-long-random-topic2. Discord webhook
A Discord webhook is free and takes one POST request. You get up to 2,000 characters of content and up to 10 embeds per message. Discord publishes no official per-webhook rate, but sending too fast returns HTTP 429 with a retry_after value. It fits if Discord is already on your phone and a private channel works as an alert inbox.
3. Slack incoming webhook
Slack incoming webhooks are free once you create a Slack app. Each webhook posts only to the channel picked at install, text over 40,000 characters is truncated, and the rate limit is 1 message per second with short bursts. It is the obvious pick when your team already lives in Slack.
4. Telegram bot
Telegram bots are free: get a token from @BotFather and call sendMessage. Messages hold 1 to 4,096 characters, and Telegram asks for about 1 message per second per chat and no more than 20 per minute in a group. It suits anyone who wants a fast phone app without paying per platform.
import os
import requests
requests.post(
f"https://api.telegram.org/bot{os.environ['TELEGRAM_BOT_TOKEN']}/sendMessage",
json={"chat_id": os.environ["TELEGRAM_CHAT_ID"], "text": "Backup finished"},
timeout=10,
).raise_for_status()5. Pushover
Pushover is a dedicated notification app with a 30-day free trial, then a one-time $4.99 per platform (iPhone and iPad, Android or desktop); Pushover for Teams is $5 per user per month. Each account can send 10,000 messages a month, shared across all its applications (Teams get 25,000). Messages hold 1,024 characters with a title of up to 250.
import os
import requests
requests.post(
"https://api.pushover.net/1/messages.json",
data={
"token": os.environ["PUSHOVER_APP_TOKEN"],
"user": os.environ["PUSHOVER_USER_KEY"],
"title": "Backup finished",
"message": "1,284 files, 3.2 GB",
},
timeout=10,
).raise_for_status()6. Gotify
Gotify is a free, open-source server you host yourself, with a REST API, a web UI and an official Android app on Google Play and F-Droid. Start it with docker run -p 80:80 -v /var/gotify/data:/app/data gotify/server, create an application token, then push with curl to /message with an X-Gotify-Key header and title, message and priority form fields. The only limits are your server's.
7. Pushbullet
Pushbullet takes pushes from a script through its API with an Access-Token header. Accounts without a Pro subscription are limited to 500 pushes a month, and going over returns an error. It works for low-volume scripts if you already use Pushbullet.
8. Gmail SMTP
Gmail's SMTP server sends alerts for free from a personal account once you turn on 2-Step Verification and create an app password. Sending more than 500 emails in a day hits Gmail's limit. It suits anyone who wants no new app and only sends a few alerts a day.
9. Runpeek
Runpeek is built for Python runs: it sends finished, failed and stalled alerts to Discord or Slack webhooks, or JSON to any other webhook URL, each with a live progress link. Links expire 30 minutes after the last update.
Which one should you pick?
- Fastest start: ntfy, because
curl -d "msg" ntfy.sh/topicworks right now with no account. - Already on Discord or Slack: their webhooks, so alerts land in an app you keep open.
- Dedicated mobile app: Pushover after the one-time $4.99, or ntfy's free Android and iOS apps.
- Fully self-hosted: Gotify, or your own ntfy server.
- Python jobs that can hang: Runpeek, for finished, failed and stalled alerts with a live progress link.
FAQ
What is the best free alternative to Pushover?
ntfy is the closest match: free Android and iOS apps, 250 messages a day on ntfy.sh and your own limits if you self-host. If a chat app is fine, a Telegram bot or Discord webhook is free and has no published daily cap.
Is ntfy really free?
Yes. The software is open source and free to self-host, and the public ntfy.sh server takes up to 250 messages a day with no account. Paid ntfy Pro tiers exist for more volume on the hosted service.
Can I send push notifications from a script without an app?
Yes, with email: Gmail SMTP with an app password delivers to the mail client you already use, up to 500 emails a day. ntfy and Gotify also have web interfaces that show notifications in a browser.
Which service works without creating an account?
The public ntfy.sh server takes a message from one curl command with no signup. Runpeek also needs no account, but its alerts go to a Discord, Slack or other webhook URL you supply.
Check on long runs from your phone
Change one import and every tqdm bar prints a link you can open on any device. Get a Discord or Slack message when the run finishes, fails or stalls.
pip install tqdm-liveSources
- ntfy docs: Publishing and limitations docs.ntfy.sh
- Discord developer docs: Webhook resource docs.discord.com
- Slack: Sending messages using incoming webhooks docs.slack.dev
- Telegram Bot API core.telegram.org
- Telegram Bots FAQ: limits core.telegram.org
- Pushover: Pricing pushover.net
- Pushover: API and message limits pushover.net
- Gotify docs: Push messages gotify.net
- Gotify docs: Installation gotify.net
- Gotify Android app github.com
- Pushbullet API docs docs.pushbullet.com
- Google: Gmail sending limits support.google.com