About GradeSpec

GradeSpec is built to help students manage their academic performance with precision and peace of mind.

Calculation Methodology

GradeSpec calculates your GPA using the grading scale specific to your university. Each university has its own percentage-to-GPA conversion table and credit system — you select your university in Settings, and all calculations automatically use the correct scale.

The formula for Cumulative GPA is the same across all universities:

GPA = Σ (Course GPA × Credits) / Σ Total Credits

Courses with higher credit values have a proportionally larger impact on your overall GPA. Supported universities include Western University, UBC, McMaster, Queen's, the University of Toronto, and the University of Waterloo.

Select university

McMaster University — GPA scale

The following scale applies to McMaster University students. Other universities use different scales — select one above or set your university in Settings.

Percentage RangeGPA ValueLetter Grade
90% - 100%12.0A+
85% - 89%11.0A
80% - 84%10.0A-
77% - 79%9.0B+
73% - 76%8.0B
70% - 72%7.0B-
67% - 69%6.0C+
63% - 66%5.0C
60% - 62%4.0C-
57% - 59%3.0D+
53% - 56%2.0D
50% - 52%1.0D-
Below 50%0.0F

12-point to 4.0 scale conversion

McMaster uses a 12-point GPA scale. The table below shows the equivalent values on a 4.0 GPA scale for each 12-point GPA.

12-point4.0 scale
124.00
113.90
103.70
93.30
83.00
72.70
62.30
52.00
41.70
31.30
21.00
10.70
00.00

How We Keep Your Grades Private

Your grades and course names are sensitive. GradeSpec uses end-to-end encryption so that this data is encrypted on your device before it is sent to our servers. Only a key derived from your PIN can decrypt it — and that key is never stored or transmitted; it exists only in your browser for the duration of your session.

Key Concepts

  • Encryption — Converting readable data (e.g. course names, grades) into ciphertext that only the correct key can decrypt.
  • Key — The secret value used to encrypt and decrypt your data. It is derived from your PIN and never persisted; we derive it in the browser each time you unlock.
  • Salt — A random value unique to your account, stored in our database. It is not secret; it ensures that even with the same PIN, another user would not obtain your key.

Technical Implementation

For readers familiar with cryptographic standards: we use PBKDF2 with 100,000 iterations and SHA-256 to derive a 256-bit key from your PIN and salt, and AES-256-GCM for authenticated encryption. A unique IV (initialization vector) is generated per encryption. All operations run client-side via the Web Crypto API; the server never has access to your key or plaintext.

Initial Setup

When you enable encryption, you choose a 6-digit PIN. The app generates a random salt and uses it together with your PIN to derive your encryption key. That key is then used to encrypt a verification phrase, which we store so we can confirm your PIN on later logins. We store only the salt and the encrypted verification value — never your PIN or the key. The key is kept in browser memory only while you are using the app.

Unlocking

When you return and enter your PIN, we derive the same key from your PIN and the stored salt, then attempt to decrypt the verification phrase. If decryption succeeds, the PIN is correct and we retain the key in memory for the session. If it fails, we do not unlock; no key is stored.

Encrypted Fields

We encrypt the fields that directly identify your courses and performance. Structural and non-sensitive metadata remain in plaintext so the app can sort, filter, and compute GPA without decrypting every field.

EncryptedPlaintext (metadata)
  • Course names (e.g., CS 101)
  • Final grades (e.g., 85%)
  • Component names (e.g., Midterm)
  • Component scores (e.g., 18.5/20)
  • Term names (e.g., Fall 2024)
  • Credits (0.5 vs 1.0)
  • Weights (e.g., 20%)
  • IDs and timestamps

On save, sensitive fields are encrypted in your browser and only the ciphertext is sent to our servers. On load, we fetch the encrypted data and decrypt it locally with your key. Our servers never receive or store your plaintext course names or grades.

Important: Your PIN is the only means to derive the decryption key. If you forget your PIN, we cannot recover your encrypted course names and grades. Choose a PIN you will remember.

© 2026 GradeSpec by Andy Liu.