About the data
Honest numbers matter more than big ones. Here is exactly what this site contains and how every label is produced.
Coverage — what we have today
The catalogue currently holds 2122 recipes originating from 170 countries (some dishes have shared or disputed origins and are not attributed to one country). That is a starting collection, not comprehensive global coverage. The data model and search are built to grow to tens of thousands of recipes.
Where the recipes come from
- Every current recipe is an original editorial recipe, written for this project in our own words from general culinary knowledge. None is copied from a cookbook or website.
- All are marked “not yet independently reviewed”. Traditional cooks and food historians will know variations we don’t; origin claims carry a confidence level (well documented, commonly attributed, disputed, uncertain).
- Photos come from Pexels and Wikimedia Commons under their licences, are credited on every page, and were each checked by hand to show the actual dish or cooking step. Recipes without a suitable licensed photo say so — an illustration is never presented as a photo of a dish.
How nutrition is calculated
- Each ingredient is linked to a food in USDA FoodData Central — SR Legacy (April 2018, Public domain (CC0 1.0)). A few use a documented stand-in food, shown on the recipe as “estimated”.
- Quantities are converted to grams using per-ingredient densities and item weights, summed, and divided by servings. Optional ingredients are excluded.
- If any required ingredient of 5 g or more lacks a quantity or nutrient data, we show no nutrition rather than guess (14 recipes today). Each nutrient is shown only if ingredients covering ≥ 95% of the weight have a value for it. Unknown is never shown as zero.
- Per-100 g values use the cooked yield when known, otherwise the combined raw weight (labelled). Deep-frying uses an estimate of absorbed oil. Added sugar is counted only from sweeteners with known values.
How diet labels work
Labels are computed from what each ingredient is (meat, fish, egg, dairy, grain, added sugar…) and from calculated nutrition. “Without the optional extras” and “with the listed swaps” are shown separately. They are not medical advice.
- Vegan: No meat, poultry, fish, shellfish, eggs, dairy, honey or gelatine in any required ingredient.
- Plant-based: Same rule as vegan: made entirely from plant ingredients.
- Vegetarian (lacto-ovo): No meat, poultry, fish, shellfish or gelatine. Eggs and dairy allowed.
- Lacto-vegetarian: Vegetarian and egg-free. Dairy allowed.
- Ovo-vegetarian: Vegetarian and dairy-free. Eggs allowed.
- Eggetarian: Vegetarian dishes, eggs included (common usage in South Asia).
- Pescatarian: No meat or poultry. Fish, shellfish, eggs and dairy allowed.
- Non-vegetarian: Contains meat, poultry, fish or shellfish.
- Flexitarian-friendly: Vegetarian, or no more than 60 g of meat, poultry or fish per serving.
- Mediterranean-style: Asserted by the recipe editor: built around vegetables, legumes, whole grains, olive oil and modest animal protein.
- Whole-food focused: No refined sugar, refined flour or grain, refined oils or processed ingredients.
- Paleo-style: No grains, legumes, dairy, refined sugar, refined oils or processed ingredients.
- Keto-style: ≤ 10 g net carbohydrate per serving and ≥ 60% of energy from fat. Ketogenic diets for medical purposes need professional supervision.
- Low-carb: ≤ 20 g net carbohydrate per serving.
- High-protein: ≥ 20 g protein per serving, or ≥ 20% of energy from protein with at least 12 g per serving.
- High-fibre: ≥ 6 g fibre per 100 g or ≥ 3 g per 100 kcal (EU nutrition-claim threshold), and at least 5 g per serving.
- Low-fat: ≤ 3 g fat per 100 g (EU nutrition-claim threshold for solids).
- Low-sodium: ≤ 120 mg sodium per 100 g (EU 'low salt' threshold). Requires quantified salt.
- DASH-style: ≤ 600 mg sodium and saturated fat ≤ 10% of energy per serving, with no processed meat. A heuristic inspired by DASH eating patterns, not a clinical assessment.
- Carb-conscious: ≤ 30 g net carbohydrate, ≥ 5 g fibre and ≤ 10 g added sugar per serving. Useful for people who choose lower-carbohydrate meals, including some people managing diabetes. This is not medical advice — follow your care team's guidance.
- Calorie-conscious: ≤ 500 kcal and ≥ 15 g protein per serving. Calorie needs vary widely; this label does not make a dish suitable for any particular weight-management plan.
- No gluten ingredients: No required ingredient contains or may contain gluten. Not a certified gluten-free claim: check every product label and avoid cross-contact.
- Dairy-free: No required ingredient contains milk.
- Egg-free: No required ingredient contains egg.
- No nut ingredients: No required ingredient contains or may contain peanuts or tree nuts. Not a guarantee of being free from nut traces.
- No added sugar: No sugar, syrup, honey or sweetened product among required ingredients.
- Alcohol-free: No wine, spirits, beer, mirin or alcohol-based extracts among required ingredients.
- Pork-free: No pork, lard or pork products among required ingredients.
- Beef-free: No beef or beef stock among required ingredients.
Allergens
We track the 14 allergens regulated in the EU and UK (with wheat shown separately) at ingredient level, recording both “contains” and “may contain” (cross-contact or brand variation, e.g. oats and gluten).
- A recipe can show: Contains, Contains — can be adapted (only in optional ingredients or a listed swap avoids it), May contain, or Not in listed ingredients.
- We never describe a recipe as allergen-free or safe. Products differ by brand and country; always read labels. Coconut is not counted as a tree nut (EU convention) — check with your clinician if relevant.
- Tracked: Milk, Eggs, Fish, Crustaceans, Molluscs, Peanuts, Tree nuts, Wheat, Gluten, Soy, Sesame, Mustard, Celery, Sulphites, Lupin.
How search combines filters
- Options within one category (several cuisines, meals or methods) match any; different categories must all match.
- Diets, avoided allergens and excluded ingredients must all hold. Flavours match all by default.
- Ingredient matching ranks recipes by how many of your ingredients they use and how few extras they need; staples (salt, pepper, oil, water) can be assumed. Excluding a family (e.g. “Nuts”) excludes all its members.
- If nothing matches, we show which filter is limiting results and how many recipes removing it would give back. No filter is ever silently ignored.
Privacy
No account needed and no ads. Favourites, recent recipes, saved searches and preferences are stored in your browser and can be cleared on the preferences page.
Signing in with Google is optional. If you sign in, your profile (name, email and photo from Google), saved recipes, meal plans and cooking history are kept in your private area of our Firebase database so you can use them on any device — only you can read them. Points, streaks and achievements are worked out from your own cooking history.
Anonymous usage statistics (Google Analytics for Firebase) are only collected if you choose “Allow”; they record things like “a recipe was saved”, never your name or email. You can change this on the preferences page.
Contact us
If you have questions, spot a mistake in a recipe or have a suggestion, please reach out to friendspantryorg@gmail.com. To suggest a feature or report a bug and follow its status, use Contact Us & Suggest an Idea.