It originates from Rakas lake, situated at an altitude of 4555 meters in Tibet. The lake is connected with Manasarowar Lake by a stream.
After following the North-westward route, the river enters the Himachal Pradesh at Shipki pass. Further, it flows westward. It cuts deep gorges where it pierces the Great Himalayas and other ranges of the Himalayas.
Its tributaries in Himachal Pradesh are short in length except the Spiti which drains a large Trans-Himalayan area and joins it at Namgia (near sipki pass) as its right bank tributary.
Before entering the Punjab plain, it cuts a gorge in the Naina Devi Dhar.
After entering the plain, it turns to the South. Below Rupar, it turns to the West.
The Beas, its right bank tributary, joins it at Harika. A short distance below Harike, the Satluj runs almost along the Indo-Pak boundary and enters Pakistan near Sulemanki.
Its length in India is 1050 km.