Skip to main content
OpenEduCat logo
Gradebook

ECTS Credits and Grading System Explained

The European Credit Transfer and Accumulation System (ECTS) is the foundation of academic credit recognition across 49 countries in the European Higher Education Area. One ECTS credit represents 25–30 hours of student workload; grades A through E are assigned relative to the cohort distribution rather than fixed percentage cutoffs. This page explains how ECTS works, what the Diploma Supplement contains, how it differs from national scales, and how OpenEduCat generates fully Bologna-compliant transcripts and Diploma Supplements.

What Are ECTS Credits?

The Credit Definition

One ECTS credit represents 25 to 30 hours of total student workload. Workload includes all forms of learning activity: attending lectures and seminars, private study, preparing for assessments, laboratory work, and writing assignments. A module worth 6 ECTS credits expects approximately 150–180 hours of student effort.

1 ECTS

= 25–30 hours student work

60 ECTS

= 1 full academic year

180 ECTS

= standard 3-year bachelor's degree

ECTS for Credit Transfer

ECTS was originally designed to facilitate student mobility across European institutions. When a student completes 30 ECTS credits at a partner institution during an Erasmus exchange, those credits are directly recognised at the home institution, the ECTS value tells both parties how much learning effort those courses represent. This credit portability is what makes ECTS the standard for Erasmus+ agreements across the EHEA.

The ECTS Relative Grading Scale

ECTS grades A–E are assigned based on a student's position within the distribution of passing students in the cohort, not on a fixed percentage cutoff.

ECTS GradeDefinitionCohort PositionTypical % BandEarns Credit?
AExcellent, outstanding performanceBest 10% of passing students~75–100Yes
BVery good, above average performanceNext 25% of passing students~65–74Yes
CGood, generally sound performanceNext 30% of passing students~55–64Yes
DSatisfactory, acceptable performanceNext 25% of passing students~45–54Yes
ESufficient, minimum passing performanceLowest 10% of passing students~40–44Yes
FXFail, some improvement needed before credit can be awardedFailing, not in cohort distribution~30–39No
FFail, considerable work required before credit can be awardedFailing, not in cohort distributionBelow 30No

How cohort distribution works in OpenEduCat: The gradebook_analytics.precompute_cohort_stats() function aggregates passing grades across a two-year window for each subject. The ECTS grading table is then computed from this distribution and published to Diploma Supplement Section 4. The low_n=True flag marks tables built on fewer than 30 passing students as statistically unreliable.

ECTS vs National Grading Scales

The ECTS scale does not replace national scales, it sits alongside them.

Two Grades on Every Record

European institutions typically award students both a national grade (on their local scale) and an ECTS grade (for mobility and recognition purposes). In France, a student might receive 14/20 (their national mark) alongside ECTS grade B (they were in the top 25% + 10% of passing students in the cohort). In Germany, a 1.5 (sehr gut) corresponds to an ECTS A.

OpenEduCat's Bologna module handles this with the evaluation_type = 'european' hook, which formats the result as "14.98/20, Bien" (national scale first), while the ECTS grading table in the Diploma Supplement provides the relative positioning. The institution_max_mark field on the course record controls the denominator (20 for French institutions, 100 for others).

Module Templates: German Modul and French Unité d'Enseignement

Different European systems group subjects into larger units: German programmes use Modulnoten (module grades) that aggregate multiple subjects into a single grade; French programmes use Unités d'Enseignement (UE) that allow a student to pass even if one subject fails, as long as the UE average meets the threshold.

OpenEduCat's advance.module.template records support both patterns. The ects_weighted flag enables ECTS-weighted averaging within a module; the allow_compensation flag enables French UE-style compensation at the module level.

The Diploma Supplement

A Bologna Process mandate for all EU institutions. Issued free of charge with every degree.

SectionTitleWhat It Contains
Section 1Holder of the QualificationStudent name, date of birth, student ID, and national identification number
Section 2Information Identifying the QualificationDegree title, field of study, institution name, country, and status of institution
Section 3Information on the Level and Duration of the ProgrammeEHEA level (e.g., first cycle), programme duration in years and ECTS credits, admission requirements
Section 4Information on the Contents and Results ObtainedOverall classification, ECTS grading table (cohort distribution for the award), mode of study, programme details

Who Can Request the Diploma Supplement

Under the Bologna Process, every EU institution must issue the Diploma Supplement to every graduate automatically, free of charge, in at least one major European language. Students, their authorised representatives, and receiving institutions can request it. Employers and foreign universities use it to understand the qualification without needing to contact the issuing institution for clarification.

OpenEduCat Diploma Supplement Generation

OpenEduCat's diploma_supplement_report.py generates the four-section PDF from published gradebook data (state=='published' filter on gradebooks). Section 4 includes the pre-computed ECTS grading table showing the cohort distribution used to assign the student's ECTS grades. The report is available via the student portal for download and can be batch-printed by the registrar for the entire graduating cohort.

How OpenEduCat Implements the Bologna Module

1

European Evaluation Hook

Setting evaluation_type='european' on a gradebook activates the _compute_final_grade_european() hook. In the Bologna module, this override formats the result using the institution's national scale (controlled by institution_max_mark on the course). The result displays as "14.98/20, Bien" or equivalent, depending on the national system.

2

ECTS-Weighted Module Grades

The advance.module.template model groups subjects into modules (Modul, UE). When ects_weighted=True, OpenEduCat uses ECTS-weighted averaging within the module: each subject's grade is weighted by its ECTS credit count. The resulting Modulnote (advance.module.grade) is recomputed whenever any subject grade changes.

3

Cohort Statistics and Grading Table

gradebook_analytics.precompute_cohort_stats() aggregates passing grades across a two-year window. The resulting distribution (what percentage of passing students fell into each grade band) is used to generate the ECTS grading table for the Diploma Supplement. A low_n flag marks tables based on fewer than 30 students.

4

PAF Group Grade Wizard

The Programme Achievement Factor (PAF) wizard allows a cohort-wide adjustment before ECTS grades are computed. A fixed multiplier or clamp can be applied to all subject grades in a subject group before the cohort distribution calculation runs. This supports French PAF moderation practices without requiring individual grade edits.

Frequently Asked Questions

Common questions about the ECTS grading system and Bologna Process.

One ECTS credit represents approximately 25 to 30 hours of total student workload, including lectures, seminars, practical work, private study, and assessment preparation. A full academic year of study is standardised at 60 ECTS credits (roughly 1,500–1,800 hours of work). A three-year bachelor's degree is therefore 180 ECTS credits.

Generate Bologna-compliant Diploma Supplements automatically

OpenEduCat's Bologna module handles ECTS credit tracking, relative grading table computation, and four-section Diploma Supplement PDF generation, all from published gradebook data.