Issuing from Reid Glacier on the southwest flanks of Mount Hood in the Cascade Range, the Sandy River flows generally west and then north for through Clackamas County and Multnomah County to the Columbia River at Troutdale. In its first , the Sandy River flows across Old Maid Flat, north of Zigzag Mountain in the Mount Hood Wilderness of the Mount Hood National Forest. In this initial stretch near the headwaters, it receives Rushing Water Creek from the left, Muddy Fork from the right, then Lost Creek and Horseshoe Creek from the left, and crosses under Lolo Pass Road just before receiving Clear Creek from the right. At about from the mouth, the Zigzag River enters from the left near the unincorporated community of Zigzag. From here the river runs roughly parallel to U.S. Route 26, which is on its left for about the next . Just below Zigzag, the Sandy River passes the unincorporated community of Wemme on the left.