How to Calculate Net Promoter Score

Net Promoter Score (NPS) Calculator

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' }); }

Leave a Comment