Puno sits along the shores of Peru's Lake Titicaca, the high-altitude freshwater lake known as a cultural treasure for its long-inhabited islands. Most travelers arrive in Puno by way of Cusco on a broader tour of Peru—you can either fly from Cusco to Juliaca and take overland transport from there, or opt for the epic, day-long train journey over the Andes. Flights to Juliaca are also available from Lima.
Arriving to Puno from Cusco
There are 387 miles (522 km) from Cusco to Puno in a journey that is a very popular, and Peru's train network still offers the classic ride from Cusco to Puno. This is the most expensive and atmospheric way to make the trip. You can choose between the Peru Rail "Titicaca" train or the more luxe "Andean Explorer," both offering stunning Andean vistas.
You can also fly part of the way, to Inca Manco Cápac International Airport in Juliaca, and then take a private transfer to reach Puno. Even with a taxi from the Juliaca airport to central Puno (an hourlong ride), it can work out as half the price of taking the train.
A six-hour bus ride is also available, though it's the least convenient option. Learn more about How to Get from Cusco to Puno
Arriving to Puno from Lima
There are two main ways to travel from Lima to Puno. The first is to go directly with one of the daily 2-hour flights to Juliaca, and taking a private transfer the rest of the way to Puno. Traveling from Lima at sea level to Juliaca, which is at a high elevation, be mindful of the possibility of altitude sickness. The second way to go is by flight (or bus) to Cusco, and on to Puno as outlined in the section above, as part of a wider trip around Peru. Flight time from Lima to Cusco is about 90 minutes. This is the suggested option.
Arriving to Puno from La Paz
You also can arrive along Titicaca Lake, from La Paz. It´s also a very interesting option, to continue travelling from Bolivia to Peru