Nutrition Label Decoder — Understand Every Line of a Food Label
Nutrition Label Decoder — Understand Every Line of a Food Label
Click any section of a real nutrition facts label to get a plain-English explanation of what it means, why it matters, and whether the amount is good or concerning. Then grade your own food labels A–F with our Label Grader mode.
Nutrition Label Decoder — Understand Every Line of a Food Label
Learning how to read a nutrition label is one of the most powerful steps you can take for your health. This nutrition label decoder makes understanding food labels effortless — click any row on the interactive FDA-style label to get a plain-English explanation, or paste your own label values into the Label Grader to get an instant grade.
Click any row on the label to decode it.
Nutrition Facts
About 8 servings per container
Serving size2/3 cup (55g)
Amount per serving
Calories
230
% Daily Value*
Total Fat 8g10%
Saturated Fat 1g5%
Trans Fat 0g
Cholesterol 0mg0%
Sodium 160mg7%
Total Carbohydrate 37g13%
Dietary Fiber 4g14%
Total Sugars 12g
Includes 10g Added Sugars20%
Protein 3g
Vitamin D 2mcg10%
Calcium 260mg20%
Iron 8mg45%
Potassium 235mg6%
*The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.
👆
Click any row on the label to decode it in plain English.
16 rows to explore
Enter the values from your food label below. We'll grade it across 5 nutrition criteria and give you an overall score — like a school report card for your food.
Start with the serving size — everything else on the label is based on that single serving, and manufacturers often shrink serving sizes to make numbers look better. Then check added sugars and sodium, as these are the two nutrients most Americans consistently over-consume. Finally, look at dietary fiber — a high-fiber food is almost always a better choice, even if calorie counts are similar. A quick rule: the fewer ingredients (and the shorter, more recognisable the list), the better.
% Daily Value (%DV) tells you how much of a nutrient one serving contributes toward the recommended daily intake for an average adult eating 2,000 calories a day. A simple rule of thumb: 5% DV or less is considered low, and 20% DV or more is considered high. Use %DV to compare products quickly — you want high %DV for fiber, vitamins, and minerals, and low %DV for sodium, saturated fat, and added sugars. Note that Protein and Total Sugars do not have a %DV listed on most labels.
Total sugars includes all sugars naturally found in the food (like lactose in milk or fructose in fruit) plus any sugars added during manufacturing. Added sugars are only the sugars that weren't naturally present — things like high-fructose corn syrup, cane sugar, honey, or fruit juice concentrate. Natural sugars come packaged with fiber, vitamins, and minerals; added sugars usually don't. The FDA's daily limit for added sugars is 50g, but for optimal health the American Heart Association recommends keeping added sugars under 25g for women and 36g for men.
The FDA recommends no more than 2,300mg of sodium per day for most adults — roughly 1 teaspoon of salt. If you have high blood pressure, diabetes, or chronic kidney disease, your doctor may recommend a lower target of 1,500mg. Most Americans consume around 3,400mg daily, largely from processed and restaurant foods. When reading labels, consider anything under 140mg per serving to be "low sodium," 140–400mg "moderate," and over 400mg "high." Watch out for foods that seem healthy — like bread, canned soup, and deli meat — but are surprisingly high in sodium.
Every single number on a nutrition label — calories, fat, sodium, sugar, everything — is calculated per serving. If you eat two servings, you double all those numbers. Food companies are legally required to base serving sizes on the amount people typically eat, but "typical" can be surprisingly small. A bag of chips might list 140 calories per serving, but contain 3.5 servings — meaning the whole bag is 490 calories. Always check the serving size first, then estimate how much you'll actually eat and multiply accordingly. This one habit can completely change how you evaluate a food.
'; html += '
' + d.text + '
'; html += '
Why it matters
'; html += '
' + d.why + '
'; html += '
Amount guidance
'; html += '
' + d.guidance + '
'; if (d.compare) { html += '
Real-world comparison
'; html += '
🔄 ' + d.compare + '
'; } html += '
Traffic light
'; html += '
' + trafficIcon + ' ' + d.trafficLabel + '
'; document.getElementById('nld-explain-default').style.display = 'none'; var content = document.getElementById('nld-explain-content'); content.style.display = 'block'; content.innerHTML = html; // Re-trigger animation var panel = document.getElementById('nld-explain-panel'); panel.style.animation = 'none'; panel.offsetHeight; // reflow panel.style.animation = ''; }; window.nldSwitchTab = function(idx) { document.querySelectorAll('.nld-tab-btn').forEach(function(b, i) { b.classList.toggle('nld-active', i === idx); }); document.querySelectorAll('.nld-tab-panel').forEach(function(p, i) { p.classList.toggle('nld-active', i === idx); }); }; window.nldToggleFaq = function(btn) { var answer = btn.nextElementSibling; var isOpen = answer.classList.contains('nld-open'); // Close all document.querySelectorAll('.nld-faq-a').forEach(function(a) { a.classList.remove('nld-open'); }); document.querySelectorAll('.nld-faq-q').forEach(function(q) { q.classList.remove('nld-open'); }); if (!isOpen) { answer.classList.add('nld-open'); btn.classList.add('nld-open'); } }; // GRADER function nldGetGrade(val, thresholds) { // thresholds: [A_max, B_max, C_max] — below A_max = A, etc. // For fiber: reversed — higher is better if (val <= thresholds[0]) return 'A'; if (val <= thresholds[1]) return 'B'; if (val <= thresholds[2]) return 'C'; return 'D'; } function nldGetFiberGrade(val) { if (val > 5) return 'A'; if (val >= 3) return 'B'; if (val >= 1) return 'C'; return 'D'; } function nldGradeToNum(g) { return {A:4,B:3,C:2,D:1,F:0}[g] || 0; } function nldNumToGrade(n) { if (n >= 3.5) return 'A'; if (n >= 2.5) return 'B'; if (n >= 1.5) return 'C'; return 'D'; } function nldGradeClass(g) { return g === 'A' ? 'nld-grade-a' : g === 'B' ? 'nld-grade-b' : g === 'C' ? 'nld-grade-c' : 'nld-grade-d'; } function nldGradeBg(g) { return g === 'A' ? '#eafaf1' : g === 'B' ? '#e8f8f5' : g === 'C' ? '#fef9e7' : '#fdedec'; } window.nldGradeLabel = function() { var calories = parseFloat(document.getElementById('nld-g-calories').value) || 0; var satFat = parseFloat(document.getElementById('nld-g-sat-fat').value) || 0; var sodium = parseFloat(document.getElementById('nld-g-sodium').value) || 0; var addedSugars = parseFloat(document.getElementById('nld-g-added-sugars').value) || 0; var fiber = parseFloat(document.getElementById('nld-g-fiber').value) || 0; var grades = { Calories: nldGetGrade(calories, [150, 300, 450]), Sodium: nldGetGrade(sodium, [150, 400, 800]), 'Added Sugars': nldGetGrade(addedSugars, [5, 10, 20]), 'Dietary Fiber': nldGetFiberGrade(fiber), 'Saturated Fat': nldGetGrade(satFat, [1, 3, 5]) }; var notes = { Calories: calories <= 150 ? 'Low calorie — great for snacking' : calories <= 300 ? 'Moderate calories' : calories <= 450 ? 'Higher calorie per serving' : 'Very high calorie density', Sodium: sodium <= 150 ? 'Low sodium — excellent' : sodium <= 400 ? 'Moderate sodium' : sodium <= 800 ? 'High sodium — watch intake' : 'Very high sodium', 'Added Sugars': addedSugars <= 5 ? 'Low added sugar — great' : addedSugars <= 10 ? 'Moderate added sugar' : addedSugars <= 20 ? 'High added sugar' : 'Very high added sugar', 'Dietary Fiber': fiber > 5 ? 'Excellent fiber source' : fiber >= 3 ? 'Good fiber content' : fiber >= 1 ? 'Modest fiber' : 'Low fiber', 'Saturated Fat': satFat <= 1 ? 'Very low sat fat — great' : satFat <= 3 ? 'Moderate sat fat' : satFat <= 5 ? 'High sat fat' : 'Very high sat fat' }; var numArr = Object.values(grades).map(nldGradeToNum); var avg = numArr.reduce(function(a,b){return a+b;},0)/numArr.length; var overall = nldNumToGrade(avg); // Verdict var verdicts = { A: 'Outstanding label! This food scores well across all key nutrition criteria.', B: 'Solid choice! A few areas to watch but generally a nutritious option.', C: 'Proceed with caution — this food has some nutritional red flags worth noting.', D: 'Enjoy occasionally only — high in concerning nutrients and low in beneficial ones.' }; // Override with context-aware verdict var verdict = verdicts[overall]; if (grades['Added Sugars'] === 'D' && grades['Sodium'] === 'D') { verdict = 'High in both sodium and added sugar — best enjoyed occasionally as a treat.'; } else if (grades['Dietary Fiber'] === 'A' && grades['Added Sugars'] !== 'D') { verdict = 'High in fiber with reasonable macros — a genuinely nutritious choice.'; } else if (grades.Calories === 'A' && grades.Sodium === 'A') { verdict = 'Low calorie and low sodium — a great snack or side dish option.'; } else if (grades['Saturated Fat'] === 'D') { verdict = 'High in saturated fat — limit to occasional consumption and balance with heart-healthy fats.'; } // Render var badge = document.getElementById('nld-overall-badge'); badge.textContent = overall; badge.className = 'nld-grade-badge ' + nldGradeClass(overall); document.getElementById('nld-overall-card').style.background = nldGradeBg(overall); document.getElementById('nld-verdict-text').textContent = verdict; var grid = document.getElementById('nld-criteria-grid'); grid.innerHTML = ''; Object.keys(grades).forEach(function(name) { var g = grades[name]; var card = document.createElement('div'); card.className = 'nld-criteria-card'; card.style.background = nldGradeBg(g); card.innerHTML = '