Fresh-Air Exchange Calculator
Enter your fruiting room's dimensions and species — get the fan CFM and air changes per hour to hold a target CO₂ level. Built on CFM = room ft³ × ACH ÷ 60, the design math behind leggy-oyster fixes and the reason king trumpet growers deliberately do the opposite.
CFM = room ft³ × ACH ÷ 60. Size fans ~20–30% over this number for duct and filter losses — rated CFM isn't delivered CFM.
Turn a room and a species into a fan size.
Fresh-air exchange (FAE) is measured in air changes per hour (ACH) — how many times the entire room's volume of air gets replaced every hour. This tool takes your fruiting room's dimensions and your species' typical ACH target and gives you the fan CFM (cubic feet per minute) you actually need to buy, plus how often a full air change happens and what CO₂ ceiling that ACH is designed to hold under.
Everything runs client-side. Nothing is stored, nothing is sent — change any input and the result updates live.
The FAE formula, explainedThe math behind the number.
CFM = room volume × ACH ÷ 60
Air changes per hour describes how many times per hour the fan needs to move a volume of air equal to the entire room. Convert that to a fan spec by multiplying the room's volume by the target ACH, then dividing by 60 to get cubic feet per minute — the unit fans are actually rated in.
roomFt3 = L_ft × W_ft × H_ft
# required fan airflow, cubic feet per minute
CFM = roomFt3 × ACH ÷ 60
# how often one full air change happens
minPerChange = 60 ÷ ACH
Metric rooms convert to feet first
If you measure in meters, the tool converts to feet before running the math, using the standard 1 ft = 0.3048 m conversion — so a room entered in meters and one entered in feet land on the identical CFM.
An 8 × 8 × 8 ft fruiting room, oysters, ACH 6.
roomFt3 = 8 × 8 × 8 = 512 ft³.
CFM = 512 × 6 ÷ 60 ≈ 51 CFM. minPerChange = 60 ÷ 6 = 10 minutes — one full air change every 10 minutes.
Size the fan ~20–30% over that number for ducting and filter losses — call it ~65 CFM rated, not 51.
When the standard number is wrong.
ACH presets are a starting point for sizing a fan, not a guarantee of a specific CO₂ level. Here's where "just run 6 ACH" quietly stops being the right answer.
Size by ACH, then verify with a CO₂ meter
I couldn't confirm a reliable, published per-species CO₂-production rate for these mushrooms — block load, room size, humidity, and flush stage all move that number too much for a single constant to be honest. ACH is the design lever this calculator gives you because it's the one that's actually standardized. But the real instrument is a $30 CO₂ meter sitting in the room. Size the fan from this tool, then let the meter tell you if 6 ACH is actually holding your target ppm in your room, with your block density, at your humidity. A leggy crop of oysters is a CO₂ readout you can see without a meter at all.
Oysters and king trumpet want opposite things
Oysters are the FAE hogs — under-ventilate them and CO₂ climbs, which stretches stems long and shrinks caps looking for oxygen. King trumpet growers do the opposite on purpose: they deliberately hold CO₂ higher to suppress cap formation and grow the thick, dense stems the species is prized for. "More fresh air is always better" is wrong for king trumpet — the right ACH is species- and morphology-dependent, not a universal target to maximize.
FAE and humidity fight each other
Every cubic foot of fresh air you pull in is drier than the saturated air it replaces, so more air changes means a room that dries out faster. Ventilation and humidification have to be sized together, not tuned independently — a fan running on a cycle timer (on/off intervals) usually balances CO₂ control against humidity loss better than a fan left on constant airflow.
Block load drives CO₂ more than room size does
A room packed with blocks at peak flush is respiring far more CO₂ than the same room half-empty or between flushes — the mushrooms themselves are the CO₂ source, not the room's walls. Size your FAE for the fullest state you actually run (peak block density, peak flush), and plan to push airflow up as a flush peaks rather than leaving the fan at one static setting year-round.
Rated CFM is not delivered CFM
A fan's box rating is measured in open air with nothing attached. Add ducting, a carbon or HEPA filter, and any bends or static pressure, and the air actually delivered into the room drops — sometimes substantially. Oversize the fan you buy by ~20–30% over this calculator's raw CFM number so the airflow that survives your actual duct run still hits the target ACH.
Notes from the farmMy first fruiting-room fan was sized off the raw math and nothing else — the CFM number this calculator would spit out, bought at exactly that rating, ducted through a carbon filter I hadn't accounted for. The oysters told me it was wrong before any meter did: long stems, small caps, the classic under-ventilated look, on a room that "should have" been at 6 ACH by the spec sheet. What actually fixed it wasn't a better formula, it was a $30 CO₂ meter and a fan bought 25% bigger than the math said. The formula gets you a starting fan size. The meter tells you if the room you actually built is hitting the number you designed for. I still size every new room off ACH first — it's the honest, standardized way to start — but I don't call a room tuned until the meter agrees with the spreadsheet.
Track every batch, flush, and yield — not just the fan spec.
An ACH target is a planning estimate for a fan purchase. The value shows up when you log actual CO₂, humidity, and yield against batch, flush, and grow room across every harvest — and see which rooms are really holding the FAE you designed for, and which are quietly drifting before a crop goes leggy. That's what a Farm-Ops tracker does automatically.