Formed by the confluence of three tiny streams on the southwest flank of Two Oceans Plateau in Yellowstone National Park, western Wyoming, the Snake starts out flowing west and south into Jackson Lake. Its first 50 miles (80 km) run through Jackson Hole, a wide valley between the Teton Range and the Gros Ventre Range. Below the tourist town of Jackson, the river turns west and flows through Snake River Canyon, cutting through the Snake River Range and into eastern Idaho. It receives the Hoback and Greys Rivers before entering Palisades Reservoir, where the Salt River joins at the mouth of Star Valley. Below Palisades Dam, the Snake River flows through the Snake River Plain, a vast arid physiographic province extending through southern Idaho southwest of the Rocky Mountains and underlain by the Snake River Aquifer, one of the most productive aquifers in the United States.
Southwest of Rexburg, Idaho, the Snake is joined from the north by Henrys Fork. The Henrys Fork is sometimes called the North Fork of the Snake River, with the main Snake above their confluence known as the "South Fork". From there it turns south, flowing through downtown Idaho Falls, then past the Fort Hall Indian Reservation and into American Falls Reservoir, where it is joined by the Portneuf River. The Portneuf River Valley is an overflow channel that in the last glacial period carried floodwaters from pluvial Lake Bonneville into the Snake River, significantly altering the landscape of the Snake River Plain through massive erosion. From there the Snake resumes its journey west, entering the Snake River Canyon of Idaho. It is interrupted by several major cataracts, the largest being 212-foot (65 m) Shoshone Falls, which historically marked the upriver limit of migrating salmon. A short distance downstream it passes under the Perrine Bridge. Near Twin Falls, the Snake approaches the southernmost point in its entire course, after which it starts to flow west-northwest.
The Snake continues through its canyon, receiving the Malad River from the east near Bliss and then the Bruneau River from the south in C.J. Strike Reservoir. It passes through an agricultural valley about 30 miles (48 km) southwest of Boise and flows briefly west into Oregon, before turning north to define the Idaho–Oregon border. Here the Snake River almost doubles in size as it receives several major tributaries – the Owyhee from the southwest, then the Boise and Payette rivers from the east, and further downstream the Malheur River from the west and Weiser River from the east. North of Boise, the Snake enters Hells Canyon, a steep, spectacular, rapid-strewn gorge that cuts through the Salmon River Mountains and Blue Mountains of Idaho and Oregon. Hells Canyon is one of the most rugged and treacherous portions of the course of the Snake River, posing a major obstacle for 19th-century American explorers. Here the Snake is also impounded by Hells Canyon, Oxbow, and Brownlee Dams, which together make up the Hells Canyon Hydroelectric Project.
At the halfway point in Hells Canyon, in one of the most remote and inaccessible sections of its course, the Snake River is joined from the east by its largest tributary, the Salmon River. From there, the Snake begins to form the Washington–Idaho border, receiving the Grande Ronde River from the west before receiving the Clearwater River from the east at Lewiston, which marks the head of navigation on the Snake. The river leaves Hells Canyon and turns west, winding through the Palouse Hills of eastern Washington. The Lower Snake River Project's four dams and navigation locks have transformed this part of the Snake River into a series of reservoirs. The confluence of the Snake and Columbia rivers at Burbank, Washington is part of Lake Wallula, the reservoir of McNary Dam. The Columbia River flows about 325 miles (523 km) further west to the Pacific Ocean near Astoria, Oregon.