The factors controlling the concentrations of HOx radicals (= OH + peroxy) in the upper troposphere (8–12 km) are examined using concurrent aircraft observations of OH, HO2, H2O2, CH3OOH, and CH2O made during the Subsonic Assessment Ozone and Nitrogen Oxide Experiment (SONEX) at northern midlatitudes in the fall. These observations, complemented by concurrent measurements of O3, H2O, NO, peroxyacetyl nitrate (PAN), HNO3, CH4, CO, acetone, hydrocarbons, actinic fluxes, and aerosols, allow a highly constrained mass balance analysis of HOx and of the larger chemical family HOy (= HOx + 2 H2O2 + 2 CH3OOH + HNO2 + HNO4). Observations of OH and HO2 are successfully simulated to within 40% by a diel steady state model constrained with observed H2O2 and CH3OOH. The model captures 85% of the observed HOx variance, which is driven mainly by the concentrations of NOx (= NO + NO2) and by the strength of the HOx primary sources. Exceptions to the good agreement between modeled and observed HOx are at sunrise and sunset, where the model is too low by factors of 2–5, and inside cirrus clouds, where the model is too high by factors of 1.2–2. Heterogeneous conversion of NO2 to HONO on aerosols (γNO2 = 10−3) during the night followed by photolysis of HONO could explain part of the discrepancy at sunrise. Heterogeneous loss of HO2 on ice crystals (γice_HO2 = 0.025) could explain the discrepancy in cirrus. Primary sources of HOx from O(1D)+H2O and acetone photolysis were of comparable magnitude during SONEX. The dominant sinks of HOy were OH+HO2 (NOx<50 parts per trillion by volume (pptv)) and OH+HNO4 (NOx>50 pptv). Observed H2O2 concentrations are reproduced by model calculations to within 50% if one allows in the model for heterogeneous conversion of HO2 to H2O2 on aerosols (γHO2 = 0.2). Observed CH3OOH concentrations are underestimated by a factor of 2 on average. Observed CH2O concentrations were usually below the 50 pptv detection limit, consistent with model results; however, frequent occurrences of high values in the observations (up to 350 pptv) are not captured by the model. These high values are correlated with high CH3OH and with cirrus clouds. Heterogeneous oxidation of CH3OH to CH2O on aerosols or ice crystals might provide an explanation (γice_CH3OH ∼ 0.01 would be needed).