Show HN: OpenNutrition – A free, public nutrition database (opennutrition.app)
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, h...
159 comments
[ 3.4 ms ] story [ 190 ms ] threadAlso, 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.
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.
> 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.
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.
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.
(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!)
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.
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.
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.
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.
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.
>> 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!
> 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.
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!
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.
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?
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...
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.
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.
https://openfoodfacts.github.io/openfoodfacts-server/api/
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.
The USDA nutritional database is a nightmare to query.
Background removal lambda if you want to check that out: https://github.com/joshdickson/rembg-lambda