Measure customer loyalty and business growth potential
Your Net Promoter Score is:
Total Responses
% Promoters
% Detractors
Understanding Net Promoter Score (NPS)
The Net Promoter Score (NPS) is a gold-standard customer experience metric used by millions of businesses worldwide. It measures the loyalty of customers to a company by asking one simple question: "On a scale of 0 to 10, how likely are you to recommend our product/service to a friend or colleague?"
The Three Categories of Respondents
Promoters (Score 9-10): These are your most loyal and enthusiastic customers. They will keep buying from you and refer others, fueling growth.
Passives (Score 7-8): These customers are satisfied but unenthusiastic. They are vulnerable to competitive offerings and do not factor into the final NPS score calculation except by increasing the total respondent count.
Detractors (Score 0-6): These are unhappy customers who can damage your brand and impede growth through negative word-of-mouth.
The NPS Calculation Formula
NPS = (% of Promoters) – (% of Detractors)
The resulting score is an integer ranging from -100 to +100. A positive score (above 0) is considered good, while scores above 50 are excellent, and above 70 are world-class.
Practical Example
Imagine you surveyed 100 customers:
70 gave you a 9 or 10 (Promoters)
20 gave you a 7 or 8 (Passives)
10 gave you a 0 to 6 (Detractors)
To calculate the score: 70% (Promoters) – 10% (Detractors) = 60 NPS.
function calculateNPS() {
var pInput = document.getElementById('promoters');
var sInput = document.getElementById('passives');
var dInput = document.getElementById('detractors');
var promoters = parseInt(pInput.value) || 0;
var passives = parseInt(sInput.value) || 0;
var detractors = parseInt(dInput.value) || 0;
var total = promoters + passives + detractors;
if (total === 0) {
alert('Please enter the number of respondents for at least one category.');
return;
}
var pPerc = (promoters / total) * 100;
var dPerc = (detractors / total) * 100;
var npsScore = Math.round(pPerc – dPerc);
var resultBox = document.getElementById('nps-result-box');
var scoreValue = document.getElementById('nps-score-value');
var categoryText = document.getElementById('nps-category');
var totalField = document.getElementById('total-responses');
var pField = document.getElementById('perc-promoters');
var dField = document.getElementById('perc-detractors');
resultBox.style.display = 'block';
scoreValue.innerText = npsScore;
totalField.innerText = total;
pField.innerText = Math.round(pPerc) + '%';
dField.innerText = Math.round(dPerc) + '%';
if (npsScore >= 70) {
scoreValue.style.color = '#28a745';
categoryText.innerText = 'World Class';
categoryText.style.color = '#28a745';
} else if (npsScore >= 50) {
scoreValue.style.color = '#28a745';
categoryText.innerText = 'Excellent';
categoryText.style.color = '#28a745';
} else if (npsScore >= 30) {
scoreValue.style.color = '#0056b3';
categoryText.innerText = 'Great';
categoryText.style.color = '#0056b3';
} else if (npsScore > 0) {
scoreValue.style.color = '#0056b3';
categoryText.innerText = 'Good';
categoryText.style.color = '#0056b3';
} else {
scoreValue.style.color = '#dc3545';
categoryText.innerText = 'Needs Improvement';
categoryText.style.color = '#dc3545';
}
resultBox.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}