Przebieg Linia rozpoczyna się na stacji kolejowej Krapkowice. Do 1997 jej początek znajdował się na stacji w Gogolinie, przez którą przebiega linia nr 136 Kędzierzyn-Koźle – Opole Groszowice. Biegnie z Krapkowic w kierunku południowo-zachodnim, przez przystanki w Steblowie, Łowkowicach, Strzeleczkach do stacji w Zielinie. Stąd przez Moszną prowadzi do Łącznika, następnie przez Krobusz do Białej Prudnickiej, a później przez przystanek Józefówek do stacji Lubrza. Kończy się na stacji Prudnik, przez którą prowadzi linia nr 137 Katowice – Legnica.
Linia 306 przebiega przez powiaty prudnicki i krapkowicki, przez gminy Prudnik, Lubrza, Biała, Strzeleczki i Krapkowice (dawniej też przez gminę Gogolin). Przecina się z drogami krajowymi 40 i 45 oraz drogami wojewódzkimi 409 i 414 (dawniej również z autostradą A4).