Checked 2026-09-01 UTC. “Free” means an ongoing $0 allowance, not merely an introductory credit. Prices, quotas, regions, and capacity can change; confidence below reflects how directly the provider’s current official pages support the conclusion.
ntfy’s relevant requirements are unusually important here: its default cache/auth/web-push state is file/database-backed, attachments need storage, and clients use long-lived HTTP streams or WebSockets. The official configuration supports PostgreSQL via database-url and S3-compatible attachment storage via attachment-cache-dir; this can make a stateless container viable, but it does not make a sleeping service reliable.
| Provider | What is actually free | Persistence | Ports / sleep | ntfy assessment | Confidence |
|---|---|---|---|---|---|
| Northflank | Developer Sandbox: 2 free services, 1 free database, 2 free cron jobs; pricing says always-on compute/no sleeping. | Ephemeral container storage is lost on restart. Persistent volumes exist, but the free-plan inclusion/pricing is not explicit; use the advertised free database addon for ntfy’s PostgreSQL backend. | Public HTTP/HTTP2 ports are supported and route through HTTPS; arbitrary container ports are allowed. No sleep in Sandbox. | Best PaaS candidate, if the free database addon is available with an adequate limit. Put auth/cache state in PostgreSQL; avoid local attachments or use S3. | High for free service/no sleep/ports; medium for exact free DB limits. |
| Render | Genuine ongoing $0 Free web service; 750 free instance-hours per workspace/month. | Free web services have ephemeral filesystems; free web services cannot attach persistent disks. Free Postgres is 1 GB but expires after 30 days, then is deleted after a grace period. | Public HTTP/HTTPS via one forwarded port; bind 0.0.0.0:$PORT (default 10000). Free web services spin down after 15 minutes without inbound traffic and take about a minute to restart. |
Demo only standalone. A sleeping ntfy server breaks/restarts long-lived subscribers and loses SQLite/local files. External PostgreSQL plus S3 fixes persistence, not availability. | High |
| Koyeb | Current official pricing UI shows “Free 5h”, $0/hr and $0/mo, 0.25 vCPU, 1 GB RAM, and 1 GB local storage; the FAQ refers to an included monthly free credit. This is a quota, not a trial credit, but the page is not clear about the “5h” cadence. | Free/eco instances cannot attach Koyeb volumes. Local storage is ephemeral. Volumes are 1–10 GB, public preview, and only attach to standard/GPU services. | Public HTTP service with explicit exposed port and injected PORT. The Free instance automatically scales to zero after 1 hour without traffic; it cannot be disabled. |
Not suitable for always-available ntfy. It can host a test or an externally-backed service, but cold starts and scale-to-zero are poor for subscriptions. | Medium on the exact free-quota interpretation; high on persistence/sleep behavior. |
| Fly.io | No ongoing free tier for new accounts. Current trial is 2 total VM-hours or 7 days, whichever comes first; trial Machines auto-stop after 5 minutes. | Trial includes up to 20 GB volume storage, but after trial Fly Volumes are billed ($0.15/GB-month). Volumes are persistent but single-host/single-Machine and not replicated automatically. | Public HTTP/HTTPS/TCP services and free shared IPv4/IPv6 are supported. Machines can stop/start, but paid compute is required after trial. | Not free. Technically a good low-cost ntfy host once billing is accepted; use a volume and backups. | High |
| Railway | Official current pricing page says Free is $0 but says “30-day free trial with $5 credits, then $1 per month.” Current reference docs instead say Free is $0 with $1 free credit/month. These official pages conflict, so it is not safe to call Railway permanently $0. | Free/Trial plans list a 0.5 GB volume and one volume per project; volumes are billed by storage usage and cannot use replicas. Volume deployments have brief downtime on redeploy. | Public HTTP/HTTPS domains and automatic TLS. No current official sleep guarantee was found; assume an always-running, metered service rather than free sleep. | Not a clean free option. A tiny persistent ntfy may fit technically, but the subscription/credit contradiction and volume billing need account-level confirmation. | Medium |
| Zeabur | Hosted plan is $0 for dashboard basics, but current comparison lists daily quota 0, monthly quota 0, and 0 domains. It can manage one server owned elsewhere; that is control-plane free, not free hosted compute. | Hosted volumes are persistent but billed. On a user-owned server, persistence is ordinary local disk. | HTTP services get a zeabur.app domain; non-HTTP services get an assigned host/port. Official docs do not establish a free hosted runtime or a useful ntfy sleep guarantee. |
Not a free hosted PaaS. Useful only if using Zeabur to manage a server you already own. | High for no hosted free quota. |
| Google Cloud Run | Ongoing monthly free tier is usage-based, aggregated by billing account—not a free always-on container. Billing account/card and overage controls are required. | Container filesystem is in-memory and lost when instances stop. Use external PostgreSQL and S3/GCS-compatible attachment storage. | Must listen on 0.0.0.0:$PORT (default 8080). Default scales to zero; request timeout is at most 60 minutes, so ntfy streams/WebSockets must reconnect. |
Possible stateless front end, but not a straightforward standalone ntfy host. Low traffic may fit the free tier; long-lived subscribers and external storage complicate the cost model. | High |
| Oracle Cloud Always Free | Separate from Oracle’s 30-day $300 trial: Always Free resources do not expire. The account/trial requires identity/card verification and capacity is not guaranteed. | Persistent boot/block volumes are available within the Always Free limits; run ntfy + SQLite directly in Docker. Keep backups. | Full VM networking: open 80/443 in the security list and bind ntfy to 0.0.0.0. No PaaS sleep, though Oracle can reclaim excess Arm allocations after trial for accounts exceeding the stated free-user limits. |
Best complete $0 architecture if VM provisioning succeeds. More administration than PaaS. | High for Always Free/persistence; medium for current regional capacity and exact Arm quotas. |
PORT/listen address, enable ntfy authentication, and configure NTFY_DATABASE_URL to the free PostgreSQL addon. Do not rely on the service’s ephemeral filesystem for attachments.
/var/lib/ntfy (or the configured data directory) on the persistent boot/block volume, expose HTTPS through Caddy/nginx, and back up the database.
Never expose an unauthenticated public ntfy instance merely to test whether a provider is free; public topic publishing can consume quotas and trigger abuse suspension.