Die Barnaulka hat ihren Ursprung auf dem Obplateau in dem etwa 18 km² großen Serkalnoje-See, 60 km westlich von Aleisk. Sie durchfließt von dort das Obplateau in nordöstlicher Richtung. Sie erreicht schließlich die Großstadt Barnaul, wo sie in den nach Westen strömenden Ob mündet. Der Flusslauf befindet sich innerhalb eines etwa 5 km breiten Bänderwaldes in einer ansonsten baumlosen Steppenlandschaft.
Die Barnaulka hat eine Länge von 207 km. Ihr Einzugsgebiet umfasst 5720 km². Der mittlere Abfluss 2 km oberhalb der Mündung beträgt 3,7 m³/s.[2]