Making Tempeh: An Unreasonably Thorough Approach

Four finished blocks of homemade tempeh with dense white mycelium

I have had so much trouble making tempeh. Crumbly, inconsistent results, batch after batch. And the troubleshooting guides online? Useless. Every single one boils down to the same set of contradictions:

  • You cooked the beans too much
  • You cooked the beans too little
  • You dried the beans too much
  • You dried the beans too little
  • You incubated too hot
  • You incubated too cold
  • You packed too tight
  • You packed too loose
  • You split the beans too much
  • You split the beans too little

Right. So that narrows it down to everything. I decided the only way forward was to go clinical — document every step, measure every variable, and remove every excuse. If this batch failed, I’d know exactly how and why.

Cracking the Beans

Most instructions say to soak the beans and then scrub the hulls off by hand, squeezing each one between your fingers. I skipped that entirely. It’s a waste of water and time when you can just pre-crack them.

KoMo Fidibus XL grain mill on granite countertop
My KoMo Fidibus XL. I’ve had this mill for over a decade and it has paid for itself many times over.
Soybeans loaded in the grain mill hopper
Soybeans loaded and ready to crack.

I widened the grinding wheels and ran a few test passes until I found a setting that splits the beans in half without creating too much dust. When you crack them this way, the hulls tend to fall right off.

A note: this post mixes photos from two batches — one garbanzo, one soybean. The process is the same for both.

Cracked garbanzo beans in a blue bowl
Cracked and dehulled in about two minutes.
Bean hulls and dust in a blue colander
Running the cracked beans through a colander to sift out the dust.

I shook the colander a few times and the empty hulls floated to the top. A quick pass with a hair dryer — one I keep in the kitchen specifically for cooking — cleared them off in a couple of passes.

Clean split soybean halves in a blue colander
Clean splits. Hulls removed, minimal dust.

I boiled the beans until they reached the consistency of a boiled peanut — maybe a lima bean. Soft enough to eat, firm enough to hold shape. I didn’t photograph this step because it’s just boiling beans.

The Bags

For tempeh, you need a bag with small holes — enough airflow for the Rhizopus mold to breathe, but not so much that the surface dries out. Traditional tempeh is wrapped in banana leaves; we’re making an artificial one.

Brother XM2701 sewing machine
The sewing machine. Another piece of equipment that’s earned its counter space.

I read a paper that described optimal tempeh incubation using bags with holes punched by a number 7 needle, spaced half an inch apart, on 1.5mm polyethylene. Here’s what I actually used a size 12 sewing needle at one-inch intervals on a 3mm polyethylene bag. Size 12 is thicker than size 7.

Drying and Inoculation

This is the step I suspect most guides don’t emphasize enough, and where most batches quietly go wrong.

Beans drying on a parchment-lined baking sheet in the oven
Drying in the oven at 170°F, stirring every few minutes.

I set my oven to 170°F and stirred every few minutes until the beans were dry. Actually dry — not “they look dry.” Dry as in my hand doesn’t get wet when I grab a handful. I raised my fist to my face and told each bean it would become tempeh or die.

Once the surface moisture was gone, I added a few tablespoons of distilled white vinegar and let that evaporate too. The vinegar lowers the pH enough to give the Rhizopus a head start over competing bacteria.

Tempeh starter packet labeled Ragi Tempe
The tempeh starter (Rhizopus oligosporus). Kept in my freezer until needed.

Mixed the starter into the cooled, dry beans. Packed them into the perforated bags, pressed flat to about an inch thick, sealed them up.

Incubation

Brod and Taylor folding proofer displaying 90 degrees
The Brod & Taylor folding proofer, set to 90°F. Designed for bread, but it holds temperature precisely enough for fermentation work.

At this point I hadn’t confirmed the optimal incubation range. A quick search turned up this:

Growth rate vs incubation temperature chart for Rhizopus
Rhizopus growth rate peaks around 30–35°C (86–95°F) and drops sharply above 37°C. Source: tempeh.info

I adjusted to 86°F and loaded the bags.

Four bags of inoculated beans in the incubator
Four bags loaded, day zero. No visible growth.

Over-Engineering the Monitoring

I wanted the actual temperature inside the bean cake, not just the ambient air reading from the incubator’s display. So I ran a probe thermometer directly into one of the bags.

Temperature probe cable running into the incubator
Temperature probe running into the bean cake.

Then I built a data logger.

An ESP8266 microcontroller, programmed with Arduino to read the temperature sensor and transmit data over WiFi at three-second intervals.

Raspberry Pi connected to home network panel
The Raspberry Pi, connected directly to the router. This is the server receiving and logging the temperature data.

I wrote a small web server so I could check temperatures from my phone. If someone was going to tell me the incubation temperature was wrong, I’d have a timestamped log at three-second resolution to discuss.

Phone screen showing timestamped temperature log
Raw temperature log. Timestamped, continuous, three-second resolution.

Was this level of monitoring necessary for making tempeh? No. But the troubleshooting advice I kept getting was some variation of “your temperature was probably wrong,” and I was done guessing.

The Wait

After 12 hours: nothing visible. The bags looked exactly the same as when I loaded them.

Four bags in incubator showing no visible change after twelve hours
Twelve hours in. The bags look exactly the same.

I wrote a pointed review of the tempeh starter on Amazon.

But I checked back at lunch the next day and noticed something. The tempeh didn’t look different yet, but the temperature probe told a different story — the internal temperature was climbing above ambient. The beans were generating their own heat. Something was growing.

Annotated scatter plot of temperature vs time
The temperature log tells the whole story. You can see where I accidentally started at 90°F and had to let it cool, where the temperature crept up and I turned off the incubator a little too long, and finally — around hour 18 — where the tempeh started generating its own metabolic heat. I turned the incubator off entirely and let the mold regulate itself.

It Worked

I opened the incubator and saw mycelium.

White mycelium growing through the soybeans
Mycelium. Finally.
Chart showing bean temperature vs incubator setting over time
The full picture. Blue is the actual bean temperature; red dashed line is the incubator setting. At the end, the incubator is off and the tempeh is holding its own temperature around 30°C. Self-sustaining fermentation.

A few more hours and the beans were fully bound together. Dense, white, solid blocks.

Four completed blocks of tempeh
Four blocks of finished tempeh. Uniform mycelium growth, firm structure.

I changed my Amazon review.

Amazon review updated to five stars
“Pretty good. Don’t give up on it.” — updated to 5 stars.

What Actually Mattered

The vague troubleshooting guides aren’t wrong, exactly — they’re just useless without measurement. “Too hot” and “too cold” don’t mean anything without a number attached. After going through this with three-second temperature resolution and documented steps, here’s what I think actually makes the difference:

  1. Dry the beans completely. Not “they look dry” — your hand shouldn’t feel any moisture when you grab a fistful. Then dry them a little more. Then add vinegar and dry that too.
  2. Start around 86°F (30°C), but watch it. Once the mold takes hold at around 18–24 hours, it generates enough metabolic heat to overshoot the optimal range. You may need to turn the incubator down or off entirely.
  3. Twelve hours of nothing is normal. The growth is invisible at first. If your temperature is in range and your beans were properly inoculated, wait. It happens fast once it starts.
  4. Measure what you can. You don’t need an ESP8266 and a Raspberry Pi (probably). But a probe thermometer inside the bean cake, rather than relying on the incubator’s ambient display, would have saved me several failed batches.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *