Free Weight Watchers Point Calculator
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #f8f9fa;
color: #333;
line-height: 1.6;
margin: 0;
padding: 0;
}
.container {
max-width: 1000px;
margin: 20px auto;
padding: 20px;
background-color: #fff;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
border-radius: 8px;
}
header {
background-color: #004a99;
color: #fff;
padding: 20px;
text-align: center;
border-radius: 8px 8px 0 0;
}
header h1 {
margin: 0;
font-size: 2.5em;
}
main {
padding: 20px 0;
}
.calculator-section {
margin-bottom: 30px;
padding: 25px;
border: 1px solid #e0e0e0;
border-radius: 8px;
background-color: #fdfdfd;
}
h2, h3 {
color: #004a99;
margin-bottom: 15px;
}
.input-group {
margin-bottom: 20px;
display: flex;
flex-direction: column;
}
.input-group label {
margin-bottom: 8px;
font-weight: bold;
color: #555;
}
.input-group input,
.input-group select {
padding: 12px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 1em;
transition: border-color 0.3s ease;
}
.input-group input:focus,
.input-group select:focus {
border-color: #004a99;
outline: none;
}
.input-group .helper-text {
font-size: 0.85em;
color: #777;
margin-top: 5px;
}
.error-message {
color: #dc3545;
font-size: 0.9em;
margin-top: 5px;
display: none; /* Hidden by default */
}
.error-message.visible {
display: block;
}
.button-group {
display: flex;
justify-content: space-between;
margin-top: 25px;
flex-wrap: wrap;
gap: 10px;
}
button {
padding: 12px 20px;
font-size: 1em;
font-weight: bold;
border: none;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s ease, transform 0.2s ease;
flex: 1;
min-width: 150px;
}
.btn-calculate {
background-color: #28a745;
color: white;
}
.btn-calculate:hover {
background-color: #218838;
}
.btn-reset {
background-color: #ffc107;
color: #333;
}
.btn-reset:hover {
background-color: #e0a800;
}
.btn-copy {
background-color: #007bff;
color: white;
}
.btn-copy:hover {
background-color: #0056b3;
}
button:active {
transform: translateY(1px);
}
#results-container {
margin-top: 30px;
padding: 25px;
border: 1px solid #e0e0e0;
border-radius: 8px;
background-color: #fefefe;
}
#results-container h3 {
margin-top: 0;
text-align: center;
color: #004a99;
}
.main-result {
font-size: 2.2em;
font-weight: bold;
color: #28a745;
text-align: center;
margin-bottom: 20px;
padding: 15px;
background-color: #e6f7e6;
border-radius: 6px;
border: 1px dashed #28a745;
}
.intermediate-results, .formula-explanation {
margin-top: 20px;
font-size: 0.95em;
color: #555;
}
.intermediate-results p, .formula-explanation p {
margin-bottom: 10px;
}
.table-caption, .chart-caption {
font-size: 0.9em;
color: #777;
text-align: center;
margin-bottom: 10px;
font-style: italic;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 15px;
}
th, td {
padding: 10px;
text-align: left;
border-bottom: 1px solid #ddd;
}
th {
background-color: #004a99;
color: white;
font-weight: bold;
}
tr:nth-child(even) {
background-color: #f2f2f2;
}
canvas {
display: block;
margin: 20px auto;
max-width: 100%;
}
.article-content {
margin-top: 40px;
padding: 25px;
border: 1px solid #e0e0e0;
border-radius: 8px;
background-color: #fefefe;
}
.article-content h2, .article-content h3 {
margin-top: 25px;
color: #004a99;
}
.article-content p, .article-content ul, .article-content ol {
margin-bottom: 15px;
}
.article-content ul, .article-content ol {
padding-left: 25px;
}
.article-content li {
margin-bottom: 8px;
}
.faq-item {
margin-bottom: 15px;
}
.faq-item strong {
display: block;
color: #004a99;
margin-bottom: 5px;
}
.internal-links-section {
margin-top: 25px;
padding: 20px;
border: 1px solid #e0e0e0;
border-radius: 8px;
background-color: #fefefe;
}
.internal-links-section h3 {
margin-top: 0;
}
.internal-links-section ul {
list-style: none;
padding: 0;
}
.internal-links-section li {
margin-bottom: 10px;
}
.internal-links-section a {
color: #004a99;
text-decoration: none;
font-weight: bold;
}
.internal-links-section a:hover {
text-decoration: underline;
}
.internal-links-section p {
font-size: 0.9em;
color: #777;
margin-top: 5px;
}
@media (max-width: 768px) {
.container {
margin: 10px;
padding: 15px;
}
header h1 {
font-size: 1.8em;
}
button {
flex: 1 1 100%;
min-width: unset;
}
.button-group {
flex-direction: column;
align-items: center;
}
}
Calculate Your Points
Your Calculated Points
—
Nutritional Breakdown Per Serving
| Nutrient |
Amount (per serving) |
| Calories |
— |
| Saturated Fat (g) |
— |
| Sugar (g) |
— |
| Sodium (mg) |
— |
Points Breakdown Visualization
Free Weight Watchers Point Calculator Explained
Welcome to your comprehensive guide to the Free Weight Watchers Point Calculator. If you're looking to manage your weight effectively, understanding how different foods contribute to your daily allowance is crucial. This tool is designed to give you a clear, free, and accessible way to calculate those points, helping you make informed choices on your health journey.
What is the Weight Watchers Points System?
The Weight Watchers (now WW) Points system is a flexible approach to dieting designed to guide users towards healthier food choices. Instead of strictly forbidding foods, it assigns a point value to different foods and drinks. Your personalized daily and weekly point budget allows you to eat a variety of foods while staying within your calorie and nutritional goals. The system aims to make healthier options "cheaper" in points, encouraging consumption of nutrient-dense, lower-calorie foods like fruits, vegetables, lean proteins, and whole grains.
Who should use it? Anyone following a WW program, individuals seeking a structured yet flexible diet plan, or people who want a simple way to track the nutritional value of their food in a simplified metric. It's particularly useful for those who find calorie counting tedious or need a more guided approach to healthy eating.
Common misconceptions: Many believe that WW Points only focus on calories, or that all "healthy" foods are zero points. While fruits and non-starchy vegetables are often zero points on many plans, the system factors in more than just calories. It also considers saturated fat, sugar, protein, and sodium to guide towards a balanced intake. Another myth is that it's overly restrictive; the flexibility allows for occasional treats within your budget.
The core of the Weight Watchers Points system lies in its formula, which assigns a value based on key nutritional components. While the exact formula has evolved over the years (from PointsPlus to SmartPoints and now PersonalPoints), a commonly used and approximate formula for understanding the underlying principle is:
Points = (Calories / 50) + (Saturated Fat / 12) + (Sugar / 5) - (Fiber / 5) + (Protein / 12) + (Sodium / 300)
In our free calculator, we simplify this by focusing on the primary inputs that have the most significant impact and are readily available on nutrition labels. For ease of use, our calculator focuses on the positive contributions: Calories, Saturated Fat, Sugar, and Sodium. While Fiber and Protein can reduce points, they are not direct inputs in this simplified version to keep the process straightforward. The calculator shows the contributions of each measured nutrient and combines them for a final point value.
Variable Explanations
| Variable |
Meaning |
Unit |
Typical Range (per serving) |
| Calories |
Energy provided by the food item. Higher calorie foods cost more points. |
kcal |
0 – 1000+ |
| Saturated Fat |
Unhealthy fats that increase the point cost. |
grams (g) |
0 – 50+ |
| Sugar |
Sugars contribute to the point cost, encouraging lower sugar intake. |
grams (g) |
0 – 100+ |
| Sodium |
High sodium content increases the point cost. |
milligrams (mg) |
0 – 5000+ |
| Fiber |
(Not directly input) Can decrease point cost. Found in whole grains, fruits, vegetables. |
grams (g) |
0 – 20+ |
| Protein |
(Not directly input) Can decrease point cost. Found in lean meats, dairy, beans. |
grams (g) |
0 – 100+ |
Note: The precise multipliers (50, 12, 5, 5, 12, 300) are specific to the WW program's algorithms and may vary slightly between iterations of their plans. Our calculator uses common approximations.
Practical Examples
Let's see how the calculator works with real-world food items:
Example 1: A Medium Apple
- Food Item Name: Medium Apple
- Serving Size: 1
- Serving Unit: Piece
- Calories: 95
- Saturated Fat: 0.3 g
- Sugar: 19 g
- Sodium: 2 mg
Calculation (approximate):
- Calories contribution: 95 / 50 = 1.9 points
- Saturated Fat contribution: 0.3 / 12 = 0.025 points
- Sugar contribution: 19 / 5 = 3.8 points
- Sodium contribution: 2 / 300 = 0.007 points
- Total Points ≈ 1.9 + 0.025 + 3.8 + 0.007 ≈ 5.73 points
Rounded to the nearest whole number (as WW often does), this apple might be considered 6 points. This highlights how even seemingly healthy foods have a point value based on their sugar and calorie content.
Example 2: A Serving of Salmon (4oz cooked)
- Food Item Name: Cooked Salmon
- Serving Size: 4
- Serving Unit: oz
- Calories: 230 (per 4oz serving)
- Saturated Fat: 2.5 g (per 4oz serving)
- Sugar: 0 g
- Sodium: 50 mg
Calculation (approximate):
- Calories contribution: 230 / 50 = 4.6 points
- Saturated Fat contribution: 2.5 / 12 = 0.21 points
- Sugar contribution: 0 / 5 = 0 points
- Sodium contribution: 50 / 300 = 0.17 points
- Total Points ≈ 4.6 + 0.21 + 0 + 0.17 ≈ 4.98 points
Rounded, this serving of salmon could be around 5 points. This example shows how protein-rich foods, despite having moderate calories and saturated fat, can be relatively "point-efficient" compared to high-sugar or high-calorie processed snacks.
How to Use This Free Weight Watchers Point Calculator
Using our calculator is simple and takes just a few moments:
- Identify the Food: Determine the specific food or drink item you consumed.
- Find Nutritional Information: Look up the nutritional details on the packaging, a reliable app, or website. You'll need the values for a standard serving size.
- Enter Serving Details: Input the name of the food, the quantity you consumed (serving size), and the unit of measurement (piece, cup, oz, g, ml, etc.).
- Input Nutritional Values: Enter the Calories, Saturated Fat (g), Sugar (g), and Sodium (mg) for that standard serving.
- Click 'Calculate Points': The calculator will instantly display the estimated WW Points for your serving.
- Review Results: The primary result shows the total points. Intermediate values break down the contribution from each nutrient, and the chart offers a visual summary.
- Use the 'Reset' Button: To calculate points for a different food, click 'Reset' to clear all fields.
- Copy Results: Use the 'Copy Results' button to save or share the calculated points and nutritional breakdown.
How to read results: The main number is your estimated WW Point value. The intermediate values show which nutrients contribute most to the point total. Use this information to guide future choices. For instance, if saturated fat contributes heavily, you might opt for a leaner cut of meat next time.
Decision-making guidance: This calculator helps you compare foods. If you're deciding between two snacks, calculate the points for both. Choose the one with a lower point value if you're trying to stay within your budget. It also reinforces the WW philosophy of choosing foods that are lower in sugar, saturated fat, and sodium while being mindful of calorie density.
Key Factors That Affect Weight Watchers Points Results
Several factors influence the point value of a food item:
- Calories: This is a primary driver. Foods with higher calorie density generally cost more points, encouraging choices like fruits and vegetables which are high in volume but lower in calories.
- Saturated Fat: Considered less healthy and more calorie-dense per gram than other macronutrients, saturated fat significantly increases the point value. This discourages high-fat dairy, fatty meats, and processed snacks high in these fats.
- Sugar: Added sugars contribute to the point cost. This encourages mindful consumption of sugary drinks, desserts, and processed foods laden with sugar.
- Sodium: While not always a direct component in all older WW point calculations, high sodium content often correlates with less healthy processed foods and can increase the point value in many versions.
- Protein: Foods high in protein often have a lower point cost relative to their calories because protein is satiating and metabolically demanding. This encourages lean meats, fish, beans, and tofu.
- Fiber: High fiber content, found in whole grains, fruits, and vegetables, can lower the point value. Fiber promotes fullness and aids digestion, making these foods more rewarding within the WW system.
- Portion Size: The calculator calculates points based on the serving size you input. Consuming larger portions naturally increases the total points consumed.
- Processing Level: Highly processed foods often contain more added sugar, sodium, and unhealthy fats, leading to higher point values compared to whole, unprocessed foods.
Frequently Asked Questions (FAQ)
Q1: Is this calculator official Weight Watchers (WW) software?
A: No, this is a free, third-party calculator designed to estimate WW Points based on commonly known formulas and principles. It is not affiliated with, endorsed by, or official WW (Weight Watchers) product. Always refer to your official WW app or program materials for precise point values.
Q2: Why do my calculated points differ from the WW app?
A: WW uses proprietary algorithms that may change and can be personalized (e.g., PersonalPoints). This calculator uses a generalized, approximate formula. Factors like fiber and protein, which can reduce points, are not always fully accounted for in simplified free calculators.
Q3: Can I use this for all types of food?
A: Yes, you can use it for most solid foods and beverages. However, for complex meals or items with very unusual nutritional profiles, the estimate might be less precise.
Q4: What does "serving size" mean in the context of the calculator?
A: The "serving size" refers to the standard quantity listed on the nutrition label (e.g., 1 cup, 100g, 1 piece). The nutritional values you input (calories, fat, etc.) should correspond to this standard serving size.
Q5: Are fruits and vegetables really zero points?
A: On many WW plans, non-starchy vegetables and most fruits are zero points because they are nutrient-dense and low in calories. However, they still contain natural sugars and calories, which are factored into more advanced calculations.
Q6: How do I calculate points for a homemade meal?
A: You'll need to calculate the total nutritional values for all ingredients in the meal and then divide by the number of servings the meal makes. This can be complex; consider using a recipe analysis tool for accuracy.
Q7: What is the role of "SmartPoints" vs. "PointsPlus"?
A: SmartPoints is a later iteration that placed more emphasis on limiting sugar and saturated fat, while also factoring in protein. PointsPlus was an earlier system. The underlying principles of assigning value based on nutritional content remain similar.
Q8: Can I track my daily points using this tool?
A: This calculator is for calculating the points of individual foods or servings. It does not function as a daily tracker. You would need to calculate each item and sum them up manually or use an official WW tracking tool.
Explore More Calculators and Guides
var chart = null; // Declare chart globally
function validateInput(id, min, max) {
var input = document.getElementById(id);
var errorElement = document.getElementById(id + "Error");
var value = parseFloat(input.value);
errorElement.classList.remove("visible");
input.style.borderColor = "#ccc";
if (isNaN(value)) {
errorElement.textContent = "Please enter a valid number.";
errorElement.classList.add("visible");
input.style.borderColor = "#dc3545";
return false;
}
if (value < 0) {
errorElement.textContent = "Value cannot be negative.";
errorElement.classList.add("visible");
input.style.borderColor = "#dc3545";
return false;
}
if (min !== undefined && value max) {
errorElement.textContent = "Value cannot exceed " + max + ".";
errorElement.classList.add("visible");
input.style.borderColor = "#dc3545";
return false;
}
return true;
}
function calculatePoints() {
// Clear previous errors
var errorElements = document.querySelectorAll('.error-message');
for (var i = 0; i < errorElements.length; i++) {
errorElements[i].classList.remove('visible');
}
var inputElements = document.querySelectorAll('.input-group input, .input-group select');
for (var i = 0; i < inputElements.length; i++) {
inputElements[i].style.borderColor = "#ccc";
}
var isValid = true;
isValid = validateInput("servingSize", 0) && isValid;
isValid = validateInput("calories", 0) && isValid;
isValid = validateInput("saturatedFat", 0) && isValid;
isValid = validateInput("sugar", 0) && isValid;
isValid = validateInput("sodium", 0) && isValid;
if (!isValid) {
document.getElementById("mainResult").textContent = "Error";
document.getElementById("basePoints").textContent = "–";
document.getElementById("caloriesPoints").textContent = "–";
document.getElementById("satFatPoints").textContent = "–";
document.getElementById("sugarPoints").textContent = "–";
document.getElementById("sodiumPoints").textContent = "–";
updateChart({ cal: 0, satFat: 0, sugar: 0, sodium: 0, total: 0 });
return;
}
var servingSize = parseFloat(document.getElementById("servingSize").value);
var calories = parseFloat(document.getElementById("calories").value);
var saturatedFat = parseFloat(document.getElementById("saturatedFat").value);
var sugar = parseFloat(document.getElementById("sugar").value);
var sodium = parseFloat(document.getElementById("sodium").value);
// Approximated WW formula components
var caloriesPoints = calories / 50;
var satFatPoints = saturatedFat / 12;
var sugarPoints = sugar / 5;
var sodiumPoints = sodium / 300; // Sodium contribution is often smaller
// Total points calculation (simplified, without fiber/protein reduction for this free tool)
var totalPoints = caloriesPoints + satFatPoints + sugarPoints + sodiumPoints;
// Rounding – WW typically rounds up or to nearest whole number
var roundedTotalPoints = Math.ceil(totalPoints);
document.getElementById("mainResult").textContent = roundedTotalPoints;
document.getElementById("basePoints").textContent = roundedTotalPoints; // In this simplified version, total is the main result
document.getElementById("caloriesPoints").textContent = caloriesPoints.toFixed(2);
document.getElementById("satFatPoints").textContent = satFatPoints.toFixed(2);
document.getElementById("sugarPoints").textContent = sugarPoints.toFixed(2);
document.getElementById("sodiumPoints").textContent = sodiumPoints.toFixed(2);
// Update nutrition table
document.getElementById("tableCalories").textContent = calories.toFixed(1);
document.getElementById("tableSatFat").textContent = saturatedFat.toFixed(1);
document.getElementById("tableSugar").textContent = sugar.toFixed(1);
document.getElementById("tableSodium").textContent = sodium.toFixed(0);
// Update chart
updateChart({
cal: caloriesPoints,
satFat: satFatPoints,
sugar: sugarPoints,
sodium: sodiumPoints,
total: roundedTotalPoints // Use rounded total for display logic if needed, but breakdown uses exact
});
}
function resetCalculator() {
document.getElementById("foodName").value = "Example Apple";
document.getElementById("servingSize").value = "1";
document.getElementById("servingUnit").value = "piece";
document.getElementById("calories").value = "95";
document.getElementById("saturatedFat").value = "0.3";
document.getElementById("sugar").value = "19";
document.getElementById("sodium").value = "2";
// Clear results and errors
document.getElementById("mainResult").textContent = "–";
document.getElementById("basePoints").textContent = "–";
document.getElementById("caloriesPoints").textContent = "–";
document.getElementById("satFatPoints").textContent = "–";
document.getElementById("sugarPoints").textContent = "–";
document.getElementById("sodiumPoints").textContent = "–";
document.getElementById("tableCalories").textContent = "–";
document.getElementById("tableSatFat").textContent = "–";
document.getElementById("tableSugar").textContent = "–";
document.getElementById("tableSodium").textContent = "–";
var errorElements = document.querySelectorAll('.error-message');
for (var i = 0; i < errorElements.length; i++) {
errorElements[i].classList.remove('visible');
errorElements[i].textContent = "";
}
var inputElements = document.querySelectorAll('.input-group input, .input-group select');
for (var i = 0; i < inputElements.length; i++) {
inputElements[i].style.borderColor = "#ccc";
}
// Clear and reset chart
if (chart) {
chart.destroy();
chart = null;
}
initializeChart(); // Re-initialize empty chart
}
function updateChart(pointContributions) {
var ctx = document.getElementById('pointsChart').getContext('2d');
// Destroy previous chart instance if it exists
if (chart) {
chart.destroy();
}
chart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['Calories', 'Sat. Fat', 'Sugar', 'Sodium'],
datasets: [{
label: 'Point Contribution',
data: [
pointContributions.cal,
pointContributions.satFat,
pointContributions.sugar,
pointContributions.sodium
],
backgroundColor: [
'rgba(255, 99, 132, 0.6)', // Calories
'rgba(54, 162, 235, 0.6)', // Saturated Fat
'rgba(255, 206, 86, 0.6)', // Sugar
'rgba(75, 192, 192, 0.6)' // Sodium
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true,
title: {
display: true,
text: 'Points'
}
}
},
plugins: {
legend: {
display: false // Hide legend as labels are on x-axis
},
title: {
display: true,
text: 'Breakdown of Points by Nutrient'
}
}
}
});
}
function initializeChart() {
var ctx = document.getElementById('pointsChart').getContext('2d');
chart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['Calories', 'Sat. Fat', 'Sugar', 'Sodium'],
datasets: [{
label: 'Point Contribution',
data: [0, 0, 0, 0],
backgroundColor: [
'rgba(255, 99, 132, 0.6)',
'rgba(54, 162, 235, 0.6)',
'rgba(255, 206, 86, 0.6)',
'rgba(75, 192, 192, 0.6)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true,
title: {
display: true,
text: 'Points'
}
}
},
plugins: {
legend: {
display: false
},
title: {
display: true,
text: 'Breakdown of Points by Nutrient'
}
}
}
});
}
function copyResults() {
var foodName = document.getElementById("foodName").value || "N/A";
var servingSize = document.getElementById("servingSize").value || "–";
var servingUnit = document.getElementById("servingUnit").value || "N/A";
var calories = document.getElementById("calories").value || "–";
var saturatedFat = document.getElementById("saturatedFat").value || "–";
var sugar = document.getElementById("sugar").value || "–";
var sodium = document.getElementById("sodium").value || "–";
var mainResult = document.getElementById("mainResult").textContent;
var basePoints = document.getElementById("basePoints").textContent;
var caloriesPoints = document.getElementById("caloriesPoints").textContent;
var satFatPoints = document.getElementById("satFatPoints").textContent;
var sugarPoints = document.getElementById("sugarPoints").textContent;
var sodiumPoints = document.getElementById("sodiumPoints").textContent;
var copyText = `— WW Points Calculation —
Food: ${foodName}
Serving Size: ${servingSize} ${servingUnit}
Nutritional Info (per serving):
– Calories: ${calories}
– Saturated Fat: ${saturatedFat}g
– Sugar: ${sugar}g
– Sodium: ${sodium}mg
— Results —
Total Points: ${mainResult}
(Base: ${basePoints}, Cal: ${caloriesPoints}, Sat Fat: ${satFatPoints}, Sugar: ${sugarPoints}, Sodium: ${sodiumPoints})
Formula Approximation Used: Points = (Calories/50) + (SatFat/12) + (Sugar/5) + (Sodium/300)
`;
// Use a temporary textarea to copy text
var textArea = document.createElement("textarea");
textArea.value = copyText;
textArea.style.position = "fixed";
textArea.style.left = "-9999px";
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'Results copied to clipboard!' : 'Failed to copy results.';
alert(msg); // Simple feedback
} catch (err) {
alert('Oops, unable to copy');
}
document.body.removeChild(textArea);
}
// Initialize the chart when the page loads
window.onload = function() {
initializeChart();
// Optionally pre-fill with defaults and calculate
// resetCalculator(); // Or call calculatePoints directly if you want initial calculation
};
// Add event listeners for real-time updates
var inputFields = document.querySelectorAll('#calculatorForm input[type="number"], #calculatorForm select');
for (var i = 0; i < inputFields.length; i++) {
inputFields[i].addEventListener('input', calculatePoints);
}
var inputFieldsText = document.querySelectorAll('#calculatorForm input[type="text"]');
for (var i = 0; i < inputFieldsText.length; i++) {
inputFieldsText[i].addEventListener('input', calculatePoints);
}