Your Moodle version

Blocks: Level up!

Maintained by Picture of Frédéric Massart Frédéric Massart
Engage your students! Gamify your students' learning experience by allowing them to level up in their courses.
Moodle 2.7, 2.8


  • Automatically captures and attributes experience points to students' actions
  • Block that displays current level and progress towards next level
  • Report for teachers to get an overview of their students' levels
  • Notifications to congratulate students as they level up
  • A ladder to display the ranking of the students
  • Ability to set the number of levels and the experience required to get to them
  • Images can be uploaded to customise for the appearance of the levels
  • The amount of experience points earned per event is customizable
  • Page to display the list of levels and a description
  • Experience points are earned per course
  • An event is fired when a student levels up (for developers)

How are experience points calculated?

This block listens to events triggered in Moodle and captures some according to pre-defined rules. It then attributes experience points based on the information contained in the event. For more information about the events, refer to the documentation.

Only the users with the capability block/xp:earnxp can earn experience points. This capability is given by default to students. Also actions triggered by guests, non-logged in users or administrators are ignored.

The following events are always ignored:

  • Events from another context than course or module
  • Events having another educational level than participating

The rest is up to you. By default the plugin comes with a minimal set of rules to attribute experience points to actions, and to ignore some redundant ones. Visit the Rules page in the plugin itself to view or override them.

Note: Repeated actions within a short time interval are ignored to prevent cheating.


This plugin is part of set Experience Points (XP).




Picture of Frédéric Massart
Frédéric Massart (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Picture of Frédéric Massart
    Fri, Sep 26, 2014, 9:52 AM
    You sure can Andre,

    I would be happy for you to do so. Have you ever used AMOS? That is our platform to translate Moodle and the plugins.

    See here:

  • Picture of Jesse H
    Tue, Oct 7, 2014, 11:03 AM
    @Frédéric Massart Thanks for that, exactly what I was looking for.
    Although do you think there could be an admin block for rapid EXP bonuses. I would love to be able to give EXP boosts live in class!
  • Picture of Frédéric Massart
    Tue, Oct 7, 2014, 11:06 AM
    @Jesse Everything is possible, I guess it is just a matter of deciding what is useful for everyone, and what is not.

    Could you expand a bit more how you visualise this feature you are describing? As well as how you would use it.

  • Picture of Diljith K
    Tue, Oct 7, 2014, 6:48 PM
    I am not sure why. But by default the block is not visible to the students.
  • Picture of Frédéric Massart
    Wed, Oct 8, 2014, 10:37 AM
    @Diljith You sent me a message saying that it was resolved, could you share what was the issue?

  • Picture of Jeremy Bourdon
    Sat, Feb 14, 2015, 5:09 AM
    Hello Frédéric, fist off this is a fantastic plugin, thank you very much for creating it. I am currently using it with 250 16/17 year old students as part of a pilot project using gamification.

    Some problems I have run into include students refreshing a course page to gain points. Is there any time function built into the code which would prevent repeated actions within a short time period? and can this be adjusted within the code? As my students are a bit younger, some of them are more interested in gaming the system to receive points instead of doing the work to receive points.

    One thing that would be great for my application would be if all of the default point values were zero to begin with and then I can select what I want to award points for. Currently as I look through the report I am surprised at what actions are being awarded points and then I often have to go in and lower them or set them to zero. I realize I could raise the point values for each level but I would like to be able to identify to students what actions receive what point values. For example when students submit an assignment I would like them to receive 10xp. Currently adding a submission is awarded points. If text is entered then that is awarded points as well. If a file is uploaded points as well. Many things are happening with one submission it is difficult to predefine how may points are going to be awarded for that action(s).

    Students want to know what they will receive points for. It gets a bit difficult for me to predefine these values.

    All in all a great plugin. Just need to tailor it to my particular application.
  • Picture of Frédéric Massart
    Mon, Feb 16, 2015, 10:47 AM
    Hi Jeremy,

    Thanks for your feedback! I am glad to see that the plugin is being used in real environments and I would be happy to hear about the results of your gamification experimentation.

    Unfortunately it will never be easy for me to prevent the students to trick the system. The more barriers you put, the more fun smile. There are ways, but they come with a performance cost which can be a big drawback for some environments. If you are using the latest version, there should be a basic "cheat check". In short, you cannot repeat the same event/action twice within 30s, so refreshing the course page will not be very efficient. Or if you do more than 10 actions, within 30 seconds, then going back on the course page would give you points. Someone encountered an issue which is not similar but related and reported a bug on Github. I would not be surprised to see more settings to prevent cheats in the future, but that only if I find time to, or if someone kindly submits a patch.

    The plugins entirely relies on the "events" triggered by the system. The default behaviour of "Level up!" is to allow N points for the events of type "Create", "Update" and "Read". The "Delete" actions are ignored. The problem you are facing is that you want a greater level of granurality that I cannot provide as a default, even though it makes perfect sense. I assumed that teachers would have to experiment with the plugins to see when and where events make sense and don't, and from there maybe we can improve block_xp to reduce the world load when setting up a course.

    In the mean time, may I suggest you to redefine the Read, Update and Create events and give them 0, then on top of that you can add the specific events that you want to reward your students with, say submitting an assignment, or posting to a forum. To find out what events/actions are available, observe the Log reports which will contain all the actions performed by your or your students.

    Another way to limit the "places" where a student can earn experience points is to use the capability "earnxp" or something like this. The modules in which the user does not have that permission will not be awarded anything. That can be useful if you want to blacklist an activity for example.

    I hope that helped, let me know how it works and please keep on sharing your experience.

    (Filing bugs or improvements requests on the Github page helps also ;)).

  • Picture of Jelly Smith
    Fri, Feb 20, 2015, 3:36 PM
    Is it possible to make the ladder anonymous, so that students can see where they rank, but not the names of students above or below them?
  • Picture of Jeremy Bourdon
    Sat, Feb 21, 2015, 4:59 AM
    Jelly, there is some research that suggests seeing who it above you on the leader board is motivating (especially if you know who that person is). There is also a demotivational factor if you find yourself too low on the leader board. Most gamified environments include the 2 people above you and the 2 people below you. You don't know where you fall on the entire board but you do know who is near you on the list.

    I would like to see your suggestion implemented but perhaps with a top 10 for the entire course and then the 2 people immediately above and below you.
  • Picture of Frédéric Massart
    Mon, Feb 23, 2015, 4:32 PM
    Jelly, Jeremy,

    May I suggest raising an issue and continuing the discussion on the plugin's tracker issue?

    It is easier to keep track of feature requests and their associated discussions.

  • Picture of Santiago Moral Castillo
    Thu, Feb 26, 2015, 1:06 PM
    Hi Frederic, congratulations for your great job. The plugin is really amazing.
    I have found a small problem, that I put already in the bug tracker. When you restore a course containing the plugin enabled you always get a disabled plugin. If you can have a look or give me a clue, it would be very nice.
    Thanks in advance!

  • Picture of Frédéric Massart
    Thu, Feb 26, 2015, 2:41 PM
    Thanks Santiago,

    I have to look into it, but I suspect that I forgot to handle backups, I will look into it when I have time.

  • Picture of Thiago Henrique Ornelas Costa
    Thu, Feb 26, 2015, 8:20 PM
    Hello Frédéric! Nice job man awesome Plugin! But one suggestion : In the next update , if possible, there could be a notification to the student when it is near the first place in the ranking, type: There are a few points for you to reach the first place! encourage even more students to devote to travel and expand the possibilities of motivation! Thanks and keep up the excellent work.
  • Picture of Lizet Nuñez
    Fri, Feb 27, 2015, 3:16 AM
    This is a nice block!!! I'm trying to adapt it in my project and I have a question. Is there a way to include level up! as part of course completion?

    One of the rules for student to complete their course is gain level 3 at least.

    Thank you in advance!

    Kind regards
  • Picture of Frédéric Massart
    Fri, Feb 27, 2015, 5:05 PM
    Thanks Thiago, I will think of it. Mean time feel free to raise an issue on the Github repository of this plugin, it is easier to identify feature requests and have other users comment on them.

    Hi Lizet, at the moment I don't think there is, however you might be able to 'trick' it by using the other plugin: which allows you to hide/lock an activity until a certain level is reached. So you could hide an activity until level 3 and ask your students to visit it. In the course completion you would then check if they visited or. I have not tried, but maybe you can get something like that working.

1 2 3
Please login to post comments