{"id":2636,"date":"2026-04-11T08:00:00","date_gmt":"2026-04-11T01:00:00","guid":{"rendered":"https:\/\/satusatu.com\/inspiration\/?p=2636"},"modified":"2026-04-10T17:25:00","modified_gmt":"2026-04-10T10:25:00","slug":"nasi-ayam-bu-oki-jimbaran","status":"publish","type":"post","link":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/","title":{"rendered":"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For"},"content":{"rendered":"\n<p>There are Bali restaurants with ocean views and celebrity chefs, and then there are the tiny, crowded warungs where locals queue up by 11am and everything sells out before dinner. Warung Nasi Ayam Bu Oki in Jimbaran belongs firmly in the second category, and that is entirely the point.&nbsp;<\/p>\n\n\n\n<p>It serves one dish, does it exceptionally well, and charges a price that makes it one of the best-value meals in South Bali. SatuSatu, a Bali travel platform that helps travelers discover and book authentic experiences across the island, breaks down everything you need to know before making the trip.<\/p>\n\n\n\n    <!-- 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-69da74f8d4247\" 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    \n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Nasi Ayam Bu Oki Jimbaran?<\/h2>\n\n\n\n<p>Warung Nasi Ayam Bu Oki is a no-frills Balinese warung specializing in nasi ayam, the classic Balinese chicken rice plate. Founded by a woman known as Bu Oki, the warung has built a loyal following over the years among locals, Indonesian visitors, and in-the-know international travelers.&nbsp;<\/p>\n\n\n\n<p>It has since expanded to several branches across South Bali including locations in Nusa Dua, Kuta, and Sanur, though the Jimbaran location on Jalan Celagi Basur remains one of the most referenced.<\/p>\n\n\n\n<p>The warung operates on a simple principle: cook everything fresh each morning, serve it fast, and keep the prices honest. There is no printed cocktail menu, no ambient lighting designed by an interior consultant, and no Instagram-optimized plating.&nbsp;<\/p>\n\n\n\n<p>What there is, is a plate of beautifully spiced Balinese chicken that locals consider among the best in the region.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Location and How to Get There<\/h2>\n\n\n\n<p>The Jimbaran branch of Warung Nasi Ayam Bu Oki is located at Jalan Uluwatu II, Jalan Celagi Basur No. 3y, in the Puri Jimbaran residential area. It sits in a relatively quiet side street off the main Uluwatu road, and can take a few extra minutes to find on the first visit.&nbsp;<\/p>\n\n\n\n<p>The warung is approximately 10 to 15 minutes from Ngurah Rai International Airport by car, making it one of the closest authentic local dining options to the airport in South Bali. From the Kuta and Legian areas, expect around 20 minutes by car.<\/p>\n\n\n\n<p>Parking near the Jimbaran branch is limited, and on busy lunch days, the streets around it fill up quickly. Arriving on a scooter is more practical than by car on peak days.&nbsp;<\/p>\n\n\n\n<p>Street parking is usually found within 50 to 100 meters of the warung, sometimes with a small informal parking fee. The Jimbaran branch closes relatively early in the afternoon, typically by around 6pm, so a midday visit is strongly recommended.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Menu and Pricing<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1408\" height=\"768\" src=\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Nasi-Ayam-Bu-Oki-Jimbaran-non.png\" alt=\"Nasi Ayam Bu Oki Jimbaran\" class=\"wp-image-2638\"\/><\/figure>\n\n\n\n<p>The menu at Warung Nasi Ayam Bu Oki is straightforward by design. The kitchen serves nasi ayam in several package configurations, starting from around IDR 20,000 to IDR 30,000 for the most complete serving.&nbsp;&nbsp;<\/p>\n\n\n\n<p>This is genuinely inexpensive even by local warung standards, and it is a significant part of why the place draws such loyal repeat customers.&nbsp;<\/p>\n\n\n\n<p>A standard plate of nasi ayam at Bu Oki typically includes steamed white rice, several preparations of chicken, a portion of lawar (a Balinese vegetable and minced meat mixture with herbs), sate lilit (Balinese minced meat satay on lemongrass sticks), a soy sauce-braised egg, and fried peanuts.&nbsp;<\/p>\n\n\n\n<p>The chicken is prepared in three different ways on the same plate: fried, shredded dry-spiced, and a saucier braised version. The sambal served alongside is genuinely hot, and the staff is generally happy to adjust the spice level if you ask.<\/p>\n\n\n\n<p>Drinks at the warung cover standard Indonesian options including bottled water, fresh juice, and es campur. There is no alcohol served, and the menu does not change seasonally.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Top Facilities and Highlights<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Three-Style Chicken Plate: Every order of nasi ayam at Bu Oki includes three different preparations of chicken on the same plate, fried, dry-spiced shredded, and braised. This variety within a single dish is one of the things that sets it apart from simpler warungs.<\/li>\n\n\n\n<li>Sate Lilit: The minced chicken satay wrapped around lemongrass sticks, known as sate lilit, is one of the most distinctly Balinese elements on the plate. Freshly made and grilled to order, it adds a smoky, fragrant note that balances the rice and sambal.<\/li>\n\n\n\n<li>Lawar and Accompaniments: A side of lawar, the traditional Balinese vegetable preparation with minced meat, herbs, and grated coconut, is included with the plate. It is one of the most authentic elements of a nasi campur-style meal and rarely done as well in tourist-facing restaurants.<\/li>\n\n\n\n<li>Halal-Friendly: Warung Nasi Ayam Bu Oki does not serve pork, and the warung is generally considered halal-friendly by local and Indonesian Muslim visitors, making it accessible for Muslim travelers seeking authentic Balinese food.<\/li>\n\n\n\n<li>Walk-in Queue Culture: The warung operates on a first-come, first-served basis with no reservations. The queue moves quickly thanks to an efficient counter service system, and the energy of a full warung at lunch is part of the experience.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">What Makes It Special<\/h2>\n\n\n\n<p>What makes Warung Nasi Ayam Bu Oki genuinely worth visiting is that it exists entirely outside of Bali&#8217;s tourist food economy.&nbsp;<\/p>\n\n\n\n<p>The prices have not been inflated for foreign visitors, the cooking has not been adjusted toward milder flavors, and the setting is exactly what you would find at a popular local warung anywhere in Indonesia.&nbsp;<\/p>\n\n\n\n<p>The spice is real, the portions are generous, and the quality of the chicken is consistently praised by everyone from locals to expats who eat there regularly. For travelers who spend their whole Bali trip eating in places designed primarily for international visitors, Bu Oki feels like a small revelation.&nbsp;<\/p>\n\n\n\n<p>A full plate of food including a drink costs less than a single item at most beachfront restaurants, and the experience of eating surrounded by Balinese families and office workers on their lunch break is as culturally immersive as any temple visit.<\/p>\n\n\n\n<p>It is best suited for travelers with an adventurous appetite, a tolerance for spice (or the willingness to ask for less of it), and an appreciation for genuine local food culture.&nbsp;<\/p>\n\n\n\n<p>Those who prefer air-conditioned comfort dining with English menus will feel more at ease elsewhere. But for anyone who wants to understand what Balinese people actually eat when they go out for lunch, Bu Oki is the answer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Explore Jimbaran Further with SatuSatu<\/h2>\n\n\n\n<p>Jimbaran is one of South Bali&#8217;s most rewarding areas to explore, from authentic local warungs like Bu Oki to clifftop temples and famous seafood dinners on the beach.<\/p>\n\n\n\n<p><a href=\"http:\/\/satusatu.com\">SatuSatu.com<\/a> is a locally run Bali travel platform where you can book transport, curated cultural experiences, and island activities all with transparent pricing and instant confirmation.<\/p>\n\n\n\n<p>To round out a day in the south with a genuinely spectacular experience, the <a href=\"https:\/\/satusatu.com\/en-US\/catalog\/dadi-bali-adventure-atv-quad-bike\">Dadi Bali Jungle ATV Adventure<\/a> in Payangan is a thrilling activity available through SatuSatu, offering a completely different Bali experience from the beach and temple circuit.<\/p>\n\n\n\n<p>Getting from Ngurah Rai Airport straight to your hotel or first stop without the hassle of negotiating fares is easy with the <a href=\"https:\/\/satusatu.com\/en-US\/catalog\/satusatu-airport-transfer-from-to-airport-sameday-booking\">SatuSatu Airport Transfer<\/a> service. Fixed transparent pricing, same-day booking, and professional local drivers make it the simplest start to any Bali trip.<\/p>\n\n\n\n<p>For a full day of exploring the Bukit Peninsula, Jimbaran, and Uluwatu by car, the <a href=\"https:\/\/satusatu.com\/en-US\/catalog\/satusatu-exclusive-car-charter-sameday-booking\">SatuSatu Exclusive Car Charter<\/a> gives you a dedicated local driver and a completely flexible itinerary, bookable directly on <a href=\"http:\/\/satusatu.com\">SatuSatu.com<\/a>&nbsp;<\/p>\n\n\n\n<p>And as the day wraps up, the <a href=\"https:\/\/satusatu.com\/en-US\/catalog\/uluwatu-temple-kecak-fire-dance-satusatu-curated-experience-sameday-booking-bonus-merchandise\">Uluwatu Temple Kecak and Fire Dance<\/a>, SatuSatu&#8217;s most popular curated experience with over 1,000 tickets sold, offers a sunset cultural performance on the clifftops of Uluwatu that is just a short drive from Jimbaran. Same-day booking is available with bonus merchandise included.<\/p>\n\n\n\n<p>All bookings are made directly on <a href=\"http:\/\/satusatu.com\">SatuSatu.com<\/a> with support for BCA, Mandiri, OVO, DANA, credit cards, and more.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ about Nasi Ayam Bu Oki Jimbaran<\/h2>\n\n\n\n<p><strong>What is Nasi Ayam Bu Oki Jimbaran?&nbsp;<\/strong><\/p>\n\n\n\n<p>Warung Nasi Ayam Bu Oki is a popular local Balinese warung in Jimbaran specializing in nasi ayam, a plate of rice served with multiple preparations of spiced chicken, lawar, sate lilit, and sambal. It is known for authentic flavors, generous portions, and very affordable prices.<\/p>\n\n\n\n<p><strong>Where exactly is Nasi Ayam Bu Oki in Jimbaran?&nbsp;<\/strong><\/p>\n\n\n\n<p>The Jimbaran branch is located at Jalan Uluwatu II, Jalan Celagi Basur No. 3y, in the Puri Jimbaran area. It is approximately 10 to 15 minutes by car from Ngurah Rai International Airport.<\/p>\n\n\n\n<p><strong>What time does Nasi Ayam Bu Oki Jimbaran close?&nbsp;<\/strong><\/p>\n\n\n\n<p>The Jimbaran branch typically closes around 6pm, and the food often sells out during the busy lunch period. Arriving between 11am and 1pm is recommended for the best selection.<\/p>\n\n\n\n<p><strong>Is the food at Nasi Ayam Bu Oki spicy?&nbsp;<\/strong><\/p>\n\n\n\n<p>Yes, the sambal and some chicken preparations are genuinely spicy. The kitchen can reduce the heat on request, so it is worth asking if you have a lower spice tolerance.<\/p>\n\n\n\n<p><strong>Does Nasi Ayam Bu Oki have multiple branches in Bali?&nbsp;<\/strong><\/p>\n\n\n\n<p>Yes. In addition to the Jimbaran location, Bu Oki has branches in Nusa Dua, Kuta, and Sanur. Hours vary slightly between branches, with the Nusa Dua location reportedly closing at 9pm.<\/p>\n\n\n\n    <!-- 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-69da74f8d4265\" 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    \n","protected":false},"excerpt":{"rendered":"<p>There are Bali restaurants with ocean views and celebrity chefs, and then there are the tiny, crowded warungs where locals queue up by 11am and everything sells out before dinner. Warung Nasi Ayam Bu Oki in Jimbaran belongs firmly in the second category, and that is entirely the point.&nbsp; It serves one dish, does it&hellip;&nbsp;<\/p>\n","protected":false},"author":22,"featured_media":2637,"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":[535],"tags":[605,4115,526],"class_list":["post-2636","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bali-culinary","tag-bali-culinary","tag-nasi-ayam-bu-oki-jimbaran","tag-satusatu"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For - SatuSatu Inspiration<\/title>\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\/nasi-ayam-bu-oki-jimbaran\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For - SatuSatu Inspiration\" \/>\n<meta property=\"og:description\" content=\"There are Bali restaurants with ocean views and celebrity chefs, and then there are the tiny, crowded warungs where locals queue up by 11am and everything sells out before dinner. Warung Nasi Ayam Bu Oki in Jimbaran belongs firmly in the second category, and that is entirely the point.&nbsp; It serves one dish, does it&hellip;&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/\" \/>\n<meta property=\"og:site_name\" content=\"SatuSatu Inspiration\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-11T01:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1408\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\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=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/\"},\"author\":{\"name\":\"Fatiya Aulia Muthmainnah\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/#\/schema\/person\/4b773aced63910f3c4d3c4a8c82516c2\"},\"headline\":\"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For\",\"datePublished\":\"2026-04-11T01:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/\"},\"wordCount\":1556,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/#organization\"},\"image\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png\",\"keywords\":[\"Bali Culinary\",\"Nasi Ayam Bu Oki Jimbaran\",\"SatuSatu\"],\"articleSection\":[\"Bali Culinary\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/\",\"url\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/\",\"name\":\"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For - SatuSatu Inspiration\",\"isPartOf\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png\",\"datePublished\":\"2026-04-11T01:00:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#primaryimage\",\"url\":\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png\",\"contentUrl\":\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png\",\"width\":1408,\"height\":768,\"caption\":\"Nasi Ayam Bu Oki Jimbaran\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/satusatu.com\/inspiration\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For\"}]},{\"@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\/\"}},{\"@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":"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For - SatuSatu Inspiration","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\/nasi-ayam-bu-oki-jimbaran\/","og_locale":"en_US","og_type":"article","og_title":"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For - SatuSatu Inspiration","og_description":"There are Bali restaurants with ocean views and celebrity chefs, and then there are the tiny, crowded warungs where locals queue up by 11am and everything sells out before dinner. Warung Nasi Ayam Bu Oki in Jimbaran belongs firmly in the second category, and that is entirely the point.&nbsp; It serves one dish, does it&hellip;&nbsp;","og_url":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/","og_site_name":"SatuSatu Inspiration","article_published_time":"2026-04-11T01:00:00+00:00","og_image":[{"width":1408,"height":768,"url":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png","type":"image\/png"}],"author":"Fatiya Aulia Muthmainnah","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatiya Aulia Muthmainnah","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#article","isPartOf":{"@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/"},"author":{"name":"Fatiya Aulia Muthmainnah","@id":"https:\/\/satusatu.com\/inspiration\/#\/schema\/person\/4b773aced63910f3c4d3c4a8c82516c2"},"headline":"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For","datePublished":"2026-04-11T01:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/"},"wordCount":1556,"commentCount":0,"publisher":{"@id":"https:\/\/satusatu.com\/inspiration\/#organization"},"image":{"@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#primaryimage"},"thumbnailUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png","keywords":["Bali Culinary","Nasi Ayam Bu Oki Jimbaran","SatuSatu"],"articleSection":["Bali Culinary"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/","url":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/","name":"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For - SatuSatu Inspiration","isPartOf":{"@id":"https:\/\/satusatu.com\/inspiration\/#website"},"primaryImageOfPage":{"@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#primaryimage"},"image":{"@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#primaryimage"},"thumbnailUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png","datePublished":"2026-04-11T01:00:00+00:00","breadcrumb":{"@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#primaryimage","url":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png","contentUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png","width":1408,"height":768,"caption":"Nasi Ayam Bu Oki Jimbaran"},{"@type":"BreadcrumbList","@id":"https:\/\/satusatu.com\/inspiration\/nasi-ayam-bu-oki-jimbaran\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/satusatu.com\/inspiration\/"},{"@type":"ListItem","position":2,"name":"Nasi Ayam Bu Oki Jimbaran: The Local Chicken Rice Warung That Everyone Comes Back For"}]},{"@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\/"}},{"@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\/04\/nasi-ayam-bu-oki.png",1408,768,false],"thumbnail":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png",150,82,false],"medium":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png",300,164,false],"medium_large":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png",768,419,false],"large":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png",1024,559,false],"1536x1536":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png",1408,768,false],"2048x2048":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png",1408,768,false],"neve-blog":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/nasi-ayam-bu-oki.png",930,507,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":"There are Bali restaurants with ocean views and celebrity chefs, and then there are the tiny, crowded warungs where locals queue up by 11am and everything sells out before dinner. Warung Nasi Ayam Bu Oki in Jimbaran belongs firmly in the second category, and that is entirely the point.&nbsp; It serves one dish, does it&hellip;&nbsp;","_links":{"self":[{"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts\/2636","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=2636"}],"version-history":[{"count":1,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts\/2636\/revisions"}],"predecessor-version":[{"id":2639,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts\/2636\/revisions\/2639"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/media\/2637"}],"wp:attachment":[{"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/media?parent=2636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/categories?post=2636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/tags?post=2636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}