Field test

Nobody ate any corn.

We put the same meals through two photo-calorie apps, minutes apart, on the identical plate. The interesting failure was not the calorie count.

By the Svelio editorial team · September 24, 2026

ShareXThreadsFacebookLinkedInEmail
A lobster roll on a plate in the foreground, with an ear of corn on a separate plate behind it, out of focus. A few stray corn kernels have scattered onto the near plate's rim.

Every argument about photo-calorie apps is an argument about the number. Is it within ten percent, within twenty, is it worth logging at all. It is a reasonable thing to argue about, and it is the wrong argument, because it assumes the app and you are looking at the same meal.

Sometimes you are not.

We have been running a slow, unglamorous test: photograph a real meal, scan it twice back to back before touching it, once in Svelio and once in a leading photo-calorie app, write down what both said, and only then establish what the food actually was. Same plate, same light, same minute. Doing it in that order matters more than it sounds like it should. Knowing the answer first quietly bends the scoring, and we have caught ourselves doing it.

Everything below that says the other app means that second one. Where Svelio got something wrong, it says Svelio.

Here is what turned up, and it was not what we went looking for.

The other app charged for a different plate

A lobster roll dinner. Behind it, on its own separate plate, an ear of corn that was not part of the meal. A few loose kernels had scattered onto the roll's plate as debris.

Svelio left the corn out, on all four runs, from the item list and from the title of the meal. That is the rule working: analyze the dish in front of the camera, not the table.

The other app charged for it. Not once. It appeared in both runs where it was visible, first as nineteen calories and twenty-two grams, then as thirty-nine calories and “half medium ear.” Then it went further and named the meal after it: Lobster Roll with Corn on the Cob and Dipping Sauce.

Nobody ordered corn, and nobody ate any.

The other app invented an eating history

The same evening, a half-size roll. Svelio made no claim about what had been eaten, because a photograph does not contain one. The other app titled it Lobster Roll (Partially Eaten) and billed for half a bun.

It was not partially eaten. It was a smaller roll, whole, untouched. The app did not observe that, because a photograph of a whole small thing and a photograph of half a large thing can look similar. It inferred it, and then stated it as a fact about the eater's afternoon.

The other app moved fifty percent on an untouched plate

This one is the most useful, because you can run it yourself in thirty seconds.

Photograph a plate. Scan it. Without touching the food, scan it again.

On that lobster roll, setting aside the corn it had invented, the other app's two scans of the identical plate returned 244 and then 365, a fifty percent spread on food that had not moved. Across three reads of the same meal its numbers ran from 205 to 404. Twice the calories, same lunch, same app, same minutes.

Svelio's two reads of that plate moved eleven percent. Not nothing, and we are not going to call eleven percent precision. But it is the difference between a number you can hold loosely and a number that means nothing at all.

What this comparison can and cannot tell you

Here is the part most app comparisons skip. To say one app is closer than another, you need to know what the right answer was. Usually nobody does.

A restaurant that publishes its calorie counts gives you a real number to check against. A restaurant that publishes nothing leaves you estimating the truth yourself, from the dish and the portion and what you know about how it was cooked. That estimate is a guess. It may be a careful guess, but grading two apps against it mostly measures the guess.

On the one plate in this series where the count was actually published — a Five Guys order, itemized on the receipt — Svelio read six percent high and the other app sixteen percent low. That is a real result, because the answer was checkable.

Every other plate was a restaurant that publishes nothing. On those we have landed closer sometimes and further sometimes, and we are not going to turn that into a scoreboard, because the scoreboard would be built on numbers we made up. One of those plates we first recorded as a win, until the person who ate it mentioned it had extra cheese, and the ordering reversed.

So we are not claiming to be more accurate than anyone. We are claiming something narrower, and checkable: where the answer was published, we were closest. And on every plate, published or not, we did not add food that was never there.

No photo estimate is reliable to the calorie. Not theirs, not ours. A camera cannot see the oil in the pan, the second patty in a well built stack, or the grams of meat buried under a mound of potato. That is a limit of photographs, not a limit of engineering, and any app that feels precise about it is telling you something the picture does not contain.

Why the invented food matters more than the number

An estimate that is twenty percent off is an estimate, and you can hold it loosely. You know roughly how much trust to put in it.

A number that includes food from someone else's plate is a different kind of wrong, and the difference is that you cannot see it. It arrives with the same confidence as the rest. It is inside your daily total. It is in the weekly average you are making decisions from. And there is no line in the interface that says: forty of these calories came from an ear of corn in the background.

The same goes for a consumption history the app invented. The number is not just imprecise, it is describing something that did not happen.

What we do instead

Three rules, and they are the boring kind that show up in the code rather than the marketing.

Name only what can be seen. If it is not in the frame, it is not in the meal, including the plate behind it. On every one of those lobster roll runs, the corn was excluded from the items and from the title.

Never assert a state you cannot observe. We make no claim about what was eaten before the photograph, because the photograph does not contain one.

Mark an estimate as an estimate. When there is a label, we read the label, and that is ground truth. When there is not, the number is flagged as an estimate, because the honest thing to do with an uncertain number is to say that it is uncertain, not to render it in the same typeface as a fact.

None of that makes the calorie count precise. It makes it honest, which is a different and more achievable goal, and it means the number you are holding loosely is at least a number about your own food.

If you want the longer version of how we think about this category, we wrote that down too.

“An estimate that is twenty percent off is an estimate. A number that includes food from someone else's plate is a different kind of wrong, and you cannot see it.”
Subscribe to The Brief

There's always something they're not telling you.

Each Brief is one investigation we couldn't sit on: an additive, a brand watch, a regulatory shift. The next one might be about your favorite snack.