Calculate Weight 5e: Carrying Capacity & Encumbrance Calculator
:root {
–primary-color: #004a99;
–primary-hover: #003377;
–success-color: #28a745;
–warning-color: #ffc107;
–danger-color: #dc3545;
–bg-color: #f8f9fa;
–card-bg: #ffffff;
–text-color: #333333;
–border-radius: 8px;
–spacing-unit: 20px;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: var(–bg-color);
color: var(–text-color);
line-height: 1.6;
}
.container {
max-width: 960px;
margin: 0 auto;
padding: 20px;
}
/* Header Styles */
header {
text-align: center;
margin-bottom: 40px;
padding: 20px 0;
border-bottom: 1px solid #e9ecef;
}
h1 {
color: var(–primary-color);
font-size: 2.5rem;
margin-bottom: 10px;
}
h2 {
color: var(–primary-color);
margin-top: 30px;
margin-bottom: 15px;
font-size: 1.8rem;
}
h3 {
color: #444;
margin-top: 25px;
margin-bottom: 10px;
font-size: 1.4rem;
}
p {
margin-bottom: 15px;
}
/* Calculator Styles */
.loan-calc-container {
background-color: var(–card-bg);
padding: 30px;
border-radius: var(–border-radius);
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
margin-bottom: 50px;
border-top: 5px solid var(–primary-color);
}
.input-section {
margin-bottom: 30px;
}
.input-group {
margin-bottom: 20px;
}
.input-group label {
display: block;
font-weight: 600;
margin-bottom: 8px;
color: var(–text-color);
}
.input-group input[type="number"],
.input-group select {
width: 100%;
padding: 12px;
border: 1px solid #ced4da;
border-radius: 4px;
font-size: 16px;
transition: border-color 0.3s;
}
.input-group input[type="number"]:focus,
.input-group select:focus {
outline: none;
border-color: var(–primary-color);
box-shadow: 0 0 0 3px rgba(0, 74, 153, 0.1);
}
.checkbox-group {
display: flex;
align-items: center;
margin-bottom: 15px;
}
.checkbox-group input {
margin-right: 10px;
width: 18px;
height: 18px;
}
.helper-text {
font-size: 0.85rem;
color: #6c757d;
margin-top: 5px;
}
.error-msg {
color: var(–danger-color);
font-size: 0.85rem;
margin-top: 5px;
display: none;
}
.btn-group {
display: flex;
gap: 15px;
margin-top: 25px;
}
.btn {
padding: 12px 24px;
border: none;
border-radius: 4px;
cursor: pointer;
font-weight: 600;
font-size: 16px;
transition: background-color 0.2s;
}
.btn-primary {
background-color: var(–primary-color);
color: white;
}
.btn-primary:hover {
background-color: var(–primary-hover);
}
.btn-secondary {
background-color: #6c757d;
color: white;
}
.btn-secondary:hover {
background-color: #5a6268;
}
/* Results Styles */
.results-section {
background-color: #f1f8ff;
padding: 25px;
border-radius: var(–border-radius);
margin-top: 30px;
border: 1px solid #d0e1f5;
}
.primary-result {
text-align: center;
margin-bottom: 25px;
padding-bottom: 20px;
border-bottom: 1px solid #d0e1f5;
}
.primary-result .label {
font-size: 1.1rem;
color: #555;
margin-bottom: 10px;
}
.primary-result .value {
font-size: 3rem;
font-weight: 700;
color: var(–primary-color);
}
.primary-result .unit {
font-size: 1.5rem;
color: #555;
}
.status-badge {
display: inline-block;
padding: 6px 12px;
border-radius: 20px;
font-weight: bold;
font-size: 0.9rem;
margin-top: 10px;
color: white;
}
.status-ok { background-color: var(–success-color); }
.status-heavy { background-color: var(–warning-color); color: #333; }
.status-over { background-color: var(–danger-color); }
.secondary-results {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
margin-bottom: 25px;
}
.result-item {
background: white;
padding: 15px;
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
text-align: center;
}
.result-item .label {
font-size: 0.9rem;
color: #666;
margin-bottom: 5px;
}
.result-item .value {
font-size: 1.4rem;
font-weight: 700;
color: #333;
}
/* Chart & Table */
.visuals-container {
margin-top: 30px;
}
.chart-wrapper {
background: white;
padding: 20px;
border-radius: var(–border-radius);
border: 1px solid #e9ecef;
margin-bottom: 30px;
height: 350px;
position: relative;
}
canvas {
width: 100%;
height: 100%;
}
.data-table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 6px;
overflow: hidden;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
margin-bottom: 20px;
}
.data-table th, .data-table td {
padding: 12px 15px;
text-align: left;
border-bottom: 1px solid #e9ecef;
}
.data-table th {
background-color: var(–primary-color);
color: white;
font-weight: 600;
}
.data-table tr:last-child td {
border-bottom: none;
}
/* Article Styles */
.article-content {
background: white;
padding: 40px;
border-radius: var(–border-radius);
box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}
.article-section {
margin-bottom: 40px;
}
.info-box {
background-color: #e7f1ff;
border-left: 4px solid var(–primary-color);
padding: 15px;
margin: 20px 0;
border-radius: 0 4px 4px 0;
}
.links-list {
list-style: none;
}
.links-list li {
margin-bottom: 10px;
padding-left: 20px;
position: relative;
}
.links-list li::before {
content: "→";
position: absolute;
left: 0;
color: var(–primary-color);
}
.links-list a {
color: var(–primary-color);
text-decoration: none;
font-weight: 500;
}
.links-list a:hover {
text-decoration: underline;
}
footer {
text-align: center;
padding: 40px 0;
color: #6c757d;
border-top: 1px solid #e9ecef;
margin-top: 50px;
}
@media (max-width: 600px) {
.primary-result .value { font-size: 2.2rem; }
.article-content { padding: 20px; }
.chart-wrapper { height: 300px; }
}
Carrying Capacity (Max Load)
150
lbs
Unencumbered
Weight Capacity Visualization
Capacity Breakdown Table
| Category |
Limit (lbs) |
Effect |
What is Calculate Weight 5e?
In Dungeons & Dragons 5th Edition, managing inventory is a critical aspect of adventuring. The term calculate weight 5e refers to the mathematical process of determining how much equipment, treasure, and gear a character can physically carry based on their Strength ability score and size category.
While many tables simplify this to "what feels right," strict adherence to carrying capacity rules adds a layer of strategic resource management. It forces players to decide between hauling that heavy plate armor or bringing back more gold from the dragon's hoard.
Note: Most Dungeon Masters (DMs) use the standard Carrying Capacity rule (Strength × 15), but many opt for the "Variant Encumbrance" rule for a grittier, more realistic survival experience.
Calculate Weight 5e Formula and Explanation
The core mathematics behind weight calculation in 5e is straightforward but can be modified by several factors including race, magical effects, and variant rules.
Standard Formula
Under standard rules, the formula to calculate carrying capacity is:
Carrying Capacity = Strength Score × 15
Push, Drag, and Lift
Characters can push, drag, or lift weight exceeding their carrying capacity, usually up to twice their capacity:
Push/Drag Limit = Strength Score × 30
Variables Table
| Variable |
Meaning |
Typical Range |
| Strength (STR) |
The character's physical power rating |
1 to 30 (Avg 10-20) |
| Size Multiplier |
Modifier based on creature size (Tiny to Gargantuan) |
0.5x to 8x |
| Variant Thresholds |
Multipliers used for penalties (5x, 10x) |
5x (Encumbered), 10x (Heavy) |
Practical Examples of Weight Calculation
Example 1: The Human Fighter
Scenario: Valeros is a Medium Human Fighter with a Strength score of 16. He is using standard rules.
- Strength: 16
- Size: Medium (1x multiplier)
- Calculation: 16 × 15 = 240 lbs.
- Result: Valeros can carry up to 240 lbs of gear without penalty. He can push or drag up to 480 lbs.
Example 2: The Gnome Wizard (Variant Rules)
Scenario: Nim is a Small Gnome Wizard with a Strength of 8. The DM is using Variant Encumbrance.
- Strength: 8
- Calculation:
- Unencumbered (0-5x): Up to 40 lbs (8 × 5).
- Encumbered (5-10x): 41 to 80 lbs (8 × 10). Speed drops by 10 ft.
- Heavily Encumbered (10-15x): 81 to 120 lbs. Speed drops by 20 ft, disadvantage on physical checks.
- Result: If Nim carries 50 lbs of books, he is Encumbered and moves slower.
How to Use This Calculate Weight 5e Calculator
- Enter Strength Score: Input your character's base Strength score (not the modifier).
- Select Size: Choose your creature size. Most player characters are Medium or Small (which share the same multiplier). Large creatures (like Centaurs or those under Enlarge spells) carry double.
- Input Current Weight: Add up the weight of your weapons, armor, and backpack contents.
- Toggle Variant Rules: If your campaign uses the stricter Variant Encumbrance, check the box to see penalty thresholds.
- Check Powerful Build: If your race (e.g., Goliath, Firbolg) has "Powerful Build," check this box to double your capacity effectively.
Key Factors That Affect Results
Several mechanics can alter how you calculate weight 5e capacities:
- Size Category: For each size category above Medium, capacity doubles. For Tiny creatures, it is halved.
- Powerful Build: Races like Goliaths, Firbolgs, and Orcs count as one size larger for carrying capacity, effectively doubling their limit compared to other Medium creatures.
- Magical Effects: Spells like Enlarge/Reduce change your size category, dynamically altering your capacity in real-time.
- Strength Ability Checks: While capacity is static, pushing limits often requires Athletics checks. The calculated "Push/Drag" limit is the maximum allowed without a check.
- Equipment Weight: Specifically, heavy armor. In Variant Encumbrance, if you lack the Strength requirement for heavy armor, your speed is reduced regardless of total weight.
- Containers: Items like a Bag of Holding or Handy Haversack have fixed weights but hold much more, effectively bypassing carrying capacity limits.
Frequently Asked Questions (FAQ)
Does coin weight count towards carrying capacity?
Yes. By default standard rules, 50 coins weigh exactly 1 pound. 1,000 gold pieces weigh 20 lbs, which can quickly add up for low-strength characters.
How does "Powerful Build" work mathematically?
If you are Medium size but have Powerful Build, you calculate weight as if you were Large. This means you multiply your Strength by 30 (instead of 15) for carrying capacity.
What happens if I exceed my carrying capacity?
Under standard rules, your speed drops to 5 feet. Under Variant rules, you become heavily encumbered or even immobilized depending on the excess.
Do worn items count less?
No. In 5e, weight is weight. Whether it is in your backpack or worn on your body (like armor), it counts against your total limit.
How does the Enlarge/Reduce spell affect weight?
Enlarge increases your size by one category (doubling capacity). Reduce decreases size by one category (halving capacity).
What is the difference between Small and Medium creatures?
In terms of carrying capacity, there is no difference. Both use the 1x multiplier. The penalty for Small creatures usually applies to wielding "Heavy" weapons, not carrying capacity.
Can I move while pushing my max drag limit?
Yes, but your speed is reduced to 5 feet. This makes it difficult to move heavy objects quickly during combat.
Does Strength Score changes update capacity immediately?
Yes. If you drink a Potion of Hill Giant Strength (STR 21), your carrying capacity updates instantly for the duration of the effect.
Related Tools and Internal Resources
Enhance your D&D gameplay with our other dedicated tools:
// Initialize calculator on load
window.onload = function() {
calculateWeight5e();
};
function calculateWeight5e() {
// 1. Get Inputs
var strInput = document.getElementById("strengthScore");
var sizeSelect = document.getElementById("creatureSize");
var weightInput = document.getElementById("currentWeight");
var variantCheck = document.getElementById("variantEncumbrance");
var powerfulCheck = document.getElementById("powerfulBuild");
var str = parseFloat(strInput.value);
var sizeMult = parseFloat(sizeSelect.value);
var currentWeight = parseFloat(weightInput.value);
var isVariant = variantCheck.checked;
var isPowerful = powerfulCheck.checked;
// Validation
if (isNaN(str) || str < 1) {
document.getElementById("strengthError").style.display = "block";
return; // Stop calculation
} else {
document.getElementById("strengthError").style.display = "none";
}
if (isNaN(currentWeight) || currentWeight Small is x2. Small/Med -> Large is x2. Large -> Huge is x2.
effectiveMult = sizeMult * 2;
}
// 3. Calculate Core Limits
var capacity = str * 15 * effectiveMult;
var pushDrag = str * 30 * effectiveMult;
// Variant Limits
var encumberedLimit = str * 5 * effectiveMult;
var heavyLimit = str * 10 * effectiveMult;
// 4. Update UI Text
document.getElementById("resultCapacity").innerText = Math.floor(capacity);
document.getElementById("resultPushDrag").innerText = Math.floor(pushDrag) + " lbs";
var encStatus = document.getElementById("encumbranceStatus");
var tableBody = document.getElementById("capacityTableBody");
var statusText = "Unencumbered";
var statusClass = "status-ok";
if (isVariant) {
document.getElementById("resultEncumbered").innerText = Math.floor(encumberedLimit) + " lbs";
document.getElementById("resultHeavy").innerText = Math.floor(heavyLimit) + " lbs";
if (currentWeight > capacity) {
statusText = "Immobile (Over Max)";
statusClass = "status-over";
} else if (currentWeight > heavyLimit) {
statusText = "Heavily Encumbered (-20 ft speed, Disadv.)";
statusClass = "status-over";
} else if (currentWeight > encumberedLimit) {
statusText = "Encumbered (-10 ft speed)";
statusClass = "status-heavy";
} else {
statusText = "Unencumbered";
statusClass = "status-ok";
}
} else {
document.getElementById("resultEncumbered").innerText = "N/A (Standard)";
document.getElementById("resultHeavy").innerText = "N/A (Standard)";
if (currentWeight > capacity) {
statusText = "Over Capacity (Speed 5ft)";
statusClass = "status-over";
} else {
statusText = "Unencumbered";
statusClass = "status-ok";
}
}
encStatus.innerText = statusText;
encStatus.className = "status-badge " + statusClass;
// 5. Update Table
var tableHTML = "";
if (isVariant) {
tableHTML += "
| Unencumbered | 0 – " + Math.floor(encumberedLimit) + " | Normal Speed |
";
tableHTML += "
| Encumbered | " + (Math.floor(encumberedLimit) + 1) + " – " + Math.floor(heavyLimit) + " | -10 ft. Speed |
";
tableHTML += "
| Heavily Encumbered | " + (Math.floor(heavyLimit) + 1) + " – " + Math.floor(capacity) + " | -20 ft. Speed, Disadv. on STR/DEX/CON |
";
tableHTML += "
| Push/Drag | " + (Math.floor(capacity) + 1) + " – " + Math.floor(pushDrag) + " | Speed 5 ft. |
";
} else {
tableHTML += "
| Carrying Capacity | 0 – " + Math.floor(capacity) + " | Normal Speed |
";
tableHTML += "
| Push/Drag/Lift | " + (Math.floor(capacity) + 1) + " – " + Math.floor(pushDrag) + " | Speed 5 ft. |
";
}
tableBody.innerHTML = tableHTML;
// 6. Draw Chart
drawChart(currentWeight, capacity, pushDrag, isVariant ? encumberedLimit : null, isVariant ? heavyLimit : null);
}
function drawChart(current, max, push, encLimit, heavyLimit) {
var canvas = document.getElementById("weightChart");
var ctx = canvas.getContext("2d");
// Reset canvas (handle DPI for crisp text if needed, but keeping simple for single file)
// Responsive sizing
var rect = canvas.parentNode.getBoundingClientRect();
canvas.width = rect.width;
canvas.height = rect.height;
var width = canvas.width;
var height = canvas.height;
var padding = 40;
var graphHeight = height – (padding * 2);
var graphWidth = width – (padding * 2);
// Clear
ctx.clearRect(0, 0, width, height);
// Determine Scale
var maxValue = Math.max(current, push) * 1.1; // Add 10% headroom
if (maxValue === 0) maxValue = 100;
// Helper to map value to Y position (inverted)
function getY(val) {
return height – padding – ((val / maxValue) * graphHeight);
}
// Draw Axes
ctx.beginPath();
ctx.strokeStyle = "#ccc";
ctx.lineWidth = 1;
ctx.moveTo(padding, padding);
ctx.lineTo(padding, height – padding); // Y axis
ctx.lineTo(width – padding, height – padding); // X axis
ctx.stroke();
// Draw Bars
var barWidth = (graphWidth / 4) – 20;
if(barWidth > 100) barWidth = 100;
// Bar 1: Current Weight
var x1 = padding + 20;
var h1 = (current / maxValue) * graphHeight;
var y1 = height – padding – h1;
ctx.fillStyle = current > max ? "#dc3545" : "#004a99";
ctx.fillRect(x1, y1, barWidth, h1);
// Label Bar 1
ctx.fillStyle = "#333";
ctx.font = "14px Arial";
ctx.textAlign = "center";
ctx.fillText("Current", x1 + barWidth/2, height – padding + 20);
ctx.fillText(Math.round(current), x1 + barWidth/2, y1 – 5);
// Lines for Thresholds
// Max Capacity Line
var yCap = getY(max);
drawThresholdLine(ctx, padding, width-padding, yCap, "#28a745", "Max Cap: " + Math.round(max));
// Push Drag Line
var yPush = getY(push);
drawThresholdLine(ctx, padding, width-padding, yPush, "#6c757d", "Push/Drag: " + Math.round(push));
if (encLimit) {
var yEnc = getY(encLimit);
drawThresholdLine(ctx, padding, width-padding, yEnc, "#ffc107", "Enc: " + Math.round(encLimit));
}
if (heavyLimit) {
var yHeavy = getY(heavyLimit);
drawThresholdLine(ctx, padding, width-padding, yHeavy, "#fd7e14", "Heavy: " + Math.round(heavyLimit));
}
}
function drawThresholdLine(ctx, x1, x2, y, color, text) {
ctx.beginPath();
ctx.strokeStyle = color;
ctx.setLineDash([5, 5]);
ctx.lineWidth = 2;
ctx.moveTo(x1, y);
ctx.lineTo(x2, y);
ctx.stroke();
ctx.setLineDash([]);
ctx.fillStyle = color;
ctx.textAlign = "right";
ctx.fillText(text, x2, y – 5);
}
function copyResults() {
var capacity = document.getElementById("resultCapacity").innerText;
var push = document.getElementById("resultPushDrag").innerText;
var status = document.getElementById("encumbranceStatus").innerText;
var str = document.getElementById("strengthScore").value;
var current = document.getElementById("currentWeight").value;
var text = "D&D 5e Weight Calculation:\n" +
"Strength Score: " + str + "\n" +
"Current Weight: " + current + " lbs\n" +
"Carrying Capacity: " + capacity + " lbs\n" +
"Push/Drag Limit: " + push + "\n" +
"Status: " + status;
var textArea = document.createElement("textarea");
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
document.execCommand("Copy");
textArea.remove();
alert("Results copied to clipboard!");
}
function resetCalculator() {
document.getElementById("strengthScore").value = 10;
document.getElementById("creatureSize").value = "1";
document.getElementById("currentWeight").value = 0;
document.getElementById("variantEncumbrance").checked = false;
document.getElementById("powerfulBuild").checked = false;
calculateWeight5e();
}