Every Singapore hawker dish, ranked by protein per calorie
Singapore's hawker food is the cheapest eating on earth and nobody knows what is in it. So I pulled the Health Promotion Board's own measurements for every hawker dish I could find and ranked them on one number: calories per gram of protein. Lower is better. 105 dishes made the cut across Chinese, zi char, Malay, Indian and Western stalls.
The result is not the one people expect. The meat is never the problem. The rice and the noodles are.
The top 12
| # | kcal/g | Cal | Protein | Cuisine | Dish |
|---|---|---|---|---|---|
| 1 | 4.93 | 84 | 17.05g | Chinese | Sliced fish soup (no milk) |
| 2 | 6.68 | 206 | 30.84g | Western | Fried pork chop |
| 3 | 6.92 | 114 | 16.48g | Zi char | Black pepper crab |
| 4 | 7.20 | 162 | 22.5g | Chinese | Pig organ soup |
| 5 | 7.29 | 295 | 40.47g | Western | Grilled spiced chicken |
| 6 | 8.83 | 336 | 38.05g | Western | Chicken chop with sauce |
| 7 | 9.04 | 371 | 41.06g | Western | Beef steak |
| 8 | 9.07 | 170 | 18.75g | Chinese | Sliced fish soup (with milk) |
| 9 | 9.24 | 180 | 19.49g | Zi char | Fish head steamboat |
| 10 | 9.35 | 115 | 12.3g | Zi char | Sambal sotong |
| 11 | 9.36 | 110 | 11.75g | Zi char | Claypot chicken |
| 12 | 10.15 | 424 | 41.78g | Zi char | Sambal stingray |
One caveat on first place. HPB publishes 84 kcal for sliced fish soup with no milk, but its own fat, carb and protein figures add up to 154. Something is wrong with that record, so do not trust its top spot. Excluding it, the best verified dish is Fried pork chop at 6.68.
Worst offenders
| kcal/g | Cal | Protein | Cuisine | Dish |
|---|---|---|---|---|
| 61.54 | 376 | 6.11g | Chinese | Kaya and butter toast |
| 46.58 | 586 | 12.58g | Chinese | Fried carrot cake (black) |
| 41.36 | 462 | 11.17g | Chinese | Fried carrot cake (white) |
| 40.66 | 318 | 7.82g | Western | Garlic bread |
| 39.90 | 486 | 12.18g | Zi char | Crayfish hor fun |
| 39.75 | 648 | 16.3g | Chinese | Beef hor fun |
| 39.36 | 990 | 25.15g | Indian | Plain prata (2 pc, with curry) |
| 37.85 | 974 | 25.73g | Chinese | Char kway teow |
| 37.61 | 604 | 16.06g | Chinese | Chinese rojak (mixed) |
| 36.68 | 847 | 23.09g | Zi char | Pineapple fried rice |
By cuisine
| Cuisine | Median | Best | Dishes |
|---|---|---|---|
| Western | 13.91 | 6.68 | 13 |
| Zi char | 18.06 | 6.92 | 30 |
| Malay | 21.46 | 10.74 | 12 |
| Chinese | 21.67 | 4.93 | 46 |
| Indian | 35.99 | 21.04 | 4 |
The full ranking
All 105 dishes, best to worst
| # | kcal/g | Cal | Protein | Cuisine | Dish |
|---|---|---|---|---|---|
| 1 | 4.93 | 84 | 17.05g | Chinese | Sliced fish soup (no milk) |
| 2 | 6.68 | 206 | 30.84g | Western | Fried pork chop |
| 3 | 6.92 | 114 | 16.48g | Zi char | Black pepper crab |
| 4 | 7.20 | 162 | 22.5g | Chinese | Pig organ soup |
| 5 | 7.29 | 295 | 40.47g | Western | Grilled spiced chicken |
| 6 | 8.83 | 336 | 38.05g | Western | Chicken chop with sauce |
| 7 | 9.04 | 371 | 41.06g | Western | Beef steak |
| 8 | 9.07 | 170 | 18.75g | Chinese | Sliced fish soup (with milk) |
| 9 | 9.24 | 180 | 19.49g | Zi char | Fish head steamboat |
| 10 | 9.35 | 115 | 12.3g | Zi char | Sambal sotong |
| 11 | 9.36 | 110 | 11.75g | Zi char | Claypot chicken |
| 12 | 10.15 | 424 | 41.78g | Zi char | Sambal stingray |
| 13 | 10.66 | 68 | 6.38g | Zi char | Prawn paste chicken |
| 14 | 10.74 | 347 | 32.32g | Malay | Kambing soup |
| 15 | 10.75 | 329 | 30.6g | Chinese | Chinese mutton soup |
| 16 | 11.06 | 217 | 19.62g | Chinese | Bak kut teh (soup) |
| 17 | 11.16 | 216 | 19.35g | Malay | Soto ayam |
| 18 | 11.40 | 69 | 6.05g | Chinese | Soft-boiled chicken egg, whole (per egg) |
| 19 | 11.92 | 214 | 17.96g | Zi char | Sweet and sour pork cutlet |
| 20 | 12.15 | 183 | 15.06g | Western | Fried chicken wing (per piece) |
| 21 | 12.20 | 72 | 5.9g | Zi char | Hot plate tofu |
| 22 | 12.78 | 631 | 49.36g | Chinese | Wanton noodles (soup) |
| 23 | 12.87 | 581 | 45.14g | Chinese | Beef noodles (soup) |
| 24 | 13.14 | 220 | 16.74g | Zi char | Kung po chicken |
| 25 | 13.25 | 518 | 39.08g | Chinese | Bak chor mee (soup) |
| 26 | 13.32 | 105 | 7.88g | Zi char | Sambal prawns |
| 27 | 13.39 | 459 | 34.27g | Western | Pork chop spaghetti |
| 28 | 13.91 | 544 | 39.1g | Western | Fried chicken cutlet |
| 29 | 14.10 | 757 | 53.7g | Chinese | Economic rice (2 meats) |
| 30 | 14.12 | 169 | 11.97g | Zi char | Ginger chicken |
| 31 | 14.17 | 931 | 65.7g | Chinese | Claypot chicken rice |
| 32 | 15.15 | 83 | 5.48g | Zi char | Mala chicken |
| 33 | 15.24 | 511 | 33.52g | Chinese | Fishball noodles (soup) |
| 34 | 15.33 | 368 | 24g | Western | Grilled pork chop |
| 35 | 15.46 | 554 | 35.84g | Zi char | Claypot frog porridge |
| 36 | 15.57 | 137 | 8.8g | Zi char | Hong shao tofu |
| 37 | 16.03 | 1028 | 64.14g | Malay | Nasi padang (beef set) |
| 38 | 17.01 | 114 | 6.7g | Zi char | Mapo tofu |
| 39 | 17.04 | 667 | 39.15g | Chinese | Curry chicken noodles |
| 40 | 17.36 | 850 | 48.97g | Western | Black pepper steak |
| 41 | 17.42 | 849 | 48.75g | Malay | Murtabak (mutton) |
| 42 | 17.47 | 318 | 18.2g | Chinese | Sliced fish porridge |
| 43 | 17.71 | 866 | 48.9g | Malay | Ayam penyet with rice |
| 44 | 17.74 | 653 | 36.81g | Western | Pork chop baked rice |
| 45 | 18.06 | 130 | 7.2g | Zi char | Stir fried kailan with beef |
| 46 | 18.44 | 310 | 16.81g | Zi char | Salted egg pork rib |
| 47 | 18.53 | 625 | 33.72g | Chinese | Wanton noodles (dry) |
| 48 | 18.54 | 152 | 8.2g | Zi char | Chilli crab |
| 49 | 18.87 | 509 | 26.98g | Zi char | Sambal goreng |
| 50 | 18.97 | 471 | 24.83g | Chinese | Soya sauce chicken rice |
| 51 | 19.02 | 238 | 12.51g | Zi char | Butter crab |
| 52 | 19.27 | 600 | 31.13g | Chinese | Char siew rice |
| 53 | 19.39 | 471 | 24.29g | Chinese | Prawn noodles (soup) |
| 54 | 19.96 | 411 | 20.59g | Malay | Mee soto |
| 55 | 20.56 | 681 | 33.13g | Chinese | Roasted duck rice |
| 56 | 20.57 | 645 | 31.36g | Chinese | Braised duck rice set (with egg and tau kwa) |
| 57 | 20.80 | 1021 | 49.09g | Chinese | Kway chap |
| 58 | 20.86 | 417 | 19.99g | Chinese | Laksa |
| 59 | 20.97 | 156 | 7.44g | Zi char | Sweet and sour prawn |
| 60 | 20.97 | 919 | 43.82g | Western | Fried chicken cutlet with fries |
| 61 | 21.04 | 1065 | 50.62g | Indian | Nasi biryani (chicken) |
| 62 | 21.13 | 142 | 6.72g | Chinese | Fish head curry |
| 63 | 21.46 | 191 | 8.9g | Malay | Tahu goreng |
| 64 | 21.67 | 643 | 29.67g | Chinese | Roasted chicken rice |
| 65 | 22.34 | 235 | 10.52g | Zi char | Cereal prawn |
| 66 | 23.04 | 455 | 19.75g | Chinese | Beef noodles (dry) |
| 67 | 23.04 | 327 | 14.19g | Malay | Mee bandung |
| 68 | 23.46 | 602 | 25.66g | Chinese | Ban mian (soup) |
| 69 | 23.79 | 310 | 13.03g | Zi char | Sweet and sour pork |
| 70 | 24.07 | 612 | 25.43g | Chinese | Thunder tea rice |
| 71 | 24.25 | 693 | 28.58g | Malay | Nasi lemak (fish set) |
| 72 | 24.33 | 317 | 13.03g | Indian | Prata (egg) |
| 73 | 24.71 | 475 | 19.22g | Chinese | Steamed chicken rice |
| 74 | 24.83 | 538 | 21.67g | Chinese | Bak chor mee (dry) |
| 75 | 25.15 | 513 | 20.4g | Chinese | Fishball noodles (dry) |
| 76 | 25.42 | 482 | 18.96g | Chinese | Economic beehoon with fishcake and egg |
| 77 | 25.58 | 383 | 14.97g | Chinese | Prawn noodles (dry) |
| 78 | 25.82 | 733 | 28.39g | Chinese | Roast pork rice |
| 79 | 26.01 | 1015 | 39.02g | Zi char | Egg fuyong |
| 80 | 26.50 | 666 | 25.13g | Chinese | Lor mee |
| 81 | 26.57 | 698 | 26.27g | Malay | Mee rebus |
| 82 | 26.74 | 750 | 28.05g | Chinese | Yang chow fried rice |
| 83 | 27.09 | 1179 | 43.52g | Chinese | Yong tau foo (clear soup, 7 pc, fried) |
| 84 | 27.61 | 814 | 29.48g | Chinese | Hokkien mee |
| 85 | 29.21 | 208 | 7.12g | Chinese | Popiah |
| 86 | 31.16 | 742 | 23.81g | Malay | Nasi goreng |
| 87 | 31.24 | 658 | 21.06g | Zi char | Egg fried rice |
| 88 | 31.29 | 828 | 26.46g | Malay | Mee goreng |
| 89 | 33.19 | 900 | 27.12g | Western | Fish and chips |
| 90 | 34.41 | 573 | 16.65g | Chinese | Seafood hor fun |
| 91 | 34.60 | 799 | 23.09g | Chinese | Mee siam |
| 92 | 34.83 | 379 | 10.88g | Zi char | Salted egg squid |
| 93 | 35.92 | 255 | 7.1g | Zi char | Oyster omelette |
| 94 | 35.99 | 393 | 10.92g | Indian | Thosai |
| 95 | 36.03 | 352 | 9.77g | Zi char | Sweet and sour fish |
| 96 | 36.68 | 847 | 23.09g | Zi char | Pineapple fried rice |
| 97 | 37.61 | 604 | 16.06g | Chinese | Chinese rojak (mixed) |
| 98 | 37.85 | 974 | 25.73g | Chinese | Char kway teow |
| 99 | 39.36 | 990 | 25.15g | Indian | Plain prata (2 pc, with curry) |
| 100 | 39.75 | 648 | 16.3g | Chinese | Beef hor fun |
| 101 | 39.90 | 486 | 12.18g | Zi char | Crayfish hor fun |
| 102 | 40.66 | 318 | 7.82g | Western | Garlic bread |
| 103 | 41.36 | 462 | 11.17g | Chinese | Fried carrot cake (white) |
| 104 | 46.58 | 586 | 12.58g | Chinese | Fried carrot cake (black) |
| 105 | 61.54 | 376 | 6.11g | Chinese | Kaya and butter toast |
What it means
The pattern is consistent. Steamed and grilled protein is cheap: black pepper crab, steamed fish, wanton soup, fish soup, prawn soup and any bone-in chicken dish all come in well under 20. Add rice or noodles and the number roughly doubles. Fry the noodles and it roughly doubles again.
Zi char is the clearest illustration. From the same stall, black pepper crab is 6.9 and sambal stingray is 10.2. Sweet and sour fish is 36.0, oyster omelette 35.9 and salted egg squid 34.8. It is not the seafood. It is the batter and the sugar.
Hawker western does better than anyone gives it credit for. A chicken chop is 8.8 and a beef steak is 9.0, better than every rice dish in this list. What kills it is what comes on the same plate: coleslaw lands at 153 calories per gram of protein and garlic bread at 40.7.
Two honest limits. HPB measures a typical serving, and a chicken rice plate varies enough between stalls that any single number is approximate. And 20 of the 105 rows are per-100 g records rather than a plate - that does not affect the ranking, since a ratio does not care about portion size, but those rows are not one serving.
Sources
All figures come from the Health Promotion Board's SG FoodID database, the successor to FOCOS, which no longer exists on the web under its old address. HPB marks most entries as laboratory analysis; 11 of 105 here are recipe-derived instead, and those are marked in the full table.
This is an independent analysis of publicly published nutrition data. It is not affiliated with HPB or any hawker operator and is not dietary advice. Portions and recipes vary between stalls, so treat these as indicative.