Food Barcode Scanner
Point your camera at any packaged food barcode to view calories, macros, and serving sizes instantly. 100% free, no app required.
Fast and easy food logging
Instead of typing product names and hunting through search lists, simply scan the barcode on packaged items to populate exact nutrition labels. You can adjust serving sizes and log foods straight to your daily diary in one tap.
Works across all your devices
Whether youβre using an iPhone, Android phone, iPad, or laptop with a webcam, the scanner operates smoothly in modern browsers without needing native app installation.
Which barcodes does it read?
The scanner reads the standard retail symbologies printed on food packaging:UPC-A and UPC-E (North America),EAN-13 and EAN-8 (Europe, UK, Australia and most of the world) and JAN codes (Japan). If the camera cannot get a clean read β glossy packaging, a curved bottle, low light β type the digits printed under the bars into the manual lookup box and you will get the same result.
Tips for a faster scan
- Hold the barcode 10β15 cm from the lens and keep it flat and fully in frame.
- Move into brighter light, or tilt the pack slightly to kill glare from a flash.
- On curved cans and bottles, angle the pack so the whole code is in focus at once.
- Allow camera permission when the browser asks β nothing is uploaded or recorded.
Scanned a product that is missing or wrong?
Packaged-food barcodes are looked up in Open Food Facts, a crowd-sourced global database. Coverage is excellent for major brands but a new or regional product may be missing, and label values are only as accurate as whoever entered them. When that happens, search our USDA food database for the underlying ingredient instead β the analytical data there is measured in a lab and is often the better number for whole foods such as chicken breast, rice or oats.
How to read the label the scan pulls in
A scan hands you a label. Four numbers on it do most of the work, and one of them is the one people skip:
- Serving size, in grams. Read this first, always. Everything below it is per serving, not per pack, and "2.5 servings per container" is how a 600-calorie bag reports 240 calories.
- Calories. Multiply by the servings you actually ate before you compare it to anything.
- %DV. The FDA's own rule of thumb: 5% or less of the Daily Value is low in that nutrient, 20% or more is high. It applies to the things you want more of (fibre) and less of (sodium, saturated fat) alike.
- Added sugars. The separate line matters because total sugars include the lactose in milk and the fructose in fruit, which are not the target of any sugar guideline.
Label numbers are rounded by law
US Nutrition Facts panels are rounded to fixed increments under 21 CFR 101.9(c), which is why a scanned product can never be more precise than these bands:
| Nutrient | Rounded to | Declared as zero when |
|---|---|---|
| Calories | Nearest 5 up to 50 kcal, nearest 10 above | Under 5 kcal |
| Total fat | Nearest 0.5 g below 5 g, nearest 1 g above | Under 0.5 g |
| Protein, carbs, fibre, sugars | Nearest 1 g | Under 0.5 g |
| Sodium | Nearest 5 mg up to 140 mg, nearest 10 mg above | Under 5 mg |
The practical consequence: "0 g" on a label means "less than half a gram per serving", not none. Across a day of small servings β cooking spray, creamer, chewing gum β rounded-down zeros add up to real calories, and a product with three servings in the pack rounds three times.
What the barcode number itself tells you
The digits under the bars are a GTIN β a Global Trade Item Number. UPC-A is a 12-digit GTIN-12, EAN-13 a 13-digit GTIN-13, and the short codes on small packs are GTIN-8. Three things about them are worth knowing when a scan does not resolve:
- The last digit is a checksum. It is derived from the others by a modulo-10 calculation, which is how the scanner rejects a misread instead of returning the wrong product. If a manually typed code is refused, you almost certainly transposed a digit.
- The prefix is not a country of origin. It identifies the GS1 member organisation that issued the number, so a product with a UK prefix can be made anywhere. Country-of-origin claims based on barcode prefixes are a myth.
- Some prefixes are store-only. Codes beginning 02, 04 and 20β29 are reserved for restricted distribution β the labels a supermarket prints at the deli counter or the weighing scale. They encode a weight and a price for that shop's till, not a product any public database can look up.
A GTIN also identifies a specific pack size, so the 330 ml and 1 L versions of the same drink are different numbers, while the same brand sold in another country may share a name and nothing else.
Scan, or search the whole-food database?
The two sources are good at different things. Use whichever suits the food in front of you:
| Food | Better source | Why |
|---|---|---|
| Branded packaged product | Scan the barcode | The recipe is specific to that product; only the label knows it |
| Chicken, rice, oats, eggs, oil | USDA database | Lab-measured values, no rounding, full nutrient panel |
| Loose produce or counter meat | USDA database | No product barcode exists to scan |
| Home cooking | Log the ingredients | Weigh each component raw; the total is what you ate |
Why two sources disagree about the same food
Scan a pack of oats and compare it with the oats entry in our database and the numbers will differ slightly. Every reason is legitimate:
- Rounding. The label is rounded to the increments above; the USDA record is not.
- Reformulation. Recipes change, and label data lags the shelf.
- Regional recipes. The same brand and name can be a different product in another market, with its own barcode and its own numbers.
- Different energy factors. EU labels count fibre at 2 kcal/g under Regulation 1169/2011, while US labels use the Atwater general factors, so a high-fibre food legitimately reports different calories on each continent.
- As sold versus as eaten. Dry pasta and cooked pasta are the same calories and very different weights. Check which state the entry describes.
None of this is a rounding error worth agonising over: a few percent on one food is far smaller than the error from guessing a portion. Weigh the food, then take whichever source describes it more precisely.
If the camera will not start
- Check for HTTPS. Browsers only grant camera access in a secure context, so look for the padlock in the address bar.
- Re-enable the permission. Once you dismiss or block the prompt, the browser stops asking. Reset the camera permission for this site in its site settings, then reload.
- Leave the in-app browser. Webviews inside social and messaging apps frequently withhold camera access. Open the page in Safari, Chrome or your usual browser.
- Close whatever else is using the camera. A video call holding the device camera will prevent the page from acquiring it.
- Type the digits instead. The manual lookup box returns exactly the same product data, and it always works.
From scan to a real plan
Scanning tells you what is in the pack; it does not tell you how much you should eat. Get your daily target from the calorie calculator, split it with the macro calculator, then log every scan in the free calorie tracker. If you are choosing between products at the shelf, our ranked high-protein and low-calorie food lists show what good looks like per 100 g.
Private by design
Video never leaves your device β decoding happens in your browser, and only the decoded barcode number is sent to look up the product. There is no account, no tracking profile and no ads, and your diary stays in your browser's local storage.
Barcode Scanner FAQ
How does the barcode scanner work?
It uses your device camera via your web browser to detect standard barcodes (UPC, EAN, etc.) and looks up nutritional details in the Open Food Facts public database in real time.
Do I need to install an app from the App Store or Google Play?
No. CalorieInsight works entirely in your browser. No downloads, no sign-ups, and no ads.
What if my camera is not working or permissions are denied?
You can type the barcode numbers printed under the lines directly into the manual lookup box.
Where does the nutrition information come from?
Packaged foods and barcodes are queried live from Open Food Facts, a global collaborative database licensed under ODbL.
Is my camera video uploaded anywhere?
No. Decoding runs in your browser β the video frames stay in the page and are never sent anywhere. The only thing that leaves your device is the decoded number, which is used to look the product up.
Why does a scanned label disagree with the USDA value for the same food?
Several reasons, all legitimate: label figures are rounded by law (calories above 50 to the nearest 10, for example), manufacturers reformulate, the same brand sells different recipes in different countries, and EU labels count fibre as 2 kcal/g while US Atwater factors handle it differently. For single ingredients the lab-measured USDA value in our food database is usually the better number.
The camera will not start at all β what now?
Camera access needs a secure connection (HTTPS), so check the padlock in the address bar. If you dismissed or denied the permission prompt earlier, the browser will not ask again until you re-enable the camera for this site in its settings. In-app browsers inside social apps often block camera access entirely β open the page in Safari or Chrome instead. Failing all that, type the digits into the manual box.
Does it work in low light?
Usually, and on devices whose camera exposes a torch the scanner offers a flashlight toggle. Glossy packaging reflects a flash badly, so tilting the pack a few degrees often works better than more light.
What about foods with no barcode?
Loose fruit, vegetables, meat from a counter and anything you cook yourself have no product code β and store-printed weight labels use in-store-only prefixes that no public database can resolve. Search those in our USDA whole-food database, which is what it is built for.
Does the serving size on the pack match what I actually eat?
Rarely. Label servings follow standardised reference amounts, not your appetite, and multi-serving packs are the classic trap β a 3-serving bag eaten in one sitting is three times every number on the label. Check grams per serving against what you really eat, then log that weight.