
DONATIONS WELCOME This website is run with money from my own pocket , and to keep me from relying on adverts and promotions please feel free to give a monetary donation if this website has been useful to you . Please click on the button below to make your donation . STRAWBALE BUILDING FREQUENTLY ASKED QUESTIONS Most people have grown up through childhood and beyond into adulthood with the tale of the Three Little Pigs , so when first faced with the notion of building with straw the immediate reaction is to say , " surely you cant build a house out of straw , we all know what happened to the little pigs straw house " and then they usually huff and puff a little . I usually say , " that 's what you get if you let a pig build your house " HOW ABOUT FIRE ? loose straw does burn , but when compressed tightly and tied into a bale it is almost impossible to burn , just as loose paper will burn , but try setting fire to a telephone directory , and when straw bales are covered in render their performance is even better ! Straw bales have been fire tested beyond any doubt and have even satisfied the Australian Bushire Tests , QUOTE " Brian Menadue from SA Country Fire Service stated that it was important for the strawbale industry to test this new material and he was satisfied that rendered strawbale would be an acceptable wall material . The testing has proved that used in wall construction , rendered strawbales are suitable for use in bushfire-prone areas . They are non-combustible to the stringent tests that were carried out by the CSIRO . Rendered strawbale walls now stand together with mudbrick and rammed earth as alternative building materials " Check out the full story by following the link . Bushfire tests WHAT ABOUT MOISTURE ? moisture is the only real enemy of straw bales , if your bales get wet and have a moisture content above 20 % then they will rot . BUT with careful attention there is no need for your bales to get wet , a few simple rules can prevent this . Build your foundation a minimum of 6-8 inches above ground level and make sure that you have good damproofing and give the roof a generous(2ft ) overhang . This is the equivalent of a good hat and boots , along with regularly limewashing the exterior render , should prevent moisture from entering your bales . WHAT ABOUT RATS AND MICE ? Rats and mice usually like to run around in the cavities between walls , with strawbale walls there are no cavities for them to lurk in , also the walls are usually lime rendered which rats and mice cannot chew through as the lime will soon dry their mouths out . I have never come across an owner of a strawbale house that has a problem with rats and mice . ARE STRAWBALE BUILDINGS STRUCTURALLY SAFE ? Strawbale buildings are as safe if not safer than any conventional building , they have been thoroughly tested for load bearing and are capable of structural loading far in excess of any accepted requirements , it has even been noted that when loaded to failure point that they fail in an unspectacular fashion when compared to conventional building materials . ARE STRAWBALE BUILDINGS CHEAP TO BUILD ? The cost of building a 3-4 bedroom strawbale house will not really be any cheaper than a conventional build , there is possibly a slight saving on the cost of the walls but everything else , foundation , roof , doors , windows , services etc is the same , BUT for the same costs as a conventional build you end up with a superinsulated house . Many people who build with strawbales manage to lower their building costs by becoming dedicated recyclers and scroungers and by using friends and family for labour , in this way it is possible to build fairly cheaply . DO I NEED PLANNING PERMISSION FOR A STRAWBALE BUILDING ? In most cases the answer is yes you do need planning permission , however some buildings ( in back gardens etc ) fall under the Generally Permitted Development Order and if they are built within certain guidelines require no planning permission . Planning authorities are only interested in whether a building is allowed in the actual area , and the size and shape and actual location , they are not concerned with the materials you use to build with , this is a matter for the Building Control Officer . Check out the full story by following the link . Planning Index HOW LONG WILL A STRAWBALE BUILDING LAST ? Here in the UK we have only been building with straw bales since the mid 1990 's , so have no real precedent for longevity , however there are SB buildings in the USA that are almost a hundred years old SB historic buildings and at least one in France Historic SB building France that dates back to 1921 . Like all buildings if it is regularly maintained a SB building should last indefinately . 