The hairpin banksia occurs along the east coast of Australia from the Dandenong Ranges east of Melbourne, Victoria, north through New South Wales and into Queensland. It is common north to Maryborough, with disjunct populations occurring as far north as the Atherton Tableland near Cairns. It occurs in a variety of habitats, from coastal heath (spinulosa and collina) and elevated rocky slopes (neoanglica and spinulosa) to inland dry sclerophyll forest dominated by eucalypts, where they form part of the understorey. Plants in exposed areas are generally considerably shorter than those in sheltered areas. It usually occurs on sand, but can be found in rocky clays or loams.