ThunderHosting
EN

Free Discord bot hosting: what you get and where the limits are

ThunderHosting ·

DeutschFrançaisItaliano

Free Discord bot hosting in Switzerland: 128 MB RAM, an HTTPS address and Git deploys. What fits in the free plan, its limits and when to upgrade.

A Discord bot only answers while its process is running. Run it on your own computer and it goes quiet as soon as the computer sleeps. Free bot hosting solves that, but “free” always comes with limits. This guide explains what the free plan of our app hosting in Lugano includes, what it does not, which bots fit into it and when a paid plan is worth it. All numbers are the ones on our Discord bot hosting page in October 2026.

Why a Discord bot needs hosting at all

A bot is a normal program that keeps a connection open to Discord's gateway and reacts to events: a new member, a slash command, a message. As long as that program runs, the bot is online. Hosting means a server that keeps it running around the clock and starts it again if it crashes.

The good news: a Discord bot connects out to Discord. Nothing on the internet has to reach it, so it needs neither an open port nor a domain. That is why a small bot can live on a very small plan.

What the free plan includes

  • 128 MB of RAM, 10% CPU and 1 GB of disk, at CHF 0 (or EUR 0) a month.
  • Python or Node.js: Python 3.11, 3.12 or 3.13 with discord.py, Pycord or nextcord; Node.js 20, 22 or 24 with discord.js. Dependencies are installed automatically.
  • Your own HTTPS address with a certificate, useful for a small dashboard or Discord's interaction endpoint.
  • Upload or Git: upload files in the browser or over SFTP, or connect a public or private repository from GitHub, GitLab, Gitea or any Git host. With the webhook, every push to your branch deploys the bot again.
  • Web console and file manager: see your bot's output and errors in the browser.
  • Automatic restart: if the bot crashes, it starts again by itself. Schedules can run commands at fixed times.
  • Swiss hosting: the bot runs in our data centre in Lugano, operated by ThunderHosting GmbH.

To order the free plan you save a card or a PayPal account once. It is never charged for the free plan; it is only used if you decide to upgrade.

The limits, honestly

  • Memory: 128 MB. Enough for a lean Python or Node.js bot. Large caches, many servers, audio or heavy libraries need more.
  • CPU: 10% of a core. Plenty for commands and events, not for image processing or long calculations.
  • No Java. Java bots (JDA, Discord4J) need at least 512 MB, so they start on a paid plan.
  • No backups. The free plan has no backup slots. Keep your code in Git and download your database file from time to time.
  • HTTPS only. No extra TCP/UDP ports. A Discord bot does not need them, but other protocols do.
  • Confirm every 90 days. We email you a link, with reminders 14 and 3 days before. An app that is not confirmed is paused; one that stays paused for 30 days is deleted with its files (we warn you 7 days before, and deleted apps cannot be restored).
  • One free plan per account and per person.
  • No outgoing mail ports, no private networks. Apps run isolated so nobody can abuse the platform; this applies to every app plan.

The confirmation is a single click in the email or in the control panel. Details are in the guide The free plan: confirming and reactivating.

Which bots fit into 128 MB?

A small bot on a few servers usually fits: moderation and auto-roles, welcome messages, reminders, polls, a simple ticket system, or a bot that posts GitHub releases, RSS items or stream alerts to a channel. What makes a bot grow is mostly what it keeps in memory. A few habits keep it small:

  • Ask only for the gateway intents you use. The members and presence intents make Discord send, and your library cache, much more data.
  • Limit the caches. discord.py keeps the last 1,000 messages by default (the max_messages setting); discord.js lets you limit caches and sweep old entries.
  • Store data in SQLite, not in memory. The database file lives in your app's folder and survives restarts and deploys.
  • Keep dependencies lean. Every library you import costs memory, even if you call it once a day.

If your bot restarts again and again, or the console shows out-of-memory errors, it has outgrown the free plan. That is not a failure, just the moment to move up.

When a paid plan makes sense

PlanRAMCPUDiskBackup slotsPrice per month
Free128 MB10%1 GB–CHF 0
App 512 MB512 MB50%5 GB1CHF 2.90
App 1 GB1 GB100%10 GB2CHF 4.90
App 4 GB4 GB200%40 GB3CHF 12.90

Paid plans have no 90-day confirmation, add two TCP/UDP ports next to HTTPS and can get their own IPv4 address for CHF 1.50 a month. Prices are also available in EUR, and ThunderHosting is not subject to VAT, so the price shown is the price you pay. Upgrade when one of these applies:

  • Your bot is written in Java.
  • It plays audio, processes images or runs on many servers: start with 512 MB or 1 GB.
  • You want backups you can restore in one step.
  • It needs a port for something other than HTTPS.
  • You simply do not want to confirm every 90 days.

Switching takes a moment: open the app in the control panel and choose a paid plan on the Plan tab. Your saved payment method is charged from then on. If your project grows beyond a single bot, with its own database server or several services, a VPS gives you a whole server.

Your bot online in four steps

  1. Create the app: order the free plan in the control panel and choose Python or Node.js.
  2. Add your code: upload it or connect your Git repository; private repositories work with a deploy key or an access token. See Deploy your app.
  3. Add your token: put the bot token in a .env file in the app's folder and read it with python-dotenv or dotenv. It stays there when you deploy new code and never ends up in your repository.
  4. Start and deploy on push: start the bot from the control panel, then set up the deploy webhook so every push to your branch updates and restarts it.

Comparing free bot hosting: what to check

Whichever provider you choose, a few questions show what “free” really means:

  • Does the bot run all the time, or does it sleep when idle or stop after a number of hours?
  • How much RAM and CPU do you get, and which languages and versions?
  • What do you have to do to keep the free plan, and what happens to your files if you forget?
  • Where does the bot run? User IDs and messages are personal data, which matters if you run a bot for a club or a company.
  • Can you take your code and data with you at any time?

Frequently asked questions

Is the free Discord bot hosting really free?

Yes. The free plan costs nothing. You save a card or PayPal account, which is never charged unless you upgrade, and you confirm with one click every 90 days that you still use the app.

Does my bot need a port or a domain?

No. A Discord bot connects out to Discord, so nothing has to reach it. Every app still gets an HTTPS address for dashboards and webhooks.

Can I host a music bot for free?

Audio usually needs more than 128 MB and a tenth of a core. For a music bot, start with the 512 MB or 1 GB plan.

Can I also run a Telegram bot for free?

There is one free plan per account and per person, so one free bot. A Telegram bot runs on the same app hosting; a second bot goes on a paid plan.

Where does my bot run?

In our data centre in Lugano, Switzerland, operated by ThunderHosting GmbH. Support is by ticket from the control panel. All plans are on our app hosting page.

Still need help?

Open a ticket and our support team in Ticino will help you.

Open a ticket