The first section of the line, to Northgate opened in 1882. In 1883 the Queensland government decided to link Gladstone to Brisbane by railway, and eventually decided upon Northgate as the junction for the new line. The alignment from Roma St to Bowen Hills was via Normanby, and this remained the case until the dual track line via Central opened in 1890. The Queensland Government called tenders for construction of the new line in 1886, with the contractor undertaking works "energetically", and despite delays due to the late arrival of bridge beams, the line was unofficially opened on 11 June 1888, with the official opening on 16 June 1888. The next section of the North Coast line to Landsborough opened in 1890. The section from Bowen Hills to Eagle Junction was duplicated in 1886, with the section to Northgate duplicated in 1890, and on to Caboolture by 1917. The section from Roma St to Bowen Hills was electrified in 1979, to Northgate in 1982, to Petrie in 1983 and to Caboolture in 1986. The growth in patronage as a result of electrification resulted in the quadruplication of the Roma St-Northgate section in 1996, including 2 pairs of single track tunnels and the realisation of the use of the Bowen Hills tunnel widened 20 years earlier. Some of the roadbed and bridge abutments had been built in the 1950s before the original quadruplication scheme was abandoned. A third line has been added as far as Lawnton, which has been extended to Petrie as part of the Redcliffe Peninsula line, which opened on 4 October 2016. Following the opening of the Redcliffe Peninsula line, a decision was made that all services on the Caboolture line would run express between Petrie and Bowen Hills, stopping only at Northgate and Eagle Junction. Stations between Petrie and Northgate would be serviced by the new Redcliffe Peninsula services while stations between Northgate and Bowen Hills would continue to be serviced by other existing services.
Line guide and services
All trains run express between Petrie and Bowen Hills, stopping only at Northgate and Eagle Junction. The typical travel time between Caboolture and Brisbane City is approximately 51 minutes. A few services that originate or continue to Gympie North on the Sunshine Coast line skips stations between Caboolture and Bowen Hills stopping only at Petrie and Northgate During the off-peak, services generally continue to Ipswich railway station on the Ipswich and Rosewood line. Passengers for/from the Sunshine Coast line change at Petrie or Northgate, Redcliffe Peninsula line at Petrie, Shorncliffe line at Northgate, Airport and Doomben lines at Eagle Junction, Ferny Grove line change at Bowen Hills, and all other lines at Central.