Community

Set Up a Discord Level System: XP, Role Rewards and Leaderboard

Set up a Discord level system: XP for messages and voice, roles as level rewards, fair rules against spam and a public leaderboard you can share.

  • 8 min read
  • 6 steps
Contents

A Discord level system makes activity visible: people who chat and join conversations earn XP, level up and eventually unlock a special role. That motivates new members to get involved and gives regulars a reason to stick around.

Set it up badly, though, and it backfires fast: people spam for XP, the chat fills up with level-up messages, and after a month nobody cares about the leaderboard anymore. In this guide you set up leveling with Lizbot so it stays fair and keeps people motivated. By the end you have XP, reward roles, a rank card and, if you want, a public leaderboard on the web.

How a level system works

Discord itself has no level system. You need a bot that counts messages and hands out points. With Lizbot it works like this:

  • Each message earns a random amount of XP, between 15 and 25 by default.
  • After that a cooldown applies, 60 seconds by default. Further messages during that time earn no XP.
  • Optionally, members also earn XP for time in voice channels, 5 XP per minute by default. For ways to bring your voice channels to life in general, see the guide on more activity in voice channels.
  • The total XP determines the level along a curve.

The curve follows the formula: XP for level n = base · n² + factor · n. With the defaults (base 5, factor 50) you need this much XP in total:

LevelTotal XProughly counted messages
1553
537519
101,00050
203,000150
5015,000750

The message count assumes an average of 20 XP per counted message. Because of the cooldown, at most one message per minute counts. So if someone sends ten quick messages in a row, they only earn XP once.

1. Turn on leveling in the dashboard

Open the Lizbot dashboard, pick your server and go to Leveling. In the General tab, switch on Leveling enabled. This is also where you set:

  • XP per message (min) and XP per message (max)
  • Cooldown in seconds
  • Curve: base and Curve: factor

The defaults suit most servers. If your server is very active and the first rewards come too quickly, raise the curve base rather than the cooldown. Early levels stay reachable while high levels become much rarer.

2. Make it fair and stop XP spam

A level system rewards whatever you measure. If you only measure messages, you get more messages, not necessarily better ones. These settings help:

  • Cooldown: The default 60 seconds make one-word spam pointless. Don't go below 30 seconds.
  • No XP in channels: Exclude channels where spam is likely or XP makes no sense, such as bot commands, counting games, memes or off-topic.
  • No XP for roles: For example bots, muted members or a role for restricted accounts.
  • Multipliers: In the tab of the same name you give roles or channels a factor. A factor of 1.5 for your discussion channel rewards real conversations, 0.5 slows down a fun channel, and 0 turns XP off there completely.

One important detail about multipliers: values below 1 take precedence over boosts. A member with a boost role still earns less XP in a throttled channel. That way nobody can bypass a throttle with a booster role.

Voice XP has its own safeguards in the Voice tab: Minimum people in the channel (2 by default, bots don't count), Muted members earn no XP and Ignore AFK channel. On top of that there are Ignored voice channels. Nobody earns XP by sitting alone and muted in a channel.

3. Choose roles as level rewards

Reward roles are the main motivator. Create them in Discord first: Server Settings, then Roles, then Create Role. Give them a color and, if you like, the option to display members separately. Make sure the Lizbot role sits above the reward roles in the role list, otherwise the bot cannot assign them. More on this in the guide on setting up Discord roles.

Then, in the dashboard's Rewards tab, assign a level to each role. A proven pattern:

  • Level 5: a role that allows images and links in chat
  • Level 10: a colored regulars role
  • Level 20: access to a quiet lounge channel
  • Level 30 and up: a rare role with its own name

Two switches control how the roles behave. Stack rewards lets members keep every role they reached; without it, only the highest one stays. Give rewards back when members rejoin returns level roles to members who leave and come back. Their XP is kept. With verification on, the roles only come back after they verify.

On the Free plan you can set 10 reward roles, from Pro on as many as you like.

4. Level-up messages without chat spam

In the Level-up tab, Where to send decides where congratulations go. The options are In the current channel, Fixed channel, By DM and No message. For most servers a dedicated channel like #level-ups works best, because the main chat stays calm.

You can write your own text. Placeholders include {user.mention}, {level} and {xp}, for example:

GG {user.mention}, you are now **Level {level}**!

The Only announce levels with a reward switch is especially useful. Lizbot then only announces a level-up when it unlocks a role. On active servers that saves a lot of messages.

5. Design the rank card

With /rank show, members see their level, XP, rank and message count. With the mitglied option they can look up someone else. In the Rank card tab you choose the Style: Image (card with progress bar) or Simple embed. For the image you set background and accent colors and can add a Background image by URL, ideally 934 × 282 pixels.

From Pro on, members can design their own card: /rank style background sets a personal background image, /rank style color a personal accent color.

6. Leaderboard in Discord and on the web

In Discord, /rank top shows the server's top 10, and the seite option pages through the rest. In the dashboard, the Leaderboard tab shows the full list with XP and messages. You can also Reset the leaderboard there, for example to start a new season. That deletes all XP on the server and cannot be undone.

The Public leaderboard turns this into a dedicated web page with the top 100, a podium for the top three, progress to the next level and the reward roles. Turn on Show leaderboard publicly and pick a Short name in the address: 3 to 32 characters from a to z, 0 to 9 and hyphen. The page then lives at lizbot.gg/l/your-short-name. If you leave the short name empty, the server ID is used in the address. Copy link lets you share it right away. /rank top also gets a button that leads to the web page.

Privacy and the public leaderboard

Once you turn on the public leaderboard, display names, avatars, levels and XP of the top 100 are visible to everyone on the internet, even without a Discord account. Members who left the server are not shown.

Every member can opt out: /rank privacy with verstecken set to true removes them from the public list, false shows them again. This works on every plan. Announce the public leaderboard in your announcements channel and mention this command right away.

Checklist

  • leveling is enabled in the dashboard
  • the cooldown is at least 30 seconds
  • bot, game and spam channels are listed under No XP in channels
  • the Lizbot role is above all reward roles
  • level-ups go to a dedicated channel or only on reward levels
  • the first reward is reachable after a few days of activity
  • your members know about the public leaderboard before you turn it on

Common mistakes

Rewards come too late: If the first role only arrives at level 25, new members give up. Put a small reward early, around level 5. More ideas for keeping new people around are in the guide on keeping members on your server.

Lizbot role too low: Discord only lets bots assign roles below their own role. If a reward role sits above it, nothing happens on level-up. How to track down permission problems like this is explained in the guide on fixing missing bot permissions.

Reward roles with admin permissions: A level role should unlock comfort, not moderation powers. Being active does not automatically make someone trustworthy.

Level-up flood in the main chat: Without a dedicated channel or Only announce levels with a reward, congratulations crowd out real conversations.

All channels count the same: XP from counting or spam channels distorts the leaderboard. Exclude them or throttle them with a multiplier.

FAQ

Do members earn XP for every message?

No. After a message that earned XP, the cooldown applies, 60 seconds by default. Anything written during that time does not count. Channels and roles you excluded from XP don't count either.

Is XP lost when someone leaves the server?

No, XP is kept. If the member comes back, they get their reward roles back automatically as long as Give rewards back when members rejoin is on.

Can I bring over XP from another bot?

Yes, the dashboard has a Levels tab under Switch bots. Lizbot reads the levels and then also assigns the matching reward roles. How the whole switch works is covered in the guide on switching bots.

How do I hide myself on the public leaderboard?

Use /rank privacy in Discord and set verstecken to true. You no longer appear on the web page. The leaderboard inside Discord is not affected.

How often does the public leaderboard update?

The web page refreshes about once a minute. New XP shows up shortly after people chat.

Matching Lizbot features

Let Liz handle it for you

Invite Lizbot, set it up in the dashboard, done. The Free plan stays free.