Today I’m excited to launch OpenNutrition: a free, ODbL-licenced nutrition database of everyday generic, branded, and restaurant foods, a search engine that can browse the web to import new foods, and a companion app that bundles the database and search as a free macro tracking app.
Consistently logging the foods you eat has been shown to support long-term health outcomes (1)(2), but doing so easily depends on having a large, accurate, and up-to-date nutrition database. Free, public databases are often out-of-date, hard to navigate, and missing critical coverage (like branded restaurant foods). User-generated databases can be unreliable or closed-source. Commercial databases come with ongoing, often per-seat licensing costs, and usage restrictions that limit innovation.
As an amateur powerlifter and long-term weight loss maintainer, helping others pursue their health goals is something I care about deeply. After exiting my previous startup last year, I wanted to investigate the possibility of using LLMs to create the database and infrastructure required to make a great food logging app that was cost engineered for free and accessible distribution, as I believe that the availability of these tools is a public good. That led to creating the dataset I’m releasing today; nutritional data is public record, and its organization and dissemination should be, too.
What’s in the database?
- 5,287 common everyday foods, 3,836 prepared and generic restaurant foods, and 4,182 distinct menu items from ~50 popular US restaurant chains; foods have standardized naming, consistent numeric serving sizes, estimated micronutrient profiles, descriptions, and citations/groundings to USDA, AUSNUT, FRIDA, CNF, etc, when possible.
- 313,442 of the most popular US branded grocery products with standardized naming, parsed serving sizes, and additive/allergen data, grounded in branded USDA data; the most popular 1% have estimated micronutrient data, with the goal of full coverage.
Even the largest commercial databases can be frustrating to work with when searching for foods or customizations without existing coverage. To solve this, I created a real-time version of the same approach used to build the core database that can browse the web to learn about new foods or food customizations if needed (e.g., a highly customized Starbucks order). There is a limited demo on the web, and in-app you can log foods with text search, via barcode scan, or by image, all of which can search the web to import foods for you if needed. Foods discovered via these searches are fed back into the database, and I plan to publish updated versions as coverage expands.
- Search & Explore: https://www.opennutrition.app/search
- Methodology/About: https://www.opennutrition.app/about
- Get the iOS App: https://apps.apple.com/us/app/opennutrition-macro-tracker/id...
- Download the dataset: https://www.opennutrition.app/download
OpenNutrition’s iOS app offers free essential logging and a limited number of agentic searches, plus expenditure tracking and ongoing diet recommendations like best-in-class paid apps. A paid tier ($49/year) unlocks additional searches and features (data backup, prioritized micronutrient coverage for logged foods), and helps fund further development and broader library coverage.
I’d love to hear your feedback, questions, and suggestions—whether it’s about the database itself, a really great/bad search result, or the app.
1. Burke et al., 2011, https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3268700/
2. Patel et al., 2019, https://mhealth.jmir.org/2019/2/e12209/
This is not a dataset. This is an insult to the very idea of data. This is the most anti-scientific post I have ever seen voted to the top of HN. Truth about the world is not derived from three LLMs stacked on top of each other in a trenchcoat.
I use the dataset every day, and when I find something unexpected, it's generally been my own understanding of the food's contents and not a database inaccuracy, although those certainly do exist and I squash them whenever I see a report.
Adding an LLM to this just adds a unnecessary layer of complexity, for what benefit? For street cred?
Millions of people use food logging apps to drive behavioral change and help adhere to healthy lifestyles. I believe there is immense societal good in continuing to offer improved tools to accomplish this, especially for free, and that's why I created the project and chose to open source the data.
https://www.opennutrition.app/about#current-state-of-nutriti...
https://www.reddit.com/r/ABoringDystopia/comments/1jq8kzl/th...
>> Foods discovered via these searches are fed back into the database,
Aren’t LLMs also unreliable? How do you ensure the new content is from an authoritative, accurate source? How do you ensure the numbers that make it into the database are actually what the source provided?
According to the Methodology/About page
>> The LLM is tasked with creating complete nutritional values, explicitly explaining the rationale behind each value it generates. Outputs undergo rigorous validation steps,
Those rigorous validation steps were also created with LLMs, correct?
>> whose core innovations leveraged AI but didn’t explicitly market themselves as “AI products.”
Odd choice for an entirely AI based service. First thought I had after reading that was: must be because people don’t trust AI generated information. Seems disengenuous to minimize the AI aspect in marketing while this product only exists because of AI.
Great idea though, thanks for giving it a shot!
Not really. I do explain in the methodology post how good o1-pro is at the task, but there was a lot of manual effort involved in coming to that conclusion with my own effort to review the LLM's reasoning, and even still, o1-pro is not perfect.
>> Outputs undergo rigorous validation steps, including cross-checking with advanced auditing models such as OpenAI’s o1-pro, which has proven especially proficient at performing high-quality random audits.
>> there was a lot of manual effort involved in coming to that conclusion with my own effort to review the LLM's reasoning
So, the randomly audited entries seemed reasonable to you – not even the data itself, just the reasoning about the generated data. Did the manual reviews stop once things started looking good enough? Are the audits ongoing, to fill out the rest of the dataset? Would those be manually double-checked as well?
>> I became interested in exploring how recent advances in generative AI could enable entirely new kinds of consumer products—ones whose core innovations leveraged AI but didn’t explicitly market themselves as “AI products.”
Once again: Why not market this as an AI product? This is LLMs all the way down.
People are already interested in using this dataset. I was. Now, LLM generated “usually close enough to not be actively harmful” data is being distributed as a source for any and all to use. I think your disclaimer is excellent. Does your license require an equivalent disclaimer be provided by those using this data?
Poor phrasing on my end -- yes, absolutely the end data as well as the reasoning, as the reasoning tends to include the final answer.
Maybe I should! Appreciate the feedback.
This looks like a lot of work and good will were poured into it, and I can see how it can be useful to a fitness focused audience.
You control the messaging on the site and in your apps, and you make it clear that this is not authoritative data. Everything built on top of this needs to have the same messaging, but it has probably been ingested into multiple LLMs already.
I think some sort of licensing requirement that the LLM source of this data be prominently disclosed will not keep this from becoming a source of truth for other datasets, products, and services; but, it is still worth the effort. All you can do is all you can do, right?
> TL;DR: They are estimates from giving an LLM (generally o3 mini high due to cost, some o1 preview) a large corpus of grounding data to reason over and asking it to use its general world knowledge to return estimates it was confident in, which, when escalating to better LLMs like o1-pro and manual verification, proved to be good enough that I thought they warranted release.
Most of the data being close enough to be better than nothing and not actively harmful + a disclaimer and the author is absolved of all responsibility!
Even better, this will now be used in all sorts of other apps, analyses, and for training other LLMs! And I expect all those will also prominently include an “all of this was genereated by an LLM” disclamers. For sure.
1. Generic, non-branded foods
2. Simple prepared foods that ease food entry
3. Restaurant foods
4. Micronutrients beyond those reported by the brand.
OFF is a fantastic project but OpenNutrition is really trying to fit a different niche. OFF does what it does very well; I would never be able to use it to track my food intake.
We're happy to cover more use-cases, so feel free to join the project and contribute your time/coding skills to help us solve those issues. https://slack.openfoodfacts.org or https://forum.openfoodfacts.org or directly https://github.com/openfoodfacts
Appreciate the feedback!
> I wanted to investigate the possibility of using LLMs
ah, yeah, I guess it makes sense then...
Edit: Should be patched in Desktop Safari now.
The first item I manually look up is has about double calories listed in the "dataset" versus reality. Honey bunches of oats honey roasted.
OpenNutrition: https://www.opennutrition.app/search/honey-bunches-of-oats-h...
Via Manufacturer: https://www.honeybunchesofoats.com/product/honey-bunches-of-...
If you wouldn't mind DM'ing me the barcode you're looking at that would be helpful to understand what the nature of the discrepancy is.
How can a large egg (50 g) contain 147 g choline?
https://www.opennutrition.app/search/eggs-eeG7JQCQipwf
Additionally, on https://www.opennutrition.app/search/brown-lentils-VwKWF7CQq... it says:
> Unlike larger legumes, they require no pre-soaking and cook in 20-30 minutes, making them ideal for soups, stews, and salads
That is not necessarily true. Based on my experience, it does require pre-soaking, otherwise you will have to cook it for a long time, as opposed to red lentils (which is done under 15 minutes, no pre-soaking needed), although red lentils taste more like yellow peas.
In any case, I think this could be really useful, once accurate enough. One could even implement other features on top, such as a calorie tracker and so forth, but that is a huge project on its own.
I wish you luck!
BTW when you hover over the ingredients, you just get back the name. Are you guys going to do something with it in the future? Right now there is a visual feedback (the cursor changes), but it is not useful yet. I am not entirely sure what I would have expected, perhaps a description of what it is, and upon clicking on it, it could have information gathered from various sources, like examine.com and what have you, but that would be a huge change on its own, the short description upon mouse hover-over should work for now and may not be a huge change.
Right now you'll see that aggregated on some items like this where the reported data is an ensemble of all of the linked resources: https://www.opennutrition.app/search/eggs-eeG7JQCQipwf
Frankly, I just couldn't justify the additional time and monetary expense in doing that if I released this initial version and nobody cared or found it useful. This dataset was also compiled before tools like Claude Citations came out which could make it easier. That is the nature of AI-driven data; I think this is useful now, it is also the worst it will ever be.
Keep it as accurate as possible, and maintainable, and then it will be easy to add larger features. If no one else does, I might add a calorie tracker of some sort, it would be helpful to my mom. It is helpful as it is even now. How difficult would it be to add translations right now? She might look for "tojás" which is "egg" in Hungarian, and I would like her to be able to do that at some point.
Really easy to use (just scan the barcode and you get easily digested data about the product) has every product imaginable, also analyzes cosmetics and best of all, all the basic functionality is free.
Not affiliated, been using it for years at this point and now it's an essential partner when going shopping. That they let people decide their own premium pricing per year is just icing on the cake.
So, very little nutrient info beyond calories and protein. No info about micronutrients. No info about minerals, vitamins, amino acids, fatty acids.
It's useless for nutrition tracking since if you're eating packaged food, then you already have that information yourself.
It doesn't answer basic questions like "I ate 100g of extra firm tofu, how did it move me towards my daily mineral/vitamin targets?"
Many items do have these things.
https://world.openfoodfacts.org/product/5060495116377/huel-b...
But consider that OpenFoodFacts can't give you that info on just about anything else, especially not basic foods like "apples" or "tofu" or "chicken breast".
I'm not dumping on the project. It's really useful to have a database of packaged food labels. It's just not trying to solve this problem.
U.S. law does not require food manufacturers to disclose everything that goes into their products. Under the Code of Federal Regulations (21 CFR § 101.100), there are exemptions to ingredient labeling... An example: flavorings, spices, and incidental additives (like processing aids or anti-caking agents) are not always listed explicitly. Also: proprietary blends and "natural flavors" can legally conceal dozens of chemicals (some synthetic), which consumers have no way of identifying.
Micronutrient data is often estimated or missing from labels and restaurant menus, which limits the accuracy of even the best-intentioned databases. Studies show that the nutritional information provided by restaurants and brands is frequently incomplete or inaccurate, especially when it comes to sodium, sugar, and actual serving sizes. (Urban et al. "The Energy Content of Restaurant Foods Without Stated Calorie Information" ; Labuza et al., 2008 and others)
IMO Food databases are only as accurate as the source data allows. Until food labeling laws mandate full disclosure and third-party verification, apps like this can support health awareness. Still, they shouldn't be treated as precise medical or dietary guidance—particularly for people with allergies, sensitivities, or chronic health conditions that require strict tracking.
I was looking at this page: https://www.opennutrition.app/search/original-shells-cheese-... and saw the amino acid, vitamin, and mineral sections; there are many things listed which aren't covered by the official nutritional data. These entries also have very precise numbers but I'm not sure where and how they're derived and if I could put any serious weight in them. I'd love to hear more if you're willing to share!
You can read about the background on how I did them in more detail in the about/methodology section: https://www.opennutrition.app/about (see "Technical Approach")
My guess is that this dataset is probably more accurate on the whole than many datasets used by the kinds of calorie-tracking apps that outsource their collection of nutrition information to users. But an analysis would be required.
Regardless, the only workable approach is to describe the provenance of your data and explain what steps have been taken to ensure accuracy. Then anyone who wants to use the data can account for that information.
When something doesn't have a reference listed, and just says "sourced from a publicly available first-party datasource", what does that mean? Crawled from other sources and you'd prefer not to say? The wording does feel a little sketchy when contrasted with entries that do list sources.
When something does list references that don't seem super close to the actual food, what is the process like there for interpreting those values? Example, this Chicken Salad inheriting from Chicken Spread: https://www.opennutrition.app/search/chicken-salad-37mAX17YX...
The quality of the data might feel rough now, but I can see this being valuable for our users even if it's just an opt-in "show estimated micronutrients" or something. Would require labeling values as not being directly from a source of truth.
One thing that a lot of people are missing is that there is already a lot of inaccurate nutrition data out there. Even on information directly from the manufacturer, sometimes there are errors, or just old versions of the product that never get scrubbed from the internet (I imagine the latter case would be tricky for an LLM to deal with too). Just logging your dietary intake in any form will get you 80% of the benefit of tracking via some self awareness of your intake. Of course, it's an easy argument to point out that if you had the choice between verified data and fuzzy LLM data, you should go for the human verified data (for now).
> When something doesn't have a reference listed, and just says "sourced from a publicly available first-party datasource", what does that mean?
It depends, and the degree to which it depends is why the citation is ambiguous (although it is true, if imprecise). My goal is to individually cite the individual nutrients but it was simply too costly and time-consuming at the stage of the project at which I did this work.
> what is the process like there for interpreting those values?
Because the degree to which something in the database might be related to those values is so varied, it depends. The reasoning agent had access to those database entires, which is helpful because they tend to contain micronutrient data. It also had access to web data, as well as its own world knowledge, and considers sources in that order. Ultimately it was left up to the agent to decide what the most reasonable fit for each food was, thinking through what an average user likely meant by that entry (e.g. a typical user probably assumes a 'Tomato' is raw), and then to choose the best sources from there. For the chicken salad, it used approximate micronutrient values from the listed references to inform its answer, but adapted the end values for how the dish is described in the description.
> if you had the choice between verified data and fuzzy LLM data, you should go for the human verified data (for now)
Human verification isn't free, and that means it is not available to a lot of people who can't or don't want to pay for something. But if that's something that someone values, I would certainly not diss the human effort!
Also, why the app focus? Having the main functionality exist in the Apple/Android store space rather than as a SaaS option seems like an interesting choice.
I've recently been considering making my own open source nutrition app, (since every single one I've looked at seems to either violate my privacy&security, or is designed/works very poorly), but the available "open" nutrition info databases for bootstrapping have seemed poor.
So I looked at the license of this database, and the idea of making it "open" is good and maybe appropriate. But the attribution requirements to promote this other, commercial, product are a little annoying. And could also be a little confusing in app store listings.
> Attribution Requirements: If you display or use any data from this dataset, you must provide clear attribution to "OpenNutrition" with a link to https://www.opennutrition.app in:
> * Every interface where data is displayed
> * Application store listings
> * Your website
> * Legal/about sections
Additionally, I've soured on single companies that call themselves "open". "Open" has a few-decades history in computers, as everyone realized the dangers and costs of proprietary lock-ins, and so created concepts such as "open systems" and "open standards". Appropriating the "open" term for a single company, for something more proprietary than open (like the very proprietary OpenAI that's mentioned many times in https://www.opennutrition.app/about ), rubs a bit the wrong way.
https://wiki.openfoodfacts.org/ODBL_License
You may disagree with each of those projects as well, but, I am following long-standing licensing in this space. I also have used some OFF data for product naming, and as a result, their terms state I have to maintain their license.
Creating these databases involves a tremendous amount of time and effort, and it would not make sense for me to make this data available to commercial entities to use without attribution. The alternative is not a MIT-licensed dataset, it is no dataset.
I appreciate the difficulty of building a good database. Can you say why you created a new one, rather than starting with OpenFoodFacts? (Was it quality issues? Too hard to update? You wanted additional info? You didn't want their licensing terms? You wanted the advertising boost?)
Maybe that would be a good source to challenge and validate the values provided by your LLM approach.
https://www.mext.go.jp/en/policy/science_technology/policy/t...
Also IDK where AI is wrt automated scraping but I've had some success feeding recipes into AI and getting the nutrition facts out. The ability to plop a URL in and get a scraped recipe with a name and nutrition facts would be immense.
> If I can join the endless queue of feature requests, the ability to scale the portion size and update the nutrition facts would be great
This is all supported in-app if you're in a country with the ability to download it and have iOS (for now). The web product is more of a demo and isn't intended to be used on a day-to-day basis to track your food consumption, but this is a totally reasonable request.
> Also IDK where AI is wrt automated scraping but I've had some success feeding recipes into AI and getting the nutrition facts out. The ability to plop a URL in and get a scraped recipe with a name and nutrition facts would be immense.
I am not doing this for a few reasons, but, you can just screenshot the image of the recipe and use the app to upload that as a meal or recipe and it should parse out the ingredients and portions for you.
Could you possibly add an option to see the nutrient content per 100g serving? This is way more usefull to Europeans than something like a cup as a unit.
In the top-right of the table in the web search, you can change the toggle from "Per Serving" to "Per 100g", though this is just for the table view.
When I first found Cronometer and started using it daily, I did what every developer does and looked at what kind of data exists out there if I wanted to build my own app. The free data from the FDA was pretty bad/limited with massive holes and it would have taken a lot of effort to clean up.
Of course, Cronometer's best data comes from https://www.ncc.umn.edu/food-and-nutrient-database/.
Maybe you can sample your data and validate it against NCC's data via Cronometer to see if your LLM approach has legs when it comes to micronutrients and amino acids. And note that you have AIgen data that NCC's hand-measured database doesn't even have reliably, like choline, which seems like a red flag.
Have you asked one of the LLMs used to tell you about the choline content of a food, even ungrounded? They are surprisingly good at reasoning about what kinds of foods tend to contain large amounts of choline because their training datasets will include all kinds of similar data points, even if the single food you're looking for doesn't have it listed explicitly.
Incidentally o3-mini-high got the fried breakfast I added to a tracking app this morning within 50 calories!
Also, there is an error on this page for me: https://www.opennutrition.app/search?search=Goya
You want to enlarge an ai generated image to know if it matches what you have at home ?
Though I want to add that this is a good application of AI image gen since the images are useful for quick visual confirmation that the item is in the same ballpark of the thing that you think it is.
Calorie burn is dependent on weight and body fat. Individuals who are x+25kg will burn way more calories than x.
For users who come to this site to supplement their weight loss information might be misinformed in their journey, or worse,use it as a primary source and become discouraged because their idea of calorie loss is a little skewed due to the conservative numbers currently shown.
I would hope these people download the free app so they can actually track their food, which has extensive tooling to track weight trends and expenditure changes over time :). But yes, you should be able to customize the assumptions, I just have about 100 more of these things to add and didn't want to wait longer to see feedback.
love the look and i'll keep playing with it but right off the bat i ran into a couple issues:
when i start typing on the search box on the home page it eats the first character (so as i type chicken, what shows up in the next screen's search field is just 'hicken'). and when i search for chicken thigh i don't get any results - seems to just stop filtering? when i press enter in the search field when "chicken thigh" is entered i get a "something went wrong" error.
I can assure you that you are not overthinking it in terms of figuring that information out. The search experience tries to make it as clear and helpful as possible. If you encounter any situations where it could be more clear, I would love to see them. My contact info is in my bio, or there is a feedback prompt on the site/in-app. Thanks again for checking the project out and your feedback.
Red Beans
- https://www.opennutrition.app/search/red-beans-canned-and-dr...
- https://www.opennutrition.app/search/red-beans-dry-vIh9Ofhcl...
Rice
- https://www.opennutrition.app/search/enriched-white-rice-tlA...
(Also I type in Can of coke and it has no results, which is probably an annoying thing to have to map to 330ml Coke, but might be useful on the todo list!)
Nutrient/calorie tracking really only works if you measure the raw inputs or use a packaged product that gives you the info, and I imagine those are also the two cases that the AI can estimate visually.
Logging foods by image is a great way to get started being accountable with eating, and I'll use it if I'm out and don't want to manually figure out all the different components of something, but it's impossible for even the most well-trained human eye to understand food composition visually. A lot of AI-focused diet apps have gone in this direction as their primary method of input because it removes the need for a database, but the marketing these apps run that this is in anyway accurate as a primary search mechanism is, to me, really borders on abject dishonesty and sets users up for long-term failure. Just because an ingredient is invisible when prepared doesn't mean it's not there.
Also, looks like the Apple Health option in Settings actually opens the start-of-week settings modal.
Only using the OFF database would be untenable to me as an end user. I think most people do not want to know or care about where the data is coming from, they just want it to be accurate and easy to use. I've listed the usability reasons here for why I can't offer that how I want with only OFF (and that's no dig to OFF, it is a fantastic project, and a primary motivator for this project and its license structure).
I understand that most people probably consume more whole foods that might not have the cut-and-dry numbers on OFF. It just does feel like a big lacking feature to just categorically exclude OFF, if I wanted to use it.
Equating calories is far less useful since you aren't choosing between eating 100cal of raw bacon vs 100cal of cooked bacon.
And the question you're trying to ask is "what nutrients/calories do my 4 strips of bacon have?"
You don't want to have to cook your bacon and then measure its mass before you know how many calories it has when you can just log the raw form before you cook it.
Having to cook your food first, take it out, measure it, and put it back in the dish you're making before you can estimate content doesn't seem like a recipe (pun) for habit forming here. Nor is it viable for anything but the most basic dishes like individually pan frying large ingredients.
But _not_ one generated by LLMs; at least not LLMs in their current state.
Background removal lambda if you want to check that out: https://github.com/joshdickson/rembg-lambda
The big thing I've realized through this exercise is just how much of a creature of habit I am. Inputting what I've eaten over the previous day is mostly copying and pasting rows from previous days sheets, and I suspect I could simplify input even further. Most people would be in a similar position and should be able to build their own lists by reading the nutritional information already available. When that's not available It doesn't necessarily I found r/caloriecount to be a useful resource. It need not be perfect either, just as long as you're doing it consistently.
The USDA nutritional database is a nightmare to query.