Vietnamese Restaurant Menu Calories: A 93-Row Menu, Scanned
AI estimate: when Bao scanned a Vietnamese noodle-shop menu of about 93 rows, it put 470 cal on a clear-broth beef rice noodle (marked a pick), 520 cal on spicy red oil wontons (with a peanut flag) and 70 cal on clam soup. The paper menu had a price on every row and no calories, so these are estimates read from the menu text, and a menu that long scans best one section at a time.
Here is the problem. A long Vietnamese menu is very organized about the wrong thing. Every row has a price. No row has a number. One soup comes with a choice of noodle (rice noodle, vermicelli, ramen, thin noodle, knife-cut noodle), and that is how a menu gets to about 93 rows without trying. You are hungry, you are holding a laminated page, and the only thing it can tell you is what it costs.
I am Bao, an app that reads a photo of a menu and puts an estimate on every dish it can read. Below is what I said about one real menu in a Vietnamese and Taiwanese noodle shop in Taipei, including the part where one photo of a menu that long was more than I could read.
The short version
| Menu row (as Bao named it) | Bao AI estimate | What the card added |
|---|---|---|
| Clear Broth Beef Rice Noodle (Bún bò Tái) | 470 cal | Marked “Pick”; often contains fish, ask staff |
| Spicy Red Oil Wontons | 520 cal | Peanut flag |
| Clam Soup | 70 cal | Menu lists shellfish; shellfish heads-up |
Read off Bao’s own menu-scan results on November 2, 2026, English interface. AI estimates from the menu text, not from a plate. The restaurant publishes no nutrition figures that we could check against.
One photo did not read the whole menu
The scan card was honest about it: in the English interface it read 10 of about 93 rows. Scanning the same kind of menu in the Chinese interface, it read 23 of about 91. A menu this long is a lot of small print for one frame, and the app says so on the card and suggests scanning the rest one section at a time.
We would rather print “10 of about 93” than let a short list of results look like the whole menu. The practical fix is dull and it works: frame one column or one block, scan, then frame the next. If you only need one dish, scan the block that holds it.
The beef pho, scanned as a meal (450 cal)
A menu row is a guess from words. A bowl on the table is a guess from a photo, which is a different kind of guess, so we scanned the beef pho as a meal too. Bao split the bowl into lines, and the noodles were the biggest of them.
| Item | AI estimate |
|---|---|
| Rice noodles | 215 cal |
| Sliced beef | 116 cal |
| Beef broth | 92 cal |
| Onions, sriracha, hoisin and scallions | 27 cal |
| Total (25 g protein, 55 g carbs, 12 g fat) | 450 cal |

Notice that the menu row for a beef noodle dish came back at 470 and the photographed bowl at 450. That is two different scans of beef noodles, 20 cal apart: close, not identical. Read any single number as the middle of a range. For more on pho itself, see how many calories are in pho.
Flags for peanuts and shellfish, and why they are only flags
A menu name can hide an ingredient. On this scan the spicy red oil wontons carried a peanut flag, and the Fresh Spring Rolls (Gỏi cuốn) row read “Often contains: shellfish, peanut. Ask staff.” The row name says nothing about shellfish. The card does.
Bao flags what a dish often contains. It cannot see the kitchen, so a flag is a reason to ask and never a ruling that a dish is fine. That is why the same card says “Ask staff” and has a button for it.
The waiter card: Bao writes the question
Asking about an allergy is hard when the menu is in a language you do not read. Bao writes the allergy question in the language the menu is printed in, and you show the screen to staff. This menu was printed in Chinese, so the question below is in Chinese, with the dish name at the top and the AI-estimate note at the bottom.

The same menu in Traditional Chinese
We scanned the same noodle shop in the Chinese interface as well. Three rows from one family of soups came back with three different numbers, all read from the menu text.
| Menu row (Chinese interface) | Bao AI estimate | What the card added |
|---|---|---|
| 綜合大餛飩牛肉河粉 | 450 cal | Menu lists soy; often contains gluten, egg, shellfish; shellfish heads-up |
| 綜合大餛飩牛肉米線 | 610 cal | Menu lists soy; often contains gluten, egg, shellfish; shellfish heads-up |
| 綜合大餛飩牛肉湯 | 650 cal | Menu lists soy; often contains gluten, egg, shellfish; shellfish heads-up |
The wonton beef soup took the top number, but it was not the only one flagged. All three wonton dishes got the same shellfish heads-up, because they share the same wontons. Same menu, same shop, three numbers, one set of wontons: that is what reading the words on a menu looks like.
How to scan a very long menu
- Frame one column or one block at a time, with the whole block in the shot.
- Check the line on the result card that says how many rows were read.
- Scan the next block and repeat until the dish you want has a number.
- On any flagged row, open the waiter card and show it to staff.
A number describes the food. It does not grade the person ordering it. Use it the way you would use a price: to know roughly what you are getting into.
Common questions
How many calories are in Vietnamese beef pho? There is no single number. Bao scanned a menu row, Clear Broth Beef Rice Noodle (Bún bò Tái), at 470 cal and a photographed bowl of beef pho at 450 cal (rice noodles 215, sliced beef 116, broth 92, toppings and sauces 27). Both are AI estimates and move with the photo.
Do Vietnamese restaurant menus list calories? The one we scanned did not. It had about 93 rows with a price beside each and no calories, so every number on this page is a Bao AI estimate read from scan results on November 2, 2026, not a restaurant figure.
Can an app read a whole long Vietnamese menu from one photo? Not reliably. On a menu of about 93 rows, one Bao photo read 10 rows in the English interface and 23 of about 91 in the Chinese interface. Very long menus scan best one section at a time.
How can I tell if a Vietnamese dish has peanuts or shellfish? Bao flags likely allergens from the menu text, for example a peanut flag on spicy red oil wontons and “Often contains: shellfish, peanut. Ask staff.” on a Fresh Spring Rolls (Gỏi cuốn) row. A flag is a reason to ask, not a ruling, so always confirm with the staff.
What is the waiter card in Bao? It is a screen Bao writes for you: your allergy question, written in the language the menu is printed in, to show to staff. In our scan the menu was printed in Chinese, so the question came out in Chinese. It marks the answer as an AI estimate and says to confirm with staff.
Scan the next menu
Free on the App Store. Find me: "Bao calories" (plain "Bao" and I'm nowhere). Ninety-three rows and no numbers is the menu's problem. I have opinions about the wontons and zero about you.
Download on the App Store