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.
Duration: 3 hours (via flight/private transfer) to 1 day (via the train)
The 387-mile (522 km) Cusco-Puno journey is a very popular one, 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
Duration: 3 hours (via flight to Juliaca) to 2 days (via Cusco)
There are two main means of approach from Lima to Puno. The first is to go direct 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.