Compare your household wealth against the rest of the US population.
All Ages
Under 35
35 – 44
45 – 54
55 – 64
65 or older
Your Net Worth: $0
0%
You have a higher net worth than 0% of US households.
How This Calculation Works
This calculator estimates your net worth percentile based on the most recent Survey of Consumer Finances (SCF) data from the Federal Reserve. Net worth is calculated by taking everything you own (assets) and subtracting everything you owe (liabilities).
Net Worth Formula: Net Worth = (Cash + Investments + Real Estate + Business Equity) - (Mortgages + Loans + Debt)
Net Worth Benchmarks (US Households)
Percentile
Net Worth Threshold
Top 1%
$13,700,000+
Top 5%
$3,800,000+
Top 10%
$1,900,000+
50th (Median)
$192,900
25th Percentile
$14,000
Why the Median Matters More Than the Average
In wealth statistics, the "average" (mean) net worth is often skewed significantly higher by a small number of ultra-wealthy individuals. The median (the 50th percentile) is a much more accurate representation of the "typical" household, as it marks the exact middle point where half the population has more and half has less.
Tips to Improve Your Net Worth Percentile
Automate Savings: Treat your savings like a recurring bill that must be paid every month.
Debt Reduction: Focus on high-interest debt (credit cards) first, as interest payments eat away at your net worth.
Asset Appreciation: Invest in diversified index funds or real estate that traditionally increase in value over time.
Increase Income: Scaling your primary income or adding side streams allows more capital for investment.
function calculateNetWorthPercentile() {
var assets = parseFloat(document.getElementById("totalAssets").value);
var liabilities = parseFloat(document.getElementById("totalLiabilities").value);
var age = document.getElementById("ageBracket").value;
if (isNaN(assets)) assets = 0;
if (isNaN(liabilities)) liabilities = 0;
var netWorth = assets – liabilities;
var percentile = 0;
// Data points based on Federal Reserve SCF 2022/2023 trends (All Ages)
// -10k: 10th, 14k: 25th, 192k: 50th, 500k: 70th, 1.9M: 90th, 3.8M: 95th, 13.7M: 99th
var thresholds = [
{ val: -50000, p: 5 },
{ val: -10000, p: 10 },
{ val: 0, p: 15 },
{ val: 14000, p: 25 },
{ val: 50000, p: 35 },
{ val: 100000, p: 42 },
{ val: 192900, p: 50 },
{ val: 350000, p: 63 },
{ val: 500000, p: 72 },
{ val: 800000, p: 80 },
{ val: 1200000, p: 85 },
{ val: 1920000, p: 90 },
{ val: 3800000, p: 95 },
{ val: 7500000, p: 98 },
{ val: 13700000, p: 99 },
{ val: 25000000, p: 99.5 }
];
// Adjustment factors based on age (Approximate shifts in distribution)
var ageFactor = 1.0;
if (age === "under35") ageFactor = 0.2;
else if (age === "35-44") ageFactor = 0.6;
else if (age === "45-54") ageFactor = 1.2;
else if (age === "55-64") ageFactor = 1.6;
else if (age === "65plus") ageFactor = 1.5;
// Adjust thresholds for age comparison
for (var i = 0; i < thresholds.length; i++) {
thresholds[i].adjVal = thresholds[i].val * ageFactor;
}
// Determine percentile via linear interpolation
if (netWorth = thresholds[thresholds.length – 1].adjVal) {
percentile = 99.9;
} else {
for (var j = 0; j = thresholds[j].adjVal && netWorth < thresholds[j+1].adjVal) {
var valRange = thresholds[j+1].adjVal – thresholds[j].adjVal;
var pRange = thresholds[j+1].p – thresholds[j].p;
var position = (netWorth – thresholds[j].adjVal) / valRange;
percentile = thresholds[j].p + (position * pRange);
break;
}
}
}
// Format output
var resultBox = document.getElementById("nwResultBox");
var nwValText = document.getElementById("nwValText");
var percentileResult = document.getElementById("percentileResult");
var comparisonText = document.getElementById("comparisonText");
resultBox.style.display = "block";
nwValText.innerHTML = "Your Net Worth: " + netWorth.toLocaleString('en-US', { style: 'currency', currency: 'USD' });
percentileResult.innerHTML = percentile.toFixed(1) + "th Percentile";
var ageText = (age === "all") ? "US households" : "households in your age group";
comparisonText.innerHTML = "Your wealth is higher than " + percentile.toFixed(1) + "% of " + ageText + ".";
// Smooth scroll to result
resultBox.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}