Select the exact permissions your bot needs, decode an existing permissions integer, and optionally generate a Discord OAuth2 installation URL — all locally in your browser.
Permission integers are easier to audit when each bit is shown as a named capability.
Select only the capabilities required by the bot instead of defaulting to Administrator.
Paste the decimal permissions value from an OAuth2 URL to see which current Discord flags it contains.
Add a public Application ID and create a bot installation URL with the selected permissions and optional slash-command scope.
Discord represents a set of permissions as one decimal integer. Each permission occupies a bit position, and selected values are combined with a bitwise OR operation. This calculator uses BigInt so newer permissions above the traditional 32-bit range remain accurate.
View Channels is 1024 and Send Messages is 2048. Selecting both produces 3072 because their separate bits are combined. The decimal result can be placed in the permissions parameter of a Discord OAuth2 bot URL.
Current Discord permission flags extend beyond bit 32. JavaScript's ordinary bitwise operators truncate values to 32 bits, so this tool performs calculations with BigInt and serializes the final value as a decimal string.
Administrator grants every permission and bypasses channel-specific overwrites. It should not be selected simply to make setup easier; a smaller permission set limits the impact of a compromised or misconfigured bot.
The OAuth2 generator needs only the public Discord Application ID. A Bot Token and Client Secret are credentials and must never be entered into this page, included in an invite URL, or shared publicly.
The bot scope installs the bot user in a server. The applications.commands scope enables slash and context-menu commands. Many modern Discord apps include both scopes, but the permissions integer still applies specifically to capabilities granted during installation.
A role permission integer describes base permissions. Discord then applies role hierarchy and channel overwrites. The same bot can therefore have different effective access in different channels even when its role integer does not change.