Chiavenna is at the end of a rail line from Milan. Trains from Milano Centrale run regularly via Colico and take about two hours. From the station it is a five-minute walk to the old town.
By car, the A9 autostrada from Milan ends at Chiasso on the Swiss border; from there a fast road runs north through Lugano and over the border into the Valchiavenna. The drive from Milan takes about 90 minutes without traffic. The town is the starting point for the Maloja Pass (into the Engadine, Switzerland) and the Splügen Pass (into Graubünden). Both passes are closed in winter.