Langkawi is about 120km from Penang, and most people ferry or bus between them. Ferry is the best way to get to Langkawi from Penang (and vice versa), and bus is the cheapest. Flying is the quickest and it's a good option if you're close by the Penang airport on the southern end of the island
How to take ferry to Langkawi (best option):
Total cost is around 100RM ($25USD). Total trip time is 3.5-5 hours.
Get to Penang Ferry Terminal in George Town, located here, on the ground floor of the Penang Port Commission building
Buy a ticket on the Super Fast Ferry Venture, which runs this ferry route. Fare is 70RM ($17USD) each way. And there are 2 daily departures at 8:30 and 14:00. Arriving 30-60 minutes ahead of time is recommended. How to book the ferry from Penang to Langkawi: you should try to either book online 1-2 days ahead on Super Fast Ferry's website (or 12Go, a really good online transportation booking site with better interface), or have your hotel in Penang book it for you in advance
Ferry takes 2.5 hours to get to Langkawi. On the Langkawi side, the ferry docks at the Kuah Jetty, located here
From Kuah Jetty, it's another 20km to Pantai Cenang, which is the main hub and tourist area of Langkawi island. A taxi to Pantai Cenang from Kuah should be about 30RM ($7.5) and takes 40 minutes. Kuah itself is also a little hub
How to take a bus to Langkawi (cheapest option):
Total cost is around 65RM ($16USD). Total trip time is 5-7 hours with a lot of transfers and hassle involved
Buses depart from Penang either at the Butterworth Bus Terminal or Sungai Nibong Bus Terminal. From George Town, it's easier and cheaper to get to Butterworth. From the central and southern part of the Penang island, it's better to use Sungai Nibong.
To use Sungai Nibong Bus Terminal: taxi or bus to the Sungai Nibong Bus Terminal, located here. Taxi here from the airport or George Town are both around 30RM ($7 USD). Bus will be cheaper but very inconvenient if you have luggage and takes a long time (1 hour from George Town). But if you choose to taxi then the total trip cost comes out to the same as if you take the ferry to Langkawi so it's not worth all the hassle
Take the bus to Kuala Perlis, a town just across the channel from Langkawi island
Buses to Kuala Perlis from both Butterworth and Sungai Nibong are operated by Plusliner, which does not sell ticket through its website but you can book online through 3rd party online booking portals like 12Go and Bus Online Tickets (select Butterworth as origin and Kuala Perlis as destination)
There are 3 buses a day from Butterworth at: 9:30, 14:00, 19:30. There are also 3 buses a day from Sungai Nibong, at 9:00, 13:30, 19:00. I highly recommend booking ahead
Bus takes 2 hour and 45 minutes to get to the Kuala Perlis Bus Terminal, located here. After you get there, follow the signs and walk 200 meters west to the ferry terminal here
Take the ferry to Kuah Jetty on Langkawi island. The ferry should take about 1 hour and 15 minutes. The fare for the ferry is 18RM each way ($4.5USD). There are 10 ferries everyday each way, departing from Kuala Perlis at 7:00, 8:30, 9:30, 10:00, 11:00, 12:30, 14:00, 16:00, 17:30, 19:00. Check ferry's official website for up-to-date info and booking. I recommend booking at 1-2 days in advance
From Kuah Jetty, take a taxi to Pantai Cenang where most hotels and tourist hub are for 30RM ($7.5 USD) taking about 40 minutes
How to fly to Langkawi (shortest travel time):
Total cost is 150-170RM ($37-$42USD). Total trip time is 3-5 hours
There are daily flights to Langkawi International Airport from Penang International Airport. Flight usually costs 80-100RM ($20-$25 USD one way) and takes 35 minutes
Taxi to Penang International Airport from George Town costs about 25RM ($6USD) and takes 30-50 minutes depending on traffic.
Taxi from Langkawi International Airport to Pantai Cenang where the tourist hub is costs about 20RM ($5USD) and takes about 20-30 minutes