Close-up of a laminated Vietnamese noodle-shop menu printed in Chinese with Vietnamese names, a column of prices beside every row and no calorie column
Nutrition Guide

Vietnamese Restaurant Menu Calories: A 93-Row Menu, Scanned

November 11, 2026 · 6 min read

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 estimateWhat the card added
Clear Broth Beef Rice Noodle (Bún bò Tái)470 calMarked “Pick”; often contains fish, ask staff
Spicy Red Oil Wontons520 calPeanut flag
Clam Soup70 calMenu 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.

ItemAI estimate
Rice noodles215 cal
Sliced beef116 cal
Beef broth92 cal
Onions, sriracha, hoisin and scallions27 cal
Total (25 g protein, 55 g carbs, 12 g fat)450 cal
Overhead photo of a bowl of Vietnamese beef pho with sliced beef, rice noodles, scallions and a red chili drizzle, with a small dish holding a lime wedge and chilies
The bowl that was scanned as a meal. Bao read the noodles, the beef and the broth as separate lines.

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.

Bao waiter card on a dark screen: a beef rice noodle dish name and the line I would like this one, one portion, thank you, with tree nut selected as the allergy, and the allergy question written in Chinese
A waiter card from the same scan session, with tree nut selected as the example allergy. The note at the bottom says to confirm with staff.

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 estimateWhat the card added
綜合大餛飩牛肉河粉450 calMenu lists soy; often contains gluten, egg, shellfish; shellfish heads-up
綜合大餛飩牛肉米線610 calMenu lists soy; often contains gluten, egg, shellfish; shellfish heads-up
綜合大餛飩牛肉湯650 calMenu 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

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
← Back to blog