All articles
HostingStudio OriginalMay 2, 2026·9 min read

How to host a Discord bot for free in 2026 (the honest guide)

Hosting a Discord bot sounds simple until you actually try it. The free tiers everyone recommends keep changing — some sleep your process, some kill long-running connections, some quietly start charging. This guide is the version we wish we had when we built Panel: every working option in 2026, with the trade-offs spelled out, so you can pick one and move on.

What 'free hosting' actually means for a Discord bot

A Discord bot is a long-running process that opens a WebSocket to Discord's gateway and stays connected. That single sentence rules out most of the 'free' platforms you'll see in tutorials. Static hosts like Netlify or Vercel only run code on demand — they're brilliant for a website, useless for a bot. Serverless functions wake up, run for a few hundred milliseconds, then go back to sleep; the gateway connection dies the moment they do.

What you actually need is a tiny always-on Linux container with enough RAM to hold your bot's libraries (discord.js or discord.py both want ~80–120 MB at idle), a CPU slice that won't throttle you mid-command, and a network that won't drop the WebSocket every few hours. That's it. You don't need a database server, you don't need 4 GB of RAM, and you definitely don't need a $5/month VPS to start.

The options that still work in 2026

Replit's always-on add-on moved to a paid plan years ago, and the free Repls sleep aggressively now. Heroku's free dynos are gone. Glitch shut down its persistent projects. Railway's free trial is short and credit-card gated. Fly.io's free allowance shrank and now requires a card on file. Render's free web service sleeps after 15 minutes of inactivity, which kills your gateway connection.

What's left that genuinely costs zero, with no card, no sleep timer, and 24/7 uptime: a small handful of community-run panels, Oracle's Always Free tier (powerful but a maze to set up), and MODVC Panel — which is the one we built specifically because we got tired of the others. 128 MB RAM, 0.25 CPU cores, 300 MB storage, no sleep, no credit card, forever. That's enough headroom for a typical bot serving a few dozen servers.

Sizing your bot correctly

Most beginners overestimate what their bot needs. A discord.js bot with two or three cogs, slash commands, and a SQLite database will sit comfortably under 90 MB of RAM. A discord.py bot with cogs and aiosqlite is similar. You only start needing more when you load a heavy ML model, cache thousands of images, or run a music bot that decodes audio in-process.

Music bots are the one exception worth calling out. ffmpeg piping audio through your process can spike CPU to 100% during the first few seconds of playback. On a 0.25-core slice that means stutter. If you're building a music bot, either offload the audio to lavalink running on a separate (paid) host, or accept that the free tier is fine for personal use but won't scale to a busy server.

For everything else — moderation, leveling, economy, utility, custom commands, AI chat through an API — a small free container is enough to start, and you can grow into a paid plan only when you actually feel the limit.

The boring things that actually keep a bot online

Once you've picked a host, the failures you'll see are almost never the host's fault. They're memory leaks, unhandled promise rejections, and rate-limit loops. Add a global error handler on day one. Log every disconnect and reconnect. Don't swallow exceptions inside command handlers — let them bubble so you can see them in your host's log viewer.

Use a process manager that restarts your bot on crash. Most panels do this for you (Pterodactyl-based ones definitely do, Panel does), but if you're on a raw VPS, install pm2 or use a systemd unit. A bot that auto-restarts in 3 seconds after a crash is, from your users' perspective, a bot that never went down.

Pin your dependency versions. The number-one cause of 'my bot was working yesterday and now it's broken' is discord.js or discord.py releasing a breaking change overnight and your container reinstalling on restart. A package-lock.json or requirements.txt with exact versions prevents this entire category of pain.

When to leave the free tier

Free hosting is a fantastic place to start, but it's not where mature bots live. The honest signal that it's time to upgrade is when you start hitting the resource ceiling on a regular basis — not when someone on Reddit tells you 'free hosts are unprofessional'. Watch your memory graph for a week. If you're consistently above 80% of your allowance, or your CPU is throttled during normal load, move up.

When you do move, the cheapest reliable option in 2026 is still a small VPS from Hetzner, OVH, or one of the regional providers, around €4–5 a month for 2 GB of RAM and a full core. That's enough to run several bots side by side. You'll outgrow the free tier long before you outgrow that.

The short version

Pick a host that doesn't sleep your process. Size your bot honestly — most bots fit comfortably in 128 MB. Add a global error handler, pin your versions, let the process manager restart you on crash. That's 90% of keeping a bot online. The other 10% is patience.

If you'd rather skip the comparison shopping, Panel is free forever, asks for no card, and was built specifically for the workload described above. If something else fits your needs better, use that — the goal is a bot that stays up, not loyalty to a brand.