Pojava željezničkog saobraćaja u Bosni i Hercegovini se veže za XIX stoljeće. Približavanje Osmanskog carstva Evropi bilo je od velikog značaja za Austriju i Njemačku koje su u tome vidjele proširenje svoga kapitala, posebno šumskog i rudnog.

Iako postoji nekoliko dokumenata koji se spore, smatra se da je 24. decembra 1872. godine zvanično puštena u promet prva dionica bosanskohercegovačke pruge: Banja Luka – Dobrljin. To je bila pruga normalnog kolosjeka u dužini od 101,6 km. Bila je zamišljena kao dio Istanbulske magistrale koja je trebala povezivati Istanbul sa Bečom. Nakon kraće eksploatacije, od svega 3 godine, ukinuta je prva pruga, da bi dolaskom Austrougara 1878. godine počela gardnja uzanih pruga sa ciljem eksploatacije šumskih i rudnih bogatstava. Iste godine formira se Direkcija carskih željeznica u Derventi. Vozni park se sastojao od dvadesetak lokomotiva jačine od 20 do 40 konjskih snaga i skoro 400 vagona. U vrijeme Austrougarske na značaju dobija pravac sjever – jug. Ljudstvo Direkcije činilo je sedam austrougarskih oficira i vojnika te 30 civilnih činovnika. Domaćih ljudi je bilo samo u pomoćnom ljudstvu. Koncesija za izgradnju pruga data je firmama “Higel” i “Sagel”. U izgradnji pruga učestvovalo je 40 inžinjera i oko 4 000 radnika. Želeći što prije uspostaviti komunikaciju od unutrašnjosti ka moru, Austrougarska je izdala plan izgradnje tzv. Južne pruge. Prva dionica je išla od Metkovića do Mostara a puštena je u saobraćaj 14. juna 1885. godine. U nastavku, izgrađena je dionica od Mostara do Sarajeva, koja je puštena u saobraćaj 22. avgusta 1888. godine, kao dionica pruge Mostar – Ostrožac, a 10. novembra 1889. godine prvi voz ulazi u Konjic. Austrougarski inžinjeri projektovali su još dvije dionice prema Jadranskom moru. Jedna je išla od Lašve do Travnika (otvorena 26. oktobra 1893.) a druga od Travnika do Bugojna (otvorena 14. oktobra 1894.). Dana, 7. novembra 1895. godine završena je i puštena u promet pruga Podlugovi – Vareš, dužine 24,5 kilometra, a služila je isključivo za eksploataciju uglja i željeznih ruda iz Breze i Vareša.

Sarajevo je i tada imalo posebnu privilegiju kada je izgradnja u pitanju, tako da je izgrađena mreža gradske željeznice u dužini od 5 271(?) km i odvojak Ilidža – Ilidža Banja dužine 1,28 km. Gradnja je trajala u periodu od 5. januara 1885. do 28. juna 1891. godine.

U vrijeme monarhističke Jugoslavije u saobraćaj su uvedeni motorni vozovi koji su bili brži i komforniji. Ipak, prvi motorni voz pušten je u saobraćaj tek 1938. godine, na relaciji Beograd – Sarajevo – Dubrovnik. Između dva svjetska rata pruga je stagnirala, ali nije dolazilo do obustave željezničkog saobraćaja. Za to vrijeme izgrađeno je 66 km pruga normalnog i 104 km uskog kolosjeka. Za vrijeme monarhističke Jugoslavije izgrađena je pruga: Bosanski Novi – Bosanska Krupa (4. oktobra 1920.) i pruga Bosanska Krupa – Bihać (17. januara 1924.). U pitanju su bile pruge normalnog kolosjeka. Od uzanih izgrađena je dionica: Bosanska Rača – Bijeljina, Bijeljina – Ugljevik, Trebinje – Bileća, Pazarić – Tarčin i Metković – Ploče.

U vrijeme komunističke Jugoslavije počinje proces ukidanja uzanih kolosjeka, koje su do 1978. godine potpuno ukinute, i počinje gradnja pruga normalnog kolosjeka. U tu svrhu izgrađena je Omladinska pruga Brčko – Banovići, dužine 89,1 km i Bosanski Šamac – Sarajevo, dužine 238 km i elektrifikacijska pruga Ploče – Sarajevo 1969. godine. Pored navedenih izgrađene su pruge: Bihać – Knin (28. novembar 1948.), Modriča – Gradačac (27. april 1951.), Doboj – Tuzla (27. avgust 1953.) i Sarajevo – Ploče (1. oktobra 1968). Od uzanih izgrađene su samo dvije: Bugojno – Gornji Vakuf, dužine 18,4 km i pruga Foča – Miljevina, dužine 14 km. Danas ukupna dužina pruga u BiH iznosi 1031 km.