D&D 5e Monster HP & Stats Calculator
ANA›Life Services Authority›National Calculator Authority›D&D 5e Monster HP & Stats Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
D&D 5e Monster HP & Stats Calculator
Calculate average HP, proficiency bonus, attack bonus, spell save DC, and other key stats for D&D 5e monsters based on Hit Dice, Constitution modifier, and Challenge Rating.
Number of Hit Dice
Hit Die Size
d4 (Tiny) d6 (Small) d8 (Medium) d10 (Large) d12 (Huge) d20 (Gargantuan)
Constitution Score
Challenge Rating (CR)
0 1/8 1/4 1/2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Primary Attack Ability Score
Spellcasting Ability Score (optional)
Calculate Results will appear here.
function dDCalc() { var hitDiceCount = parseInt(document.getElementById('d-d-hit-dice-count').value); var hitDieSize = parseInt(document.getElementById('d-d-hit-die-size').value); var conScore = parseInt(document.getElementById('d-d-con-score').value); var cr = parseFloat(document.getElementById('d-d-cr').value); var primaryAbility = parseInt(document.getElementById('d-d-primary-ability').value); var spellAbility = parseInt(document.getElementById('d-d-spellcasting-ability').value);
// Input validation if (isNaN(hitDiceCount) || hitDiceCount 500) { document.getElementById('d-d-result').innerHTML = 'Please enter a valid number of Hit Dice (1–500).'; return; } if (isNaN(conScore) || conScore 30) { document.getElementById('d-d-result').innerHTML = 'Constitution Score must be between 1 and 30.'; return; } if (isNaN(primaryAbility) || primaryAbility 30) { document.getElementById('d-d-result').innerHTML = 'Primary Ability Score must be between 1 and 30.'; return; } if (isNaN(spellAbility) || spellAbility 30) { document.getElementById('d-d-result').innerHTML = 'Spellcasting Ability Score must be between 0 and 30 (0 = none).'; return; }
// Ability modifier formula: floor((score - 10) / 2) function abilityMod(score) { return Math.floor((score - 10) / 2); }
// Proficiency bonus by CR (DMG p. 274) function profBonus(cr) { if (cr = 1; if (hasSpells) { spellMod = abilityMod(spellAbility); spellDC = 8 + prof + spellMod; spellAttackBonus = prof + spellMod; }
// Passive Perception (assumes WIS = CON for simplicity; user can note this) // XP by CR (DMG p. 275) var crXPTable = { 0: 10, 0.125: 25, 0.25: 50, 0.5: 100, 1: 200, 2: 450, 3: 700, 4: 1100, 5: 1800, 6: 2300, 7: 2900, 8: 3900, 9: 5000, 10: 5900, 11: 7200, 12: 8400, 13: 10000, 14: 11500, 15: 13000, 16: 15000, 17: 18000, 18: 20000, 19: 22000, 20: 25000, 21: 33000, 22: 41000, 23: 50000, 24: 62000, 25: 75000, 26: 90000, 27: 105000, 28: 120000, 29: 135000, 30: 155000 }; var xp = crXPTable[cr] !== undefined ? crXPTable[cr].toLocaleString() : 'N/A';
// CR display label var crLabels = {0.125: '1/8', 0.25: '1/4', 0.5: '1/2'}; var crDisplay = crLabels[cr] !== undefined ? crLabels[cr] : cr.toString();
// Format modifier with sign function signedMod(m) { return (m >= 0 ? '+' : '') + m; }
var spellRows = ''; if (hasSpells) { spellRows = 'Spell Save DC' + spellDC + '' + 'Spell Attack Bonus' + signedMod(spellAttackBonus) + '' + 'Spellcasting Ability Modifier' + signedMod(spellMod) + ''; }
var html = '### Monster Stats Summary ' + '' + 'StatValue' + 'Average HP' + avgHP + ' (' + hitDiceCount + 'd' + hitDieSize + (conMod !== 0 ? (conMod > 0 ? ' + ' : ' − ') + Math.abs(hitDiceCount * conMod) : '') + ')' + 'HP Range' + minHP + ' (min) – ' + maxHP + ' (max)' + 'Hit Die Sized' + hitDieSize + '' + 'Constitution Score / Modifier' + conScore + ' / ' + signedMod(conMod) + '' + 'Challenge Rating' + crDisplay + '' + 'Proficiency Bonus' + signedMod(prof) + '' + 'XP Award' + xp + ' XP' + 'Primary Ability Score / Modifier' + primaryAbility + ' / ' + signedMod(primaryMod) + '' + 'Attack Bonus' + signedMod(attackBonus) + '' + spellRows + '';
document.getElementById('d-d-result').innerHTML = html; }
#### Formulas Used
Ability Modifier: ⌊(Ability Score − 10) ÷ 2⌋
Average HP: (Number of Hit Dice × Average Die Value) + (Number of Hit Dice × CON Modifier) where Average Die Value = (Die Size + 1) ÷ 2 e.g., 5d8 + CON: average d8 = 4.5, so 5 × 4.5 + 5 × CON modifier
HP Range: Min = (Dice Count × 1) + (Dice Count × CON Mod) | Max = (Dice Count × Die Size) + (Dice Count × CON Mod)
Proficiency Bonus by CR: CR 0–4 = +2 | CR 5–8 = +3 | CR 9–12 = +4 | CR 13–16 = +5 | CR 17–20 = +6 | CR 21–24 = +7 | CR 25–28 = +8 | CR 29–30 = +9
Attack Bonus: Proficiency Bonus + Primary Ability Modifier
Spell Save DC: 8 + Proficiency Bonus + Spellcasting Ability Modifier
Spell Attack Bonus: Proficiency Bonus + Spellcasting Ability Modifier
#### Assumptions & References
- All formulas follow the D&D 5e System Reference Document (SRD) and Dungeon Master’s Guide (DMG), pp. 274–275.
More Calculators
- Mediation Session Cost Calculator
- Richter Scale Energy Calculator
- Cannabis Tax & Compliance Cost Calculator
- Hydro Jetting Pressure & Flow Rate Calculator
- Yahtzee Probability Calculator
- Watershed Runoff Calculator
- Drain Flow Rate & Blockage Severity Calculator
- Pain and Suffering Damages Estimator
- Settlement Value Estimator
- Lost Wages Calculator
- Legal Aid Eligibility Calculator
- Pro Bono Hours Qualifier Calculator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...