Lace / Fingering (Thin)
Sport Weight
DK (Double Knit)
Worsted / Aran (Medium)
Bulky / Chunky
Super Bulky
Estimated Yardage: 0 yards
Skeins Required: 0
*Estimates are based on standard stockinette or basic crochet stitches. Complex textures like cables or bobbles will require more yarn.
How to Calculate Yarn for Your Next Project
Running out of yarn mid-project (often called "yarn chicken") is a knitter's worst nightmare. Whether you are designing your own pattern or modifying an existing one, knowing how to estimate your yardage is a crucial skill. This yarn calculator uses the surface area method to provide a reliable estimate based on your desired dimensions and the thickness of the yarn.
Factors That Affect Yarn Usage
Stitch Pattern: Simple stockinette or garter stitch uses less yarn than intricate cables, brioche, or bobbles. If you are doing a "yarn eater" stitch, add an extra 25-30% to your results.
Gauge: If you knit loosely, you will consume more yardage per square inch than a tight knitter.
Fibre Content: Elastic fibres like wool behave differently than inelastic fibres like cotton or silk.
Standard Estimates for Common Projects
If you don't have specific dimensions in mind, here are some general yardage ranges for medium (Worsted) weight yarn:
Scarf: 350 – 450 yards
Adult Sweater: 1,000 – 1,500 yards
Baby Blanket: 700 – 1,000 yards
Beanie Hat: 150 – 200 yards
The Formula Behind the Calculator
The calculator works by determining the total surface area (Width × Length) and applying a multiplier based on the yarn weight category. Thinner yarns (Lace/Fingering) require more yardage to cover the same area compared to thicker yarns (Bulky). Finally, we include a 10% safety buffer to account for swatching and ends for weaving.
function calculateYarn() {
var weightMultiplier = parseFloat(document.getElementById("yarnWeight").value);
var width = parseFloat(document.getElementById("projWidth").value);
var length = parseFloat(document.getElementById("projLength").value);
var yardsPerSkein = parseFloat(document.getElementById("yardsPerSkein").value);
var bufferPercent = parseFloat(document.getElementById("buffer").value);
if (isNaN(width) || isNaN(length) || width <= 0 || length 0) {
skeinsNeeded = Math.ceil(totalYardage / yardsPerSkein);
}
// Display results
document.getElementById("resTotalYards").innerText = Math.round(totalYardage).toLocaleString();
if (skeinsNeeded > 0) {
document.getElementById("resSkeins").innerText = skeinsNeeded;
} else {
document.getElementById("resSkeins").innerText = "N/A (Enter yards per skein)";
}
document.getElementById("yarn-results").style.display = "block";
}