At the 2012 Summer Olympics in London, Halsall competed in five events. Halsall reached the semi-finals of 100m butterfly, posting a time of 58.52, well off her season's best of 57.56 set in March. Halsall made the finals of the 100m freestyle and 50m freestyle, finishing 6th and 5th respectively. In the 4×100 m freestyle relay Halsall swam the second leg in a split of 53.29, helping the British team to a 5th-place finish. In the final of the 4×100 m medley relay the British team finished 8th, with Halsall providing an anchor leg of 54.08.