Weighted Average · Drop Lowest · Curve · Extra Credit
Weighted Grade Calculator
Calculate your true weighted grade by adding each assignment, quiz, midterm and final with its own weight. Fully usable on mobile. Pro Mode adds drop lowest, grade curve, extra credit, category grouping, what-if analysis and PDF report.
All calculations happen in your browser, your grades never leave your device
● Pro Version is Free for now
✓ Drop Lowest · Curve · Extra Credit ·
Categories · What-If · PDF Report
Categories · What-If · PDF Report
Day
Night
Weighted Grade Summary
—
Weighted Avg
—
Grade
—
GPA
—
Status
How this is calculated
Weighted Average = Σ (Score % × Weight) ÷ Σ Weight
⚙️ Settings
%
% (usually 100)
📝 Assignments & Grades
Name
Score
Max
Weight %
Grade
Weight used: 0%
✓ Weights correct
Export your weighted grade report
📖 Grading Scale Reference
🎛️ Advanced Adjustments PRO
🗂️ Categories PRO
📊 Grade Distribution PRO
🎯 Target Score Calculator PRO
What do I need to score?
—
Score needed on remaining work
Enter the remaining weight and your target to see what you need
🔮 What-If Grade Simulator PRO
Drag sliders to see how changing each score affects your weighted average.
Simulated weighted average
—
📈 Assignment Impact Analysis PRO
How much each assignment contributes to your final grade.
📖 Quick Reference
1Weighted average each assignment's score counts based on its weight, not equally.
2Weights should sum to 100 check the weight bar below the table before trusting the result.
3Drop lowest removes your worst scoring assignment before the average is calculated.
4Curve vs extra credit a curve adds points to every assignment, extra credit adds a separate flat bonus.
💡 Weighted Grade Tips PRO
${t}
`).join('');
}// ── UTILS ─────────────────────────────────────────────────────
function escHtml(s){return String(s||'').replace(/&/g,'&').replace(//g,'>');}
function escAttr(s){return String(s||'').replace(/"/g,'"').replace(/'/g,''');}
function toast(msg){const t=document.getElementById('toast');t.textContent=msg;t.classList.add('show');setTimeout(()=>t.classList.remove('show'),2800);}// ── INIT ──────────────────────────────────────────────────────
recalc();
try{const m=localStorage.getItem('sst_wgc_mode');if(m==='pro')setMode('pro');}catch(e){}