{"id":3382,"date":"2026-05-06T14:52:29","date_gmt":"2026-05-06T07:52:29","guid":{"rendered":"https:\/\/satusatu.com\/inspiration\/?p=3382"},"modified":"2026-05-07T16:58:23","modified_gmt":"2026-05-07T09:58:23","slug":"the-best-2-day-bali-itinerary-from-ubud-to-south-bali","status":"publish","type":"post","link":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/","title":{"rendered":"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Picture this: your kids are feeding rainbow lorikeets from their palms in a tropical garden while grandparents watch comfortably from a shaded path nearby, and that&#8217;s only the first morning.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The &#8220;Family Fun Bali&#8221; itinerary by SatuSatu is built exactly for moments like this two days that keep children genuinely excited, mixed-age groups moving at a pace that works for everyone, and the whole family talking about the same memories long after the trip ends.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is designed for families and mixed-age groups who want variety without exhaustion, and no single day feels like a theme-park slog. SatuSatu has carefully built this itinerary so that Day 1 is all about playful nature and Day 2 builds toward an evening spectacle that truly earns the word &#8220;finale.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">    <!-- Styles -->\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Overpass:ital,wght@0,100..900;1,100..900&display=swap\" rel=\"stylesheet\">\n    <style>\n        \/* ========================= *\/\n          \/* BASE STYLES *\/\n          \/* ========================= *\/\n          .produk-container {\n              display: flex;\n              flex-direction: column;\n              gap: 12px;\n          }\n\n          .produk-card {\n            cursor: pointer;\n            display: flex;\n            margin: 0;\n            border: 1px solid #eee;\n            border-radius: 12px;\n            overflow: hidden;\n            font-family: Overpass, sans-serif;\n            background: #ffffff;\n          }\n\n          .produk-image {\n            position: relative;\n            flex-shrink: 0;\n          }\n\n          .produk-image img {\n            width: 100%;\n            height: 100%;\n            object-fit: cover;\n          }\n\n          .produk-location {\n            position: absolute;\n            left: 8px;\n            bottom: 8px;\n            background: #fff;\n            border-radius: 12px;\n            border: 1px solid #dadbe0;\n            padding: 4px 6px;\n            font-size: 10px;\n            line-height: 14px;\n          }\n\n          .produk-content {\n            flex: 1;\n            display: flex;\n            flex-direction: column;\n            gap: 12px;\n          }\n\n          .produk-title {\n            font-weight: 700;\n          }\n\n          .produk-rating {\n            font-size: 16px;\n            color: #333;\n            display: flex;\n            align-items: flex-start;\n            gap: 4px;\n          }\n\n          .produk-rating-line {\n            display: flex;\n            align-items: flex-start;\n            gap: 4px;\n          }\n\n          .produk-price-main {\n            color: #cb1c4f;\n            font-weight: 800;\n            font-size: 16px;\n          }\n\n          .produk-price-strike {\n            text-decoration: line-through;\n            font-size: 14px;\n            opacity: 0.7;\n            margin-right: 8px;\n          }\n\n          .produk-discount {\n            background: #cb1c4f;\n            color: #fff;\n            padding: 2px 6px;\n            border-radius: 4px;\n            font-size: 14px;\n          }\n\n          .produk-btn {\n            background: #cb1c4f;\n            color: #ffffff;\n            padding: 10px 16px;\n            border-radius: 8px;\n            text-decoration: none;\n            font-weight: 600;\n            margin-top: 8px;\n          }\n\n          .produk-btn:hover {\n            text-decoration: none;\n            color: #ffffff;\n          }\n\n          .product-info-wrap {\n            display: flex;\n            flex-wrap: nowrap;\n            justify-content: space-between;\n          }\n\n          \/* ========================= *\/\n          \/* DESKTOP (>= 800px) *\/\n          \/* ========================= *\/\n\n          @media (min-width: 800px) {\n            .produk-image {\n              width: 200px;\n            }\n\n            .produk-content {\n              padding: 20px;\n            }\n\n            .product-info-wrap {\n              flex-direction: row;\n              align-items: center;\n            }\n\n            .produk-btn {\n              display: inline-block;\n            }\n          }\n\n          \/* ========================= *\/\n          \/* TABLET (<= 768px) *\/\n          \/* ========================= *\/\n\n          @media (max-width: 768px) {\n            .produk-card {\n              flex-direction: column;\n            }\n\n            .produk-image {\n              width: 200px;\n              height: 220px;\n            }\n\n            .produk-content {\n              padding: 12px;\n            }\n\n            .produk-title {\n              font-size: 18px;\n            }\n\n            .produk-rating {\n              font-size: 14px;\n            }\n\n            .product-info-wrap {\n              flex-direction: column;\n              align-items: flex-start;\n              gap: 12px;\n            }\n\n            .produk-btn {\n              display: none;\n            }\n          }\n\n          \/* ========================= *\/\n          \/* MOBILE (<= 480px) *\/\n          \/* ========================= *\/\n\n          @media (max-width: 480px) {\n            .produk-image {\n              width: 100%;\n            }\n\n            .produk-content {\n              padding: 12px;\n            }\n\n            .produk-title {\n              font-size: 16px;\n              overflow: hidden;\n              text-overflow: ellipsis;\n            }\n\n            .produk-price-main {\n              font-size: 15px;\n            }\n\n            .produk-discount {\n              font-size: 12px;\n            }\n\n            .produk-btn {\n              display: none;\n            }\n          }\n\n          \/* ======================================= *\/\n          \/* CAROUSEL MODE (inside .carousel-list)  *\/\n          \/* ======================================= *\/\n\n          .carousel-wrapper {\n            position: relative;\n          }\n\n          .carousel-list {\n            overflow-x: auto;\n            overflow-y: hidden;\n            -webkit-overflow-scrolling: touch;\n            scroll-behavior: smooth;\n            scroll-snap-type: x mandatory;\n            scrollbar-width: none;\n          }\n\n          .carousel-list::-webkit-scrollbar {\n            display: none;\n          }\n\n          .carousel-list .produk-container {\n            display: flex;\n            flex-direction: row;\n            flex-wrap: nowrap;\n            width: max-content;\n            gap: 12px;\n          }\n\n          .carousel-list .produk-card {\n            flex: 0 0 auto;\n            width: 220px;\n            flex-direction: column;\n            scroll-snap-align: start;\n          }\n\n          .carousel-list .produk-image {\n            width: 100%;\n            height: 220px;\n          }\n\n          .carousel-list .produk-content {\n            padding: 12px;\n          }\n\n          .carousel-list .produk-title {\n\t\t\t  font-size: 16px;\n\t\t\t  overflow: hidden;\n\t\t\t  text-overflow: ellipsis;\n\t\t\t  display: -webkit-box;\n\t\t\t  -webkit-line-clamp: 2;\n\t\t\t  -webkit-box-orient: vertical;\n\t\t\t  line-clamp: 2;\n\t\t\t}\n\n          .carousel-list .produk-rating {\n            font-size: 14px;\n          }\n\n          .carousel-list .produk-price-main {\n            font-size: 15px;\n          }\n\n          .carousel-list .produk-discount {\n            font-size: 12px;\n          }\n\n          .carousel-list .product-info-wrap {\n            flex-direction: column;\n            align-items: flex-start;\n            gap: 12px;\n          }\n\n          .carousel-list .produk-btn {\n            display: none;\n          }\n\n          \/* ========================= *\/\n          \/* CAROUSEL ARROWS *\/\n          \/* ========================= *\/\n\n          .carousel-arrow {\n            position: absolute;\n            top: 50%;\n            transform: translateY(-50%);\n            width: 36px;\n            height: 36px;\n            border-radius: 50%;\n            background: #ffffff;\n            border: 1px solid #dadbe0;\n            box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            z-index: 10;\n            transition: opacity 0.2s, box-shadow 0.2s;\n            padding: 0;\n          }\n\n          .carousel-arrow:hover {\n\t\t\tbackground: #FFFFFF;\n            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n          }\n\n          .carousel-arrow.is-hidden {\n            opacity: 0;\n            pointer-events: none;\n          }\n\n          .carousel-arrow-left {\n            left: -18px;\n          }\n\n          .carousel-arrow-right {\n            right: -18px;\n          }\n\n          @media (max-width: 480px) {\n\t\t\t.carousel-arrow{\n\t\t\t\tdisplay: none;\n\t\t\t}\n            .carousel-arrow-left {\n              left: 4px;\n            }\n\n            .carousel-arrow-right {\n              right: 4px;\n            }\n          }\n    <\/style>\n\n    <!-- HTML -->\n    <div class=\"carousel-wrapper\" data-carousel-id=\"carousel-6a1be932725c7\" data-is-carousel=\"1\">\n                    <button type=\"button\" class=\"carousel-arrow carousel-arrow-left is-hidden\" aria-label=\"Scroll left\">\n                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"25\" height=\"25\" fill=\"#000000\" viewBox=\"0 0 256 256\"><path d=\"M216,88v80a8,8,0,0,1-8,8H120v48L24,128l96-96V80h88A8,8,0,0,1,216,88Z\" opacity=\"0.2\"><\/path><path d=\"M208,72H128V32a8,8,0,0,0-13.66-5.66l-96,96a8,8,0,0,0,0,11.32l96,96A8,8,0,0,0,128,224V184h80a16,16,0,0,0,16-16V88A16,16,0,0,0,208,72Zm0,96H120a8,8,0,0,0-8,8v28.69L35.31,128,112,51.31V80a8,8,0,0,0,8,8h88Z\"><\/path><\/svg>\n            <\/button>\n            <button type=\"button\" class=\"carousel-arrow carousel-arrow-right is-hidden\" aria-label=\"Scroll right\">\n                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"25\" height=\"25\" fill=\"#000000\" viewBox=\"0 0 256 256\"><path d=\"M136,224V176H48a8,8,0,0,1-8-8V88a8,8,0,0,1,8-8h88V32l96,96Z\" opacity=\"0.2\"><\/path><path d=\"M237.66,122.34l-96-96A8,8,0,0,0,128,32V72H48A16,16,0,0,0,32,88v80a16,16,0,0,0,16,16h80v40a8,8,0,0,0,13.66,5.66l96-96A8,8,0,0,0,237.66,122.34ZM144,204.69V176a8,8,0,0,0-8-8H48V88h88a8,8,0,0,0,8-8V51.31L220.69,128Z\"><\/path><\/svg>\n            <\/button>\n                <div class=\"carousel-list\">\n            <div class=\"produk-container\" data-slugs=\" uluwatu-temple-kecak-fire-dance-satusatu-curated-experience-sameday-booking-bonus-merchandise, satusatu-exclusive-car-charter-sameday-booking, satusatu-airport-transfer-from-to-airport-sameday-booking, nusa-penida-day-tour-satusatu-curated-experience-bonus-merchandise, bali-bird-park-experience-nature-wildlife-adventure\"><\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Script -->\n    <script>\n    (function() {\n\t\tfunction buildCatalogUrl(slug) {\n\t\t\t\/\/ UTM params hardcoded by the shortcode (these always win)\n\t\t\tconst hardcoded = {\n\t\t\t\tutm_source: \"blog\",\n\t\t\t\tutm_medium: \"in_line_product_cta\",\n\t\t\t};\n\n\t\t\t\/\/ UTM params from the current page URL (only used if hardcoded doesn't define them)\n\t\t\tconst pageParams = new URLSearchParams(window.location.search);\n\t\t\tconst utmKeys = [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_content\", \"utm_term\"];\n\t\t\tconst merged = new URLSearchParams();\n\n\t\t\tutmKeys.forEach(key => {\n\t\t\t\tif (hardcoded[key] !== undefined) {\n\t\t\t\t\t\/\/ Hardcoded value takes priority\n\t\t\t\t\tmerged.set(key, hardcoded[key]);\n\t\t\t\t} else if (pageParams.has(key)) {\n\t\t\t\t\t\/\/ Fall back to whatever the page URL has\n\t\t\t\t\tmerged.set(key, pageParams.get(key));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn \"https:\/\/satusatu.com\/en-ID\/catalog\/\" + slug + \"?\" + merged.toString();\n\t\t}\n\t\t\n        function renderCatalogItem(p) {\n            const location = p.location?.name || \"\";\n            const rating = p.rating?.average_rating ?? null;\n            const ratingCount = p.rating?.count_rating_display || \"\";\n            const soldDisplay = p.rating?.total_sold_display || \"\";\n            const currency = p.pricing?.currency_symbol || \"Rp\";\n            const price = p.pricing?.min_price || 0;\n            const originalPrice = p.pricing?.min_original_price || 0;\n            const discount = p.pricing?.discount || 0;\n\t\t\tconst catalogUrl = buildCatalogUrl(p.slug);\n\n            return `\n                <div class=\"produk-card\" data-url=\"${catalogUrl}\">\n                    <div class=\"produk-image\">\n                        <img decoding=\"async\" src=\"${p.image_url}\" alt=\"${p.title}\" \/>\n                        <div class=\"produk-location\">\n\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"#000000\" viewBox=\"0 0 256 256\"><path d=\"M128,24a80,80,0,0,0-80,80c0,72,80,128,80,128s80-56,80-128A80,80,0,0,0,128,24Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,128,136Z\" opacity=\"0.2\"><\/path><path d=\"M128,64a40,40,0,1,0,40,40A40,40,0,0,0,128,64Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,128,128Zm0-112a88.1,88.1,0,0,0-88,88c0,31.4,14.51,64.68,42,96.25a254.19,254.19,0,0,0,41.45,38.3,8,8,0,0,0,9.18,0A254.19,254.19,0,0,0,174,200.25c27.45-31.57,42-64.85,42-96.25A88.1,88.1,0,0,0,128,16Zm0,206c-16.53-13-72-60.75-72-118a72,72,0,0,1,144,0C200,161.23,144.53,209,128,222Z\"><\/path><\/svg>\n                            <span>${location}<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"produk-content\">\n                        <div class=\"produk-title\">${p.title}<\/div>\n                        ${rating ? `\n                        <div class=\"produk-rating\">\n                            <div class=\"produk-rating-line\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" fill=\"#F87500\" viewBox=\"0 0 256 256\"><path d=\"M229.06,108.79l-48.7,42,14.88,62.79a8.4,8.4,0,0,1-12.52,9.17L128,189.09,73.28,222.74a8.4,8.4,0,0,1-12.52-9.17l14.88-62.79-48.7-42A8.46,8.46,0,0,1,31.73,94L95.64,88.8l24.62-59.6a8.36,8.36,0,0,1,15.48,0l24.62,59.6L224.27,94A8.46,8.46,0,0,1,229.06,108.79Z\" opacity=\"0.2\"><\/path><path d=\"M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z\"><\/path><\/svg>\n                                <span>${rating} (${ratingCount}) &bull; ${soldDisplay} sold<\/span>\n                            <\/div>\n                        <\/div>` : ''}\n                        <div class=\"product-info-wrap\">\n                            <div>\n                                <div style=\"display:flex;gap:6px;\">\n                                    <div style=\"font-size:14px;\">From<\/div>\n                                    <div class=\"produk-price-main\">${currency} ${price.toLocaleString()}<\/div>\n                                <\/div>\n                                ${discount > 0 ? `\n                                <div>\n                                    <span class=\"produk-price-strike\">${currency} ${originalPrice.toLocaleString()}<\/span>\n                                    <span class=\"produk-discount\">-${discount}%<\/span>\n                                <\/div>` : ''}\n                            <\/div>\n                            <div>\n                                <a target=\"_blank\" href=\"${catalogUrl}\" class=\"produk-btn\">Check Availability<\/a>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            `;\n        }\n\n        function initSatuSatuCatalog(wrapperEl) {\n            const scrollEl = wrapperEl.querySelector(\".carousel-list\");\n            const container = wrapperEl.querySelector(\".produk-container\");\n            const slugs = container.getAttribute(\"data-slugs\");\n            const isCarousel = wrapperEl.getAttribute(\"data-is-carousel\") === \"1\";\n            const leftArrow = wrapperEl.querySelector(\".carousel-arrow-left\");\n            const rightArrow = wrapperEl.querySelector(\".carousel-arrow-right\");\n\n            fetch(\"https:\/\/api.satusatu.com\/content\/guest\/satusatu\/v1\/catalogs\/blog\/catalog-list?slugs=\" + slugs)\n                .then(res => res.json())\n                .then(data => {\n                    container.innerHTML = data.data.map(renderCatalogItem).join('');\n                    \/\/ Event handler for card click\n                    container.querySelectorAll('.produk-card').forEach(card => {\n                        card.addEventListener('click', () => {\n                            window.open(card.dataset.url, '_blank');\n                        });\n                    });\n\n                    if (isCarousel && scrollEl && leftArrow && rightArrow) {\n                        const scrollAmount = 240;\n                        function updateArrows() {\n                            const sl = scrollEl.scrollLeft;\n                            const sw = scrollEl.scrollWidth;\n                            const cw = scrollEl.clientWidth;\n                            leftArrow.classList.toggle(\"is-hidden\", sl <= 0);\n                            rightArrow.classList.toggle(\"is-hidden\", sl + cw >= sw - 1);\n                        }\n                        leftArrow.addEventListener(\"click\", e => {\n                            e.stopPropagation();\n                            scrollEl.scrollBy({ left: -scrollAmount, behavior: \"smooth\" });\n                        });\n                        rightArrow.addEventListener(\"click\", e => {\n                            e.stopPropagation();\n                            scrollEl.scrollBy({ left: scrollAmount, behavior: \"smooth\" });\n                        });\n                        scrollEl.addEventListener(\"scroll\", updateArrows);\n                        window.addEventListener(\"resize\", updateArrows);\n                        setTimeout(updateArrows, 200);\n                    }\n                });\n        }\n\n        document.addEventListener(\"DOMContentLoaded\", function() {\n            document.querySelectorAll(\"[data-carousel-id]\").forEach(initSatuSatuCatalog);\n        });\n    })();\n    <\/script>\n    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quick Snapshot<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccd Day 1: Gianyar \/ Ubud | Day 2: Indoor entertainment \/ South Bali&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u23f1 Total Hours: 14.8 hours across 2 days&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udd50 Day 1: 09:00 \u2013 18:00 | Day 2: 14:00 \u2013 22:00&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83c\udfaf Pace: Easy-balanced&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc65 Best For: Families \/ mixed-age groups&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2728 Theme: Playful nature day on Day 1 \u2192 Interactive fun + big finish on Day 2<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why This Itinerary Works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">What sets this itinerary apart from a standard zoo-heavy family package is that it mixes animals, active outdoor play, interactive indoor thrills, and a real theatrical show finale across the two days.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No single stop overwhelms the group, and the variety means that children of different ages and grandparents with different energy levels all find something genuinely engaging.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The pace is easy-balanced throughout, which in practice means exciting without exhausting a crucial distinction when you are travelling with a mixed-age group.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The structure is also strategically intelligent. Day 1 begins in the cooler, greener world of Ubud and Gianyar with a 09:00 start, keeping the outdoor portions earlier in the day before the afternoon heat peaks.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Day 2 starts at 14:00, which works perfectly: the family gets a leisurely hotel breakfast and a morning of rest, then the afternoon kicks into gear with fully air-conditioned indoor attractions before the evening Devdan Show brings the entire two days to a spectacular close.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Itinerary: Stop by Stop<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Day 1 Gianyar &amp; Ubud: Playful Nature Day<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Start: 09:00 | End: 18:00 | Total Hours: 9.0 (Active: 5.0 hrs | Travel: 1.0 hr | Buffer: 1.5 hrs)<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Stop 1: Bali Bird Park Ticket<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccd Jl. Serma Cok Ngurah Gambir, Singapadu, Batubulan, Gianyar on the main road between Kuta and Ubud, roughly 20 minutes from Sanur and 40 minutes from Kuta, within the Gianyar Regency&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u23f1 Included in Day 1 total active hours&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc65 Best For Families with young children, curious teenagers, and older grandparents who want wildlife encounters without demanding terrain&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2728 What Makes It Special Over 1,000 birds from 250 species across seven themed world regions Sumatra, Java, Borneo, Papua, Africa, Australia, and Latin America with walk-in aviaries, free-flying shows, pelican feeding, and the chance to hold a Scarlet Macaw<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Walking into Bali Bird Park is a gentle, colourful sensory experience that works for every age at once.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Children lock eyes with an enormous cassowary through a wide-meshed enclosure, teenagers photograph themselves with a Congo Grey Parrot draped on their arm, and grandparents settle into a comfortable pace along wide, stroller-friendly pathways while birds of paradise call from above.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Timed shows run throughout the day the Rainforest Free Flight Wild Encounter features freely soaring storks and parrots, while the Bird of Prey show brings eagles and owls up close with commentary that even young children can follow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This stop opens Day 1 because it provides a gentle, low-intensity introduction to Bali&#8217;s natural world that gets the whole group into a shared adventure without anyone being left behind. The nature and animal theme established here flows naturally into the Ubud stops that follow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Arrive close to the 09:00 opening time to catch the earliest show sessions and avoid the mid-morning heat the park is entirely outdoors, and paths are significantly more comfortable in the earlier hours.<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Stop 2: ICON ATV<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccd Ubud area, Gianyar Regency accessible from Bali Bird Park via an approximately 30-minute drive into the Ubud highlands, surrounded by tropical forests, rice fields, and natural rivers&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u23f1 Included in Day 1 total active hours&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc65 Best For Older children, teenagers, and active parents ready to swap the serene bird park for muddy tracks and jungle trails&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2728 What Makes It Special Guided ATV routes through dense jungle terrain, rice terraces, natural rivers, and traditional village paths with tandem options so younger riders can share the adventure with a parent<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The ICON ATV experience injects the afternoon energy that Day 1 needs after the more relaxed start at the Bird Park. Riders receive a full safety briefing and gear up before heading out on trails that navigate uphill and downhill jungle tracks, cross shallow rivers, pass through caves, and open up onto sweeping rice field views.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Guides ride alongside the group at all times, maintaining a pace that keeps even first-time ATV riders confident tandem options mean that younger children who cannot ride solo can sit with a parent and still enjoy the full course without missing a moment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Placing ICON ATV in the middle of Day 1 is smart family pacing: it provides the adrenaline release that older kids and parents are craving after the morning&#8217;s gentle activities, while younger children on tandems experience the same track with the safety and comfort of a familiar adult beside them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bring a change of clothes or at least a light layer you don&#8217;t mind getting muddy the river sections and jungle tracks are genuinely messy, and having something dry to change into before the Monkey Forest makes the rest of the afternoon more comfortable for everyone.<\/p>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Stop 3: Sacred Monkey Forest Sanctuary Ubud<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccd Jl. Monkey Forest, Ubud, Gianyar in the heart of Ubud town, within walking distance of Ubud&#8217;s main street and restaurants, surrounded by ancient banyan trees and a sacred Hindu temple complex&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u23f1 Included in Day 1 total active hours&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc65 Best For The whole family, including young children and grandparents, as the pathways are shaded, flat, and genuinely fascinating at a slow pace&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2728 What Makes It Special A real working sacred forest and temple complex home to over 1,000 Balinese long-tailed macaques, where monkeys move freely among visitors, ancient stone carvings, and towering roots in a genuinely atmospheric jungle setting<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Sacred Monkey Forest Sanctuary is one of those rare destinations that manages to feel magical for children and culturally significant for adults at the same time. Young children are wide-eyed watching troops of macaques groom each other on temple walls and babies cling to their mothers&#8217; backs in the canopy above.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The main paths through the forest are shaded by enormous ancient banyan trees, making this one of the most comfortable afternoon stops on any Bali family itinerary.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Three ancient Hindu temples Pura Dalem Agung, Pura Beji, and Pura Prajapati sit within the forest, and their mossy stone carvings covered in roots give the whole place a genuinely otherworldly atmosphere.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This stop closes Day 1 perfectly because it brings the energy back down to a relaxed, communal pace after the intensity of the ATV ride. The whole family is back together, strolling through green shade and sharing the experience of Bali&#8217;s wildest and most charismatic animals in one of the island&#8217;s most spiritually charged settings.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do not carry fruit, open food, or bright bags into the sanctuary, as monkeys will investigate them immediately keep bags closed, cameras on wrist straps, and sunglasses either secured or removed before entering the main macaque zones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Day 2 South Bali: Interactive Fun + Big Finish<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Start: 14:00 | End: 22:00 | Total Hours: 8.8 (Active: 4.5 hrs | Travel: 1.3 hrs | Buffer: 1.5 hrs)<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Stop 1: AeroXSpace Bali<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccd Jl. Bypass Ngurah Rai No. 999, Sidakarya, Denpasar on Bali&#8217;s main bypass road near the Sanur neighbourhood, approximately 10 minutes from Ngurah Rai Airport and accessible from most South Bali accommodation in under 30 minutes&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u23f1 Included in Day 2 total active hours&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc65 Best For Children, teenagers, and adventurous parents who want air-conditioned, space-themed indoor thrills ideal for mixed-age groups spanning toddlers through to adults&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2728 What Makes It Special Bali&#8217;s largest indoor adventure park, spanning 3,500 square meters with 26 attractions across multiple levels, including the 100-meter Space Coaster, a Galactic Zipline, Stellar Ropes Course, Indonesia&#8217;s first inflated basketball court, VR Flying Cinema, and a dedicated Toddler Space for children aged 1 to 6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AeroXSpace is precisely what Day 2 of a family itinerary needs: fully air-conditioned, endlessly varied, and designed so that the whole group can scatter freely across different attractions and reunite at the Luna Lounge for a meal without anyone being bored.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Children aged 8 and above can explore independently, while younger ones enjoy the safe and brightly designed Toddler Space.&nbsp; Teenagers gravitate toward the Space Coaster a 100-meter indoor ride simulating cosmic flight and the adrenaline-pumping Launch Pad slides, which are the first of their kind in Indonesia.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Parents who need a break can head up to the Luna Lounge with its galaxy-themed decor, international food menu, and a clear sightline over the main activity floors. This stop launches Day 2 at exactly the right energy level.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After a relaxed morning, the family arrives refreshed at 14:00 and AeroXSpace immediately pulls everyone into active, engaged fun providing enough excitement to carry the group through to the evening show with sustained energy rather than the afternoon slump that can derail later plans.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Book tickets in advance, particularly for weekend visits when the park fills quickly online booking is available at aeroxspace.id and secures your slot before arrival, avoiding queues at the counter that could cut into time at the park.<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Stop 2: The Wheel Bali Experience<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccd Gg. Sri Kahyangan, Tibubeneng, Canggu on Bali&#8217;s west-side coastline, 500 meters from the beach, a short drive from AeroXSpace via the bypass road&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u23f1 Included in Day 2 total active hours&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc65 Best For The whole family as a shared, gentle moment of wonder especially children experiencing their first Ferris wheel ride and grandparents who want a spectacular view without physical exertion&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2728 What Makes It Special At 41.8 meters, The Wheel Bali is the tallest structure on the island&#8217;s west coast each air-conditioned cabin holds up to 6 people and provides 360-degree panoramic views of Canggu&#8217;s coastline, rice paddies, and the distant silhouettes of Mount Agung and Mount Batukaru on clear evenings<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stepping out of the action-packed energy of AeroXSpace and into the quiet, gliding perspective of The Wheel Bali is a perfect pace shift for the family.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inside each comfortable cabin, the group rises slowly above the Canggu coastline together children press their faces to the glass as the ocean appears, younger ones point at the beach far below, and grandparents settle back and take in a view of Bali that most visitors never see.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each rotation lasts 10 to 12 minutes, which is exactly right: long enough to absorb the sunset colours spreading across the sky, but short enough that even the most impatient children stay engaged for the whole ride.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This stop serves as the evening&#8217;s transitional moment, taking the family from the intensity of AeroXSpace to a shared, camera-worthy sunset experience before the main event of the night. It also provides a natural dinner window nearby in Canggu before heading south toward Nusa Dua for the show.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aim to board between 17:00 and 18:00 when the sky begins its golden hour shift the coastline view from the top is significantly more atmospheric in this light, and it makes for the most memorable family photographs of the two days.<\/p>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Stop 3: Devdan Show Treasure of the Archipelago<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccd Bali Nusa Dua Theatre, Kawasan ITDC, Nusa Dua within the prestigious Nusa Dua resort complex, walking distance from several five-star hotels and accessible from Canggu in approximately 40 minutes&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u23f1 Included in Day 2 total active hours&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc65 Best For The entire family without exception the show is designed to captivate children through pure spectacle while providing adults and grandparents with genuine cultural richness and world-class performance production&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2728 What Makes It Special A 90-minute theatrical production combining traditional Indonesian dance from Bali, Sumatra, Java, Borneo, and Papua with aerial acrobatics, stunning costumes, high-tech special effects, simulated volcanic eruptions, indoor rain sequences, and some of the most mesmerising choreography available anywhere in Southeast Asia<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Devdan Show Treasure of the Archipelago is the closing act of the two days, and it earns that position completely. From the moment the lights drop and the first performers sweep across the stage in blazing Balinese costume, the entire family is locked in.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Children who couldn&#8217;t sit still through a film are transfixed by 90 minutes of non-stop action aerial acrobats flying above the audience, fire dancers spinning at the front of the stage, and special effects including simulated rain falling inside the theatre during the climactic water scene.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The storytelling follows two children who discover a treasure chest leading them through Indonesia&#8217;s cultural archipelago, which gives younger viewers a narrative thread to follow even as the pure spectacle carries the older members of the group.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This show closes the itinerary as the &#8220;big finish&#8221; it was designed to be: a world-class, fully produced performance that gives every family member regardless of age a genuinely shared cultural and emotional peak. It transforms what could have been simply a nice two-day family holiday into something remembered for years.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The show runs on Mondays, Wednesdays, Fridays, and Saturdays confirm your performance date before booking and purchase reserved seating in advance, as the theatre fills up and the better-positioned seats sell out first, particularly during school holiday periods.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recommended Daily Schedule<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Day 1<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">09:00 \u2013 Hotel pickup&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">09:45 \u2013 Arrive at Bali Bird Park, Batubulan, Gianyar begin exploring world bird zones, attend morning shows including Rainforest Free Flight Wild Encounter&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">11:30 \u2013 Travel to ICON ATV, Ubud area (approximately 30 minutes)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">12:00 \u2013 Arrive at ICON ATV safety briefing, gear up, begin guided ATV ride through jungle terrain, rice fields, and river crossings (tandem options for younger riders)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">13:30 \u2013 Post-ride refresh, change clothes&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">14:00 \u2013 Travel to Sacred Monkey Forest Sanctuary, Ubud town (approximately 20 minutes)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">14:20 \u2013 Arrive at Sacred Monkey Forest Sanctuary enter the temple forest, walk shaded macaque trails, explore ancient banyan grove and temple courtyards&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">15:50 \u2013 Begin return journey to hotel (buffer and travel accounted for)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">18:00 \u2013 Return to hotel; Day 1 complete<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Day 2<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">14:00 \u2013 Hotel pickup, afternoon start&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">14:30 \u2013 Arrive at AeroXSpace Bali, Bypass Ngurah Rai, Denpasar children explore Space Coaster, Galactic Zipline, Stellar Ropes Course and Toddler Space; families dine at Luna Lounge&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">16:30 \u2013 Travel to The Wheel Bali, Tibubeneng, Canggu (approximately 30 minutes)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">17:00 \u2013 Arrive at The Wheel Bali board sunset rotation, enjoy panoramic views of Canggu coastline and distant mountains (10 to 12 minutes per rotation)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">17:30 \u2013 Dinner window in Canggu or en route to Nusa Dua (buffer time in schedule accommodates a meal stop)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">19:00 \u2013 Travel to Bali Nusa Dua Theatre, ITDC Nusa Dua (approximately 40 minutes)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">19:30 \u2013 Arrive at Bali Nusa Dua Theatre collect reserved seats, settle in before the performance begins&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">20:00 \u2013 Devdan Show Treasure of the Archipelago (90-minute performance)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">21:30 \u2013 Show concludes&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">22:00 \u2013 Return to hotel; Day 2 complete<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Make It Premium<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The most impactful upgrade for this itinerary is a dedicated family transport vehicle for both days a spacious MPV or minibus with a private driver who stays with the group from morning pickup through to the evening show return.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For families travelling with grandparents or young children, not having to manage transfers, negotiate with multiple drivers, or wait for vehicles between stops makes an enormous practical difference. The buffer time built into both days becomes genuinely relaxing rather than logistically stressful.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the Devdan Show specifically, reserved VIP or premium &#8220;A&#8221; category seating transforms an already brilliant performance into a genuine event. The closer seats bring the aerial acrobatics and fire effects to a level of detail that is quite different from the rear of the house.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adding a meal stop between The Wheel Bali and the Nusa Dua Theatre either in Canggu or at one of the restaurants near the ITDC complex gives the family time to sit together and build anticipation for the show, which is exactly how the evening should feel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Book This Itinerary with SatuSatu<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/satusatu.com\/en-US\/baliallaccess\"><img loading=\"lazy\" decoding=\"async\" width=\"2080\" height=\"1130\" src=\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/Bali-All-Access.png\" alt=\"Bali All Access\" class=\"wp-image-3520\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If the &#8220;Family Fun Bali&#8221; itinerary feels like the right fit for your family, the easiest way to put it together is through SatuSatu, a Bali travel platform where families can book transport, experiences, and curated multi-day packages in one place, all on <a href=\"http:\/\/satusatu.com\">SatuSatu.com<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rather than chasing six separate bookings across different providers, you can handle everything in a single, straightforward process. The <a href=\"https:\/\/satusatu.com\/en-US\/baliallaccess\">SatuSatu Bali All-Access<\/a> Pass is the smartest way to book a two-day itinerary like this one.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of pricing each attraction individually and managing separate confirmations, the pass gives families access to a curated menu of Bali&#8217;s top experiences, with everything organized through a single platform and supported by a dedicated concierge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Choose from a 1-day pass at $59.95 (IDR 999K), a 2-day pass at $104.95 (IDR 1.799M), or a 3-day pass at $144.95 (IDR 2.499M), and unlock access to 50+ top Bali experiences spanning destinations across the island, from the Kecak Fire Dance at Uluwatu to snorkeling in Padang Bai and wellness &amp; spa experiences across Bali.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every pass includes a free eSIM and a dedicated Bali concierge to handle all the planning for you, saving you up to 60% compared to booking individually, with 90-day validity from purchase for maximum flexibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All bookings are completed on <a href=\"http:\/\/satusatu.com\">SatuSatu.com<\/a> with full payment support for BCA, Mandiri, OVO, DANA, credit cards, and more.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What is the \u201cFamily Fun Bali\u201d itinerary and who is it designed for?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It\u2019s a 2-day Bali itinerary by SatuSatu for families and mixed-age groups. Day 1: Bali Bird Park, ICON ATV, and Sacred Monkey Forest (Gianyar\u2013Ubud). Day 2: AeroXSpace, The Wheel Bali, and Devdan Show in South Bali. Easy, balanced pace for kids to grandparents.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Is it suitable for toddlers and young children?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Bali Bird Park is stroller-friendly, Monkey Forest has manageable paths (with supervision), AeroXSpace has a toddler zone (1\u20136), The Wheel Bali fits all ages, and Devdan Show is engaging for kids.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What should families wear\/bring for ICON ATV?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wear clothes you don\u2019t mind getting dirty, closed-toe shoes required. Helmets provided. Bring a change of clothes or dry bag.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How far in advance to book the Devdan Show?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Book early, especially during school holidays. Shows run Mon, Wed, Fri, Sat. Premium seats sell out faster.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Is it comfortable for grandparents with limited mobility?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Most stops are easy-access (paths, seating, indoor areas). Only ATV is physically active; others can join as passengers or rest.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">    <!-- Styles -->\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Overpass:ital,wght@0,100..900;1,100..900&display=swap\" rel=\"stylesheet\">\n    <style>\n        \/* ========================= *\/\n          \/* BASE STYLES *\/\n          \/* ========================= *\/\n          .produk-container {\n              display: flex;\n              flex-direction: column;\n              gap: 12px;\n          }\n\n          .produk-card {\n            cursor: pointer;\n            display: flex;\n            margin: 0;\n            border: 1px solid #eee;\n            border-radius: 12px;\n            overflow: hidden;\n            font-family: Overpass, sans-serif;\n            background: #ffffff;\n          }\n\n          .produk-image {\n            position: relative;\n            flex-shrink: 0;\n          }\n\n          .produk-image img {\n            width: 100%;\n            height: 100%;\n            object-fit: cover;\n          }\n\n          .produk-location {\n            position: absolute;\n            left: 8px;\n            bottom: 8px;\n            background: #fff;\n            border-radius: 12px;\n            border: 1px solid #dadbe0;\n            padding: 4px 6px;\n            font-size: 10px;\n            line-height: 14px;\n          }\n\n          .produk-content {\n            flex: 1;\n            display: flex;\n            flex-direction: column;\n            gap: 12px;\n          }\n\n          .produk-title {\n            font-weight: 700;\n          }\n\n          .produk-rating {\n            font-size: 16px;\n            color: #333;\n            display: flex;\n            align-items: flex-start;\n            gap: 4px;\n          }\n\n          .produk-rating-line {\n            display: flex;\n            align-items: flex-start;\n            gap: 4px;\n          }\n\n          .produk-price-main {\n            color: #cb1c4f;\n            font-weight: 800;\n            font-size: 16px;\n          }\n\n          .produk-price-strike {\n            text-decoration: line-through;\n            font-size: 14px;\n            opacity: 0.7;\n            margin-right: 8px;\n          }\n\n          .produk-discount {\n            background: #cb1c4f;\n            color: #fff;\n            padding: 2px 6px;\n            border-radius: 4px;\n            font-size: 14px;\n          }\n\n          .produk-btn {\n            background: #cb1c4f;\n            color: #ffffff;\n            padding: 10px 16px;\n            border-radius: 8px;\n            text-decoration: none;\n            font-weight: 600;\n            margin-top: 8px;\n          }\n\n          .produk-btn:hover {\n            text-decoration: none;\n            color: #ffffff;\n          }\n\n          .product-info-wrap {\n            display: flex;\n            flex-wrap: nowrap;\n            justify-content: space-between;\n          }\n\n          \/* ========================= *\/\n          \/* DESKTOP (>= 800px) *\/\n          \/* ========================= *\/\n\n          @media (min-width: 800px) {\n            .produk-image {\n              width: 200px;\n            }\n\n            .produk-content {\n              padding: 20px;\n            }\n\n            .product-info-wrap {\n              flex-direction: row;\n              align-items: center;\n            }\n\n            .produk-btn {\n              display: inline-block;\n            }\n          }\n\n          \/* ========================= *\/\n          \/* TABLET (<= 768px) *\/\n          \/* ========================= *\/\n\n          @media (max-width: 768px) {\n            .produk-card {\n              flex-direction: column;\n            }\n\n            .produk-image {\n              width: 200px;\n              height: 220px;\n            }\n\n            .produk-content {\n              padding: 12px;\n            }\n\n            .produk-title {\n              font-size: 18px;\n            }\n\n            .produk-rating {\n              font-size: 14px;\n            }\n\n            .product-info-wrap {\n              flex-direction: column;\n              align-items: flex-start;\n              gap: 12px;\n            }\n\n            .produk-btn {\n              display: none;\n            }\n          }\n\n          \/* ========================= *\/\n          \/* MOBILE (<= 480px) *\/\n          \/* ========================= *\/\n\n          @media (max-width: 480px) {\n            .produk-image {\n              width: 100%;\n            }\n\n            .produk-content {\n              padding: 12px;\n            }\n\n            .produk-title {\n              font-size: 16px;\n              overflow: hidden;\n              text-overflow: ellipsis;\n            }\n\n            .produk-price-main {\n              font-size: 15px;\n            }\n\n            .produk-discount {\n              font-size: 12px;\n            }\n\n            .produk-btn {\n              display: none;\n            }\n          }\n\n          \/* ======================================= *\/\n          \/* CAROUSEL MODE (inside .carousel-list)  *\/\n          \/* ======================================= *\/\n\n          .carousel-wrapper {\n            position: relative;\n          }\n\n          .carousel-list {\n            overflow-x: auto;\n            overflow-y: hidden;\n            -webkit-overflow-scrolling: touch;\n            scroll-behavior: smooth;\n            scroll-snap-type: x mandatory;\n            scrollbar-width: none;\n          }\n\n          .carousel-list::-webkit-scrollbar {\n            display: none;\n          }\n\n          .carousel-list .produk-container {\n            display: flex;\n            flex-direction: row;\n            flex-wrap: nowrap;\n            width: max-content;\n            gap: 12px;\n          }\n\n          .carousel-list .produk-card {\n            flex: 0 0 auto;\n            width: 220px;\n            flex-direction: column;\n            scroll-snap-align: start;\n          }\n\n          .carousel-list .produk-image {\n            width: 100%;\n            height: 220px;\n          }\n\n          .carousel-list .produk-content {\n            padding: 12px;\n          }\n\n          .carousel-list .produk-title {\n\t\t\t  font-size: 16px;\n\t\t\t  overflow: hidden;\n\t\t\t  text-overflow: ellipsis;\n\t\t\t  display: -webkit-box;\n\t\t\t  -webkit-line-clamp: 2;\n\t\t\t  -webkit-box-orient: vertical;\n\t\t\t  line-clamp: 2;\n\t\t\t}\n\n          .carousel-list .produk-rating {\n            font-size: 14px;\n          }\n\n          .carousel-list .produk-price-main {\n            font-size: 15px;\n          }\n\n          .carousel-list .produk-discount {\n            font-size: 12px;\n          }\n\n          .carousel-list .product-info-wrap {\n            flex-direction: column;\n            align-items: flex-start;\n            gap: 12px;\n          }\n\n          .carousel-list .produk-btn {\n            display: none;\n          }\n\n          \/* ========================= *\/\n          \/* CAROUSEL ARROWS *\/\n          \/* ========================= *\/\n\n          .carousel-arrow {\n            position: absolute;\n            top: 50%;\n            transform: translateY(-50%);\n            width: 36px;\n            height: 36px;\n            border-radius: 50%;\n            background: #ffffff;\n            border: 1px solid #dadbe0;\n            box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            z-index: 10;\n            transition: opacity 0.2s, box-shadow 0.2s;\n            padding: 0;\n          }\n\n          .carousel-arrow:hover {\n\t\t\tbackground: #FFFFFF;\n            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n          }\n\n          .carousel-arrow.is-hidden {\n            opacity: 0;\n            pointer-events: none;\n          }\n\n          .carousel-arrow-left {\n            left: -18px;\n          }\n\n          .carousel-arrow-right {\n            right: -18px;\n          }\n\n          @media (max-width: 480px) {\n\t\t\t.carousel-arrow{\n\t\t\t\tdisplay: none;\n\t\t\t}\n            .carousel-arrow-left {\n              left: 4px;\n            }\n\n            .carousel-arrow-right {\n              right: 4px;\n            }\n          }\n    <\/style>\n\n    <!-- HTML -->\n    <div class=\"carousel-wrapper\" data-carousel-id=\"carousel-6a1be932725ea\" data-is-carousel=\"1\">\n                    <button type=\"button\" class=\"carousel-arrow carousel-arrow-left is-hidden\" aria-label=\"Scroll left\">\n                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"25\" height=\"25\" fill=\"#000000\" viewBox=\"0 0 256 256\"><path d=\"M216,88v80a8,8,0,0,1-8,8H120v48L24,128l96-96V80h88A8,8,0,0,1,216,88Z\" opacity=\"0.2\"><\/path><path d=\"M208,72H128V32a8,8,0,0,0-13.66-5.66l-96,96a8,8,0,0,0,0,11.32l96,96A8,8,0,0,0,128,224V184h80a16,16,0,0,0,16-16V88A16,16,0,0,0,208,72Zm0,96H120a8,8,0,0,0-8,8v28.69L35.31,128,112,51.31V80a8,8,0,0,0,8,8h88Z\"><\/path><\/svg>\n            <\/button>\n            <button type=\"button\" class=\"carousel-arrow carousel-arrow-right is-hidden\" aria-label=\"Scroll right\">\n                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"25\" height=\"25\" fill=\"#000000\" viewBox=\"0 0 256 256\"><path d=\"M136,224V176H48a8,8,0,0,1-8-8V88a8,8,0,0,1,8-8h88V32l96,96Z\" opacity=\"0.2\"><\/path><path d=\"M237.66,122.34l-96-96A8,8,0,0,0,128,32V72H48A16,16,0,0,0,32,88v80a16,16,0,0,0,16,16h80v40a8,8,0,0,0,13.66,5.66l96-96A8,8,0,0,0,237.66,122.34ZM144,204.69V176a8,8,0,0,0-8-8H48V88h88a8,8,0,0,0,8-8V51.31L220.69,128Z\"><\/path><\/svg>\n            <\/button>\n                <div class=\"carousel-list\">\n            <div class=\"produk-container\" data-slugs=\" uluwatu-temple-kecak-fire-dance-satusatu-curated-experience-sameday-booking-bonus-merchandise, satusatu-exclusive-car-charter-sameday-booking, satusatu-airport-transfer-from-to-airport-sameday-booking, nusa-penida-day-tour-satusatu-curated-experience-bonus-merchandise, bali-bird-park-experience-nature-wildlife-adventure\"><\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Script -->\n    <script>\n    (function() {\n\t\tfunction buildCatalogUrl(slug) {\n\t\t\t\/\/ UTM params hardcoded by the shortcode (these always win)\n\t\t\tconst hardcoded = {\n\t\t\t\tutm_source: \"blog\",\n\t\t\t\tutm_medium: \"in_line_product_cta\",\n\t\t\t};\n\n\t\t\t\/\/ UTM params from the current page URL (only used if hardcoded doesn't define them)\n\t\t\tconst pageParams = new URLSearchParams(window.location.search);\n\t\t\tconst utmKeys = [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_content\", \"utm_term\"];\n\t\t\tconst merged = new URLSearchParams();\n\n\t\t\tutmKeys.forEach(key => {\n\t\t\t\tif (hardcoded[key] !== undefined) {\n\t\t\t\t\t\/\/ Hardcoded value takes priority\n\t\t\t\t\tmerged.set(key, hardcoded[key]);\n\t\t\t\t} else if (pageParams.has(key)) {\n\t\t\t\t\t\/\/ Fall back to whatever the page URL has\n\t\t\t\t\tmerged.set(key, pageParams.get(key));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn \"https:\/\/satusatu.com\/en-ID\/catalog\/\" + slug + \"?\" + merged.toString();\n\t\t}\n\t\t\n        function renderCatalogItem(p) {\n            const location = p.location?.name || \"\";\n            const rating = p.rating?.average_rating ?? null;\n            const ratingCount = p.rating?.count_rating_display || \"\";\n            const soldDisplay = p.rating?.total_sold_display || \"\";\n            const currency = p.pricing?.currency_symbol || \"Rp\";\n            const price = p.pricing?.min_price || 0;\n            const originalPrice = p.pricing?.min_original_price || 0;\n            const discount = p.pricing?.discount || 0;\n\t\t\tconst catalogUrl = buildCatalogUrl(p.slug);\n\n            return `\n                <div class=\"produk-card\" data-url=\"${catalogUrl}\">\n                    <div class=\"produk-image\">\n                        <img decoding=\"async\" src=\"${p.image_url}\" alt=\"${p.title}\" \/>\n                        <div class=\"produk-location\">\n\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"#000000\" viewBox=\"0 0 256 256\"><path d=\"M128,24a80,80,0,0,0-80,80c0,72,80,128,80,128s80-56,80-128A80,80,0,0,0,128,24Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,128,136Z\" opacity=\"0.2\"><\/path><path d=\"M128,64a40,40,0,1,0,40,40A40,40,0,0,0,128,64Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,128,128Zm0-112a88.1,88.1,0,0,0-88,88c0,31.4,14.51,64.68,42,96.25a254.19,254.19,0,0,0,41.45,38.3,8,8,0,0,0,9.18,0A254.19,254.19,0,0,0,174,200.25c27.45-31.57,42-64.85,42-96.25A88.1,88.1,0,0,0,128,16Zm0,206c-16.53-13-72-60.75-72-118a72,72,0,0,1,144,0C200,161.23,144.53,209,128,222Z\"><\/path><\/svg>\n                            <span>${location}<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"produk-content\">\n                        <div class=\"produk-title\">${p.title}<\/div>\n                        ${rating ? `\n                        <div class=\"produk-rating\">\n                            <div class=\"produk-rating-line\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" fill=\"#F87500\" viewBox=\"0 0 256 256\"><path d=\"M229.06,108.79l-48.7,42,14.88,62.79a8.4,8.4,0,0,1-12.52,9.17L128,189.09,73.28,222.74a8.4,8.4,0,0,1-12.52-9.17l14.88-62.79-48.7-42A8.46,8.46,0,0,1,31.73,94L95.64,88.8l24.62-59.6a8.36,8.36,0,0,1,15.48,0l24.62,59.6L224.27,94A8.46,8.46,0,0,1,229.06,108.79Z\" opacity=\"0.2\"><\/path><path d=\"M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z\"><\/path><\/svg>\n                                <span>${rating} (${ratingCount}) &bull; ${soldDisplay} sold<\/span>\n                            <\/div>\n                        <\/div>` : ''}\n                        <div class=\"product-info-wrap\">\n                            <div>\n                                <div style=\"display:flex;gap:6px;\">\n                                    <div style=\"font-size:14px;\">From<\/div>\n                                    <div class=\"produk-price-main\">${currency} ${price.toLocaleString()}<\/div>\n                                <\/div>\n                                ${discount > 0 ? `\n                                <div>\n                                    <span class=\"produk-price-strike\">${currency} ${originalPrice.toLocaleString()}<\/span>\n                                    <span class=\"produk-discount\">-${discount}%<\/span>\n                                <\/div>` : ''}\n                            <\/div>\n                            <div>\n                                <a target=\"_blank\" href=\"${catalogUrl}\" class=\"produk-btn\">Check Availability<\/a>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            `;\n        }\n\n        function initSatuSatuCatalog(wrapperEl) {\n            const scrollEl = wrapperEl.querySelector(\".carousel-list\");\n            const container = wrapperEl.querySelector(\".produk-container\");\n            const slugs = container.getAttribute(\"data-slugs\");\n            const isCarousel = wrapperEl.getAttribute(\"data-is-carousel\") === \"1\";\n            const leftArrow = wrapperEl.querySelector(\".carousel-arrow-left\");\n            const rightArrow = wrapperEl.querySelector(\".carousel-arrow-right\");\n\n            fetch(\"https:\/\/api.satusatu.com\/content\/guest\/satusatu\/v1\/catalogs\/blog\/catalog-list?slugs=\" + slugs)\n                .then(res => res.json())\n                .then(data => {\n                    container.innerHTML = data.data.map(renderCatalogItem).join('');\n                    \/\/ Event handler for card click\n                    container.querySelectorAll('.produk-card').forEach(card => {\n                        card.addEventListener('click', () => {\n                            window.open(card.dataset.url, '_blank');\n                        });\n                    });\n\n                    if (isCarousel && scrollEl && leftArrow && rightArrow) {\n                        const scrollAmount = 240;\n                        function updateArrows() {\n                            const sl = scrollEl.scrollLeft;\n                            const sw = scrollEl.scrollWidth;\n                            const cw = scrollEl.clientWidth;\n                            leftArrow.classList.toggle(\"is-hidden\", sl <= 0);\n                            rightArrow.classList.toggle(\"is-hidden\", sl + cw >= sw - 1);\n                        }\n                        leftArrow.addEventListener(\"click\", e => {\n                            e.stopPropagation();\n                            scrollEl.scrollBy({ left: -scrollAmount, behavior: \"smooth\" });\n                        });\n                        rightArrow.addEventListener(\"click\", e => {\n                            e.stopPropagation();\n                            scrollEl.scrollBy({ left: scrollAmount, behavior: \"smooth\" });\n                        });\n                        scrollEl.addEventListener(\"scroll\", updateArrows);\n                        window.addEventListener(\"resize\", updateArrows);\n                        setTimeout(updateArrows, 200);\n                    }\n                });\n        }\n\n        document.addEventListener(\"DOMContentLoaded\", function() {\n            document.querySelectorAll(\"[data-carousel-id]\").forEach(initSatuSatuCatalog);\n        });\n    })();\n    <\/script>\n    <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Picture this: your kids are feeding rainbow lorikeets from their palms in a tropical garden while grandparents watch comfortably from a shaded path nearby, and that&#8217;s only the first morning.&nbsp; The &#8220;Family Fun Bali&#8221; itinerary by SatuSatu is built exactly for moments like this two days that keep children genuinely excited, mixed-age groups moving at&hellip;&nbsp;<\/p>\n","protected":false},"author":22,"featured_media":3383,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[4517,530,4523],"tags":[4515,4535,526,4533,4513],"class_list":["post-3382","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bali-all-access","category-travel-guide","category-travel-itenary","tag-bali-all-access","tag-bali-gravel-guide","tag-satusatu","tag-the-best-2-day-bali-itinerary-from-ubud-to-south-bali","tag-travel-itenary"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0 -<\/title>\n<meta name=\"description\" content=\"Discover a 2-day Bali itinerary from Ubud to South Bali, perfect for families seeking balanced activities and cultural shows\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0 -\" \/>\n<meta property=\"og:description\" content=\"Discover a 2-day Bali itinerary from Ubud to South Bali, perfect for families seeking balanced activities and cultural shows\" \/>\n<meta property=\"og:url\" content=\"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-06T07:52:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-07T09:58:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fatiya Aulia Muthmainnah\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatiya Aulia Muthmainnah\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/\"},\"author\":{\"name\":\"Fatiya Aulia Muthmainnah\",\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/#\\\/schema\\\/person\\\/4b773aced63910f3c4d3c4a8c82516c2\"},\"headline\":\"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0\",\"datePublished\":\"2026-05-06T07:52:29+00:00\",\"dateModified\":\"2026-05-07T09:58:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/\"},\"wordCount\":3109,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png\",\"keywords\":[\"Bali All Access\",\"Bali Gravel Guide\",\"SatuSatu\",\"The Best 2-Day Bali Itinerary: From Ubud to South Bali\",\"Travel Itenary\"],\"articleSection\":[\"Bali All Access\",\"Travel Guide\",\"Travel Itenary\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/\",\"url\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/\",\"name\":\"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0 -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png\",\"datePublished\":\"2026-05-06T07:52:29+00:00\",\"dateModified\":\"2026-05-07T09:58:23+00:00\",\"description\":\"Discover a 2-day Bali itinerary from Ubud to South Bali, perfect for families seeking balanced activities and cultural shows\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/#primaryimage\",\"url\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png\",\"contentUrl\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png\",\"width\":1536,\"height\":1024,\"caption\":\"The Best 2-Day Bali Itinerary: From Ubud to South Bali\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/#website\",\"url\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/\",\"name\":\"SatuSatu\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/#organization\",\"name\":\"SatuSatu\",\"url\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Variant1024.png\",\"contentUrl\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Variant1024.png\",\"width\":1024,\"height\":1024,\"caption\":\"SatuSatu\"},\"image\":{\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/satusatucom\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/#\\\/schema\\\/person\\\/4b773aced63910f3c4d3c4a8c82516c2\",\"name\":\"Fatiya Aulia Muthmainnah\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1bd35afe4fc3154c4ed985ce96b5941e11cd1aca25cc24a42ff9c58d10c640e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1bd35afe4fc3154c4ed985ce96b5941e11cd1aca25cc24a42ff9c58d10c640e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1bd35afe4fc3154c4ed985ce96b5941e11cd1aca25cc24a42ff9c58d10c640e?s=96&d=mm&r=g\",\"caption\":\"Fatiya Aulia Muthmainnah\"},\"url\":\"https:\\\/\\\/satusatu.com\\\/inspiration\\\/author\\\/ext-fatiya-aulia\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0 -","description":"Discover a 2-day Bali itinerary from Ubud to South Bali, perfect for families seeking balanced activities and cultural shows","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/","og_locale":"en_US","og_type":"article","og_title":"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0 -","og_description":"Discover a 2-day Bali itinerary from Ubud to South Bali, perfect for families seeking balanced activities and cultural shows","og_url":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/","article_published_time":"2026-05-06T07:52:29+00:00","article_modified_time":"2026-05-07T09:58:23+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png","type":"image\/png"}],"author":"Fatiya Aulia Muthmainnah","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatiya Aulia Muthmainnah","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/#article","isPartOf":{"@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/"},"author":{"name":"Fatiya Aulia Muthmainnah","@id":"https:\/\/satusatu.com\/inspiration\/#\/schema\/person\/4b773aced63910f3c4d3c4a8c82516c2"},"headline":"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0","datePublished":"2026-05-06T07:52:29+00:00","dateModified":"2026-05-07T09:58:23+00:00","mainEntityOfPage":{"@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/"},"wordCount":3109,"commentCount":0,"publisher":{"@id":"https:\/\/satusatu.com\/inspiration\/#organization"},"image":{"@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/#primaryimage"},"thumbnailUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png","keywords":["Bali All Access","Bali Gravel Guide","SatuSatu","The Best 2-Day Bali Itinerary: From Ubud to South Bali","Travel Itenary"],"articleSection":["Bali All Access","Travel Guide","Travel Itenary"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/","url":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/","name":"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0 -","isPartOf":{"@id":"https:\/\/satusatu.com\/inspiration\/#website"},"primaryImageOfPage":{"@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/#primaryimage"},"image":{"@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/#primaryimage"},"thumbnailUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png","datePublished":"2026-05-06T07:52:29+00:00","dateModified":"2026-05-07T09:58:23+00:00","description":"Discover a 2-day Bali itinerary from Ubud to South Bali, perfect for families seeking balanced activities and cultural shows","breadcrumb":{"@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/#primaryimage","url":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png","contentUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png","width":1536,"height":1024,"caption":"The Best 2-Day Bali Itinerary: From Ubud to South Bali"},{"@type":"BreadcrumbList","@id":"https:\/\/satusatu.com\/inspiration\/the-best-2-day-bali-itinerary-from-ubud-to-south-bali\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/satusatu.com\/inspiration\/"},{"@type":"ListItem","position":2,"name":"The Best 2-Day Bali Itinerary: From Ubud to South Bali\u00a0"}]},{"@type":"WebSite","@id":"https:\/\/satusatu.com\/inspiration\/#website","url":"https:\/\/satusatu.com\/inspiration\/","name":"SatuSatu","description":"","publisher":{"@id":"https:\/\/satusatu.com\/inspiration\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/satusatu.com\/inspiration\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/satusatu.com\/inspiration\/#organization","name":"SatuSatu","url":"https:\/\/satusatu.com\/inspiration\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/satusatu.com\/inspiration\/#\/schema\/logo\/image\/","url":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/01\/Variant1024.png","contentUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/01\/Variant1024.png","width":1024,"height":1024,"caption":"SatuSatu"},"image":{"@id":"https:\/\/satusatu.com\/inspiration\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/satusatucom\/"]},{"@type":"Person","@id":"https:\/\/satusatu.com\/inspiration\/#\/schema\/person\/4b773aced63910f3c4d3c4a8c82516c2","name":"Fatiya Aulia Muthmainnah","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f1bd35afe4fc3154c4ed985ce96b5941e11cd1aca25cc24a42ff9c58d10c640e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f1bd35afe4fc3154c4ed985ce96b5941e11cd1aca25cc24a42ff9c58d10c640e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f1bd35afe4fc3154c4ed985ce96b5941e11cd1aca25cc24a42ff9c58d10c640e?s=96&d=mm&r=g","caption":"Fatiya Aulia Muthmainnah"},"url":"https:\/\/satusatu.com\/inspiration\/author\/ext-fatiya-aulia\/"}]}},"uagb_featured_image_src":{"full":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png",1536,1024,false],"thumbnail":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png",150,100,false],"medium":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png",300,200,false],"medium_large":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png",768,512,false],"large":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png",1024,683,false],"1536x1536":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png",1536,1024,false],"2048x2048":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png",1536,1024,false],"neve-blog":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/05\/The-Best-2-Day-Bali-Itinerary-From-Ubud-to-South-Bali.png",930,620,false]},"uagb_author_info":{"display_name":"Fatiya Aulia Muthmainnah","author_link":"https:\/\/satusatu.com\/inspiration\/author\/ext-fatiya-aulia\/"},"uagb_comment_info":0,"uagb_excerpt":"Picture this: your kids are feeding rainbow lorikeets from their palms in a tropical garden while grandparents watch comfortably from a shaded path nearby, and that&#8217;s only the first morning.&nbsp; The &#8220;Family Fun Bali&#8221; itinerary by SatuSatu is built exactly for moments like this two days that keep children genuinely excited, mixed-age groups moving at&hellip;&nbsp;","_links":{"self":[{"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts\/3382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/comments?post=3382"}],"version-history":[{"count":3,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts\/3382\/revisions"}],"predecessor-version":[{"id":3561,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts\/3382\/revisions\/3561"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/media\/3383"}],"wp:attachment":[{"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/media?parent=3382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/categories?post=3382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/tags?post=3382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}