Hey forum users and developers. Hopefully this is helpful and thorough! In order of ease of implementation: Personally I would remove the row where ppg is currently listed, as it’s more properly used as a grain property rather than a wort property. Still getting the invalid input as a red border for decimals that aren’t 0.5 multiples on firefox (windows), but not chrome. Then I would add a row for Total grain weight, and average PPG below the grain table, similar to where total grain weight and average DP is listed in the complete recipe builder. I would also add a column of grain PPG or similar to the right of the grain name, as this is rather important for efficiency calculations. The calculator name should probably change to “efficiency” calculator, as it works for any component of efficiency (conversion, lauter, mash, or brewhouse) and not just brewhouse. The user input for Wort volume needs to change to something along the lines of "Total mash/infusion water volume" when the conversion efficiency is selected. I would probably change the terms for the types of efficiency to be in line with the standard definitions, see Braukaiser for more info. Something like the following Pre-Boil to “Mash: Pre-Boil” Ending Kettle to “Mash: Post-Boil”. Both should result in the same efficiency number. “Brew House” to “Brewhouse: Fermenter”. More importantly, the reason for this post... The conversion formula is properly defined as the total amount of extract available from your grains, the potential extract, to the amount of sugar converted from the mash. The most accurate method for this involves tracking the weight of extract/sugar converted during the mash, the mass of the wort, and the plato of the wort. However the calculations are more complicated than the simplified “total gravity point” method we’re all found of. See Braukaiser for more information. However the traditional total gravity point method fails to capture one fundamental aspect crucial to conversion efficiency, that wort volume is greater than water infusion volume. Which is significant enough that the typical ~1.055 SG recipe will produce around ~9% more wort volume, which is due to dissolving starches being converted to sugars, as well as proteins, beta glucans, etc etc. I’m not aware of an accurate method of using the gravity point method for a conversion efficiency calculation. In order to get the Conversion Efficiency, we need the following information (From Braukaiser): Tl;dr Editable google sheet Apologies if the below is hard to follow, math formulas don't seem to be supported on the forum. Situation: 12 lbs, 37 PPG. 7.6 gallons of water. Mash wort measured at 1.043 sg A) The Maximum theoretical First Wort (FW) extract, which is proportional to the degree plato. FWmax= 100*[ Mass_Grain(kg) * e_Grain (extract % dry basis) ] / [ MashWater(L) + Mass_Grain(kg)* e_Grain(extract % dry basis) ] FWmax=100 * [ 12 (lb) * 0.45359237 (kg/lb) * 37 ppg / 46 ppg ] / [ 7.6 (gal) *3.785411784 (L/gal) + 12 (lb) * 0.45359237 (kg/lb) * 37 ppg / 46 ppg ] = 13.2081793 °Plato B) The measured first wort plato FWMeasured=-616.868+(1111.14*SG)-(630.272*SG^2)+(135.997*SG^3) = 10.71605614 °Plato Then we can calculate the efficiency directly using the ratio of measured to maximum % extract by weight. Conversion Efficiency =100*(FWMeasured / FWmax) * (100-FWmax) / (100-FWmeasured) =78.8674 % Currently brewersfriend uses the simplified total points method, and incorrectly attributes it using the strike water volume, leading to a percent error of 6.67%. Incorrect Conversion = 1000 *(SG-1)*VWaterMassGrain * PPG=1000 *(1.043-1)*7.612 *37=73.60%

Nice work. I think I'll try it next brew session. Wondering where you got some of the variables (Average Grain Potential, extract potential and sucrose sg potential). I also noticed that your density of water might be off. I think the number 8.35 is close enough at room temperature. You're using 8.3304 (which is more sig figs than your calculations need)

Average grain potential would be the average weighted PPG for whatever recipe you're using. Typically it would be 36-37 PPG for most recipes. For example 12 lbs of 2 row (usually 37 PPG), and 1 lb of flaked wheat (30ppg) would be 12 * 37 + 1 * 30 / (12 + 1) = 36.46 PPG. Extract potential is the average PPG / the SG succrose potential, and is a unitless percentage. IE 36.46 PPG / 46 PPG = 79.26%. Succrose SG potential is usually referenced at 46 PPG, sometimes you'll see 47. In reality it does vary, as the higher the gravity of the liquid, the lower the PPG contribution due to hydrostatic pressure. But I haven't seen credible formulas for this variance, and it's below the resolution of a manual hydrometer. Density of water is variable with temp and pressure, I took that particular number from engineering toolbox which has a handy calculator for it. https://www.engineeringtoolbox.com/water-density-specific-weight-d_595.html.

Average grain potential would be the average weighted PPG for whatever recipe you're using. Typically it would be 36-37 PPG for most recipes. For example 12 lbs of 2 row (usually 37 PPG), and 1 lb of flaked wheat (30ppg) would be 12 * 37 + 1 * 30 / (12 + 1) = 36.46 PPG. Extract potential is the average PPG / the SG succrose potential, and is a unitless percentage. IE 36.46 PPG / 46 PPG = 79.26%. Succrose SG potential is usually referenced at 46 PPG, sometimes you'll see 47. In reality it does vary, as the higher the gravity of the liquid, the lower the PPG contribution due to hydrostatic pressure. But I haven't seen credible formulas for this variance, and it's below the resolution of a manual hydrometer. Density of water is variable with temp and pressure, I took that particular number from engineering toolbox which has a handy calculator for it. No link since posts with links apparently have to be approved by a mod.

@Yooper Small update: It looks like the Brew session formula is actually using the formula I posted above from braukaiser, and matches the expected values (minus some rounding discrepancies due to decimal places). Just need to update the brew house efficiency standalone conversion formula to match, and adjust the wording like I suggested above and this will be good to go.