Jinan's most beloved morning bowl: a warmly spiced, savory millet-flour porridge packed with spinach, peanuts, glass noodles, and tofu skin—nothing sweet about it, despite the name.
Tianmo has warmed Jinan mornings since the late Ming and early Qing dynasties—over 300 years of continuous production. Two rival origin stories compete: one holds that a porridge seller named Tian helped famine refugees, cooking millet gruel with whatever vegetables were at hand; the foamy surface earned it the name 'Tian's foam' (田沫), later contracted to tianmo. The second theory is linguistic: in old Jinan dialect, 'tiānmo' is a corruption of 'tiān mò er' (添末儿), meaning 'adding stuff in'—a reference to the vegetables, peanuts, and seasonings stirred into plain millet water. In 2013, Tianmo was listed in Jinan's 4th batch of Municipal Intangible Cultural Heritage, and is paired with tea broth (茶汤) as the 'twin wonders of the Spring City.'
A humble, warming bowl: the millet base is slightly grainy and starchy, thickened to just-flowing consistency. Spinach wilts softly into the broth; glass noodles slip silkily between sips; peanuts offer the only crunch. A slow pepper-and-ginger heat builds gently at the back of the throat.
Millet flour is high in starch and low in gluten. When poured into boiling water with continuous stirring, the starch granules hydrate and swell, forming a stable, pourable gel—thicker than congee but more fluid than a pudding. The scallion-ginger tempering (炝锅) at the start releases fat-soluble aromatics into hot oil, which coat the starch network and add depth. Glass noodles and spinach are added last to preserve their texture; peanuts' surface oils contribute additional viscosity and a slight richness.
Variations
The base recipe is consistent city-wide, but individual stalls vary the ratio of millet flour to water (thicker in winter, thinner in summer) and the selection of add-ins—some include dried tofu strips or seaweed. It is invariably eaten alongside oil sticks (油条) or sesame-sprinkled strands (馓子) for textural contrast.
On the Palate
Where Tianmo Savory Millet Porridge sits in the Chinese flavor cloud
Ingredients
Serves 4How it's made
8 steps · 35 min
- 15 min
Soak peanuts 30 minutes in cold water; soak glass noodles until soft; wash spinach and cut into 5 cm sections; soak dried tofu skin and cut into strips.
- 23 min
Mix millet flour with cold water into a smooth slurry with no lumps; set aside.
- 33 min
Heat oil in a pot; fry scallion and ginger slices until fragrant (炝锅); add Sichuan pepper briefly and let sizzle.
- 48 min
Pour in boiling water and bring to a rolling boil; add soaked peanuts and simmer 5 minutes until slightly soft.
- 56 min
Stream in the millet flour slurry slowly, stirring constantly to prevent lumping; simmer on low heat 5 minutes until thickened.
Watch outStream the millet slurry in slowly, stirring nonstop so it doesn't lump — dumped in at once it seizes into gluey knots.
- 64 min
Add glass noodles and tofu skin strips; cook 3 minutes until transparent and softened.
- 72 min
Add spinach sections; stir through. Season with soy sauce, salt, and a generous pinch of white pepper.
Watch outAdd the spinach last and just wilt it — leave it in and it goes yellow and limp, dulling the fresh look.
- 81 min
Serve immediately in deep bowls, accompanied by oil sticks or sesame straws.





