mpy (mils per year)
mm/y (millimeters per year)
µm/y (micrometers per year)
ipm (inches per month)
mdd (mg/dm²/day)
g/m²/day (grams/m²/day)
Required for conversions between mass loss (mdd, g/m²/d) and penetration depth (mpy, mm/y). Default is Carbon Steel (7.85).
mm/y (millimeters per year)
mpy (mils per year)
µm/y (micrometers per year)
ipm (inches per month)
mdd (mg/dm²/day)
g/m²/day (grams/m²/day)
–
Conversion Result
Equivalent Rates:
Mils per year:–
Millimeters per year:–
Micrometers per year:–
Mass Loss (mdd):–
Understanding Corrosion Rate Units
Corrosion rate is a fundamental metric in material science and engineering, representing the speed at which a material deteriorates in a specific environment. Accurate conversion between units is critical for comparing data from different standards (e.g., ASTM vs. NACE) or geographical regions.
Common Units Defined
There are two primary ways to express corrosion: Penetration Rate (thickness loss over time) and Mass Loss Rate (weight loss per area over time).
mpy (Mils per Year): The standard unit in the United States oil and gas industry. One "mil" equals one-thousandth of an inch (0.001″).
mm/y (Millimeters per Year): The standard metric unit for penetration rate, commonly used in Europe and ISO standards.
µm/y (Micrometers per Year): Used for materials with very low corrosion rates, such as passive alloys.
mdd (Milligrams per square decimeter per day): A mass loss unit. To convert this to a penetration rate, the density of the material is required.
Conversion Formulas
Converting between penetration rates involves simple length/time factors. However, converting between mass loss and penetration requires the material density ($D$) in g/cm³.
To Convert From
To
Multiply By
mpy
mm/y
0.0254
mm/y
mpy
39.37
mm/y
µm/y
1,000
mdd
mm/y
(0.0365 / Density)
mdd
mpy
(1.44 / Density)
Why Density Matters
The "Mass Loss" method is often how corrosion is measured in a lab (weighing a coupon before and after exposure). To understand how much the wall of a pipe has thinned (Penetration), you must divide the weight lost by the density of the metal. For example, Aluminum (density ~2.7 g/cm³) will suffer much deeper penetration than Lead (density ~11.3 g/cm³) for the exact same weight lost.
Corrosion Rate Categories (Carbon Steel)
While acceptable rates vary by industry and application, general guidelines for Carbon Steel are:
Low: < 1 mpy (0.025 mm/y)
Moderate: 1 – 5 mpy (0.025 – 0.13 mm/y)
High: 5 – 10 mpy (0.13 – 0.25 mm/y)
Severe: > 10 mpy (> 0.25 mm/y)
function calculateCorrosion() {
// 1. Get Inputs
var val = parseFloat(document.getElementById('corrosionValue').value);
var from = document.getElementById('fromUnit').value;
var to = document.getElementById('toUnit').value;
var density = parseFloat(document.getElementById('materialDensity').value);
// 2. Validation
if (isNaN(val)) {
alert("Please enter a valid numeric Corrosion Rate Value.");
return;
}
// Check density if mass units are involved
var massUnits = ['mdd', 'g_m2_d'];
if ((massUnits.indexOf(from) !== -1 || massUnits.indexOf(to) !== -1) && (isNaN(density) || density 0) to convert between mass loss and penetration depth.");
return;
}
// 3. Normalize everything to a base unit: mm/y (Millimeters per Year)
var base_mmy = 0;
// Constants
var MPY_TO_MMY = 0.0254;
var UMY_TO_MMY = 0.001;
var IPM_TO_MMY = 304.8; // 25.4 * 12
// Convert FROM input TO base (mm/y)
switch (from) {
case 'mpy':
base_mmy = val * MPY_TO_MMY;
break;
case 'mm_y':
base_mmy = val;
break;
case 'um_y':
base_mmy = val * UMY_TO_MMY;
break;
case 'ipm':
base_mmy = val * IPM_TO_MMY;
break;
case 'mdd':
// Formula: mm/y = (mdd * 0.0365) / density
base_mmy = (val * 0.0365) / density;
break;
case 'g_m2_d':
// 1 g/m2 = 10 mg/dm2 (mdd). So g_m2_d * 10 = mdd.
// mm/y = (g_m2_d * 10 * 0.0365) / density = (val * 0.365) / density
base_mmy = (val * 0.365) / density;
break;
}
// 4. Calculate Target Result from base (mm/y)
var result = 0;
var unitLabel = "";
switch (to) {
case 'mpy':
result = base_mmy / MPY_TO_MMY;
unitLabel = "mpy";
break;
case 'mm_y':
result = base_mmy;
unitLabel = "mm/y";
break;
case 'um_y':
result = base_mmy / UMY_TO_MMY;
unitLabel = "µm/y";
break;
case 'ipm':
result = base_mmy / IPM_TO_MMY;
unitLabel = "ipm";
break;
case 'mdd':
// mdd = (mm/y * density) / 0.0365
result = (base_mmy * density) / 0.0365;
unitLabel = "mdd";
break;
case 'g_m2_d':
// g_m2_d = (mm/y * density) / 0.365
result = (base_mmy * density) / 0.365;
unitLabel = "g/m²/day";
break;
}
// 5. Calculate Reference Values for display
var ref_mpy = base_mmy / MPY_TO_MMY;
var ref_um_y = base_mmy / UMY_TO_MMY;
var ref_mdd = (base_mmy * density) / 0.0365;
// 6. Output Results
document.getElementById('resultBox').style.display = 'block';
// Formatting function for cleaner numbers
function formatNum(n) {
if (n === 0) return "0";
if (n 10000) return n.toExponential(4);
return n.toLocaleString(undefined, { maximumFractionDigits: 5 });
}
document.getElementById('mainResult').innerText = formatNum(result) + " " + unitLabel;
document.getElementById('res_mpy').innerText = formatNum(ref_mpy) + " mpy";
document.getElementById('res_mm_y').innerText = formatNum(base_mmy) + " mm/y";
document.getElementById('res_um_y').innerText = formatNum(ref_um_y) + " µm/y";
document.getElementById('res_mdd').innerText = formatNum(ref_mdd) + " mdd";
}