<!-- canonical: https://hostdc.xyz/faq · HostDC, Keep your Discord bot online 24/7. -->

# Questions and answers

## Plans and reactivation

### What does "reactivate every 7 days" mean?

On Free you press Reactivate on the dashboard once a week, or open the link in the reminder email or DM, which works once and needs no sign-in. Reactivating takes a 5-second wait while two ads show, then a quick question. Miss it and your bots keep running for one hour longer, then stop until you reactivate. Paid plans never need reactivation.

### What are the limits per plan?

Free: 256 MB RAM, 0.5 CPU, 512 MB storage, backups weekly, kept 1 day, no hosted database, Google ads and sponsored ads. Mini ($9.99 a year, about $0.83 a month): 512 MB RAM, 0.75 CPU, 2 GB storage, 1 hosted database, daily backups kept 2 days, only sponsored ads. Lite ($1.69 a month): 1 GB RAM, 1 CPU, 5 GB storage, 3 hosted databases, daily backups kept 4 days, scheduled restarts and cron, a Lavalink add-on, only sponsored ads. Pro ($2.49 a month): 2 GB RAM, 2 CPU, 10 GB storage, 5 hosted databases, daily backups kept 7 days, cron, one HTTPS port per bot, Lavalink included and only sponsored ads. Max ($4.49 a month): 4 GB RAM, 3 CPU, 20 GB storage, 8 hosted databases, daily backups kept 14 days, cron, one HTTPS port per bot, Lavalink included and only sponsored ads. The number of bots is limited by your plan's RAM pool.

### Can I try Pro for free?

Yes, once: start a 3-day Pro trial from the pricing page or your account page. No card is needed and nothing is charged. It's one trial per account and email address. When it ends you're back on Free unless you subscribe; bots that don't fit the Free limits stop, and their files stay downloadable as a ZIP for 30 days. We remind you before it ends.

### Do paid plans show ads?

Only sponsored ads. Lite, Pro and a Pro trial never show Google ads. Everyone sees the sponsored picture ads and our own ads; on Free, Google ads help pay for the plan.

### Is the free plan a trial?

No. It has no end date and shows Google ads and sponsored ads, which pay for it. The weekly reactivation exists so idle accounts stop taking up a node.

### Is an unused Free account deleted?

Yes, in two steps, counted from your last visit. For the first 30 days nothing happens to your bots and we send warning emails. At day 30 your bots stop and their files are packed into a ZIP archive on our servers. Until day 60 you can download it or restore your bots with one click. We warn you before day 60; at day 60 the archive and the inactive account are deleted. Any visit resets the clock. An open ticket, a live add-on or a pending payment pauses it, and so does maintenance. The days may change. Records of payments are kept as the law requires.

### Will my bot be stopped without warning?

No. You get a reminder before the timer runs out, then one hour of grace after it. We do stop abusive bots: we detect mining, spam and attacks on other services.

### How many bots can I run at once?

As many as fit your RAM pool. Lower each bot's allocation on its Settings tab and more of them fit.

### Will you stop my bot for being idle?

No. Idle bots keep running. After several idle hours we compact their memory footprint, which the bot can't see.

## Payments and plan changes

### How do I pay for a paid plan?

Choose a plan on the [pricing](/pricing) or account page, check the order overview and pay by card, wallet or bank debit; Stripe handles the payment. The plan is on your account as soon as the payment goes through (a bank debit can take a few working days). A monthly payment adds 31 days, a quarterly one 92 days, a yearly one 366 days. Moving up from Lite to Pro, or to a longer billing period, costs only the difference. Plans are charged in US dollars, euros or pounds depending on where you are, at the prices on the pricing page. Prices are in US dollars; checkout may show them in your local currency, converted by Stripe with a small conversion fee, or you can pay in US dollars. Cancel any time with the "Cancel contracts here" button or the billing portal on your account page. Without logging in, pick the topic Cancellation on the [contact page](/contact#contract).

### Are there refunds?

As a consumer you can withdraw within 14 days of concluding the contract, which is the first payment of a subscription; renewals don't start a new period. You get the amount back minus the days already used: amount paid x unused days / the days the payment covers. Signed in, you withdraw on your account page and the refund is paid at once; the [withdrawal information](/withdrawal) has the details. Beyond that there are no refunds. You can cancel any time, effective at the end of the paid period.

### What happens when a paid plan ends?

You go back to Free, where you reactivate every 7 days. If your bots no longer fit the Free limits, they stop and their files are kept for 30 days. You can download a ZIP of them from the dashboard or your account page. After that the files are deleted, unless you subscribe again first, which keeps everything as it was. Pro web addresses are removed; schedules and backups come back if you upgrade again.

### How long are my files kept when my bots stop?

30 days after a plan ends, for bots that no longer fit the Free pool, or 14 days after you confirm you downloaded your ZIP, whichever comes first; then they are deleted. You can download the ZIP at any time before that, and subscribing again before the date keeps everything. If a Free account is inactive, the archive rule in "Is an unused Free account deleted?" applies instead.

### How is it funded?

Out of our own pocket, mostly. HostDC is run by a small team, and ads plus the paid plans help cover the servers. Please support us so we can keep this site running.

## Runtimes and packages

### Which languages and libraries work?

Node.js 20 and 22 (JavaScript or TypeScript), Bun 1.4, Deno 2.9, Python 3.12 and 3.13, Go 1.23, Java 21, Rust 1.98, .NET 10 (C#) and PHP 8.4. You pick one when you create a bot. Any package from your runtime's public registry installs: npm, PyPI, the Go module proxy, Maven Central, crates.io, NuGet and Packagist: list it in your requirements.txt, package.json or other manifest and deploy. New bots start with their Discord library already in that file. The Packages card on the Secrets tab shows what your files declare, and deletes a package for you.

### Which Node version do new bots get?

Node 22, unless the `engines.node` field in your `package.json` asks for 20. Each deploy reads that field again, so the version only changes when you change it.

### Which discord.js versions work?

Any version that runs on Node.js 20 or 22, which covers discord.js v14. Set `engines.node` in your `package.json` to pick the Node version.

### Which Python version should I pick?

3.12 or 3.13; new bots default to 3.13. Stay on 3.12 only if a dependency of yours isn't ready for 3.13: set `requires-python` in `pyproject.toml` to `<3.13`. A deploy re-reads your requirements either way.

### Which Go version is used?

Go 1.23. It is the only version available today. A newer toolchain would arrive as a runtime option you pick yourself.

### Do I need a requirements.txt, package-lock.json or go.sum?

For Python, yes, if you import anything outside the standard library. For Node a `package-lock.json` helps: with it we install exactly what you tested, without it we resolve from `package.json` and the result can drift. For Go, yes: we fetch modules through our proxy, and `go.sum` pins them.

### Is every package allowed?

Yes, from the public registry of your runtime. Every download still passes four checks: the exact version is looked up in the known-malicious package list (osv.dev) and refused if listed, the file must match the checksum its registry publishes, install scripts never run (npm, Bun and Deno install with scripts off, Python installs wheels only), and there is a size limit per file and per bot. Rust, C# and Java builds do run package code while compiling (Cargo build scripts, NuGet build targets, Maven plugins), because those tools cannot build without it. That code runs in a throwaway sandbox whose only network access is our package proxy and DNS. If the malicious-package list cannot be reached and we have no recent answer for that version, the download is refused and the build says to try again in a few minutes.

### Why does a package count toward my storage?

Installed packages are kept per account and shared between your bots when the package list is identical. Each set counts once in your storage pool, however many bots use it, and the dashboard shows the figure. Two accounts never share installed packages; only the downloaded files are cached.

### What if a package will not install?

The build log names the reason: a known-malicious version, a checksum that did not match, a file over the size limit, or a Python package with no wheel for your Python version. Pin another version, or open a [support ticket](/tickets) if you think the refusal is wrong. Nothing installs at runtime, so `npm ci` or pip fails at deploy time until this is fixed.

### Does npm install work at runtime?

No. The sandbox has no registry access while your bot runs. We install everything at deploy time.

### Can I use a virtualenv or Poetry?

We build the environment for you from `requirements.txt`. Export a requirements file from Poetry and commit it.

### Can I run Pycord and discord.py in the same project?

No. Both provide the `discord` package, so whichever installs last wins and imports break in confusing ways.

### Can I use TypeScript?

Yes. Pick "TypeScript (Node.js 22)", "Bun 1.4" or "Deno 2.9" when you create the bot and point it at your `.ts` entry file. On Node the deploy compiles it for you; Bun and Deno run it as it is.

### Which Deno imports work?

npm packages: `npm:` imports in deno.json, package.json dependencies, or packages you tick on the Secrets tab. JSR (`jsr:`) and URL imports don't work yet, because builds only reach our npm package proxy. Your bot runs with network, env, file and system access, but can't start other processes or load native libraries.

### Can I use CGO?

No. Go builds are static, which keeps the sandbox image small and the binary portable between nodes.

### Where do Go builds run, and do they count against my CPU pool?

On our build worker, never inside your bot's sandbox, and they don't count against your pool. The build worker has its own concurrency limit; your pool covers running bots.

### How much RAM does a Go bot need?

Usually far less than the 64 MB default allocation. Lower it on the Settings tab and you can run more bots inside the same pool.

### Is asyncio fine on half a CPU?

Yes. A typical gateway bot spends its time waiting on the socket, not burning CPU.

### Can I use slash commands?

Yes. Register them from your own code as usual. Outbound requests to Discord are allowed from the sandbox.

### Can I run a web server too?

On Pro, yes: each bot can get one HTTPS port. On Free and Lite the bot is outbound-only.

### Can I host a music bot?

Only through Lavalink. A bot can't play audio itself: playback needs `ffmpeg`, which builds don't include. A Lavalink client (for example shoukaku, lavalink-client or wavelink) connected to a Lavalink server works. Pro includes one we run next to your bot, Lite can add one as an add-on, and on any plan you can connect to one you run elsewhere. Ours plays SoundCloud, Bandcamp, Twitch, Vimeo and direct links to audio files or streams.

## Tokens and environment variables

### Can my bot have a database?

Yes. On the bot's Database tab, add a Postgres, a Redis or a FerretDB (works with MongoDB drivers and Mongoose). It runs next to your bot on the same server, only your bot can reach it, and your bot gets the connection as `DATABASE_URL`, `REDIS_URL` or `MONGODB_URL` at its next start. Its RAM comes out of your pool while it runs and its data out of your storage pool. You can download a dump any time. If you already run a database elsewhere, paste its connection string instead; we store it encrypted and set the same variable. On Pro, or on Lite with the Lavalink add-on, a bot can add a Lavalink music server the same way.

### Is my bot token safe?

You paste it once in the Secrets tab. We encrypt it, inject it into your container as DISCORD_TOKEN, and never show it again, not even to admins. If it prints to the console we scrub it from the output.

### Can I hardcode the token instead?

You can, and it will work. It also means the token lives in your repository, your zip file and your backups, so we don't recommend it.

### Can a collaborator read my token?

No. Nobody can read it back, including editors, viewers and admins. Only the owner can replace it.

### Do I need a .env file, dotenv or python-dotenv?

No. Variables you set on the Secrets tab are already in `process.env` and `os.environ`, and they are stored encrypted. A `.env` file works too, but it sits in your project as plain text.

### Are environment variables visible in the console?

Not by us. If your own code prints them, that is your output, though we redact the token before it reaches the buffer.

## Deploying from GitHub

### Does a push deploy automatically?

Only if you turn it on. It's off by default, so a broken commit doesn't take your bot down while you are away. "Deploy on GitHub push" on the bot's Settings tab deploys every push to one branch you choose, once you add the webhook it shows.

### Can I deploy a monorepo?

Yes, with the subfolder field. We ignore everything outside it, including its lockfiles.

### What if my repository is private?

The import works with public repositories on github.com and gitlab.com only. We don't take access tokens, so a private repository can't be linked. Add its files with the Upload button on the bot's Files tab instead.

### Where does the clone happen?

On the agent, never inside your bot's sandbox. The sandbox has no Git and no registry access.

## When something goes wrong

### My bot crashes right after start. What now?

Open the Console tab: the last lines show the reason, for example a missing token, a package that failed to install, or a wrong entry file. A crashed bot restarts on its own with backoff; after 5 crashes within 10 minutes we stop restarting it until you press Start again.

### My bot is online but not answering. What's wrong?

Enable the Message Content Intent for your bot in the Discord Developer Portal, under your application's Bot page. Discord will not deliver message text to your bot without it, so a prefix command or an `on_message` handler stays silent even while the bot shows online.

### I get PrivilegedIntentsRequired on start

Enable the intent in the Discord developer portal for your application, then restart the bot. The sandbox has nothing to do with it.

### What does "online" mean on the dashboard?

That the process is running *and* your bot printed a line matching ready, logged in or connected to gateway. Running without that line shows as "waiting for the ready signal".

### My bot logs in and then goes offline after a while

Usually the gateway connection died and the library didn't reconnect. Look for a heartbeat warning in the console. Updating your Discord library to its latest release fixes most of these.

### My bot answers slowly

Check the CPU line on the Usage tab. Half a CPU is plenty for a gateway bot, but heavy image or audio work won't fit.

### My bot shows "node down"

The machine hosting it went offline. If it stays offline for a few minutes, we move your bot to another of our servers by itself (Pro first, then Lite, then Free) and tell you by DM or email. Its code, packages and secrets move with it; its `/app` volume can't, so it starts empty there. When the old machine is back we keep the old files for a week, and support can copy them over.

### My bot shows "waiting"

It wants to run, but its server has no room right now. It starts by itself as soon as there is room. Pressing Stop takes it out of the line.

### Does a ping service keep my bot alive?

Not here. There is nothing to ping. HostDC supervises the process instead of waking it with traffic.

## Schedules

### Can I run scheduled tasks on the free plan?

Platform schedules (scheduled restarts and cron) are a paid-plan feature (Mini does not include them; Lite, Pro and Max do). A task loop inside your bot, like `discord.ext.tasks`, works on every plan. See [cron jobs for Discord bots](/guides/cron-jobs-for-discord-bots).

### Do scheduled restarts drop my bot's data?

No. Only the process restarts, and the `/app` volume stays untouched.

### What timezone does the scheduler use?

It stores UTC and shows times in the timezone on your account page, which is also what every other timestamp on the site uses.

### Will a restart interrupt a command mid-flight?

The process gets a termination signal first and a few seconds to finish. Handle the signal if you have work worth finishing.

## Data and your account

### Can I lose data?

Your data survives restarts and redeploys. Mini, Lite, Pro and Max get daily snapshots you can restore from the Backups tab. Free keeps one weekly snapshot (weekly, kept 1 day), so keep your own copy of anything important.

### Where do I keep a database?

Keep files and SQLite databases in your `/app` folder, which survives restarts. You can also connect to hosted databases over the internet, such as PostgreSQL, MySQL, MongoDB Atlas or Redis.

### Can I move my bot away later?

Yes. Request a data export from your account page and you get a zip of your files, settings and history.

### How do I delete my account?

From the account page. Bots stop immediately and your files are held for 30 days in case you change your mind, then purged.

## Rules and abuse

### How are bots kept apart?

Bots run in their own sandbox with RAM, CPU and process limits. Raw sockets are not allowed.

### Can I run something other than a Discord bot?

HostDC is made for Discord bots. Small always-on scripts run here too, under the same sandbox and the same rules.

### What can't I host?

Anything illegal or against our [Terms of Service](/terms) is not allowed. Accounts that break this are reviewed, and if we find a violation the person is blocked from all of our services.

### What happens to abusive bots?

Crypto mining, spam and attacks on other services are detected automatically and flagged. We stop the bot and review the account for abuse. Farming free accounts to get around the pool limits breaks the terms and gets the accounts suspended.

## About HostDC

### Where does it run?

On our own nodes in Europe. The status page shows which are online and their recent uptime.

### Is HostDC affiliated with Discord?

No. It is an independent hosting service for bots built on Discord's public API.

### How do I hear about changes?

Announcements appear as a banner on the dashboard, and larger ones go out by email unless you have opted out of product mail. The [changelog](/changelog) lists everything.
