Calculate magnetic flux density and theoretical pull force for disc/cylinder magnets.
N35 (11.7 – 12.1 kG)
N38 (12.1 – 12.5 kG)
N40 (12.6 – 12.9 kG)
N42 (13.2 – 13.7 kG)
N45 (13.8 – 14.2 kG)
N48 (14.2 – 14.7 kG)
N50 (14.5 – 15.0 kG)
N52 (14.8 – 15.2 kG)
Flux Density at Distance (Gauss):0
Pull Force (Kilograms):0
Pull Force (Pounds):0
How Magnet Pull Force is Calculated
This calculator determines the Pull Force Case 1: The maximum pull-off force of a single magnet against a flat, thick, ground steel plate. The calculation utilizes the physical dimensions and the remanence (Br) of the Neodymium material.
The magnetic field (Gauss) at a specific distance from the surface of a disc magnet is calculated using the following formula:
B = (Br/2) * [ (T+D) / sqrt(R² + (T+D)²) – D / sqrt(R² + D²) ]
Br: Residual Induction (Magnet Grade)
T: Thickness (Magnetic Length)
R: Radius of the disc
D: Distance from the surface (Air Gap)
Understanding Pull Force vs. Shear Force
It is important to distinguish between Pull Force and Shear Force (Sliding Force). Pull force is the strength required to pull the magnet directly away from a steel surface. In contrast, the sliding force required to move a magnet across a surface is typically only 15% to 25% of the direct pull force, depending on the friction coefficient of the surfaces.
Example Calculation
If you have an N52 Grade disc magnet with a 20mm Diameter and 10mm Thickness:
Surface Field: Approximately 4,900 Gauss.
Pull Force: Roughly 9.5 kg (21 lbs) when in direct contact with a steel plate.
At 5mm Distance: The field drops to ~1,600 Gauss and pull force decreases exponentially.
Factors Affecting Real-World Results
Steel Thickness: If the steel plate is too thin, it becomes saturated and cannot carry the full magnetic flux, reducing pull force.
Surface Finish: Rough surfaces create tiny air gaps, which significantly degrade magnetic performance.
Temperature: Neodymium magnets lose approximately 0.11% of their strength for every degree Celsius above room temperature.
Material: This calculator assumes low-carbon steel (e.g., 1018). Stainless steel or cast iron will result in much lower values.
function calculateMagnetics() {
var br = parseFloat(document.getElementById('magnetGrade').value);
var diameter = parseFloat(document.getElementById('magnetDiameter').value);
var thickness = parseFloat(document.getElementById('magnetThickness').value);
var distance = parseFloat(document.getElementById('magnetDistance').value);
if (isNaN(diameter) || isNaN(thickness) || isNaN(distance) || diameter <= 0 || thickness <= 0) {
alert("Please enter valid positive dimensions.");
return;
}
var radius = diameter / 2;
// Calculate Gauss at distance (B)
// Formula: (Br/2) * [ (L+X)/sqrt(R^2 + (L+X)^2) – X/sqrt(R^2 + X^2) ]
var part1 = (thickness + distance) / Math.sqrt(Math.pow(radius, 2) + Math.pow((thickness + distance), 2));
var part2 = (distance === 0) ? 0 : (distance / Math.sqrt(Math.pow(radius, 2) + Math.pow(distance, 2)));
var gaussAtDistance = (br / 2) * (part1 – part2);
// Theoretical Pull Force Calculation
// Formula used by industry for Case 1 (Contact): F = 0.5 * B^2 * A / mu0
// Simplified empirical version for web estimation:
var areaCm2 = Math.PI * Math.pow((radius / 10), 2); // Area in cm^2
// Effective field for force calculation (Surface field is used for contact force)
var surfaceFieldGauss = (br / 2) * (thickness / Math.sqrt(Math.pow(radius, 2) + Math.pow(thickness, 2)));
// Theoretical Pull Force in kg (Empirical adjustment for N-grade magnets)
// Pull force drops with the square of the distance related to flux density
var pullKg = (Math.pow(gaussAtDistance, 2) * areaCm2) / 1730000;
// Safety check for distance 0 vs theoretical max
if(distance === 0) {
// Direct contact formula adjustment for realism
pullKg = (Math.pow(surfaceFieldGauss, 2) * areaCm2) / 1500000;
}
var pullLbs = pullKg * 2.20462;
// Display Results
document.getElementById('magnetResult').style.display = 'block';
document.getElementById('resGauss').innerText = Math.round(gaussAtDistance).toLocaleString();
document.getElementById('resKg').innerText = pullKg.toFixed(2);
document.getElementById('resLbs').innerText = pullLbs.toFixed(2);
}