
3 Weeks in Malaysia: Peninsular Highlights and a Borneo Extension
A slow mainland route, one focused Borneo region and a return plan that protects the flight home.
Original AI-generated illustration inspired by eastern Sabah. It is not a photograph of a particular lodge, boat excursion or wildlife sighting.
Three weeks in Malaysia gives you enough time for the peninsula and Borneo when the second part is a focused extension. This route spends its first twelve nights in Kuala Lumpur, Ipoh and Penang, then uses seven nights in eastern Sabah for Sepilok, the Kinabatangan and a Sandakan connection night. One final night in Kuala Lumpur completes the twenty.
The choice is deliberate: food, heritage and independent city days first, followed by forest visits and a river lodge programme. It suits travellers who want wildlife-focused time without trying to cross all of Malaysian Borneo in a week. It does not include Kota Kinabalu, a mountain climb, island diving and Sarawak as extra stops. Choose a different Borneo emphasis if those are the main reason for your trip.
Some links are affiliate links. Taylor’s Trailblazing Travels may earn a commission if you book or buy through them, at no extra cost to you.
Arrival and departure are counted as calendar days.
Twelve mainland, seven eastern Sabah, one final KL night.
Five main bases plus Sandakan and the repeated KL stay.
Six change days, arrival and departure use the other eight.
The 3-week Malaysia route: count the connection nights too
Read this as a 21-day ground itinerary: land on Day 1 and leave Malaysia on Day 21. The outward overnight flight from the UK may begin before Day 1. The final KL night is included, not an optional twenty-first hotel night hiding outside the total.
| Base | Nights | Full days in that base | Reason for the allocation |
|---|---|---|---|
| Kuala Lumpur | 1–4 · 4 nights | Days 2–4 · 3 | Recover from the flight, choose two main city days and keep a flexible one |
| Ipoh | 5–7 · 3 nights | Days 6–7 · 2 | Old Town, food and one optional outing without rushing the rail legs |
| George Town, Penang | 8–12 · 5 nights | Days 9–12 · 4 | A deeper city stay with weather flexibility before the Borneo flight |
| Sepilok | 13–15 · 3 nights | Days 14–15 · 2 | Two mornings independent of the arrival flight |
| Kinabatangan lodge | 16–18 · 3 nights | Days 17–18 · 2 | A three-night programme with repeated wildlife-viewing opportunities |
| Sandakan | 19 · 1 night | None | Separate the river return from the flight to KL |
| Kuala Lumpur again | 20 · 1 night | None | Separate the domestic journey from the international departure |
| Total | 20 nights | 13 full days | Six change days, one arrival and one departure complete 21 days |
There are seven check-in stays, although only six distinct places are used because KL appears twice. Five are main holiday bases; Sandakan and the final KL stay are connection nights. The distinction matters for packing, laundry, luggage and the number of afternoons spent settling into a room.

Day by day: the peninsula first, eastern Sabah second
Each row sets the main purpose of the day. Attraction operations and the guide’s programme still control what can happen. The wildlife days are opportunities to observe, not appointments with particular animals.
| Day | Plan | Day type | Practical scope | Overnight |
|---|---|---|---|---|
| 1 | Arrive in KL | Arrival | Transfer, check in and keep dinner near the hotel. | KL · night 1 |
| 2 | KL heritage neighbourhoods | Full | A short Pasar Seni/Chinatown circuit and time for independent meals. | KL · night 2 |
| 3 | KL skyline | Full | Use a confirmed PETRONAS booking if wanted; leave the rest of the day flexible. | KL · night 3 |
| 4 | Museum and slower city time | Full | An indoor museum visit, shopping or a return to a favourite neighbourhood; prepare for rail travel. | KL · night 4 |
| 5 | KL → Ipoh | Change | Travel on the dated rail service, then check in and make a short first food stop. | Ipoh · night 5 |
| 6 | Ipoh Old Town | Full | Kong Heng Square and nearby streets, with coffee and meals between short walks. | Ipoh · night 6 |
| 7 | One wider Ipoh outing | Full | Consider Sam Poh Tong after checking access; keep the afternoon for town, rest or laundry. | Ipoh · night 7 |
| 8 | Ipoh → Penang | Change | Rail to Butterworth, then the island connection and George Town hotel. | Penang · night 8 |
| 9 | George Town heritage | Full | Choose a compact heritage cluster and one paid interior. | Penang · night 9 |
| 10 | Penang Hill option | Full | A hill outing if operating and conditions suit; otherwise swap with a city day. | Penang · night 10 |
| 11 | A second George Town day | Full | Use a different heritage cluster, independent food stops and an afternoon break. | Penang · night 11 |
| 12 | Flexible Penang day | Full | Revisit, rest and prepare for Sabah; avoid a late activity that compromises tomorrow’s departure. | Penang · night 12 |
| 13 | Penang → Sandakan → Sepilok | Change | Protect the day for the booked flight connection and lodge transfer. No scheduled wildlife visit. | Sepilok · night 13 |
| 14 | Sepilok conservation visits | Full | Plan a published orangutan-centre session and, if wanted, the adjacent sun bear centre. [5] | Sepilok · night 14 |
| 15 | Rainforest Discovery Centre | Full | Daytime forest visit; a separately confirmed guided night walk if suitable. [6] [7] | Sepilok · night 15 |
| 16 | Sepilok → river lodge | Change | Follow the confirmed pickup and lodge programme; keep the morning free for departure. | Kinabatangan · night 16 |
| 17 | Kinabatangan programme | Full | Take the guide-led activities that operate; use the interval between outings to rest. | Kinabatangan · night 17 |
| 18 | Second full river day | Full | Further scheduled outings, with weather and wildlife determining what is possible. | Kinabatangan · night 18 |
| 19 | River lodge → Sandakan | Change | Return on the arranged transfer, check in and prepare for the airport day. | Sandakan · night 19 |
| 20 | Sandakan → KL | Change | Fly back, reach the final hotel and allow time for any change to the domestic journey. | KL · night 20 |
| 21 | Depart Malaysia | Departure | Reach the correct international terminal for your booked flight. | No hotel night |
Use the mainland stretch for depth and flexibility
Kuala Lumpur: three full days, not three fixed tours
Four opening nights give you room to recover and settle into the trip. Use one full day around heritage streets and food, one around the skyline and one for a museum or a slower return to an area you enjoyed. Check the PETRONAS dated admission calendar. [14] The Islamic Arts Museum Malaysia is an indoor option near the National Mosque. [15] Avoid placing an essential prepaid visit on arrival day.
Ipoh: two full days with different jobs
Kong Heng Square sits in Ipoh Old Town, close to Concubine Lane, with food and craft stops in the surrounding streets. [10] Day 6 can stay compact: wander, eat, pause and return later. For Day 7, Sam Poh Tong provides a cave-temple option in the Gunung Rapat area. [11] Confirm current access and opening before travelling there, arrange the return, and leave the afternoon free. Two nights could work for a shorter visit; the third is what keeps this route from becoming a succession of one-day impressions.
Penang: the flexible block before a fixed wildlife programme
Split George Town into two small circuits rather than copying an entire city trail into one day. One can focus on Armenian Street and the clan-house area; another can take the Esplanade and the northern heritage streets. Penang’s tourism-board trail identifies these as parts of the same wider heritage offer. [12] Select interiors according to interest and opening arrangements, not the number you can tick off.
Penang Hill is the main optional outing outside those city days; check the funicular’s maintenance notices. [13] Leave Day 12 available for weather changes, laundry or simple repetition. This is also the first night block to adjust if the Borneo flight needs a deliberate overnight connection. The river-lodge dates should not depend on a rushed last evening in George Town.
Back to top ↑The mainland moves: book the rail leg and the final mile
The KTMB timetable includes the KL Sentral, Ipoh and Butterworth corridor. Select services that stop at your required stations and check the timetable and booking system for your dates. [1] A route diagram or a published timetable does not establish that a seat remains available.
For Day 5, get to the booked KL departure station with the required boarding margin, then plan the journey from Ipoh station to the hotel. For Day 8, the train journey ends at Butterworth on the mainland. Continue to George Town by the cross-channel ferry or an arranged road transfer. [2] Keep the hotel’s actual entrance saved, especially if the arrival transfer is booked separately.
You can compare Kuala Lumpur–Ipoh options on 12Go and Ipoh–Butterworth options on 12Go. These pages can include different transport modes. Match the operator, station and service type to the journey you intend to make; a bus result is not a rail reservation. Price the station journeys, ferry where used and hotel transfers as well as the intercity tickets.
Even if the selected train leaves part of an afternoon available, this itinerary counts Days 5 and 8 as change days. Use any remaining time for a short nearby meal or walk. That keeps a delay from damaging the next day’s main experience.
Back to top ↑Protect Day 13: Penang to Sandakan is a complete journey
Search the whole Penang (PEN)–Sandakan (SDK) itinerary before confirming the Sepilok room. The airline’s current route results show connecting options through Kuala Lumpur or Kota Kinabalu, including some that arrive the following morning. Do not assume a direct service or treat an overnight connection as a same-day arrival. [3]
Compare four details together: the departure and arrival dates, the connection airport, the total elapsed time and whether the booking involves a self-transfer or separately ticketed flights. Check baggage handling and missed-connection conditions in the selected fare. An inexpensive headline fare is not enough to judge whether the itinerary fits Day 13.
The default requires arrival in Sandakan on Day 13 followed by a confirmed transfer to Sepilok. Send the accommodation the flight details and ask how a late arrival is handled. Do not book a feeding session, guided night walk or river pickup for that evening. The next two full days are what make this arrival realistic.
If the acceptable flight option needs an overnight connection, use this exact adjustment: Penang falls from five nights to four; Night 12 becomes a planned stay at the connection airport; Sepilok remains Nights 13–15. You gain an eighth check-in stay and lose one settled Penang day, while the total remains 20 nights. Book the two flight dates and airport hotel together as a coordinated plan.
Back to top ↑A week in eastern Sabah: two forest days, then three river nights
Sepilok: avoid making the flight arrival carry the visit
Sabah Tourism lists orangutan-centre feeding sessions at 10:00 and 15:00, with visitor opening periods that include a midday break and a shorter Friday morning. Check the current session and entry arrangements before setting off. Orangutans may not appear at feeding time; the adjacent Bornean Sun Bear Conservation Centre is a separate visit. [5]
Put the main conservation visits on Day 14. Leave space for the interpretation and the time between them, instead of treating two sites as one attraction. Use Day 15 for the Rainforest Discovery Centre, which publishes daytime visitor information separately from its guided night walks. [6] [7] Contact the centre to confirm the night-walk place and meeting time if wanted. Do not assume an ordinary daytime ticket reserves a guided evening visit.
Two full Sepilok days let you change the order when weather or opening arrangements require it. They also let you stop when the group has had enough. Seeing fewer animals on a particular visit is not a reason to fill the rest of the day with increasingly hurried transfers.
Kinabatangan: choose the actual accommodation pattern
The default is three nights at one river lodge. Hornbill Lodge’s published four-day, three-night programme is one concrete example: it offers pickups in Sandakan or Sepilok, three river-lodge nights, scheduled activities, meals and a return transfer. Confirm the selected date, room, pickup address and current inclusions directly. [8]
The value of the third night is a second full day between arrival and departure, with repeated opportunities to join the guide’s programme. It is not a promise of orangutans, elephants or any other species. Let the guide and conditions determine the activities, keep distance from wildlife and avoid making your satisfaction depend on a species checklist.
Before choosing a lodge, ask about the actual boat boarding, steps between rooms and dining areas, walking surfaces, lifejackets for every traveller and the arrangements if someone sits out an outing. Confirm which meals and transfers are included, which activities depend on conditions, and whether the room description matches your bed requirements. A general “nature package” label cannot answer those questions.
Back to top ↑Work backwards from the flight home
The final two nights do different jobs. Sandakan on Night 19 separates the river return from the domestic flight. KL on Night 20 separates the domestic flight from the international departure. These are intentional parts of the route, not wasted nights to remove before examining the consequences.
| Commitment | Plan backwards | What the night buys |
|---|---|---|
| International departure on Day 21 | Sleep in the KL area on Night 20 | You are already on the peninsula before the departure day |
| Sandakan–KL flight on Day 20 | Sleep in Sandakan on Night 19 | You do not need a river transfer to work perfectly that morning |
| River return on Day 19 | Finish the lodge programme and use its agreed return transfer | No same-day flight is attached to the published return estimate |
| River pickup on Day 16 | Stay in Sepilok through Night 15 | The wildlife programme is not dependent on a flight arrival that day |
AirAsia’s Sandakan–KL results show direct flights as well as some connecting choices. Select the actual Day 20 service and arrival terminal, rather than assuming every result is equivalent. [4] Prefer a workable earlier arrival when available, leaving more of the day to respond if the journey changes.
The final KL hotel can be central or airport-area, depending on the two flight times. Confirm how you reach the correct terminal and what a transfer costs. For an early departure, an attractive central dinner may be less valuable than a simpler morning. For a later departure, staying in the city may be entirely reasonable.
A buffer reduces dependence between journeys; it does not insure the trip or guarantee that every disruption can be absorbed. If a change consumes the spare time, prioritise reaching the departure airport over preserving an optional meal or final excursion. Avoid shrinking both buffers to create a sixth main holiday base.

Choose rooms around this route, not a single star rating
The following are researched starting points with verified property identities. They have not been personally tested, and no room or rate is being promised. Compare the final price and exact room across the hotel’s own site, Booking.com and Agoda. The river stay belongs in the package comparison above rather than being treated as a room-only hotel.
| Base and example | Useful distinction | Next check |
|---|---|---|
| Opening KL · Hotel Stripes | A city base on Jalan Kamunting. [16] | Check the location against your evening plans and station transfer. Hotel Stripes on Booking.com · Hotel Stripes on Agoda |
| Ipoh · WEIL Hotel | A ground-floor lobby link to Ipoh Parade. [17] | Useful if shopping-centre convenience matters; compare the room and full three-night total. WEIL Hotel on Booking.com · WEIL Hotel on Agoda |
| George Town · Areca Hotel | On Jalan Khoo Sian Ewe. [18] | Check the named room’s access and whether its layout suits five nights. Areca Hotel on Booking.com · Areca Hotel on Agoda |
| Sepilok · Sepilok Nature Lodge | A lodge setting beside the sanctuary area, with rooms and chalets. [19] | Confirm late-arrival arrangements and the Day 16 pickup address. Sepilok Nature Lodge on Booking.com · Sepilok Nature Lodge on Agoda |
| Sandakan connection · The Elopura Hotel | At Sandakan Harbour Square on Jalan Pryer. [20] | Check the next morning’s airport transfer and a room suited to a short stay. The Elopura Hotel on Booking.com · The Elopura Hotel on Agoda |
For Night 20, choose the hotel only after confirming the arrival and departure terminals. Reusing the opening KL property is a convenience option if the timings fit, not a reason to add two unnecessary city transfers. Ask for written confirmation of any essential bed or access arrangement; a booking request is not the same as a guaranteed facility.
Back to top ↑A 20-night budget without paying for the lodge twice
Packages make a simple “nights × hotel rate” budget misleading. If three river nights and some meals are already included, adding all twenty hotel nights and every meal again overstates the total. This original example shows the accounting for two adults sharing one room. Every GBP amount is invented, not an advertised price, market average or conversion.
For the meal credit, the named four-day Hornbill programme lists dinner on arrival, three meals on each middle day and breakfast on departure: eight meals per person. [8] The example uses that pattern only to show the calculation. The arbitrary £500-per-person package input below is not a Hornbill quote.
| Item | Illustrative calculation | Group amount |
|---|---|---|
| Accommodation outside the river package | 17 nights × £80 per room | £1,360 |
| Three-night river package | 2 adults × an invented £500 | £1,000 |
| Food before package adjustment | 21 days × 2 adults × £30 | £1,260 |
| Meals already included in that package | Deduct 8 meals × 2 adults × £10 | −£160 |
| Other transport | Group pot for trains, flights and transfers not included elsewhere | £500 |
| Other experiences | Group pot excluding included lodge activities | £240 |
| Subtotal | £1,360 + £1,000 + £1,260 − £160 + £500 + £240 | £4,200 |
| Illustrative 10% contingency | £4,200 × 10% | £420 |
| Planning total | Before international flights and other exclusions | £4,620 / £2,310 per person |
International flights, insurance, shopping and other personal costs are outside this example. The room and package inputs in this model assume compulsory accommodation charges are included. In your own worksheet, add any excluded taxes, drinks or other package costs before calculating contingency. The transport pot must be replaced with actual fares and baggage choices; it is not evidence that £500 will cover your selected journeys.
The accounting error is measurable: entering all 20 room nights instead of 17 adds an unnecessary £240, and leaving in the eight included meals adds £160. Together, those mistakes inflate the subtotal by £400. Conversely, do not subtract a meal merely because a listing says “some meals”: match the actual schedule.
Use the Travel Budget Calculator with your own GBP inputs, removing included costs before entering them. No currency conversion or live quote is provided. [24]
The itinerary and the accommodation subtotal count different things. Your calendar shows all 20 overnights, while this worksheet charges separately for 17 room nights plus one package. Keep the remaining food amount at £1,100; do not put 21 days of full food spending back into another column.
Back to top ↑Three coherent alternatives to the default Sabah week
Two river nights, with more time in Sandakan
If three lodge nights feel too structured, compare the three-day, two-night Kinabatangan option on Viator. Its listing specifies two nights at Nature Lodge Kinabatangan, four river cruises and five meals. Confirm pickup from your Sepilok accommodation and the dated programme. [9] This is a different product from the three-night default.
Keep Sepilok at three nights, use the river lodge on Nights 16–17, then Sandakan on Nights 18–19. The Sabah block remains seven nights and the final KL stay remains Night 20. You trade one full river day for a full Sandakan day; you do not gain an extra day in the overall holiday.
Sarawak instead: seven nights based in Kuching
For more culture and fewer hotel changes, replace the entire Sepilok–Kinabatangan–Sandakan block with seven Kuching nights, Days 13–19. The Borneo Cultures Museum and Semenggoh Wildlife Centre are two official starting points for a Kuching-based visit. [21] [22] Build the week around the museum, city exploration, food and individually chosen outings; check current operating arrangements rather than transplanting the Sabah activity schedule.
This version has five check-in stays overall: KL, Ipoh, Penang, Kuching and KL again. You gain two settled days by removing the two internal Sabah changes. Recheck the actual Penang–Kuching and Kuching–KL flight options before booking; the change of region does not establish a particular direct service. Sarawak replaces Sabah here rather than sharing its seven nights.
Keep the whole trip on the peninsula
If flights, lodge costs or structured activities make the extension unattractive, give the final week a different purpose. For example, keep the opening twelve nights, add seven nights in one selected mainland or island base, then return to KL for Night 20. Choose and verify that new transport chain before booking. Removing Borneo is a reasonable change of priorities; filling its week with several extra cities recreates the same packing burden.
For seasonal planning, METMalaysia identifies heavy northeast-monsoon rain spells in northeast Sabah and western Sarawak, with distinct regional rainfall patterns. [23] There is no single weather label that covers both the peninsula and this Borneo week. Recheck forecasts and operator decisions, and retain the ability to reorder the flexible days.
Back to top ↑Book the dependencies in the right order
- Fix the international dates and the complete 20-night allocation, including the final KL night.
- Check Penang–Sandakan and Sandakan–KL flights. Resolve any overnight connection before paying for the Sepilok block.
- Confirm a river package with three actual lodge nights, its pickup and return points, room, meals and activity conditions.
- Book Sepilok around that pickup, then the mainland hotels and rail journeys. Match all cancellation deadlines to the parts that remain uncertain.
- Confirm selected attraction sessions and guided activities, then save flight, transfer and lodge details offline.
The Trip Itinerary Planner helps record this night allocation. [25] Use the Itinerary Pace Checker with your own door-to-door arrival hours and planned activity hours; it does not validate the flights or wildlife programme. [26]
For mobile data, Airalo’s general eSIM store lets you browse packages. [27] Check the selected network coverage around your actual stays and keep the essential confirmations offline; do not assume a city connection will behave the same way at a river lodge.
For the wider route choice, use the Malaysia itinerary hub and Malaysia planning hub. Operator, accommodation and activity information was checked on 6 November 2026. This is a researched itinerary, with original time and cost models; it is not a report of personally taking the trip.
Back to top ↑Your questions answered
Can I include both Sabah and Sarawak in this itinerary?
It would require replacing nights and adding another flight rather than simply attaching an excursion. For this three-week plan, choose one region. The seven-night Kuching replacement in this guide keeps the arithmetic clear and gives Sarawak a meaningful stay.
Does four days and three nights always mean three river-lodge nights?
No. Some programmes combine a Sandakan or Sepilok night with river accommodation. Read the accommodation line for each night. The default here specifically requires all three lodge nights on the Kinabatangan; the named two-night alternative changes the allocation.
What if the Penang–Sandakan search only offers an overnight connection?
Use the deliberate connection-night variation: reduce Penang from five nights to four, travel towards the connection airport on Day 12, stay there that night, then continue to Sepilok on Day 13. Recheck both flight dates and keep the river pickup on Day 16.
Are thirteen full days enough within a twenty-one-day holiday?
They are the usable time left after honest arrival, departure and hotel-change accounting. The transfer afternoons may still be enjoyable, but this plan does not sell them twice. If thirteen feels too little, remove a base or use the single-base Kuching replacement rather than shortening every stay.
Choose your next step
Make eastern Sabah the purpose of the final week, then protect the time it needs. Keep two full days around Sepilok, three actual nights at the river lodge and the Sandakan–KL return sequence intact. The mainland stretch provides the flexibility: adjust a Penang night if a flight connection requires it. If the river programme does not appeal, replace the Sabah section with Kuching instead of carrying an unwanted wildlife circuit into an otherwise well-paced trip.
Sources and checks
Sources checked for this editorial review on 6 November 2026. Operator information supports the stated facts; suggested day groupings, spending allowances and decision frameworks are editorial planning judgements. Confirm time-sensitive details and actual booking terms before travelling.
- KTMB — ETS timetable effective 1 June 2026
- Penang Port Commission — Butterworth–George Town ferry connection
- AirAsia — Penang–Sandakan search showing dated connecting journeys
- AirAsia — Sandakan–Kuala Lumpur dated flight search
- Sabah Tourism Board — Sepilok Orangutan Rehabilitation Centre visitor guidance
- Rainforest Discovery Centre — current visitor information
- Rainforest Discovery Centre — guided night walks
- Hornbill Lodge — four-day, three-night Kinabatangan programme and inclusions
- Viator — three-day, two-night Nature Lodge Kinabatangan alternative
- Tourism Malaysia — Kong Heng Square and Ipoh Old Town
- Tourism Malaysia — Ipoh cave temples, including Sam Poh Tong
- Penang Global Tourism — George Town heritage trail landmarks
- Penang Hill — funicular and maintenance information
- PETRONAS Twin Towers — current admission and ticketing
- Islamic Arts Museum Malaysia — visitor information
- Marriott — Hotel Stripes Kuala Lumpur official property information
- WEIL Hotel — official Ipoh Parade lobby connection
- Areca Hotel — official George Town address
- Sepilok Nature Lodge — official accommodation and sanctuary setting
- The Elopura Hotel — official Sandakan address
- Sarawak Museum Department — Borneo Cultures Museum
- Sarawak Forestry Corporation — Semenggoh Wildlife Centre
- METMalaysia — regional climate and rainfall patterns
- Taylor’s Trailblazing Travels — Travel Budget Calculator functions
- Taylor’s Trailblazing Travels — Trip Itinerary Planner functions
- Taylor’s Trailblazing Travels — Itinerary Pace Checker functions
- Airalo — Malaysia eSIM options and compatibility checks
Illustrations in this article were created for Taylor’s Trailblazing Travels. Third-party photographs, where used, are credited beside the image or in the source list.



