Free Moodle plugins & tools
Tools we built for real client work, released free. Maintained against supported Moodle versions — because an abandoned plugin is worse than no plugin.
Latest release · free · GPLv3
Access Expiry & Enrolment Duration — how long learners keep access, from one place
Access windows live in a few different places in Moodle — a per-course default, a per-user end date, a cohort with no end-date field of its own. Access Expiry & Enrolment Duration holds all of it in one place: set a window — a number of days or a fixed date — at site, category, course, role, enrolment method or cohort level, with the most specific rule winning. Extend an individual learner in a click, send optional reminders before access ends, and roll it all out safely.
- Rules across scopes — days or a fixed date, by site, category, course, role, enrolment method or cohort.
- Cohort access windows — give a synced cohort an end date; members lapse on schedule.
- Per-learner extensions — add days, set a date, or unlimited, with a reason; a suspended learner comes straight back, grades intact.
- Optional reminders — staged "ending soon" messages with a renew link, through Moodle's notifications.
- Safe rollout — ships disabled, dry-run preview, protected roles, per-run cap, audit log, and revert.
| Component | local_accessexpiry (local plugin) |
|---|---|
| Version | 1.0.0 · stable |
| Requires | Moodle 4.5 (LTS) or newer |
| License | GNU GPL v3 or later · free |
| Safety | Ships disabled · dry-run preview · audit log · one-click revert |
| Source | github.com/Sternfast/moodle-local_accessexpiry |
Also free · GPLv3
Grade Lookup — every grade a learner earned, in one report
Moodle's gradebook is per-course, so there's no core screen that shows one learner's grades across everything they've taken — and unenrolled learners drop out of the gradebook entirely. Grade Lookup is the report that answers the whole question: search any learner by name or email, see their grade in every course with an item-by-item breakdown and certificates, filter to a course or cohort for a summary, and export to Excel. Past and unenrolled learners still appear — their grades are recovered from history.
- Find any learner — current, past, or unenrolled (grades recovered from history).
- Filter by course or cohort — by name or ID, multi-select, optional date window.
- Summary tiles — learners, average grade (median & range), completion, certificates, active time.
- Per-learner record — grade in every course, item-by-item breakdown, certificates with verification.
- Export — one-click Excel workbook (summary + learner list); CSV too.
| Component | report_gradelookup (site report) |
|---|---|
| Version | 1.4.0 · stable |
| Requires | Moodle 4.3 or newer (tested through 5.0) |
| License | GNU GPL v3 or later · free |
| Footprint | Read-only · no database tables · no scheduled tasks · Privacy API provider |
| Access | Capability report/gradelookup:view (manager level) |
Why free
Our tools are how we introduce ourselves
The best LMS shops we know earned their reputations by giving real answers and real tools away — then being easy to hire when the hard version of the problem showed up. That is the model here.
Every plugin on this page came out of actual client work: something we needed mid-migration, a diagnostic we wrote to find lost tracking data, an admin shortcut that saved hours. If it saved us time, it will save you time.
Two releases so far, with more being packaged. Each gets a write-up on the blog covering what it does, how we use it, and — where relevant — the manual method it replaces.