[Proposal] Learning Credentials
See Github ticket. Please provide feedback before Dec 5, 2025
TL;DR summary
We’ve developed a flexible new certificate system for Open edX that recognises learners based on completion, grades, or a combination of both, moving beyond the simple pass or fail rule based on the overall grade.
Originally built for Harvard Medical School, it introduces Completion and Achievement certificates, allowing educators to celebrate persistence and excellence more meaningfully.
Overview
Recognition in online learning motivates learners, supports educators, and signals achievement to employers. With its flexibility, the Open edX Platform has the potential to recognise learning in many ways, but right now, certificates only tell one story: pass or fail rule based on the overall grade.
This simplicity overlooks persistence, progress, and distinction, limiting how learners are motivated, how educators recognise effort, and how employers assess skill.
That’s why we developed a more flexible certification system that brings more nuance to learner recognition.
This work also comes at an important moment: it appears that 2U may discontinue maintenance of the Credentials service, and deprecate it altogether. If that happens, it would create a gap in how programme-level credentialing is supported on the platform, increasing the need for Learning Paths and Learning Credentials projects across the community.
Problem
Currently, certificates in Open edX are based on a single rule: earn a specific overall grade. That means:
Only one certificate type can be issued per course.
There’s little room for nuance or personalisation.
Learners aren’t recognised for milestones along the way.
While certificates serve their purpose, this rigidity makes them less reflective of real achievement.
For learners, certificates are more than a file to download, they’re a sign of progress and pride.
For educators, flexibility means showing the many ways learners succeed.
For employers, richer detail offers a clearer view of real skills than a simple “Pass” or “Fail.”
In short, certificates could do much more, to motivate, differentiate, and meaningfully recognise learning.
Use Cases
As a Platform Administrator…
I want a maintainable and extensible credential plugin that integrates smoothly with Open edX, so I can reduce the need for manual workarounds.
I want to control which certificate features are enabled (e.g. verification or re-issuance), so the system can align with institutional policy.
I want to ensure data security and integrity for all issued certificates, so learner credentials remain trustworthy over time.
As a Course Author or Instructor…
I want to define certificate rules for my courses based on completion, grades, or a combination of both, so I can recognise learners’ progress and achievement more meaningfully.
I want to define certificate rules for a learning path, so I can recognise learners who complete or excel across a full sequence of courses.
I want to mark certain course content as optional, so that it doesn’t affect completion or certificate eligibility.
I want to re-issue certificates when learner details change (for example, a name correction), so records remain accurate.
I want to deactivate previous certificates automatically when a corrected one is issued.
I want each certificate to include a unique verification link or ID, so employers or institutions can confirm its authenticity.
As a Learner…
I want to clearly see how close I am to earning my certificate, so I understand what progress or performance thresholds I still need to meet.
I want to download a verifiable PDF certificate.
I want to know that my certificate is verifiable, so I can confidently share it with employers or peers.
Proposed solution
We’ve developed a flexible certificate system, implemented as a modular Open edX plugin, that allows certificates to be issued based on course completion, grades, or a combination of both.
The system supports certificates for individual courses and for Learning Paths (a series of related courses):
For Individual Courses
Course authors can decide what learners must do to earn a certificate:
Completion-based: Award a certificate when a learner completes a specific percentage of the course (e.g. “Complete 90% of the course”).
Grade-based: Award a certificate when a learner achieves a certain score (e.g. “Reach 80% overall grade”).
Combined criteria: Require both (e.g. “Complete 90% of the course and score at least 80% overall”).
For grade-based certificates, authors can also set granular conditions by assignment type, for example:
“Score a minimum of 80% on the final exam and achieve at least 75 % overall.”
For Learning Paths
The same rule types are available for Learning Paths, which bundle multiple courses together.
Authors can choose one of two approaches:
Learning Path-level criteria (global rule)
A single rule applies to every course in the path.
Example: “Complete 90% of each course within the Learning Path.”
Course-level criteria (per-course rules)
Each course can have its own thresholds, replacing the global rule. For example:
Course 1: 80% completion
Course 2: 75% completion
Course 3: 50% completion
Authors can also mix completion and grade criteria, either at the global Learning Path level or per course:
Learning Path example: “Complete 90% of each course and achieve at least 80 % overall.”
Course-level example: “Course 1 – 80% completion and 75 % grade; Course 2 – 75 % completion and 85% grade.”
Instructor Experience
Instructors manage configuration through Django Admin, where each certificate’s criteria can be defined and previewed. While Django Admin offers full flexibility, moving these capabilities to Studio may be something the Community might want to investigate at a later stage.
Learner Experience
Learners see their progress toward certificate eligibility directly on the Progress page, and can download a verifiable PDF once they meet the criteria.
PDFs include learner name, course title, date, and credential level (Completion or Achievement).
Certificates are generated automatically, stored securely in S3, and encrypted for authenticity.
Current templates assume a single page. Multi-page support (for micro-degree-style certificates) is feasible with minor code updates and template-specific page coordinates.
Features Currently in Development
Authors can mark course content as “optional,” so they don’t affect completion or certificate eligibility.
Each certificate will include a unique ID and verification link to confirm authenticity.
Learners can receive corrected certificates (e.g. after updating their name), while outdated versions are automatically invalidated.
Learners will be able to view and download certificates directly in the MFE interface.
Future Features
Replace Django Admin with a user-friendly interface in Studio.
Enable translation of certificate templates for multilingual courses.
Connect Open edX certificates with global standards (e.g. W3C Verifiable Credentials, Open Badges) so they can be independently verified and shared outside the platform.
Extend the same framework to award digital badges for milestones, or Learning Path completion.
Technical Highlights
Implemented as a modular edx-platform plugin (
learning-credentials), designed for easy maintenance and extension.Built from the ground up; does not reuse or depend on the legacy certificate system.
Certificates are encrypted and stored in S3 (no MongoDB dependencies).
Works natively with Learning Paths.
Uses a modular architecture where the ‘rules logic’ (who qualifies) and the ‘issuing logic’ (generate and deliver the certificate) are cleanly separated, enabling future extensibility for new eligibility rules, certificate formats, or delivery methods.
Planned support for QR codes and persistent verification links to ensure long-term certificate validity.
Alternatives we considered
Using the certificates built into Open edX: However, we'd to rework them significantly to meet the described requirements. Given the plans to migrate the course certificates to the credentials service, maintaining this approach could take a lot of work.
Using the credentials service: Currently, this service supports only Programs. It means that it is tightly coupled to the course-discovery IDA. We will use Pathway instead of Programs to remove this dependency and gain more flexibility. Therefore, the credentials service would also require significant reworks to support the necessary features.
Using the existing implementation of the Badges: This code was not maintained for a long time and was recently removed from Open edX.
Related Links
Enhanced Certificate Generation: Completion, Grades, and Tiers
Unlocking New Possibilities with Certificates in the Open edX Learning Management System - OpenCraft
Long-term ownership and maintenance plans
We anticipate that several teams will need this functionality, and core contributors from OpenCraft will be actively involved in its development. These contributors will continue to assist with maintenance. If needed, one or more point persons can be designated as the primary contact for this code after its release.
Contact person
Product: @Cassie Zamparini
Technical: @Piotr Surowiec