Professional tool for Number Average (Mn) and Weight Average (Mw) calculations
Calculation Parameters
1
Invalid value
Invalid value
2
Invalid value
Invalid value
3
Invalid value
Invalid value
4
Invalid value
Invalid value
5
Invalid value
Invalid value
Number Average Molecular Weight (Mn)
21,111 g/mol
Formula: Σ(Ni × Mi) / ΣNi
Weight Average (Mw)
25,263 g/mol
Polydispersity (PDI)
1.20
Total Moles
45
Table 1: Input Fraction Breakdown
Fraction
Count (Ni)
Mol. Weight (Mi)
Total Weight (Ni × Mi)
Figure 1: Molecular Weight Distribution by Fraction Mass
How to Calculate Average Molecular Weight: A Comprehensive Guide
Understanding how to calculate average molecular weight is fundamental in fields ranging from polymer chemistry to biochemistry and chemical engineering. Unlike simple compounds with a single fixed molecular mass (like water, H₂O, at 18.015 g/mol), many materials—especially polymers—are mixtures of chains of varying lengths. To accurately characterize these materials, we must calculate statistical averages.
This guide explains the primary methods for determining these averages, specifically the Number Average Molecular Weight ($M_n$) and the Weight Average Molecular Weight ($M_w$), and provides practical examples to help you master the calculations.
What is Average Molecular Weight?
Average Molecular Weight represents the central tendency of the mass distribution of molecules in a sample. In synthetic polymers and many biological macromolecules, not every molecule has the same size. A sample might contain some short chains and some long chains.
Because there is a distribution of sizes, a single number cannot fully describe the sample. Instead, chemists use different statistical averages to describe properties that depend on the number of particles versus properties that depend on the size of the particles.
Key Concept: A "monodisperse" sample has molecules of all the same mass (PDI = 1). A "polydisperse" sample has a variety of chain lengths (PDI > 1), which is common in synthetic polymers like polyethylene or polystyrene.
Average Molecular Weight Formulas and Mathematical Explanation
The two most critical metrics for describing molecular weight distributions are $M_n$ and $M_w$.
1. Number Average Molecular Weight ($M_n$)
$M_n$ is the arithmetic mean of the molecular weights. It is sensitive to the number of molecules, meaning small molecules have a significant impact on this value. It correlates well with colligative properties like boiling point elevation or osmotic pressure.
Mn = Σ (Ni × Mi) / Σ Ni
2. Weight Average Molecular Weight ($M_w$)
$M_w$ is the weighted mean. It takes into account the weight fraction of each species. Larger, heavier molecules contribute more to $M_w$ than they do to $M_n$. This value correlates with properties like viscosity and toughness.
Mw = Σ (Ni × Mi²) / Σ (Ni × Mi)
3. Polydispersity Index (PDI)
The PDI measures the breadth of the molecular weight distribution.
PDI = Mw / Mn
Variable Definitions
Table 2: Variables used in Molecular Weight Calculations
Variable
Meaning
Typical Unit
Ni
Number of moles (or number of molecules) of species i
Moles (mol) or Count
Mi
Molecular weight of species i
g/mol (Daltons)
Wi
Total weight of fraction i (Ni × Mi)
grams (g)
Practical Examples (Real-World Use Cases)
Example 1: A Simple Polymer Blend
Imagine a polymer sample composed of two distinct fractions. You want to know how to calculate average molecular weight for this mixture.
Fraction A: 10 moles of polymer with mass 10,000 g/mol.
Fraction B: 10 moles of polymer with mass 20,000 g/mol.
Interpretation: $M_w$ is higher than $M_n$ because the heavier molecules weigh more heavily in the average.
How to Use This Average Molecular Weight Calculator
Our tool simplifies the complex summations required for these calculations. Follow these steps:
Identify Fractions: Break down your sample into groups based on molecular weight.
Enter Data: For each group, input the number of moles (or number of chains) in the "Count (Ni)" field and their specific mass in the "Molecular Weight (Mi)" field.
Review Results: The calculator updates in real-time.
Check $M_n$ for thermodynamic properties.
Check $M_w$ for viscosity and mechanical properties.
Check PDI to assess uniformity.
Analyze the Chart: The visual bar chart helps you see the weight distribution across your different fractions.
Key Factors That Affect Average Molecular Weight Results
When learning how to calculate average molecular weight, consider these factors that influence the final outcome:
Polymerization Method: Step-growth polymerization typically yields a PDI near 2.0, while living anionic polymerization can yield a PDI close to 1.01 (very narrow).
Purification Processes: Fractionation techniques can remove low molecular weight oligomers, artificially increasing the calculated averages.
Degradation: Exposure to heat, light, or shear stress can break long chains, lowering $M_w$ significantly more drastically than $M_n$.
Measurement Technique: Gel Permeation Chromatography (GPC) measures based on hydrodynamic volume, while osmometry measures $M_n$ directly. Calibration standards affect accuracy.
Sample Purity: Impurities or unreacted monomers act as very low molecular weight species, which can drastically lower $M_n$ while having little effect on $M_w$.
Branching: Branched polymers have different hydrodynamic volumes than linear ones of the same mass, potentially skewing experimental measurements compared to theoretical calculations.
Frequently Asked Questions (FAQ)
Why is $M_w$ always greater than or equal to $M_n$?
Mathematically, the weight average weights heavier molecules more. Unless every molecule has the exact same mass (monodisperse), the skew towards heavier items makes $M_w > M_n$. If they are equal, the PDI is 1.
What is a "good" PDI value?
It depends on the application. For calibration standards, a PDI < 1.05 is desired. For commercial plastics like polyethylene, a PDI of 2 to 5 is common to improve processability.
Can I use mass instead of moles for input?
This calculator requires the number of moles (or count) for $N_i$. If you only have mass fractions, you must divide the mass of that fraction by its molecular weight to get $N_i$ first.
Does this apply to isotopes?
Yes. The standard atomic weight on the periodic table is essentially a weight average calculation based on the abundance (Ni) and mass (Mi) of stable isotopes.
What unit should I use?
Typically, g/mol or Daltons (Da). Ensure you are consistent across all inputs. The output will be in the same unit you entered.
How does high PDI affect material properties?
A broad distribution (high PDI) often makes a polymer easier to process (melt) but might reduce its mechanical strength compared to a narrow distribution polymer of the same $M_w$.
What is Z-average molecular weight ($M_z$)?
$M_z$ is a higher-order average sensitive to very high molecular weight tails. It is calculated using the third moment of the distribution but is less commonly used than $M_n$ or $M_w$.
How do I calculate average molecular weight from a chemical formula?
For a simple molecule (e.g., Ethanol), you sum the atomic weights of all atoms. This article focuses on average weights for mixtures/polymers, not single chemical formulas.
Related Tools and Internal Resources
Explore more of our chemical and financial calculation tools:
// CORE LOGIC – NO LIBRARIES, VAR ONLY
function calculateAMW() {
var mn = 0;
var mw = 0;
var pdi = 0;
var sumNi = 0; // Sum of Number of moles
var sumNiMi = 0; // Sum of (Ni * Mi) -> Total Mass
var sumNiMi2 = 0; // Sum of (Ni * Mi^2)
var breakdownBody = document.getElementById('breakdown-table');
breakdownBody.innerHTML = "; // Clear table
var chartLabels = [];
var chartData = [];
var hasData = false;
// Loop through 5 possible inputs
for (var i = 1; i <= 5; i++) {
var molesInput = document.getElementById('moles' + i);
var massInput = document.getElementById('mass' + i);
var errMoles = document.getElementById('err-moles' + i);
var errMass = document.getElementById('err-mass' + i);
// Reset errors
errMoles.style.display = 'none';
errMass.style.display = 'none';
var molesVal = parseFloat(molesInput.value);
var massVal = parseFloat(massInput.value);
// Skip empty rows
if (isNaN(molesVal) && isNaN(massVal)) continue;
// Validate
var valid = true;
if (isNaN(molesVal) || molesVal < 0) {
errMoles.style.display = 'block';
valid = false;
}
if (isNaN(massVal) || massVal 0) {
hasData = true;
var totalWeight = molesVal * massVal;
sumNi += molesVal;
sumNiMi += totalWeight;
sumNiMi2 += (molesVal * massVal * massVal);
// Add to Table
var row = '
' +
'
Fraction ' + i + '
' +
'
' + molesVal.toLocaleString() + '
' +
'
' + massVal.toLocaleString() + ' g/mol
' +
'
' + totalWeight.toLocaleString() + ' g
' +
'
';
breakdownBody.innerHTML += row;
// Add to Chart Data
chartLabels.push('Frac ' + i);
chartData.push(totalWeight); // Plotting Mass contribution
}
}
if (hasData && sumNi > 0 && sumNiMi > 0) {
mn = sumNiMi / sumNi;
mw = sumNiMi2 / sumNiMi;
pdi = mw / mn;
// Update Results
document.getElementById('result-mn').textContent = formatNumber(mn) + " g/mol";
document.getElementById('result-mw').textContent = formatNumber(mw) + " g/mol";
document.getElementById('result-pdi').textContent = pdi.toFixed(3);
document.getElementById('result-total-moles').textContent = formatNumber(sumNi);
drawChart(chartLabels, chartData);
} else {
// Empty state
document.getElementById('result-mn').textContent = "—";
document.getElementById('result-mw').textContent = "—";
document.getElementById('result-pdi').textContent = "—";
document.getElementById('result-total-moles').textContent = "—";
clearChart();
}
}
function formatNumber(num) {
return num.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 });
}
function resetCalculator() {
document.getElementById('moles1').value = "10";
document.getElementById('mass1').value = "10000";
document.getElementById('moles2').value = "20";
document.getElementById('mass2').value = "20000";
document.getElementById('moles3').value = "15";
document.getElementById('mass3').value = "30000";
document.getElementById('moles4').value = "";
document.getElementById('mass4').value = "";
document.getElementById('moles5').value = "";
document.getElementById('mass5').value = "";
calculateAMW();
}
function copyResults() {
var mn = document.getElementById('result-mn').textContent;
var mw = document.getElementById('result-mw').textContent;
var pdi = document.getElementById('result-pdi').textContent;
var text = "Average Molecular Weight Calculation:\n" +
"Mn: " + mn + "\n" +
"Mw: " + mw + "\n" +
"PDI: " + pdi;
// Simple clipboard copy
var tempInput = document.createElement("textarea");
tempInput.value = text;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand("copy");
document.body.removeChild(tempInput);
// Feedback
var btn = document.querySelector('.btn-copy');
var originalText = btn.textContent;
btn.textContent = "Copied!";
setTimeout(function() { btn.textContent = originalText; }, 2000);
}
// CANVAS CHART IMPLEMENTATION (No External Libraries)
var canvas = document.getElementById('weightChart');
var ctx = canvas.getContext('2d');
function clearChart() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "#777";
ctx.font = "14px Arial";
ctx.textAlign = "center";
ctx.fillText("Enter data to see distribution", canvas.width/2, canvas.height/2);
}
function drawChart(labels, data) {
// Handle High DPI
var dpr = window.devicePixelRatio || 1;
var rect = canvas.getBoundingClientRect();
canvas.width = rect.width * dpr;
canvas.height = rect.height * dpr;
ctx.scale(dpr, dpr);
ctx.clearRect(0, 0, rect.width, rect.height);
if (data.length === 0) return;
var padding = 40;
var chartWidth = rect.width – (padding * 2);
var chartHeight = rect.height – (padding * 2);
var maxVal = 0;
for(var i=0; i maxVal) maxVal = data[i];
}
maxVal = maxVal * 1.1; // Add headroom
var barWidth = chartWidth / data.length;
var barSpacing = barWidth * 0.2;
var finalBarWidth = barWidth – barSpacing;
// Draw Bars
for (var i = 0; i = 1000000) return (num/1000000).toFixed(1) + 'M';
if(num >= 1000) return (num/1000).toFixed(1) + 'k';
return num.toFixed(0);
}
// Initialize
window.onload = function() {
calculateAMW();
};
// Add resize listener for chart
window.addEventListener('resize', function() {
calculateAMW();
});