Sahti 2026

>> Saturday, June 06, 2026


Today I'm finally brewing one of the more unusual historical beer styles, at least compared to styles I typically brew: Sahti, a traditional farmhouse ale of Finland. Here’s how the 2021 BJCP guidelines describe this historical style:
A sweet, heavy, strong traditional Finnish beer with a rye, juniper, and juniper berry flavor and a strong banana-clove yeast character.

The use of rye doesn’t mean that it should taste like caraway (a common flavor in rye bread). The juniper acts a bit like hops in the balance and flavor, providing a flavor and bitterness counterpoint to the sweet malt. Piney, woody juniper character more common than gin-like berries.

An indigenous traditional style from Finland; a farmhouse tradition for at least 500 years, often brewed for festive occasions like summer weddings, and consumed within a week or two of brewing.

I love that the guidelines specifically say that the use of rye doesn't mean it should taste like caraway. Believe it or not, I've had numerous discussions with other judges and homebrewers that mistakenly associated "spicy" rye character with what's actually caraway in most rye bread.  

A friend of mine from my old homebrew club in Utah, Mike Johnson, made a Sahti that won gold on
multiple occasions. I reached out to Mike for tips on replicating this style. I also found a good write up on Craft Beer & Brewing, and tons of great information on Brewing Nordic. I highly recommend Brewing Nordic. It contains an incredible amount of information on traditional Sahti and was invaluable while researching this batch. For my attempt today, I'm kind of mashing all this great info together and hoping it yields a nice drinkable beer and a decent example of the style.

There are a few challenges to trying to brew this style in the U.S. that I wanted to mention: 
  • First, one of the key ingredients is Tuoppi Kaljamallas, a dark roasted rye malt, isn’t available in the U.S. Fortunately it’s not too difficult to take rye malt and roast it in the oven for a very close substitute. 
  • Another challenge is the traditional yeast, a bread yeast, is not readily available outside of Finland. I was thinking one of the Kveik farmhouse strains might be a good alternative, but Nordic Brewing says it’s really not. Banana esters are a huge part of the fermentation profile for this beer and a lot of the Kveik strains are fairly clean and/or give you citrus and tropical fruit (but not banana). I'm using WLP300 for banana flavor and aroma. I've only used this yeast once before and that was about 15 years ago so I don't really remember much from that batch. Clove phenolics are another important part but according to my research, should be more restrained than the banana character. I plan to use WLP565 and pitch it about 24 hours after WLP300. WLP565 is notorious for quitting early unless temps are raised quite high. I'm counting on this to ensure the beer doesn't dry out too much.
  • Third, the correct varieties of juniper trees don’t grow anywhere near me in Florida. Nordic Brewing mentions that many modern interpretations skip juniper altogether, but I want to include it in my version. I ended up ordering a 4oz pack of juniper leaves from Spruce On Tap. These are still a different variety from what is found in Finland, but I've heard good things about Spruce On Tap's offerings. This recipe only calls for 10 grams, so I’ll have plenty leftover if I decide to brew this again or experiment with juniper in another beer.
  • Traditional Sahti is typically raw, never boiled. This means it’s never gotten hot enough to form hot break so lots of proteins carryover to the finished beer. This contributes to body and usually cloudiness in the finished beer. Mike said he usually boils his, same as any other batch of beer. I decided I want to try the raw/no-boil approach, although I am planning on taking the beer up to 170°F to sanitize and hopefully drive off some SMM while maintaining the raw beer character.
  • Fermentation is traditionally stopped early by dropping the temperature before fermentation is actually complete. The beer is then stored cold until ready to drink. For my attempt, I plan to enter this beer in one or more competitions so I need it to be stable. I will mash high to create lots of unfermentable sugars with the hopes of it finishing close to 1.034. I’m hoping this along with my yeast selection will eliminate the risk of bottle bombs due to residual sugars in the beer.
  • Sahti is usually served still or with low carbonation. I think I’m going to prefer some carbonation, so I’ll probably shoot for something around 1 volume. 
Roasting Rye Malt
I’m using the instructions from Nordic Brewing. The quick Cliffs Notes version is you preheat your oven to 350F. If you have a convection option on your oven, use it. Spread the rye malt out into a thin layer on a foil lined cookie sheet. Target time is 45 minutes, but check it around 40 minutes and make sure the malt isn’t burning/charring. You won't see a huge color change to the outside of the rye malt, but inside you'll see a very noticeable change. After 45-ish minutes, remove from the oven and allow to cool. I did this process a few days ahead of brew day. I do this with smoked grains and toasted oatmeal too; based on what I've read and heard from other brewers, this allows the malt to mellow a little bit and for flavors and aromas to round out. By the way, the roasting process smells amazing; I got major bread crust aroma from it. My wife came into the house a couple hours after I finished roasting the malt and said the house smelled like I'd been baking bread.

Enough talk, here's the recipe as I'm brewing it today:
 
Target OG: 1.097
Target FG: 1.034
IBU: 0
ABV: 8.3%

7.5# Solstice Pilsner
7.5# Weyermann Vienna
4.1# Weyermann Munich I
1.2# Home-roasted Mecca Grade Rimrock Rye malt
Rice hulls, 1-2 handfuls 
10g Juniper tips/leaves mixed into the mash
1g BrewTan B (Mash)
80% of one vial of WLP300 Hefeweizen and 20% of one vial of WLP565 Belgian Saison I

Mash at 159°F. Collect about 5.25 gallons in the boil kettle. Bring wort to 170°F and hold for 30 min to sanitize and hopefully drive off some SMM (DMS precursor). 

Chill to 68°F. Aerate for 2 min. Pitch WLP300 and wait 24 hours before pitching WLP565.

Allow ferm temp to rise to 74°F in that first 24 hours. After 24 hours, pitch WLP565 and allow temp to rise to 75°F over a day. Maintain 75°F for the duration of primary. 

Water Profile
Target Water Profile
Ca Mg Na SO4 Cl HCO3
55 8 15 40 80 90

To 10 gallons of RO/Distilled Water, add:
  • 2.7g Gypsum
  • 2.7g Calcium Chloride
  • 2.3g Baking Soda
  • 3.6g Magnesium Chloride
  • 1.0g Pickling Lime
Brewing Notes

I went with a slightly thicker mash on this brew since I won't be boiling off any water. I also am using my 20 gallon mash tun so that the grain bed wasn't as deep which should help improve efficiency. This was a large grain bill and it just barely overfilled my grain bucket while milling. I probably spilled a couple grams worth of grain onto my garage floor. 

First runnings were 1.094, so I definitely won't be hitting the 1.097 target OG. I tend to get right about 83-84% efficiency on most beers, but efficiency is always lower on bigger beers, so I can't say it's unexpected. The color on this beer is amazing; deep amber and clarity is looking good right now. This is likely due to the fact that I recirculate during the entire mash, so the grain bed tends to do a great job of filtering out small particles.  

No issues with the remainder of the brew session. OG is showing 1.091 on my refractometer and 1.090 on my Tilt. WLP300 was pitched at 1:30PM @67°F. I decided to pitch the whole vial; my rationale is even 1 vial is under pitching for a 1.091 beer, so I think it will work out fine. I'm planning on pitching WLP565 tomorrow at 1:30PM

 
Session Readings
Equipment used20 gal MT
Strike water volume6 gal
Strike water temp176.4 °F
Mash thickness1.18 qt/lbs
Beginning mash pH5.38
Ending mash pH5.37
1st running gravity23 (1.094)
Volume into BK5.25 gal
Pre-steep gravity22.1 (1.090)
Pre--steep pH5.40
Post-steep gravity22.4 (1.091)
Post-steep pH5.35
Aeration0.5l/min for 2 min
Post ferm gravityx (1.0)
Post ferm pHx

Update 6/7/2026 8:40AM
Gravity has started to drop and I'm seeing active signs of fermentation, so It seems that WLP300 has gotten off to a good start. I'll take the WLP565 out of the fridge in a couple hours and allow it to come up to room temp before pitching.  

Update 6/7/2026 3PM
WLP565 was pitched at 1:30PM. Gravity is currently reading 1.079 on the Tilt. 

Read more...

Kellerbier 2026

>> Sunday, May 03, 2026


Today I'm brewing my Kellerbier recipe. The 2021 BJCP Guidelines describe this style as follows:
An unfiltered, unpasteurized, fully-attenuated German lager traditionally served from lagering vessels. May be a little richer, more robust, and rustic than the base styles. A fresh beer without fermentation defects associated with young, green (unfinished) beer.
Since the BJCP Guidelines require the base style be declared, I'd describe this one as a German Pils Kellerbier. I originally started brewing this beer because I enjoyed Granary Kellerbier from TF Brewing so much. Granary Kellerbier has won a ton of medals over the years and I usually order at least one every time I go to TF (admittedly this is less often since moving to Florida). This version has a few changes compared to previous batches. First, I'm trying out LalBrew NovaLager™ for this round. Lallemand describe Nova Lager as follows:

LalBrew NovaLager™ is a true bottom-fermenting Saccharomyces pastorianus hybrid from the novel Group III lineage that has been selected to produce clean lager beers with distinct flavor characteristics and superior fermentation performance. LalBrew NovaLager™ is a robust lager strain with ideal characteristics for lager beer production including fast fermentations and high attenuation. The distinct flavor profile is very clean, slight esters over a wide temperature range. LalBrew NovaLager™ was selected using classical and non-GMO breeding methods to obtain a novel Saccharomyces cerevisiae x Saccharomyces eubayanus hybrid strain that defines a novel Group III lager lineage that is distinct from any other traditional Saccharomyces pastorianus strains. This strain is a low VDK/diacetyl producer and utilizes patented technology from the University of California Davis (USA) that inhibits the production of hydrogen sulfide (H2S) off-flavors, therefore reducing the maturation time associated with lager beer production.

  • Attenuation: 78-84%
  • Fermentation Temp Range: 10 - 20°C (50 - 68°F)

I think this will be a great style to try out this yeast and it'll be interesting to see how different the results are compared to some of the other yeast I've used like Imperial L17 Harvest and Wyeast 2124 Bohemian Lager. I'm targeting 50F for my fermentation temp, but it is getting warmer here in Florida and I may have a hard time holding 50F...time will tell. I should be able to get wort temps to the low 50s relatively easily. I usually let trub settle for at least 15 minutes after shutting off my whirlpool. I may need to skip that to prevent the wort from warming back up.  

Another change, I don't have Root Shoot malt on hand any longer, so I'll be using Rahr North Star Pils for this batch. I've used this malt before and have had great results, so I'm not too concerned. 

Lastly, I'm also going to skip doing a decoction mash and instead try a step mash with a little bit of Melanoidin malt. Previously I've employed a single decoction mash, but with my 220v RIMS system I'm able to increase temps rather quickly and I wasn't positive that I was picking up a ton of complexity employing a single decoction anyway. This will make for a much less complex brew day.

Target OG: 1.051
Target FG: 1.010
IBU: 30
ABV: 5.1%

8.00# Rahr North Star Pils
0.25# Weyermann Munich I
0.25# Weyermann Melanoidin malt
20g Hallertauer Mittelfruh 3.2%AA (FWH)
14g Aramis 7.4%AA (60 min)
24g Aramis 7.4%AA (0 min)
1g BrewTan B (Mash)
Whirlfloc (Flameout)
Wyeast Nutrient (10 min)
4.66g BCAA (10 min)
Zinc Buddy
LalBrew NovaLager™

Step Mash
Mash in at 145°F and hold for 30 minutes.
Increase Mash temp to 159°F, hold for 20 minutes.
Mashout at 168F.
90 minute boil, ferment at 50°F

Water Profile
Target Water Profile
Ca Mg Na SO4 Cl HCO3
22 8 0 31 39 0




To 11 gallons of RO/Distilled water, add:
  • 3.3g Epsom Salts
  • 3.3g Calcium Chloride

Session Readings
Equipment used10 gal MT
Strike water volume4.25 gal
Strike water temp156.4 °F
Mash thickness2 qt/lbs
Beginning mash pH5.27
Ending mash pH4.98
1st running gravity13.9 (1.055)
Volume into BK7 gal
Pre-Boil gravity9.4 (1.036)
Pre-Boil pH5.34
Post-Boil gravity13.3 (1.052)
Post-Boil pH5.39
Aeration0.5 l/min for 2 min
Post ferm gravity6.3 (1.008)
Post ferm pH4.56

Brewing Notes

Initial mash pH measured 5.59. I added 2ml of phosphoric acid, waited about 5 min, then re-measured and the pH had settled at 5.27. I programmed a new "German Step" profile into my BCS-460 and it worked awesome. I didn't set a stopwatch, but rise time was pretty short; I've said it before and I'll say it again, brewing on a 240v RIMS is pretty awesome. 


No major issues with this batch. I was able to chill down to about 52.5F, so hopefully my ferm fridge will be able to take it down to 50F. If not, I'll start fermentation at 52F. Even though this yeast is supposed to produce low diacetyl, I still plan to bump up the temps a bit when gravity is around 1.018 as measured on the Tilt. That's my standard approach for lagers and I believe it helps ensure any fermentation byproducts get cleaned up.

Update 5/4/2026

As I suspected, I had a hard time getting temps down to 50F, so I'm fermenting at 52F. It did get down to about 51.2F at one point but I figured I'd give my fermentation fridge compressor a break and go with 52F. Temps are holding steady and it looks like the yeast are coming out of the lag phase this morning as I'm seeing a slight dip in gravity.

Update 5/5/2026

I was seeing slight gravity drop throughout the day yesterday, but nothing too crazy and also very little positive pressure on the fermenter. I am seeing more activity today, including positive pressure, and what appears to be some wobbling on my Tilt. Current gravity reading is 1.035 on the Tilt.

Update 5/6/2026

I bumped the temp up to 53F before I went to bed last night. This morning the gravity is reading ~1.026. If it continues at that rate, I'll probably be raising temps to about 63F before the weekend.

Update 5/7/2026

This morning the current reading on the Tilt is 1.013. Fermentation has been super active with lots of wobbling on the Tilt with gravity measurements ranging between 1.015 and 1.010 just within the last couple of hours, so I suspect the actual gravity is closer to 1.015. I bumped the temps up to 62F this morning and I'm allowing it to free-rise.

Update 5/25/2026

This beer was kegged today. Honestly, I think it could have been kegged a week ago but I didn't have time.

Read more...

Mixed Ferm Rye Saison

>> Saturday, April 11, 2026


Today I’m brewing a Rye Saison, and the part I’m most excited about is the yeast; I’m using the Mad Fermentationist Saison Blend from Bootleg Biology. While Bootleg Biology appears to have scaled back their homebrew offerings in favor of commercial pitches, I was able to get some of this blend a while back.

This culture is a mix of Saccharomyces, Brettanomyces, and lactic acid bacteria, and it has a strong reputation. I propagated the blend to bank some for future use, so the ratios are likely different from the original pouch.

The BJCP describes Saison as:
A family of refreshing, highly attenuated, hoppy, and fairly bitter Belgian ales with a very dry finish and high carbonation. Characterized by a fruity, spicy, sometimes phenolic fermentation profile, and the use of cereal grains and sometimes spices for complexity. Several variations in strength and color exist.
As that suggests, there’s quite a bit of stylistic flexibility. This version will be lighter in color and moderate in strength, with some noticeable spice and peppery phenolics from the mixed culture. I’m not expecting much Brett character when the beer is young, but it should develop more classic Brett complexity with age.

The recipe itself is intentionally simple: Pilsner, Vienna, and Rye Malts, with straightforward hop additions. Most of the complexity should come from the fermentation character rather than the grist or hopping. I'm also using rice hulls since rye is a huskless malt and like wheat, has a tendency to gum the mash.

Even though this is a mixed culture, I’m not expecting significant sourness. The hop additions should suppress the lactic acid bacteria, keeping acidity in check. I’m also mashing slightly higher than typical for a Saison. While the style is usually very dry, my propagation starter finished below 1.000, so this is a hedge against the beer ending up too thin.

I’m considering adding a grapefruit tincture to half the batch, but I’ll make that call after tasting.

Like some recent brews, I’m also using ingredients I already have on hand as part of an effort to reduce my grain inventory.

Here’s the beer as I’m brewing it today:

Target OG: 1.060
Target FG: 1.005
IBU: 29.2
ABV: 7.3

6.5# Solstice Pilsner Malt
0.8125# Weyermann Barke Vienna Malt
2.4375# Mecca Grade Rimrock Rye Malt
Rice Hulls (a few handfuls)
56g Styrian Goldings 2.5 AA (60 min)
2ml Hopshot (60 min)
28g Styrian Goldings 2.5 AA (10 min)
1g BrewTan B (Mash)
Whirlfloc (Flameout)
Wyeast Nutrient (10 min)
4.66g BCAA (10 min)
Zinc Buddy
Bootleg Biology The Mad Fermentationist Saison Blend

Mash at 151F, 90 minute boil, chill to 65F, aerate and pitch yeast. Ferment at 65F ramping up to 70F over a few days.

Water Profile
Target Water Profile
Ca Mg Na SO4 Cl HCO3
 124  6.6   3.6   198.3   97.7  0

We're shooting for a 2:1 sulfate to chloride ratio to help accentuate bitterness while ensuring a crisp finish. To 11 gallons of RO/Distilled water, add:
  • 12.9g Gypsum
  • 0.4g Pickling salt
  • 2.8g Epsom salt
  • 7.9g Calcium chloride

Brewing Notes

I hit strike temp only a couple of degrees low (~149) which is what I prefer; it's easier to raise the MT a couple degrees than try to lower the temp. The RIMS quickly got it up to 151 after I started recirculating. I added 1ml of 85% Phosphoric Acid to the mash after taking the initial pH reading. I also added 2ml of Phosphoric Acid to the HLT for the sparge water. Everything else went well until it was time to aerate and my O2 cylinder was empty. I used my old aquarium pump, but it definitely doesn't work as well as pure O2. I'd be a little more worried if this was a pure sacc pitch, but brett tends to do ok with lower aeration levels. Also, the propagated starter got quite a bit of O2. I also boiled a little bit of DME this morning and added it to my starter after decanting, so I'm hoping the yeast already had enough O2 to be healthy, but time will tell. Gravity came in 2 points under target, but not a big deal at all.  


Session Readings
Equipment used10 gal MT
Strike water volume5 gal
Strike water temp166 °F
Mash thickness2.05 qt/lbs
Beginning mash pH5.34
Ending mash pH5.21
1st running gravity15.8 (1.063)
Volume into BK6.75 gal
Pre-Boil gravity12 (1.047)
Pre-Boil pH5.19
Post-Boil gravity14.6 (1.058)
Post-Boil pH5.24
AerationN/A
Post ferm gravity6.3 (1.005)
Post ferm pH 4.07

Update 4/12/2026
I’m not using a Tilt on this batch because they’re plastic and I can’t sanitize them with heat. Instead, I’ve been checking for signs of fermentation, primarily a bubbling airlock. I hadn’t seen any bubbling yet so I peaked into the Brew Bucket (BB) and it has a bunch of krausen. I’ve occasionally experienced poor sealing on the built-in PRV on the BB domed lids and that appears to be the issue again. To remedy this I applied a little keg lube and hit it with some StarSan and instantly started getting bubbles in the airlock.

Update 4/14/2026
I'm still seeing quite a bit of bubbling through the airlock, so fermentation hasn't wrapped up. I decided to pull a small sample and the flavor profile is exactly how I wanted it. There's some of that classic "Belgian" character, but it's not so over the top that you can't taste anything else. I was also surprised to see there was some noticeable acidity. I haven't taken a pH measurement yet, but I'd speculate it's somewhere around 3.5 ± 0.05. I'll take a reading once fermentation activity wraps up. 

Update 4/16/2026
Fermentation activity has dropped quite a bit. I won't have time to transfer out of the fermenter this coming weekend, so it'll probably hang out there for another week or so.

Update 4/21/2026
Poured a small sample today to test gravity and pH. Gravity may still drop a bit more since we're talking brettanomyces, but it's currently reading ~6.3 on my refractor which yields a corrected gravity of 1.005. pH is a little higher than I perceived at 4.07. I'm really liking the yeast blend's fermentation profile and can understand why it's so popular. You definitely get some classic "Belgian" esters and phenols, but it doesn't dominate. I do get some Brett character even though it's young and I'm excited to see how it evolves over time. I'm really glad I used a simple grain bill with this so as not to muddy the finished beer. I think this is a really good candidate for treating a portion with grapefruit, so I'm going to start on that.

Update 4/24/2026

I started my grapefruit tincture today. It's pretty straightforward, I use a Swiss style vegetable peeler to remove the zest from the fruit. It does a great job of just removing the outer zest but leaves the pith behind. I then place the peels in a small airtight jar and cover with a decent vodka. Everclear also works but I like to dilute it down to Vodka strength (~40% ABV/80 proof) because I find it can extract unwanted compounds at higher ABV/proof. I like to shake it about once per day and keep it stored in a cool dark place. 5-7 days tends to be the sweet spot for extraction.  After that, strain out the solids and store in a cool dark place until ready to use.

Update 4/30/2026
I kegged this beer this evening. I used two of my smaller kegs (2.6 gallon and 3-ish gallon) as part will be dosed with my grapefruit tincture and the other won't. Speaking of, the peels were removed from the tincture last night. I'll carb up the kegs then figure out the appropriate dosage of tincture to use. I'm guessing it'll end up being somewhere between .5-1ml/l of beer.

Read more...

Consistency and Repeatability in Brewing

>> Thursday, April 09, 2026

I’ve been catching up on old episodes of The Brewing Network’s Brew Strong, and a recurring theme is consistency and repeatability. That got me thinking about my own process, so I decided to write this post and update my brew session template.

For anyone new to brewing who might come across this—don’t worry if your process looks different from mine. Very few systems are identical. For example, you may use a different mash thickness, and that’s perfectly fine. The key is to experiment and find what works best for your setup.

You also don’t need to rush out and buy more equipment to measure every possible variable. If you don’t have a sight glass or a pH meter, focus on what you can measure and document those things consistently from batch to batch. Even simple tools can be effective—for instance, if you’re using pH strips, you could take a photo under consistent lighting to compare results over time. If something seems off, your notes will give you a reliable reference point.

Brewing has countless variables that affect consistency, and even the pros struggle with this. Years ago, I did a Pro-Am Flanders Red with Uinta Brewing and saw firsthand how much variation can occur—30+ barrels of the same beer aged differently. Many were similar, but there were definitely differences from barrel to barrel. One in particular stood out with a completely unique and incredible acid profile. We even considered a single-barrel release before ultimately blending it.

There are also factors we simply can’t control: variability in malt and hops, differences in hop lots (which is why commercial breweries contract and select hops in person), and even how yeast is handled before it reaches your local homebrew shop. The goal isn’t to stress over these variables—but to be aware of them.
Instead, focus on what you can control. Good documentation is critical for consistency and repeatability, especially when a batch turns out significantly different—whether better or worse.

One change I made years ago was building my own grain mill to improve consistency. At the time, I was seeing significant variability in mash efficiency. If you’re relying on different shops to mill your grain, you’ll likely encounter inconsistencies—different mills, gap settings, number of passes, and even residual grain from previous batches can all affect your crush. I’ve seen cases where efficiency dropped 20% in a single batch due to a poor crush.

By milling my own grain—typically while filling the mash tun with strike water—I’ve been able to achieve much more consistent mash efficiency across batches.

In short: take good notes and standardize your process as much as possible. When you encounter outliers, your notes will help you identify what changed.

To support this, I’m updating my brew session template to capture more detail. While this likely won’t be the final version, it reflects my current setup and should help ensure I consistently record the most important variables. Below is the table I’ll be using going forward.

Session Readings
Equipment usedX
Strike water volumeX gal
Strike water tempX °F
Mash thicknessX qt/lbs
Beginning mash pHX
Ending mash pHX
1st running gravityX (1.0)
Volume into BKX gal
Pre-Boil gravityX (1.0)
Pre-Boil pHX
Post-Boil gravityX (1.0)
Post-Boil pHX
AerationX l/minute
Post ferm gravityX (1.0)
Post ferm pHX (1.0)

Read more...

Frozen Daiquiri

>> Friday, April 03, 2026


My youngest daughter and her friend are visiting from Utah. The temps are in the low 80s and we're hanging out by the pool, so I decided to mix up a batch of frozen Daiquiris. Here's the recipe as I made it and as usual, I froze it in the Ninja Slushi.

222ml lime juice
278ml of 2:1 "rich" simple syrup
222ml each of two different light (or lightesh rums). I used Member's Mark "Rum from the Caribbean" and Clement Blanc Rhum Agricole Maetinique
950ml water

Measure out the ingredients and throw it in your Slushi on Spiked Slush setting. 

I thought it was a little sweet and my wife thought it was a little tart, so it's probably a perfect balance, ha!

Read more...