Discord Slash Command Builder
Build slash commands and context menu commands with options, subcommands and localizations. The builder checks every Discord rule live and gives you JSON, SlashCommandBuilder code and a curl command.
Command
Translations1
The name above is the default language (usually English). Pick languages Discord should show a translation for.
Options3/25
Stringtext*
Integerminutes*
Channelchannel
Settings
How it works
- Pick the kind: slash command, user menu or message menu. Or load an example or import existing JSON.
- Enter name and description and add translations, e.g. German.
- Add options – string, number, user, channel, attachment … – or subcommands and groups.
- Set who can use the command and where it shows up (servers, DMs, user install).
- Fix everything listed under “Validation”, then copy JSON, discord.js code or curl.
FAQ
Why is my command name rejected?
Slash commands and options need 1–32 characters, lowercase, without spaces. Letters (including accented ones), digits, - and _ are allowed. Context menu commands may use uppercase and spaces.
How many options and choices are allowed?
At most 25 options per level and 25 fixed choices per option. Required options must come before optional ones. In total, a command's names, descriptions and choice values may not exceed 8000 characters.
Can I mix subcommands and regular options?
No. The top level holds either only subcommands and groups or only regular options. Groups contain only subcommands; deeper nesting isn't possible.
How do I make a command admin-only?
Set default_member_permissions to "0" (“Admins only”) or to specific permissions like Ban Members. Server admins can adjust it later under Server Settings → Integrations.
Why doesn't my global command show up?
Check contexts and integration_types: the command only appears where both match. For testing, register it as a guild command – it shows up instantly. Each app may have 100 global slash commands and 15 user and 15 message commands.
Do I need to enter my bot token here?
No, never. The builder only creates the JSON. You run the curl command yourself, with the token in an environment variable.