How NutriMatch Calculates Food Triggers
Last updated: 26 April 2026
Our approach
NutriMatch is a lifestyle app, not a substitute for a medical diagnosis. We don't measure the specific batch of yoghurt sitting on your shelf; nobody can do that without a lab. What we can do is tell you, transparently, where each number came from.
This page exists because we think you deserve to know that. Most apps in the food-intolerance category quote numbers without saying where they came from. Some make those numbers up entirely. We've made every choice traceable: every constant in our codebase has an inline comment citing its source, our test suite asserts every fixture against a published reference range, and the analysis you're reading right now lists the 35+ studies and regulations we anchor our calculations to.
We recognise the limits of this approach. Crowd-sourced product data (Open Food Facts) varies in quality. Heuristic estimators built on average composition data can be wrong by 2–3× for unusual products. AI-assisted ingredient parsing is faster than humans but makes mistakes. We document all of this. We test for the most common failure modes and we ship regression tests on every code change so an estimate that worked yesterday still works tomorrow. If you suspect a food intolerance, consult a doctor or registered nutritionist — NutriMatch helps you spot patterns; the people who help you act on those patterns are still humans.
How a scan works
When you scan a barcode or photograph a meal, four things happen:
- Product lookup. The barcode is sent to Open Food Facts, a community-maintained database of 3+ million products covering most EU and US groceries. We pull the ingredient list, allergen tags, and per-100 g nutrient values.
- Keyword detection. A lookup table maps each tracked intolerance to its known ingredient terms — in English, German, and French (
milk,Vollmilch,lait demi-écréméall match for lactose). - Quantification. For each detected intolerance, an estimator function reads the nutrient declaration and ingredient position to produce a per-100 g estimate. Heuristics are documented inline, with citations.
- Refinement. A separate "resolver" stage takes the estimator's value, looks up a category anchor (e.g. "whole milk → 4.8 g lactose / 100 g") from a clinical reference table, and either trusts the estimator (if it falls within a plausible range), snaps to the anchor (if the estimator is far off), or clamps to a soft ceiling (if the estimator is implausibly high).
The numbers you see on the scan result are the resolver's output, with inline ranges (e.g. "~8 g lactose · typical 6–10 g") so you can see the inherent variance.
Trigger-by-trigger sources
Lactose
Reference values:
- Whole milk: 4.7 g / 100 ml (Souci-Fachmann-Kraut 7th ed., p. 105; USDA FoodData Central #1077)
- Skim milk: 4.9–5.2 g / 100 ml (USDA FDC #1085)
- Aged cheddar: 0.07–0.5 g / 100 g (USDA FDC #1009; Walstra 2006, Dairy Science and Technology §13)
- Mozzarella (low-moisture): 0.3–1.2 g / 100 g (USDA FDC #1026)
- Plain yoghurt: 3–4.5 g / 100 g (USDA FDC #1116; Adolfsson 2004, Am J Clin Nutr 80:245)
- Milk chocolate: 6–10 g / 100 g (Souci-Fachmann-Kraut)
- Sweetened condensed milk: 9–13 g / 100 g (USDA FDC #173441)
- Lactose-free dairy: < 0.1 g / 100 g (EU labelling regulation)
Why these values: Pure dairy products' declared sugar IS the lactose — milk has essentially no other sugars. As products move toward sweetened or processed forms, added sucrose dominates the sugar declaration, so we apply category-specific multipliers (1.0 for pure dairy, 0.9 for cheese with cultures, 0.2 for sweetened condensed milk, 0.15 for milk chocolate). For aged cheeses, lactic-acid fermentation converts most lactose to lactic acid, which is why aged cheddar is functionally lactose-free even though milk is its first ingredient.
Limitations: Concentrated dairy products (skim milk powder up to 52 g lactose / 100 g; whey protein concentrate up to 70 g) can fall outside our category bands when the product name doesn't trigger a specific anchor. Our resolver caps at 60 g / 100 g as a sanity ceiling, which still flags any sensitivity correctly even if the displayed number undershoots reality.
Histamine
Reference values (mg per 100 g or 100 ml):
- Red wine: 0.2–2 mg / 100 ml (Konakovsky et al. 2011, Food Addit Contam 28:408)
- White wine: 0.05–0.5 mg / 100 ml (Konakovsky 2011)
- Beer: 0.05–0.3 mg / 100 ml (Sánchez-Pérez et al. 2018, Foods 7:91)
- Aged hard cheese (Parmigiano, Manchego): 5–30 mg / 100 g (Sánchez-Pérez 2018)
- Soft / ripened cheese (Camembert, Brie): 1–30 mg / 100 g (Sánchez-Pérez 2018; EU BLS 3.02)
- Cured meat (salami, prosciutto): 2–30 mg / 100 g (Komprda 2004, Meat Sci 67:607)
- Sauerkraut: 5–100 mg / 100 g (Linares et al. 2011, Curr Opin Biotechnol 22:148)
- Smoked fish: 5–100 mg / 100 g (scombroid-prone species highest)
Why these values: Histamine accumulates during fermentation and ripening. The Sánchez-Pérez 2018 European fermented-food survey is the gold-standard reference for commercial product distributions. Wine values follow Konakovsky 2011's HPLC-validated survey of European reds and whites. The midpoints we display are arithmetic means within typical commercial ranges — long-aged or post-MLF wines can legitimately reach the upper end.
Limitations: Histamine is heavily influenced by storage time, cold-chain integrity, and individual batch variability. A "fresh" tuna held 24 hours warm can develop ten times the histamine of a properly handled one. We can't see those conditions from a barcode, so the values we show are pre-distribution typical ranges.
Gluten
Reference values:
- Wheat flour: 10–13 g / 100 g (Wieser 2007, Cereal Chem 84:175 — bread flour gluten content)
- Dry pasta: 10–12 g / 100 g (USDA FDC #20121)
- Cooked pasta: 3–4.5 g / 100 g (rehydrated to ~3× volume)
- Bread: 5–7 g / 100 g (USDA FDC #18069; Wieser 2007)
- Beer: < 50 mg / L = < 0.005 g / 100 ml (Picariello et al. 2015)
- Soy sauce (wheat-based): 0.3–1.2 g / 100 ml (Maeda 2013, J Food Prot 76:1626)
- Certified gluten-free: < 20 mg / kg = < 0.002 g / 100 g (EU Regulation 41/2009)
Why these values: Bread flour is approximately 10 % gluten by weight (Wieser 2007). Products dilute that fraction depending on flour content — pasta is mostly flour (so close to 11 g), pizza adds toppings (so closer to 4 g), beer is fermented and filtered (so 50× lower than its grain origin). Our category anchors cover the most common product types directly; for unusual products we fall back to a coarse carbs-based ladder that the resolver clamps to plausible ranges.
Limitations: Sourdough fermentation can reduce gluten content by up to 90 % compared to commercial bread (Gobbetti 2014, Annu Rev Food Sci Technol 5:69), but our heuristic doesn't detect "long fermented" labels. For users with coeliac disease, always look for the certified gluten-free mark rather than relying on our estimate.
A1 β-casein
Reference values:
- Conventional Holstein-Friesian milk: 0.4–0.5 g A1 β-casein / 100 ml (Kamiński et al. 2007, J Appl Genet 48:189)
- A2-only milk: 0 g (genetic selection eliminates the A1 variant)
Why these values: Casein composition follows a well-defined chain: total casein ≈ 80 % of milk protein; β-casein ≈ 35 % of casein; A1 ≈ 45 % of β-casein in conventional Holstein-Friesian herds (Kamiński 2007; Caroli 2009, J Dairy Sci 92:5335). Net factor ≈ 0.13 of total milk protein. For 3.4 g protein per 100 ml whole milk, that's ~0.45 g A1 β-casein.
Limitations: A1:A2 ratios vary by herd genetics. Jersey cattle have a different distribution than Holstein-Friesian, and intentionally A2-bred herds have zero A1. We default to the conventional Holstein-Friesian average because that's what the European and US milk supply is dominated by; products labelled "A2 milk" / "A2 protein" are correctly flagged as zero.
Fructans (FODMAP "F")
Reference values:
- Inulin / chicory root: 12–20 g / 100 g (Roberfroid 2007, J Nutr 137:2493)
- Garlic raw: 9–15 g / 100 g (Muir et al. 2007, J Agric Food Chem 55:6619)
- Onion / leek / shallot: 0.5–5 g / 100 g (Biesiekierski et al. 2011, J Hum Nutr Diet 24:154)
- Asparagus: 1.4–3 g / 100 g (Monash FODMAP database)
- Wheat / rye / barley grain: 1–3.5 g / 100 g (Biesiekierski 2011)
- Artichoke / Jerusalem artichoke: 10–20 g / 100 g (Monash FODMAP)
Why these values: Fructan concentration varies by 60× across common dietary sources, so a single per-product fallback is impossible — we look up by ingredient. The Monash University FODMAP database is the gold-standard reference for IBS dietary management; most clinical FODMAP elimination protocols cite it directly.
Limitations: Cooking degrades fructans by up to 40 % (Muir 2009, J Agric Food Chem 57:554), which our heuristic doesn't detect. Sourdough fermentation reduces wheat fructans by up to 90 %. The values we display lean toward the raw / unprocessed end of the range, which is the safer direction for IBS users (false-positives over false-negatives).
Fructose
Reference values:
- Apple: 5.7 g / 100 g (USDA FDC #1750340; Souci-Fachmann-Kraut)
- Banana: 4.9 g / 100 g (USDA FDC #1102653)
- Mango: 2.9 g / 100 g (USDA FDC #169910)
- Honey: ~38 % of sugar = ~30 g / 100 g
- HFCS-55 syrup: 55 % of sugar = ~45 g / 100 g (White 2008, Am J Clin Nutr 88:1716S)
- Agave syrup: 55–90 % of sugar = ~40–70 g / 100 g
Why these values: Free fructose is what causes symptoms in fructose malabsorption — sucrose (table sugar) splits 1:1 into glucose + fructose during digestion (Skoog 2008, Am J Gastroenterol 103:2354) and is well tolerated. We only flag fructose when ingredients explicitly list free-fructose sources (HFCS, agave, honey, fruit juice) or when the product is a recognised fruit. The 0.55 ratio for "free fructose declared" matches HFCS-55's by-definition composition (White 2008); the 0.45 ratio for fruit reflects USDA FDC's median across pomes, stone fruits, berries, and melons.
Limitations: Fructose:glucose ratio matters more than absolute fructose for malabsorption symptoms. We display this ratio when both can be estimated — values > 1.0 (fructose exceeds glucose) flag the canonical "fructose malabsorption risk" condition (Born 2007).
Sorbitol
Reference values:
- Apple: 0.3–0.6 g / 100 g (Wrolstad 1981, J Food Sci 46:1733)
- Pear: 1.5–3 g / 100 g (Wrolstad 1981)
- Prune: 5–10 g / 100 g (Wrolstad 1981; Souci-Fachmann-Kraut)
- Sugar-free product (sorbitol declared, no quantity): 5 g / 100 g default (Awad 1991, J Pediatr Gastroenterol Nutr 13:286 — diet-jam median)
- Sugar-free gum / candy: typically 5–25 g / 100 g (Embuscado & Patil 2001, in Nabors Alternative Sweeteners 3rd ed. Ch. 12)
Why these values: Stone fruits and pome fruits naturally contain sorbitol — Wrolstad 1981's HPLC survey is the foundational reference. For products with sorbitol explicitly listed but no quantity declared, we default to 5 g / 100 g, the median Awad 1991 measured directly across 27 commercial diet jams. This is intentionally conservative: the Monash FODMAP symptom threshold is 0.4 g per serving, so even at our 5 g / 100 g estimate, a 30 g serving (1.5 g consumed) flags AVOID — we'd have to underestimate by 4× before classification flipped to a false-negative.
Polyols (FODMAP "P" — total)
Reference values:
- Sugar-free chewing gum: 30–70 g / 100 g (Wong 2018, Eur Food Res Technol 244:1027)
- Sugar-free hard candy: 50–80 g / 100 g (Embuscado & Patil 2001)
- Sugar-free chocolate: 25–35 g / 100 g (Sentko & Willibald-Ettle 2012, in O'Donnell & Kearsley Sweeteners and Sugar Alternatives in Food Technology 2nd ed. Ch. 10)
- Sugar-free ice cream: 5–15 g / 100 g (Sentko 2012)
- Yoghurt / jam / low-sugar dairy: 3–8 g / 100 g (Sentko 2012)
Why these values: Sentko 2012's category survey is the most comprehensive published reference for polyol use levels across food categories. When a product declares polyols but doesn't disclose the quantity, we use 25 g / 100 g for products below the EU "low sugars" threshold (≤ 5 g sugar / 100 g per Regulation 1924/2006) and 8 g / 100 g for products above it. The 25 g number is the geometric midpoint of the "truly sugar-free" mix weighted toward gum/candy as the dominant scan target.
Caffeine
Reference values (mg per 100 ml):
- Espresso: 150–260 mg / 100 ml (USDA FDC #14209)
- Brewed coffee: 35–60 mg / 100 ml (USDA FDC; Crozier et al. 2012, J Funct Foods 4:846)
- Matcha: 35–95 mg / 100 ml (Crozier 2012)
- Black tea: 15–35 mg / 100 ml (USDA FDC #14555; Chin et al. 2008, Food Addit Contam A 25:144)
- Green tea: 10–25 mg / 100 ml (USDA FDC; Chin 2008)
- Energy drinks (Red Bull, Monster, EU formulation): 32 mg / 100 ml (EFSA 2015 caffeine review, EFSA Journal 13:4102)
- Cola: ~10 mg / 100 ml (USDA FDC #174832)
- Decaf coffee: < 5 mg / 100 ml residual (USDA FDC #14216)
Why these values: Caffeine content is one of the better-documented food-composition values because it's regulatory-relevant. We prefer label-declared values when Open Food Facts surfaces them, falling back to category midpoints. EFSA's 2015 caffeine safety review is the canonical European reference; USDA FoodData Central provides matching US-side numbers.
Tyramine
Reference values (mg per 100 g):
- Aged hard cheese: 5–60 mg / 100 g (McCabe-Sellers et al. 2006, J Food Compos Anal 19 Suppl:S58; FDA dietary guidance)
- Cured / fermented meat: 3–45 mg / 100 g (McCabe-Sellers 2006)
- Red wine (Chianti, Burgundy): 0.5–5 mg / 100 ml
- Banana: 4–10 mg / 100 g (peel highest)
Why these values: Tyramine matters for users on MAO inhibitors and for some migraine patients. McCabe-Sellers 2006 is the most-cited compositional survey; the FDA dietary guidance for MAOI patients references it directly.
Sulfites
Reference values (mg per 100 g or 100 ml):
- Wine (red and white): 5–20 mg / 100 ml = 80–210 mg / L (EU Regulation 1333/2008 maximum: 210 mg/L red, 160 mg/L white)
- Sparkling wine: 5–18 mg / 100 ml
- Dried fruit: 50–200 mg / 100 g (EU max 2,000 mg/kg for dried apricots)
- Processed meat: 5–40 mg / 100 g (EU max 450 mg/kg burgers)
Why these values: Sulfite content is regulatory-capped, so commercial products cluster near the legal upper bounds. We use typical commercial midpoints, with the resolver clamping to the regulatory maximum as the ceiling.
Composite and processed foods — how we estimate
Composite foods (a Big Mac, a Margherita pizza, a frozen lasagne, a Snickers bar) are harder to quantify than whole foods. The challenge: a public food database tells us "Big Mac contains wheat flour, american cheese, beef, sauce, pickles…" but it does not tell us the exact weight of each component. Without component weights, a single per-100 g number has to come from heuristics.
Our approach combines four layers, each independently safe:
- Local estimator — runs in the first ~50 ms of a scan, on-device. For each trigger, a small function reads the food's nutriment values and ingredient text and emits a per-100 g estimate. The lactose and casein estimators detect dairy markers across English / German / French (
milk,cheese,butter,mozzarella,vollmilch,käse,lait,fromageand others) and route through one of six branches based on whether dairy is the lead ingredient, an early ingredient, mid-list, or a trace mention. - Category anchor + AI cross-check — runs after ~2–5 s, server-side. The AI assistant returns a per-100 g estimate for each detected trigger. A resolver then matches the food against ~30 published category anchors per trigger (whole milk, sweetened condensed milk, milk chocolate, dry pasta, sourdough bread, beer, soy sauce, etc.) and either trusts the AI value if it falls in the literature plausibility window, snaps to the anchor if the AI is far off, or clamps to a soft ceiling if the AI looks implausibly high.
- Known-product safety floor — for the most-scanned branded products (Big Mac, Whopper, Quarter Pounder, McNuggets, Subway, pizza slice, Coca-Cola, Red Bull, espresso), we publish a recalibrated per-100 g floor based on the chain's nutrition disclosure + USDA FoodData Central + per-component arithmetic (e.g. "Big Mac bun set ~85 g × 6 % gluten = 5.1 g per sandwich = 2.4 g/100 g"). The floor is a minimum — the AI can refine upward if it finds reason to, but the displayed value will never drop below the floor for these products.
- The error-direction rule — the most important rule. For severe-allergy / safety-critical triggers (gluten in coeliac, true allergens like peanut / tree-nut / fish / shellfish, sulfites for asthmatics), our estimators, AI prompts, and safety floors all err on the high side. Underestimating these triggers can cause real harm; overestimating only inconveniences the user. For dose-dependent FODMAPs (lactose, fructose, polyols), we aim for the mid-range — the Monash FODMAP serving thresholds give a built-in safety buffer that absorbs ~30 % under-counting.
Acceptable-error bands per trigger (the safety contract)
These bands are the operational definition of "correct" that our regression test suite enforces. Every test fixture asserts a literature-grounded range; the bands here are how wide a given range can be. The test suite blocks every code change via continuous integration — a change that takes any fixture's displayed value below its safety threshold blocks the merge.
| Trigger category | Triggers | Underestimate tolerance | Overestimate tolerance |
|---|---|---|---|
| Coeliac / severe allergy | Gluten (coeliac), Peanut, Tree-nut, Fish, Shellfish, Sesame, Mustard, Celery, Lupin, Egg, Soy, Milk-protein (casein/whey for allergic users), Alpha-gal, Sulfites | 0 % — never under | up to 3× |
| Dose-dependent FODMAP | Lactose (intolerance), Fructose, Fructans, Galactans, Sorbitol, Mannitol, Polyols | up to 30 % under | up to 3× |
| Biogenic amines / additives | Histamine, Tyramine, Caffeine, Nitrates, Benzoates, MSG | up to 20 % under | up to 5× |
| Functional / quality-of-life | Salicylates, Oxalates, Tannins | up to 30 % under | up to 5× |
| Genetic / lineage-dependent | A1 β-casein | up to 50 % under | up to 3× |
| True allergens (presence-only) | Peanut, Tree-nut, Fish, Shellfish, Sesame, Mustard, Celery, Lupin, Egg, Soy, Alpha-gal | PRESENCE only — dose immaterial; if any keyword/anchor fires, classification = AVOID regardless of number | |
Operational definition: for every test fixture, the displayed per-100 g value must satisfy displayed ≥ literature_low × (1 − under_tolerance) AND displayed ≤ literature_high × (1 + over_tolerance). For true allergens, we assert the classification ("AVOID") rather than a numeric range.
What we do not claim to do
- Diagnose food intolerances. That's a job for a doctor or registered nutritionist with access to elimination diets, hydrogen breath tests, IgE / IgG panels, and your medical history. NutriMatch is a tool for noticing patterns that you can then bring to a professional.
- Replace label reading. Open Food Facts is community-maintained and occasionally out of date. For severe allergies, always read the physical label.
- Quantify the specific batch on your shelf. Lactose content of a particular yoghurt brand can vary from one production run to another. Histamine in a single tuna can vary by 10× depending on storage. We display average data; your bottle / can / pack may differ.
- Be a medical device. NutriMatch is not registered with the FDA, EMA, or under the EU MDR. We don't take measurements, we don't treat conditions, we don't replace diagnostic equipment.
Citation index
The full primary-source list (alphabetical by first author):
- Adolfsson O et al. 2004. Yogurt and gut function. Am J Clin Nutr 80(2):245–256.
- Awad A 1991. Sorbitol content of commercial diet jams. J Pediatr Gastroenterol Nutr 13(3):286.
- Biesiekierski JR et al. 2011. Quantification of fructans, galacto-oligosaccharides and other short-chain carbohydrates in processed grains and cereals. J Hum Nutr Diet 24(2):154–176.
- Born P 2007. Carbohydrate malabsorption in patients with non-specific abdominal complaints. World J Gastroenterol 13(43):5687–5691.
- Caroli AM et al. 2009. Invited review: Milk protein polymorphisms in cattle. J Dairy Sci 92(11):5335–5352.
- Chin JM et al. 2008. Caffeine content of brewed teas. Food Addit Contam A 25(2):144–151.
- Costa CS et al. 2018. Consumption of ultra-processed foods and body fat during childhood and adolescence. Public Health Nutr 21(1):148–159.
- Crozier TWM et al. 2012. Espresso coffees, caffeine and chlorogenic acid intake. J Funct Foods 4(4):846–852.
- EFSA 2015. Scientific Opinion on the safety of caffeine. EFSA Journal 13(5):4102.
- Embuscado ME, Patil SK 2001. Polyols and other sweeteners. In Nabors LO (ed.), Alternative Sweeteners 3rd ed., Ch. 12.
- EU Regulation 41/2009. Composition and labelling of foodstuffs suitable for people intolerant to gluten.
- EU Regulation 1333/2008. Food additives.
- EU Regulation 1924/2006. Nutrition and health claims made on foods.
- FDA 21 CFR 101.60. Nutrient content claims for the calorie content and sugar content of foods.
- Gobbetti M et al. 2014. How the sourdough may affect the functional features of leavened baked goods. Annu Rev Food Sci Technol 5:69–88.
- Jenkins DJA et al. 1981. Glycemic index of foods. Am J Clin Nutr 34(3):362–366.
- Kamiński S et al. 2007. Polymorphism of bovine beta-casein and its potential effect on human health. J Appl Genet 48(3):189–198.
- Komprda T et al. 2004. Tyramine and other biogenic amines in dry-cured fermented sausages. Meat Sci 67(4):607–616.
- Konakovsky V et al. 2011. Determination of histamine and biogenic amines in wine. Food Addit Contam 28(4):408–416.
- Linares DM et al. 2011. Biogenic amines in dairy and fermented foods. Curr Opin Biotechnol 22(2):148–154.
- Maeda T et al. 2013. Gluten content in soy sauce. J Food Prot 76(9):1626–1629.
- McCabe-Sellers B et al. 2006. Tyramine in foods and monoamine oxidase inhibitor drugs. J Food Compos Anal 19(Suppl):S58–S65.
- Monash University FODMAP database. monashfodmap.com
- Monteiro CA et al. 2019. Ultra-processed foods, diet quality, and health using the NOVA classification. BMJ 365:l1949.
- Mozaffarian D et al. 2010. Changes in diet and lifestyle and long-term weight gain in women and men. NEJM 363:2392–2404.
- Muir JG et al. 2007. Fructan and free fructose content of common Australian vegetables and fruit. J Agric Food Chem 55(16):6619–6627.
- Picariello G et al. 2015. Gluten reduction in beer: a comprehensive review. Food Chem 187:33–43.
- Roberfroid MB 2007. Inulin-type fructans: functional food ingredients. J Nutr 137(11):2493S–2502S.
- Sánchez-Pérez S et al. 2018. Biogenic amines in plant-based fermented foods. Foods 7(6):91.
- Sandoval-Insausti H et al. 2020. Ultra-processed food consumption and incident frailty. J Nutr 150(11):2972–2981.
- Sentko A, Willibald-Ettle I 2012. Isomalt and other polyol sweeteners in food applications. In O'Donnell K, Kearsley MW (eds.), Sweeteners and Sugar Alternatives in Food Technology 2nd ed., Ch. 10.
- Skoog SM, Bharucha AE 2008. Fructose absorption in patients with chronic abdominal symptoms. Am J Gastroenterol 103(9):2354–2360.
- Slimani N et al. 2009. Contribution of highly industrially processed foods to the EU diet. Eur J Clin Nutr 63(Suppl 4):S206–S225.
- Souci SW, Fachmann W, Kraut H 2008. Food Composition and Nutrition Tables (Souci-Fachmann-Kraut) 7th ed. Stuttgart: MedPharm.
- UK FSA Front-of-Pack Nutrition Labelling Guidance, 2016.
- USDA FoodData Central. fdc.nal.usda.gov
- Walstra P et al. 2006. Dairy Science and Technology 2nd ed. CRC Press.
- White JS 2008. Straight talk about high-fructose corn syrup. Am J Clin Nutr 88(6):1716S–1721S.
- WHO/FAO 2003. Diet, Nutrition and the Prevention of Chronic Diseases. WHO Technical Report Series 916.
- Wieser H 2007. Chemistry of gluten proteins. Cereal Chem 84(2):175–183.
- Wong WK 2018. Polyol content of sugar-free chewing gums. Eur Food Res Technol 244:1027–1035.
- Wrolstad RE 1981. Sorbitol content of fruit. J Food Sci 46(6):1733–1735.
NutriMatch is a lifestyle app, not a substitute for a medical diagnosis. Values are estimates based on average data. If you suspect food intolerances, consult a doctor or nutritionist.