Meals in.
Calories and macros out.

Photo, sentence, or barcode in. A full macro breakdown out. Native iPhone app, no ads, no account. Read the accuracy data.

0xCal, number one Product of the Week in Health and Fitness on Product Hunt

110 foods, tested weekly against USDA reference values, alongside the apps most people switch from. Full methodology and per-food results.

0xCal

85.6%

average accuracy

MyFitnessPal

58.9%

same 107 foods

Fitatu

56.9%

same 107 foods

Ruler and follow-ups

Your phone measures the plate. Then you talk it into the rest.

Two corn cobs, one plate, one unbroken take. Keep scrolling and the recording runs on to the second half.

ruler

The plate gets measured while you shoot.

Your iPhone's depth sensor sizes the plate and sends that measurement with the photo, so the portion is read off the scene instead of judged by eye. On LiDAR models it runs as Ruler+. There is no extra step and nothing to put in the frame for scale.

⌀ ~30 cmplate, measured~180 gedible weight

follow-up

Then you say what it missed.

The answer is a thread, not a receipt. "And some butter" goes back into the same conversation and the estimate is rebuilt rather than replaced: 173 kcal for the corn alone becomes 245, itemised as ~180 g corn plus ~10 g butter. Pull the butter down to 5 g and the total settles at 209.

173 → 245after one sentence209 kcalafter one correction

Open a meal. It is a list, not a lump.

Every entry breaks into ingredients with their own weights. Push the fries from 117g to 160g and the total follows. No single opaque number you either accept or delete.

0xCal breaking a Big Mac meal into Big Mac 219g, French fries 117g and soft drink 400g, each with its own calorie count
Typed as "Big Mac meal". Comes back as three rows.
0xCal reading a photo of a dessert plate into yogurt cream, dough bites, mixed berries and berry sauce with weights
Photographed. Same rows, same weights to correct.
estimate

Chat guesses a row.

The first pass is a model estimate and says so on every row. You can log it and move on, or go one level deeper.

catalog

You pick the real product.

Search the catalog and swap the guess for the actual jar, box or bottle, with the nutrition table that came off its label.

pantry

The next meal binds it.

Once a food is in your pantry, later meals attach to it instead of guessing again. Correcting a food once is the whole point.

The app shows this ledger the first time you open the pantry, so the three states are never a mystery.

Under the hood

Four things happen between your sentence and the number.

Most trackers make you find the food. 0xCal reads what you wrote, looks it up in a real catalog, checks the result against physics, and remembers the answer for next time.

0xCal pantry search for oil, returning olive oil, cold pressed rapeseed oil and tuna in oil with per 100g nutrition
describe

Type it, shoot it, or scan the barcode.

All three go through the same sheet. There is no menu asking you to pick a logging method first, because picking one is the part people quit over.

match

Every item resolves against a real catalog.

Search merges a shared community catalog with Open Food Facts, filtered by your language and country, so "twarog poltłusty" and "half fat cottage cheese" both land on something a person actually put in a shopping basket.

check

Nothing enters the catalog if the energy does not add up.

Stated calories are compared with what the stated macros can physically account for. Typos, unit mix ups, and placeholder rows get rejected at write time instead of quietly poisoning everyone's search results.

atwater(x) = 4·carbs + 9·fat + 4·protein
accept if |kcals - atwater(x)| ≤ max(0.3 · atwater(x), 10)
reject if kcals > 900 per 100g, or any macro > 100g
remember

Your pantry reorders itself around what you actually eat.

Every food keeps a use count, a last used date, and four time of day counters. The oat milk you have every morning sits at the top at 8am and drops away by 8pm.

The kitchen is the hard case.

Phone propped against the kettle, hands wet, something about to burn. Big targets, fast number entry, and a draft that survives being interrupted are correctness requirements here, not polish.

The gap shows up on food that isn't in a database.

On packaged staples everybody is close. The spread opens on what people actually eat: something cooked at home, something ordered out, something with a name in another language.

Homemade mealscooked from scratch, no label to scan

87.2%

67.7%

67.8%

Restaurant dishesordered out, portion unknown

84.4%

63.0%

65.5%

International cuisinenamed in a language the database was not built in

86.2%

66.0%

65.6%

Misspelled entries"mackdonal chiken nugits"

87.0%

no result

no result

Fast foodthe category every tracker is supposed to nail

97.5%

86.6%

89.2%

Benchmark run of Jul 29, 2026. Reruns weekly, published win or lose.

See all 110 foods and the method

Everything else it does, without a settings tour.

Fasting sits on the same screen as the food.

Start, adjust or end a window without leaving the day. The bar under the log shows where you are in it, instead of a separate tab you forget to open.

0xCal day view with an active fasting window showing 13 hours 59 minutes left, and buttons to end the fast or adjust its start

No account. No ads. No feed.

Open it, say what you ate, done. Everything in the list below is missing on purpose.

account
not required
advertising SDKs
none
social feed
none
meal photos
not stored on a server
your log
on your device

0sign up screens between you and logging

0xCal hydration screen showing 1680 of 3500 ml, 255 of 400 mg caffeine, and each drink logged with its hydration percentage

Drinks count twice.

Coffee is 240ml of hydration and 95mg of caffeine at once. Both get their own budget, and a zero sugar can still lands in the calorie log.

Barcode and label scanning.

Live scan for packaged food. When a barcode is in no catalog, on device text recognition reads the nutrition table off the back instead.

One switch pulls in what you already track.

Garmin, Whoop, Oura, Withings, Fitbit, Strava, Polar and veSync all write to Apple Health. Turn it on once and their steps, workouts and weight move your calorie budget.

App icons for Garmin, Whoop, Oura, Polar, Withings, Fitbit, Strava and veSync

Questions, answered.

Still stuck? Every screen in the app has a question mark that explains the numbers on it.

How does 0xCal log calories from a photo?

Take a photo of your plate and 0xCal identifies the foods, estimates portions, and returns calories, protein, carbs, and fat in seconds. Adding a short text note ("about 200g of rice") tightens the estimate.

Can I log food just by typing?

Yes. Type what you ate in plain English, like "2 fried eggs and toast with butter", and 0xCal parses it into a full calorie and macro breakdown. It handles typos and misspelled brand names too.

How accurate is 0xCal?

0xCal publishes weekly public benchmarks testing over 100 foods against USDA reference data. See the full methodology and per-food results on the benchmarks page.

Does 0xCal sync with Apple Health?

Yes. Steps, weight, and dietary energy flow both ways with Apple Health, and your activity adjusts your daily calorie budget.

Does 0xCal track fasting?

Yes. Fasting window tracking is built in, so you can manage eating and fasting periods in the same app.

Does 0xCal work with Garmin, Whoop, Oura or Withings?

Yes, through Apple Health. Connect your wearable to Apple Health, enable Apple Health in 0xCal, and steps, weight and workouts flow in. Garmin, Whoop, Oura, Withings, Fitbit, Strava and Polar all work this way.

Is 0xCal a good Cal AI alternative?

Yes. Cal AI was removed from the App Store in April 2026 for bypassing Apple's payment system. 0xCal offers the same AI photo logging plus natural language input, with transparent Apple billing. Read the full comparison.

Is 0xCal free? Do I need an account?

0xCal offers a free trial with all features included, then one simple subscription. No tiers, no ads. No account is required, billing runs through Apple, and you can cancel anytime in iPhone Settings.

Log tonight's dinner in one sentence.

0xCal is on iPhone at founders pricing. One subscription, trial included, every feature unlocked.