Salem sits on Interstate 5 about 50 miles (80 km) south of Portland and 60 miles (100 km) north of Eugene. The drive from Portland takes around an hour in normal traffic; from Eugene, about the same.
By train: Amtrak's Cascades and Coast Starlight services stop at Salem station (500 13th St SE), with multiple daily trains to Portland and Eugene. The journey from Portland is around 1 hour 20 minutes. The station is a short walk from downtown.
By bus: Greyhound and FlixBus connect Salem to Portland, Eugene, and points along the I-5 corridor. Cherriots Regional also runs bus services connecting Salem to surrounding communities in the mid-Willamette Valley.
By air: Salem has a small regional airport (Salem Municipal Airport, SLE) with limited service. Most visitors flying in use Portland International Airport (PDX) and drive or take the train south — Portland's airport has far better connections and the road or rail link to Salem is straightforward.