UK degree classification
One row per module: the year it belongs to, the mark out of 100, and its credit value. The example loaded below is a two-year scheme with a 40-credit final-year dissertation.
| Year | Mark | Credits |
|---|
Weights are ratios, not percentages: 1 and 2 give the same answer as 25 and 75. A year with no marks is left out and the rest are normalised.
Year by year
Each year's credit-weighted mean, the weight it carries, and the share of the final mark that weight actually buys.
| Year | Credits | Mean | Weight | Share |
|---|
The boundaries (editable)
The minimum mark for each class. Change any number and the result above recomputes; anything below the lowest boundary falls outside the classified bands.
| Class | Minimum mark |
|---|
If a year is not marked yet
| Class | Boundary | Average needed | Verdict |
|---|
Where the arithmetic ends
This page does one thing: it computes a credit-weighted, year-weighted average and reads it against a boundary table. Real classification regulations often carry more than that — a second calculation method that runs alongside the average and takes whichever result is better, a requirement to hold a minimum volume of credit already in the higher band, discounted or condoned modules, and an exam board that can exercise discretion in a borderline zone. None of those are modelled here, because none of them are the same at two universities. Use this for the number; use your regulations for the verdict.
Questions
How is the degree mark worked out?
Each year's modules are averaged by credit value, so a 40-credit module counts as two instances of the same mark next to 20-credit ones. Those year averages are then combined under the weights you set. A year with no marks drops out entirely and the remaining weights are normalised to their own total, so an empty year never drags the result down.
Which year weighting should I use?
The one your own university publishes. The boxes take ratios, so 1 and 2 work exactly as well as 25 and 75. The default here is 0 for year one, 25 for year two and 75 for the final year, which is the Level 5 and Level 6 split Manchester Metropolitan publishes; Leeds publishes a 1:2 weighting between years two and three; and both Manchester Metropolitan and the University of the Highlands and Islands describe schemes in which only the final year counts.
What do the three borderline rules do?
Exact comparison classifies the untouched average, which is how Manchester Metropolitan states its rule: rounding is never used to determine a classification. Round to the nearest whole mark is how the University of the Highlands and Islands states its rule, giving its own example that 59.5 rounds up to 60. Promote within 0.5 of a boundary is how Leeds states its rule. On whole-number boundaries the last two select exactly the same students; on a fractional boundary they part company.
Does this apply my university's borderline discretion?
No. It computes a weighted average and reads it against the boundary table. It does not model credit-profile rules such as a mark plus a minimum number of credits already in the higher band, discounted or condoned modules, or an exam board's discretion. Those rules are real and they differ by institution - only your own programme regulations describe yours.
The table has 12 rows. What if my degree has more modules?
Enter each year on a single row: its credit-weighted average as the mark, and the year's total credits as the credits. The arithmetic is identical, because a credit-weighted mean of one row is exactly what a full set of module rows collapses to.
Why is the mark shown to three decimals?
Because a classification is decided at a boundary, and the third decimal is sometimes where the argument sits. The classification itself uses the exact value rather than the displayed one, so a repeating decimal is judged in full.
Can I share a result?
Yes. Your module rows, the three weights and the borderline rule are stored in the page URL, and the copy-link button copies it. Edits to the boundary table are not stored in the URL, so a shared link opens with the default boundaries.