NapNodes
Free tool · Discord bots

Discord bot permissions calculator

Tick what your bot needs to be able to do (each permission with a plain explanation of what it allows) and paste your application ID: out come the permissions number and the link to add it to your server. It works the other way round too: paste a number or an invite link and we'll tell you which permissions it grants.

Already have a number or a link?

Tick your bot's permissions

Shortcuts (added to whatever you've already ticked):

52 permissions in 7 groups · Jump to the number and the link

General server permissions 10

Members 6

Text channels 18

Voice and stage channels 12

Apps 3

Events 2

Advanced 1

Your permissions number

0

In hexadecimal: 0x0000000000000000

No permissions ticked: the bot would join without a role of its own and could only do what the @everyone role allows.

The invite link

Paste your application ID and the link to add the bot to your server shows up here.

Nothing you type leaves your browser.

What the permissions number is

Discord stores a bot's permissions (and any role's) in a single number. Each permission is a power of two: Add Reactions is 64, Send Messages 2048, Administrator 8. The number is the sum of the ones you choose, so 64 + 2048 = 2112 means “reactions and messages”, and nothing else. It's what goes after permissions= in the invite link, and what discord.js or discord.py give you back when you ask about someone's permissions.

The newer permissions have huge numbers (Bypass Slowmode is already over four quadrillion). If you work it out in your code, use your library's names (PermissionFlagsBits in discord.js, discord.Permissions in discord.py) instead of typing the numbers by hand: in JavaScript, regular numbers lose the high permissions when you combine them, which is why discord.js gives them as BigInt.

Why not just give it Administrator

It's the easiest option and what plenty of tutorials do, but with Administrator the bot can do anything: delete channels, ban anyone below it or change roles. If the token ever leaks (pushed to GitHub by accident, a computer with a virus), whoever has it controls your whole server.

With just the permissions it needs, a bug in your code or a stolen token does far less damage. And it builds trust: whoever adds a bot sees the list of what it asks for before accepting, and a short list gets accepted more than an “Administrator”. Start with one of the shortcuts above and add what your bot really uses.

What the applications.commands scope is

The scope says what you're asking access for. bot is the one that puts the bot on the server (without it, the link adds nothing), and applications.commands lets your app register its slash commands (/hello, /ban) on that server. Today Discord already includes it when you ask for bot, but adding it does no harm and it's what the discord.js and discord.py tutorials ask for: that's why it's ticked. If your bot has no slash commands, you can untick it.

Where to find the application ID

  1. Go to the Discord Developer Portal: discord.com/developers/applications.
  2. Click your application (the bot).
  3. Under “General Information”, the “Application ID” number: click “Copy”. It's the same as the “Client ID” in the “OAuth2” tab.

Don't confuse the ID with the token (“Bot” tab) or the “Client Secret”: those two are passwords and don't get pasted anywhere. If you paste something here that looks like a token, we warn you instead of putting it in a link. The link that comes out can be opened by anyone with permission to manage a server; if your bot is just for you, untick “Public Bot” in the “Bot” tab and only you will be able to add it.

Haven't built the bot yet? We have step-by-step guides for a Discord bot in Python and one in JavaScript (in Spanish); when you get to inviting it, come back here for the link.

Frequently asked questions

What does permissions=8 mean in an invite link?

That the bot asks for Administrator: permission 8 is that one, and it contains all the others. If the bot is yours, you can almost certainly swap it for the few it really uses.

And permissions=0?

That the bot joins without permissions of its own: no role with permissions is created for it, and it can only do what the @everyone role allows in each channel. Useful if you want to grant them yourself by hand later.

Which permissions does a music bot need?

View Channels, plus Connect and Speak in voice channels; and Send Messages and Embed Links if it posts what's playing. That's the “Music” shortcut above. Priority Speaker or Move Members won't make it sound better: it doesn't need them.

My bot has the permission but still can't kick someone or give a role. Why?

Because of the role hierarchy: a bot can only kick, ban or change the roles of people whose roles are below its own highest role. In Server Settings → Roles, move the bot's role above the ones it has to manage. And a specific channel's permissions can take away what the role gives.

How do I change the permissions of a bot that's already in?

When it joins, Discord creates a role with its name and the permissions from the link. You can change that role's permissions in Server Settings → Roles, or give it other roles, like any member.

Do I need to tick “Use Application Commands” for slash commands to work?

No. That permission is for someone to use apps' commands. What makes your bot's commands appear on the server is the applications.commands scope in the link.

And where does it run?

A bot only responds while its program is running: if it's on your computer, it goes off when you turn the computer off. At NapNodes you get a free Discord bot, no card needed: 256 MB of memory, always on, and every 7 days you renew it with one click in the panel. It works for Node.js (discord.js) or Python (discord.py): you choose in Settings → Language. If it falls short, there are Mini and Plus plans, with nothing to renew. How to upload the code is in hosting for your Discord bot (in Spanish).

Create your free bot

More free tools

All the tools