Welcome to HopWort.com

A Home for Aussie HomeBrewers

Beer Recipe Database

You can find clone recipes for many popular beers here, and can order the ingredients from your local store in just a few clicks.

The database shows you beers that users have brewed. You can read the real outcomes rather than just seeing the recipes - until it's brewed it's only an idea.

About HopWort.com

Designed for Australian homebrewers, with the ingredients our local home brew shops sell.

This site just simplifies the whole process from choosing or building a recipe, all the way through to recording your final tastings.

Your records are then stored online so you always have your brew notes with you and can share with friends and fellow brewers. You can find clone recipes for many popular beers here, and can order the ingredients from your local store in just a few clicks.

The site is completely FREE to use and registration is simple. You can even use many features without registration.

Recipe Builder

Add Malts, Hops and Yeast and create the beer you want to drink. The Recipe Builder will do the maths for you, including:

  • Original and Final Gravities
  • Alcohol by Volume (ABV)
  • Bitterness known as IBU's (based on your brewing pot size)
  • Colour in SRM and ECB

Compares your recipe to BJCP style guidelines for the style of beer you are making

Try it here...

Customise Everything

Malts, Sugars, Fish Guts, whatever you want, you can have.

Just choose something similar (or not) then hit Edit.

So, if your brew shop has lots of Cascade with a special AA%, you can use that customisation in your recipes over and over. These are your ingredients, and you don't see any dumb stuff others might add, like fish guts.

Example

Ordering Ingredients

Once you have completed your recipe, the calculator can generate an order for delivery to a home brew supply shop near to your location. On the order you can indicate whether you want you order delivered, or whether you will pick up your ingredients.

We're big fans of our home brew shops and think every brewer should build a good relationship with theirs, so this website does not sell ingredients, we just help you write your email.

View Brewshops

Brewing Methods

This site was built by hardcore extract+grain brewers, but is designed to be general purpose and should work for all brewing methods.

All-grain brewers are likely to need more complexity than this site, but hey, you know that already as you're in the advanced class!

For brewers making their first steps into Brew-in-a-Bag (BIAB), this site will be a good starting point for all-grain. Do remember, at least in your first batches, to decrease your Efficiency% otherwise you may not achieve the OG you wanted.

FYI, we favour extract + grain brewing (partial mash) to make frequent batches for recipe development (and ENJOYMENT).

FB.init({ appId : '435081376536904', // App ID /* channelURL : '../../Vendor/channel.php', // Channel File */ status : true, // check login status cookie : true, // enable cookies to allow the server to access the session oauth : true, // enable OAuth 2.0 xfbml : true // parse XFBML }); window.fbAsyncInit = function() { /************** //alert('Aysnch loading complete'); // Checks whether the user is logged in FB.getLoginStatus(function(response) { if (response.authResponse) { // logged in and connected user, someone you know alert('You are connected'); } else { // no user session available, someone you dont know alert('You are disconnected'); } }); // Replaced with the code below FB.Event.subscribe('auth.authResponseChange', function(response) { if (response.authResponse) { // the user has just logged in alert('You just logged in facebook from somewhere'); } else { // the user has just logged out alert('You just logged out from faceboook'); } }); ***************/ }; // Outside fbAsynch - this WORKS FB.Event.subscribe('auth.authResponseChange', function(response) { if (response.authResponse) { // the user has just logged in // alert('You just logged into Alans facebook from somewhere.'.concat(response.authResponse)); //console.log(response); //alert( 'Listern on '); // This always runs if(response.status=='connected'){ var fbuser= response.authResponse.userID; // because they're connected to us, log em in or auto register them! // var username=''; var name=''; var email=''; FB.api('/me', function(response) { // console.log('Good to see you, ' + response.name ); // console.log(response); name=response.name; email = response.email; username = response.username; //}); //alert( 'User is Connected:'.concat(username)); // }; $.ajax({ type: 'POST', url: '../Users/ajax_login', data: { facebook_id: fbuser, email : email, username: username, name : name, first_name : response.first_name, last_name : response.last_name } }).done(function( msg ) { //alert( 'AJAX sent: ' + msg ); if (msg.substr(0,2)=='OK'){ //alert( 'Logged you in. ' + fbuser ); $('#UserLoginForm').hide(); var welcome_message='Welcome '+ name + '. Redirect to your home page?'; var home=confirm(welcome_message); if (home===true){top.location.href = '../users/home';}; } else { //alert( 'Could not log you in. ' + msg ); }; }); }); }; } else { // the user has just logged out // alert('You just logged out from faceboook'); } }); // logs the user in the application and facebook - doesn't get executed function login(redirection){ alert( 'Clicked login 2'); FB.login(function (response) { if(response.authResponse) { // user is logged in // console.log('Welcome!'); if(redirection != null && redirection != ''){ top.location.href = redirection; } } else { // user could not log in console.log('User cancelled login or did not fully authorize.'); } }, {scope: 'email'}); } // logs the user out of the application and facebook function logout(redirection){ FB.logout(function(response) { // user is logged out // redirection if any if(redirection != null && redirection != ''){ top.location.href = redirection; } }); } // Load the SDK Asynchronously (function(d){ var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; if (d.getElementById(id)) {return;} js = d.createElement('script'); js.id = id; js.async = true; js.src = '//connect.facebook.net/en_US/all.js'; ref.parentNode.insertBefore(js, ref); }(document)); /* (function() { var e = document.createElement('script'); e.async = true; e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; document.getElementById('fb-root').appendChild(e); }()); */