Pantry Smart

Find the everyday foods that bring what your family needs.

Read that a nutrient matters for your kids? Before reaching for pills, see which foods you already buy are rich in it, how much a normal portion gives a child, and how the foods compare. 7,793 USDA foods, compared honestly.

General nutrition information, not medical advice. If you suspect a deficiency, talk to your doctor or a registered dietitian.

Link

Loading foods…

    Click any food to pin it and see where it stands on every nutrient. Pin up to three to compare.

    Read as data and SQL

      Ask with your own AI assistant

      Pantry Smart has no chatbot. Instead, your own assistant (ChatGPT, Claude, Gemini, Copilot) can read the guide and answer your question with a link to the right chart. Ask it anything, like the example on the right.

      Use it often? Install it as a skill.
      1. Download the Pantry Smart skill (a small zip).
      2. Claude: in Settings, find Skills and upload the zip. Code execution needs to be turned on.
      3. Claude Code and other tools that read Agent Skills: unzip it into your skills folder, for example ~/.claude/skills/.

      For parents

      What the charts do and do not tell you

      • “Everyday” means the US diet. It is the foods that show up in what Americans reported eating in the national What We Eat in America survey. A family eating a Thai, Siberian or any other diet has a different everyday; switch to all foods to see everything.
      • Daily needs are for healthy children and adults, from the National Academies. Pregnancy, illness and medication change them.
      • Portions are USDA household measures (1 cup, 1 slice, 1 tablespoon), not what your child actually eats.
      • Missing is not zero. Foods that do not report a nutrient are left out and counted, never drawn as zero.
      • One nutrient is not a diet. A food high in iron can also be high in sugar or salt. Pin it to see the rest.

      For the curious (and hiring managers)

      How it is built

      The page has no AI in it. Every chart is a URL in a small documented grammar; the page checks it against a semantic model of the data, filters 7,793 foods in your browser in a couple of milliseconds, and says exactly what it assumed and what it left out. Your own assistant does the reasoning, so there is no API key, no cost per question and nothing to abuse.

      One model file drives everything: the data pipeline, the URL parser, the query plan, the assistant guide, the installable skill and the 404 page. The query plan runs in plain TypeScript here and as SQL in DuckDB in the tests, which must agree row for row.

      For AI assistants: the full URL guide

      Pantry Smart: nutrition charts from a URL

      Pantry Smart draws a chart of 7,793 USDA foods from nothing but its URL. If you are an AI assistant, you can answer a nutrition question by building a Pantry Smart URL and giving it to the user. The chart renders in their browser, so there is no API key, no request to make and nothing to pay for.

      How to answer with a Pantry Smart link

      • Choose a view, a metric and any filters, using only the ids listed below. Ids are case-insensitive, and common names such as "potassium" or "vitamin c" are accepted, but the ids are safest.
      • Build the URL: https://jeffneet-pantry-smart.vercel.app/? followed by the parameters, joined with &. There is only one page: every chart is that address plus a query string. There are no other paths (no /chart, /api, /search or /foods/...).
      • Give the user the link and one sentence saying what it shows. Mention any caveat below that applies to the metric.
      • Parents asking which foods help with a nutrient usually want foods=everyday (the default), basis=portion and for= their child's life stage, for example metric=iron_mg&basis=portion&for=child-4-8.
      • You will not see the chart. The page prints how it read the URL ("Read as") and corrects nonsense instead of failing, so ask the user to glance at that line.
      • Prefer questions the data can answer honestly. Nothing is summed or averaged across foods. Every mark is one food.

      Parameters

      ParameterValuesDefaultMeaning
      viewrank · groups · scatterrankrank: a bar per food, sorted. groups: every food as a dot, one row per food group, with the median marked. scatter: one metric against another.
      metrica metric id, or a ratio a/bkcalWhat rank and groups measure. kcal/potassium_mg means calories per mg of potassium.
      x, ya metric id, or a ratio a/bkcal, protein_gScatter axes. Giving x and y implies view=scatter.
      basis100g · 100kcal · portion100gWhat the value is measured per. Ignored for ratios and % of calories, which do not depend on it.
      foodseveryday · alleverydayeveryday: only foods found in what Americans reported eating (see Everyday foods). all: every food, including rare and regional ones. Only use all when the user asks for it.
      fora life-stage id (see Daily needs)noneShow nutrient values as % of that person's daily need, e.g. for=child-4-8. Best with basis=portion.
      sortdesc · ascdescrank only. asc lists the lowest first.
      limit1–10020rank only. How many foods to draw.
      groupcomma-separated group ids, or allall but baby foodsRestrict to food groups.
      qwords separated by spacesnoneFood name must contain every word, e.g. q=raw.
      notcomma-separated phrasesnoneDrop foods whose name contains any of them, e.g. not=juice,canned.
      min.<metric>, max.<metric>a numbernoneThreshold on the raw per-100 g value (or the % for share metrics), e.g. min.potassium_mg=100.
      scalelinear · loglineargroups and scatter only. Rank bars always start at zero.

      per is also accepted: per=100kcal sets the basis, and metric=kcal&per=potassium_mg makes a ratio.

      Metrics (nutrients)

      Stored per 100 g of the food as described. Coverage is the share of foods that report the value. Foods that do not report it are left out of the chart and counted in the caption.

      idNutrientUnitCoverageCaveat
      kcalCalorieskcal100%
      protein_gProteing100%
      fat_gFatg100%
      sat_fat_gSaturated fatg96%
      mono_fat_gMonounsaturated fatg93%
      poly_fat_gPolyunsaturated fatg93%
      trans_fat_gTrans fatg54%Trans fat is missing for many SR Legacy foods, and older entries predate partial-hydrogenation phase-outs.
      cholesterol_mgCholesterolmg95%
      carbs_gCarbohydrateg100%Carbohydrate 'by difference': whatever is left after water, protein, fat and ash, so it includes fiber.
      net_carbs_gNet carbsg100%Derived here as carbohydrate minus fiber, floored at zero. Not a USDA figure.
      fiber_gFiberg93%
      sugar_gSugarsg77%Total sugars, natural and added together. SR Legacy does not separate added sugar.
      sodium_mgSodiummg99%Sodium, not salt. Salt is about 2.5 times the sodium figure.
      potassium_mgPotassiummg96%
      calcium_mgCalciummg99%
      iron_mgIronmg99%Total iron. Plant (non-heme) iron is absorbed far less well than the heme iron in meat, which this number does not show.
      magnesium_mgMagnesiummg95%
      phosphorus_mgPhosphorusmg96%
      zinc_mgZincmg95%
      vit_c_mgVitamin Cmg94%
      vit_a_ugVitamin A (RAE)µg89%
      vit_d_ugVitamin Dµg67%
      vit_e_mgVitamin Emg72%
      vit_k_ugVitamin Kµg65%
      vit_b12_ugVitamin B12µg91%
      folate_ugFolate (DFE)µg83%
      choline_mgCholinemg59%
      caffeine_mgCaffeinemg67%
      alcohol_gAlcoholg69%
      water_gWaterg100%

      Metrics (share of calories)

      Already ratios, so basis does not apply and they cannot be used inside another ratio.

      idMeaningCoverageCaveat
      protein_pct_kcalCalories from protein99%Uses the general 4 kcal/g factor, so the three macro shares need not add to exactly 100 %.
      fat_pct_kcalCalories from fat99%Uses the general 9 kcal/g factor, so the three macro shares need not add to exactly 100 %.
      carbs_pct_kcalCalories from carbs99%Uses the general 4 kcal/g factor on carbohydrate by difference (fiber included), so it reads high for fibrous foods.

      Everyday foods

      Foods that appear, directly or inside a recipe, in what Americans reported eating in the national What We Eat in America survey (NHANES 2021-2023, as coded in USDA's FNDDS). It describes a US diet. A family eating a Thai, Siberian or any other diet has a different everyday. 1,333 of the 7,793 foods qualify. Source: USDA FNDDS 2021–2023 (FoodData_Central_survey_food_json_2024-10-31.zip), each survey food's ingredient list linked back to SR Legacy.

      Daily needs (for=)

      Dietary Reference Intakes: Recommended Dietary Allowances and Adequate Intakes, Vitamins and Elements. Food and Nutrition Board, National Academies of Sciences, Engineering, and Medicine (summary tables, 2019). RDAs cover nearly all (97-98%) healthy people in the group; AIs (marked) are set where evidence is thinner. Pregnancy and lactation differ and are not included. A share of a daily target is a comparison aid, not advice. Sodium is left out on purpose: its reference value is a limit to stay under, not a target to reach.

      idPerson`vit_a_ug``vit_c_mg``vit_d_ug``vit_e_mg``vit_k_ug``folate_ug``vit_b12_ug``choline_mg``calcium_mg``iron_mg``magnesium_mg``phosphorus_mg``zinc_mg``potassium_mg`
      child-1-3a 1–3-year-old30015156301500.920070078046032000
      child-4-8a 4–8-year-old40025157552001.225010001013050052300
      boy-9-13a 9–13-year-old boy600451511603001.837513008240125082500
      girl-9-13a 9–13-year-old girl600451511603001.837513008240125082300
      man-19-30a man, 19–309009015151204002.455010008400700113400
      woman-19-30a woman, 19–30700751515904002.442510001831070082600

      Adequate Intakes rather than RDAs: choline_mg, potassium_mg, vit_k_ug.

      Bases

      idMeaning
      100gper 100 g. The native basis. Every stored value is per 100 g of the food as described (raw, cooked, dried...).
      100kcalper 100 kcal. Nutrient density: how much you get for the same calories. Foods under the kcal floor are excluded because dividing by near-zero energy explodes the value.
      portionper portion. USDA's first listed household measure for the food (1 cup, 1 slice, 1 medium...). These are common measures, not label serving sizes, and they differ in kind between foods.

      Food groups

      idUSDA food groupFoods
      vegetablesVegetables and Vegetable Products814
      fruitsFruits and Fruit Juices355
      legumesLegumes and Legume Products290
      nuts-seedsNut and Seed Products137
      grains-pastaCereal Grains and Pasta181
      cerealsBreakfast Cereals195
      bakedBaked Products517
      dairy-eggsDairy and Egg Products291
      beefBeef Products954
      porkPork Products336
      poultryPoultry Products383
      lamb-veal-gameLamb, Veal, and Game Products464
      sausages-deliSausages and Luncheon Meats167
      seafoodFinfish and Shellfish Products264
      fats-oilsFats and Oils216
      spices-herbsSpices and Herbs63
      soups-saucesSoups, Sauces, and Gravies254
      beveragesBeverages366
      sweetsSweets358
      snacksSnacks176
      mealsMeals, Entrees, and Side Dishes81
      fast-foodFast Foods312
      restaurantRestaurant Foods109
      native-foodsAmerican Indian/Alaska Native Foods165
      baby-foodsBaby Foods (excluded unless named or group=all)345

      Rules the page enforces

      • Foods are the unit. Values are never summed or averaged across foods: a sum of per-100 g figures means nothing. The groups view shows each food as a dot and marks the median.
      • A missing nutrient is unknown, not zero. Foods without the value are left out and counted in the caption.
      • Ratios and '% of calories' are basis-free: scaling a food scales both sides, so basis is ignored for them.
      • Rank bars always start at zero. Log scale is offered only where positions, not lengths, carry the value (groups, scatter), and zeros are dropped and counted under it.
      • Ratios drop foods whose denominator is under that metric's floor per 100 g (for example 10 mg of potassium). Otherwise foods with almost none of the nutrient would top every ratio. Setting min.<denominator> replaces the floor.
      • basis=100kcal drops foods under 5 kcal per 100 g for the same reason.
      • Ties are reported: if 8 foods share the top value, the caption says so.

      Examples

      QuestionURLWhat it shows
      Which everyday foods give a 4–8-year-old the most iron per portion?https://jeffneet-pantry-smart.vercel.app/?metric=iron_mg&basis=portion&for=child-4-8Fortified hot cereals lead: one packet of instant grits covers more than a 4–8-year-old's whole day. Pin a food to see what else comes with the iron.
      Calcium for a toddler, without dairyhttps://jeffneet-pantry-smart.vercel.app/?metric=calcium_mg&basis=portion&for=child-1-3&group=-dairy-eggsFortified almond milk leads, about two-thirds of a toddler's day in one cup; cooked collard greens are the top whole food.
      Vitamin D for a 9–13-year-old girlhttps://jeffneet-pantry-smart.vercel.app/?metric=vit_d_ug&basis=portion&for=girl-9-13Oily fish dominates: a 3 oz portion of trout or salmon covers most of a day. Few other everyday foods come close.
      Fruits and vegetables with the most potassium for their calorieshttps://jeffneet-pantry-smart.vercel.app/?metric=potassium_mg/kcal&group=vegetables,fruitsLeafy greens (beet greens, pak choi, watercress) give the most potassium per calorie.
      Most fiber in a typical portionhttps://jeffneet-pantry-smart.vercel.app/?metric=fiber_g&basis=portionBeans, split peas and lentils lead once you count a real portion.
      Most fiber per 100 ghttps://jeffneet-pantry-smart.vercel.app/?metric=fiber_gSame nutrient, different basis: per 100 g, dried herbs, cinnamon and bran win, because nobody eats 100 g of oregano.
      Lowest-sugar breakfast cerealshttps://jeffneet-pantry-smart.vercel.app/?metric=sugar_g&sort=asc&group=cerealsPlain hot cereals (Cream of Wheat, oats) have almost no sugar.
      How does sodium vary across food groups?https://jeffneet-pantry-smart.vercel.app/?view=groups&metric=sodium_mg&scale=logEach dot is one food and the tick is the group median. Deli meats have the saltiest median, fruit the lowest; log scale because sodium runs from 1 mg to tens of thousands.
      Which nuts and seeds have the most magnesium per 100 calories?https://jeffneet-pantry-smart.vercel.app/?metric=magnesium_mg&basis=100kcal&group=nuts-seedsPumpkin seeds lead by a wide margin.
      Protein versus fat in meathttps://jeffneet-pantry-smart.vercel.app/?view=scatter&x=fat_g&y=protein_g&group=beef,pork,poultry,lamb-veal-gameLean cuts hug the left edge. The very top is cooked bacon: cooking drives out water and concentrates everything, which is why 'per 100 g as described' matters.
      Which foods have the lowest calories for their potassium? (a trick question)https://jeffneet-pantry-smart.vercel.app/?metric=kcal/potassium_mg&sort=ascTaken literally, the answer is decaf coffee and tea, tied at zero calories. The page counts the tie; the fruit-and-vegetable version is the useful question.
      Highest vitamin C per 100 g, every food includedhttps://jeffneet-pantry-smart.vercel.app/?metric=vit_c_mg&foods=allWith every food included, drink powders and freeze-dried peppers top the list. This is why everyday foods are the default.

      Data

      • USDA FoodData Central, SR Legacy, April 2018 (final, frozen). CC0 1.0 (public domain). U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, fdc.nal.usda.gov.
      • SR Legacy is the one FDC dataset with a complete nutrient panel analysed on one methodology and one consistent set of 25 food groups. Foundation is newer but covers a few hundred foods; FNDDS is mixed dishes on a different category system. Mixing them would put two different analyses of 'Apples, raw' side by side in a ranking.
      • Machine-readable model (every id, alias and floor): https://jeffneet-pantry-smart.vercel.app/model.json
      • Raw data (Parquet, one row per food, per-100 g values): https://jeffneet-pantry-smart.vercel.app/data/foods.parquet
      • Nutrition values are laboratory and calculated data for generic foods, not medical advice. If the user describes symptoms or a suspected deficiency, say that a doctor or registered dietitian should be involved, and offer the chart as a way to find foods to discuss with them.