{"id":2393,"date":"2026-04-01T18:59:54","date_gmt":"2026-04-01T11:59:54","guid":{"rendered":"https:\/\/satusatu.com\/inspiration\/?p=2393"},"modified":"2026-04-01T18:59:56","modified_gmt":"2026-04-01T11:59:56","slug":"breakfast-canggu","status":"publish","type":"post","link":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/","title":{"rendered":"The 5 Best Places for Breakfast in Canggu, Bali"},"content":{"rendered":"\n<p>Canggu has built a reputation as one of Southeast Asia&#8217;s top caf\u00e9 destinations, and nowhere is that more obvious than at breakfast time. By 8am, the streets around Batu Bolong and Berawa are already buzzing with surfers, digital nomads, and travelers hunting for the morning&#8217;s best smoothie bowl, flat white, or egg plate.&nbsp;<\/p>\n\n\n\n<p>The competition between caf\u00e9s here is real, which means the standard stays high and the options keep getting better. SatuSatu and <a href=\"http:\/\/satusatu.com\">SatuSatu.com<\/a> have everything you need to explore Canggu and beyond, from transfers to locally curated experiences that make mornings here truly memorable.<\/p>\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-69d0011b33530\" 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=\"kuber-bali-atv-adventure,icon-atv-bali-adventure,bali-diving-school-scuba-diving-courses,batara-watersport-bali-tanjung-benoa-water-adventures,timbis-beach-paragliding-experience-bali,sunrise-volcano-jeep-experience-mount-batur,mount-batur-jeep-sunset-experience,4wd-jeep-mount-batur-sunrise-experience-by-bali-volcano-jeep\"><\/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\">Why Canggu for Breakfast?<\/h2>\n\n\n\n<p>Canggu&#8217;s caf\u00e9 scene is driven by a unique mix of long-term expats who demand consistency, visiting foodies who expect creativity, and a local community that keeps everyone honest.&nbsp;<\/p>\n\n\n\n<p>The result is a neighborhood where even mid-range caf\u00e9s serve specialty coffee, source local ingredients, and present food with genuine care. It&#8217;s one of the few places in Bali where showing up before 9am on a weekend means competing for a table.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Crate Cafe<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/p\/AF1QipM-24638Owy63klz3065d84InTvFALMADhMVnmH=s1360-w1360-h1020-rw\" alt=\"\"\/><\/figure>\n\n\n\n<p>\ud83d\udccdJl. Canggu Padang Linjong No.49F, Canggu off Batu Bolong&nbsp;<\/p>\n\n\n\n<p>\ud83d\udcb0From IDR 65,000; one of the most affordable quality spots in Canggu&nbsp;<\/p>\n\n\n\n<p>\ud83d\udc65 <strong>Best For<\/strong>: Digital nomads, budget travelers, solo diners, first-timers to Canggu \ud83d\udd50 Daily 6am\u20134pm; walk-ins only, no reservations&nbsp;<\/p>\n\n\n\n<p>\u2728 <strong>What Makes It Special<\/strong>: The sheer value, early opening time, and all-day breakfast menu featuring smoothie bowls, loaded toasties, brekkie burritos, and freshly baked goods at Canggu&#8217;s most social caf\u00e9 table<\/p>\n\n\n\n<p>Crate Cafe has been incredibly popular for over ten years, serving generous portions at affordable prices all dishes start at around IDR 65,000 making it one of the best-value morning spots in Canggu despite its prime location.&nbsp;<\/p>\n\n\n\n<p>The open-air, warehouse-style space on Padang Linjong fills up fast, drawing the full cross-section of the neighborhood: surfers post-session, nomads setting up for a work morning, and first-time visitors ticking off the Canggu caf\u00e9 checklist.<\/p>\n\n\n\n<p>The Melville bowl and the Pucker Up are two of the most-ordered dishes and both are worth the hype. Arrive before 8am on weekends for the best chance of a table without a wait.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Milk &amp; Madu<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/p\/AF1QipMc5dr1VTGoliU-UfDHksVnK16sTQgJGw8Hvpwm=s1360-w1360-h1020-rw\" alt=\"\"\/><\/figure>\n\n\n\n<p>\ud83d\udccdJl. Pantai Batu Bolong No.92, Canggu (main branch); Jl. Pantai Berawa No.52 (Berawa branch)&nbsp;<\/p>\n\n\n\n<p>\ud83d\udcb0IDR 70,000\u2013150,000 per dish; mid-range for Canggu&nbsp;<\/p>\n\n\n\n<p>\ud83d\udc65 <strong>Best For<\/strong>: Families with kids, couples, expats, anyone wanting reliable quality \ud83d\udd50 <strong>Opening Hours<\/strong> Daily 7am\u201310pm&nbsp;<\/p>\n\n\n\n<p>\u2728 <strong>What Makes It Special<\/strong>: The combination of a family-friendly environment, all-day breakfast until 4pm, and a consistently high-quality kitchen that doesn&#8217;t cut corners on ingredients or execution<\/p>\n\n\n\n<p>Milk &amp; Madu is a Canggu institution with two locations one on Batu Bolong Beach Road, one in Berawa and a reputation for consistent, well-executed all-day breakfasts that appeal to almost everyone.&nbsp;<\/p>\n\n\n\n<p>The Batu Bolong branch is particularly popular with families, featuring a small playground and a kid&#8217;s menu alongside their regular breakfast lineup that includes muesli bowls, eggs benedict, french toast, and their signature &#8220;The Madu&#8221; poached eggs, avocado, bacon, onion jam, hollandaise, and sourdough.<\/p>\n\n\n\n<p>The Berawa location has rice field views and a slightly calmer crowd versus expats, making it the better choice if you want a quieter table and a slightly slower morning pace.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sensorium<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/gps-cs-s\/AHVAwepZc50ViFn8xgzbN6fky6l4sMRksjrLiWPW02QRiJzh06EoGInwoox9FQOdMHUkLkD1qvzwSt8_lIDtpso4dpmO4apTQTrROn3erlQ1ExTDwYf0a7lRO9k_Roh-OZDJhxk4yBXoN_lyQcvu=w243-h304-n-k-no-nu\" alt=\"\" style=\"aspect-ratio:0.799331791313287;width:539px;height:auto\"\/><\/figure>\n\n\n\n<p>\ud83d\udccdJl. Pantai Batu Mejan, Canggu, Kuta Utara near Echo Beach&nbsp;<\/p>\n\n\n\n<p>\ud83d\udcb0IDR 100,000\u2013180,000 per dish; higher end for Canggu&nbsp;<\/p>\n\n\n\n<p>\ud83d\udc65 <strong>Best For<\/strong>: Food-forward travelers, couples celebrating, anyone who wants a genuinely different breakfast experience&nbsp;<\/p>\n\n\n\n<p>\ud83d\udd50Daily; no reservations arrive early as it fills up quickly&nbsp;<\/p>\n\n\n\n<p>\u2728 <strong>What Makes It Special<\/strong>: This is the spot to visit when Canggu&#8217;s other caf\u00e9s have started blending together Sensorium is categorically different, with boundary-pushing food that rewards adventurous eaters<\/p>\n\n\n\n<p>Sensorium is Canggu&#8217;s most ambitious breakfast destination a multi-sensory caf\u00e9 that takes Australian-Asian fusion cuisine seriously and delivers it in a cool, air-conditioned space that feels deliberately different from every other spot in the neighborhood.&nbsp;<\/p>\n\n\n\n<p>Chef-Owner William Salim is often in the caf\u00e9 personally greeting guests and recommending standouts, with signature dishes like the Textural Mushrooms saut\u00e9ed and fried wild mushrooms with seaweed paste on rye and a brunch ramen with a 62-degree sous vide egg.<\/p>\n\n\n\n<p>The egg sando is one of the most recommended single dishes in all of Canggu&#8217;s breakfast scene. It&#8217;s a special occasion breakfast spot, but worth every rupiah.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Monsieur Spoon Canggu<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/p\/AF1QipNaMdMK5lS0OJS2zHyoBlXHTBBShlNHL2yzkCDM=s1360-w1360-h1020-rw\" alt=\"\"\/><\/figure>\n\n\n\n<p>\ud83d\udccdJl. Pantai Batu Bolong No.55, Canggu on the main Batu Bolong strip&nbsp;<\/p>\n\n\n\n<p>\ud83d\udcb0 Pastries from IDR 35,000; full breakfast from IDR 70,000&nbsp;<\/p>\n\n\n\n<p>\ud83d\udc65 <strong>Best For<\/strong>: Pastry lovers, couples, anyone craving European bakery flavors in the tropics&nbsp;<\/p>\n\n\n\n<p>\ud83d\udd50Daily 7am\u20139pm&nbsp;<\/p>\n\n\n\n<p>\u2728 <strong>What Makes It Special<\/strong>: 99% of all products are prepared and baked on site \u2014 no shortcuts, no mixes, just proper French pastry technique in an open-air Canggu setting with good coffee alongside<\/p>\n\n\n\n<p>Monsieur Spoon is a family-run French bakery-caf\u00e9 started by two Parisian cousins in 2012, with the all-butter croissant as their signature bestseller and the Canggu branch on Batu Bolong is the most atmospheric of all their Bali locations.&nbsp;<\/p>\n\n\n\n<p>The large open-air seating area makes it ideal for a slow morning with good coffee and a pastry, and everything from the millefeuille to the pain au chocolat is made fresh on site daily.<\/p>\n\n\n\n<p>It&#8217;s one of those rare spots where the quality is genuinely consistent across every visit, which is why it&#8217;s lasted over a decade in one of Bali&#8217;s most competitive caf\u00e9 neighborhoods.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Shady Shack<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"490\" src=\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/GALLERY-\u2014-The-Shady-Shack.jpg\" alt=\"The Shady Shack\" class=\"wp-image-2395\"\/><\/figure>\n\n\n\n<p>\ud83d\udccdJl. Tanah Barak No.57, Canggu close to Batu Bolong Beach&nbsp;<\/p>\n\n\n\n<p>\ud83d\udcb0From IDR 55,000; mains typically IDR 75,000\u2013120,000&nbsp;<\/p>\n\n\n\n<p>\ud83d\udc65 <strong>Best For<\/strong>: Vegetarians, vegans, solo travelers wanting peace, health-focused couples&nbsp;<\/p>\n\n\n\n<p>\ud83d\udd50Daily from early morning through evening&nbsp;<\/p>\n\n\n\n<p>\u2728 <strong>What Makes It Special<\/strong>: The garden seating, the Shack Attack burger, the halloumi bowls, and a smoothie menu that genuinely energizes all delivered in one of Canggu&#8217;s most peaceful outdoor caf\u00e9 environments<\/p>\n\n\n\n<p>The Shady Shack opened in 2016 with a focus on sustainable, healthy vegan and vegetarian wholefoods, and it&#8217;s remained one of the most-loved breakfast destinations in Canggu ever since.&nbsp;<\/p>\n\n\n\n<p>Tucked into a quiet garden setting near Batu Bolong Beach, surrounded by rice paddies and shaded by trees, it feels like a different world from the busier parts of the neighborhood calm, green, and genuinely restorative.<\/p>\n\n\n\n<p>The signature &#8220;Shack Attack&#8221; and their famous smoothie bowls are the dishes most guests recommend first, but the full menu is consistently good this is one spot where you can&#8217;t really go wrong with your order.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Explore Canggu Further with SatuSatu<\/h2>\n\n\n\n<p>A great Canggu morning is only the start and SatuSatu makes it easy to build a full day from there. <a href=\"https:\/\/satusatu.com\/en-US\/catalog\/satusatu-airport-transfer-from-to-airport-sameday-booking\"><strong>SatuSatu&#8217;s Airport Transfer<\/strong><\/a> gets you into Canggu from Ngurah Rai Airport smoothly and at a fixed price, with same-day booking available and no haggling required.&nbsp;<\/p>\n\n\n\n<p>For exploring beyond Canggu whether that&#8217;s an ATV adventure, a visit to Ubud, or a day at the temples of Uluwatu the <a href=\"https:\/\/satusatu.com\/en-US\/catalog\/satusatu-exclusive-car-charter-sameday-booking%5C\"><strong>SatuSatu Exclusive Car Charter<\/strong><\/a> gives you a dedicated local driver with fully flexible timing, bookable directly on SatuSatu.com.<\/p>\n\n\n\n<p>For those who want to turn their Canggu morning into a full creative experience, SatuSatu also lists the <a href=\"https:\/\/satusatu.com\/en-US\/catalog\/canggu-lumbung-jewelry-classes\"><strong>Canggu Lumbung Jewelry Classes<\/strong><\/a> a hands-on silver jewelry workshop in the heart of Canggu, perfect for a post-breakfast activity.&nbsp;<\/p>\n\n\n\n<p>All bookings are made directly on <a href=\"http:\/\/satusatu.com\">SatuSatu.com<\/a> and support local payment methods including BCA, Mandiri, OVO, DANA, credit cards, and more.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ&nbsp;<\/h2>\n\n\n\n<p><strong>What is the best breakfast in Canggu?<\/strong>&nbsp;<\/p>\n\n\n\n<p>The most consistently recommended breakfast spots in Canggu are Crate Cafe for value and vibe, Sensorium for creative fusion cuisine, Milk &amp; Madu for families and all-round reliability, Monsieur Spoon for French pastries, and The Shady Shack for plant-based eating in a garden setting.<\/p>\n\n\n\n<p><strong>Is Canggu good for breakfast?<\/strong>&nbsp;<\/p>\n\n\n\n<p>Canggu has one of the strongest caf\u00e9 breakfast cultures in all of Southeast Asia. The combination of a large expat community, high culinary standards, and fierce competition between caf\u00e9s means the quality stays consistently high, with options for every budget and dietary preference.<\/p>\n\n\n\n<p><strong>What time do caf\u00e9s open in Canggu?<\/strong>&nbsp;<\/p>\n\n\n\n<p>Most caf\u00e9s in Canggu open between 6am and 8am. Crate Cafe is among the earliest at 6am. The busiest window is 8am to 10am arriving before 8am is the best strategy for popular spots like Crate and Sensorium, which don&#8217;t take reservations.<\/p>\n\n\n\n<p><strong>Is there good vegan breakfast in Canggu?<\/strong>&nbsp;<\/p>\n\n\n\n<p>Yes, Canggu has an outstanding vegan and vegetarian breakfast scene. The Shady Shack is the most established fully plant-based caf\u00e9, while Crate Cafe and Milk &amp; Madu both offer strong vegan options alongside their broader menus. Most caf\u00e9s also offer non-dairy milk alternatives as standard.<\/p>\n\n\n\n<p><strong>How much does breakfast cost in Canggu?<\/strong>&nbsp;<\/p>\n\n\n\n<p>Canggu caf\u00e9s cater to every budget affordable warung-style meals start from around IDR 30,000 to 50,000, while more upscale brunch caf\u00e9s can charge up to IDR 150,000 per dish. Most quality breakfast spots sit in the IDR 65,000\u2013120,000 range per plate, which remains excellent value by international standards.<\/p>\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-69d0011b33551\" 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=\"kuber-bali-atv-adventure,icon-atv-bali-adventure,bali-diving-school-scuba-diving-courses,batara-watersport-bali-tanjung-benoa-water-adventures,timbis-beach-paragliding-experience-bali,sunrise-volcano-jeep-experience-mount-batur,mount-batur-jeep-sunset-experience,4wd-jeep-mount-batur-sunrise-experience-by-bali-volcano-jeep\"><\/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>Canggu has built a reputation as one of Southeast Asia&#8217;s top caf\u00e9 destinations, and nowhere is that more obvious than at breakfast time. By 8am, the streets around Batu Bolong and Berawa are already buzzing with surfers, digital nomads, and travelers hunting for the morning&#8217;s best smoothie bowl, flat white, or egg plate.&nbsp; The competition&hellip;&nbsp;<\/p>\n","protected":false},"author":22,"featured_media":2394,"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,655,654,49,526],"class_list":["post-2393","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bali-culinary","tag-bali-culinary","tag-breakfast","tag-breakfast-canggu","tag-canggu","tag-satusatu"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The 5 Best Places for Breakfast in Canggu, Bali - SatuSatu Inspiration<\/title>\n<meta name=\"description\" content=\"Discover the best breakfast spots in Canggu, Bali, from affordable caf\u00e9 favorites to creative brunch destinations, perfect for starting your morning right\" \/>\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\/breakfast-canggu\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The 5 Best Places for Breakfast in Canggu, Bali - SatuSatu Inspiration\" \/>\n<meta property=\"og:description\" content=\"Discover the best breakfast spots in Canggu, Bali, from affordable caf\u00e9 favorites to creative brunch destinations, perfect for starting your morning right\" \/>\n<meta property=\"og:url\" content=\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/\" \/>\n<meta property=\"og:site_name\" content=\"SatuSatu Inspiration\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-01T11:59:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-01T11:59:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.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=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/\"},\"author\":{\"name\":\"Fatiya Aulia Muthmainnah\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/#\/schema\/person\/4b773aced63910f3c4d3c4a8c82516c2\"},\"headline\":\"The 5 Best Places for Breakfast in Canggu, Bali\",\"datePublished\":\"2026-04-01T11:59:54+00:00\",\"dateModified\":\"2026-04-01T11:59:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/\"},\"wordCount\":1553,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/#organization\"},\"image\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png\",\"keywords\":[\"Bali Culinary\",\"Breakfast\",\"breakfast canggu\",\"Canggu\",\"SatuSatu\"],\"articleSection\":[\"Bali Culinary\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/\",\"url\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/\",\"name\":\"The 5 Best Places for Breakfast in Canggu, Bali - SatuSatu Inspiration\",\"isPartOf\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png\",\"datePublished\":\"2026-04-01T11:59:54+00:00\",\"dateModified\":\"2026-04-01T11:59:56+00:00\",\"description\":\"Discover the best breakfast spots in Canggu, Bali, from affordable caf\u00e9 favorites to creative brunch destinations, perfect for starting your morning right\",\"breadcrumb\":{\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#primaryimage\",\"url\":\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png\",\"contentUrl\":\"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png\",\"width\":1408,\"height\":768,\"caption\":\"breakfast canggu\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/satusatu.com\/inspiration\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The 5 Best Places for Breakfast in Canggu, Bali\"}]},{\"@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":"The 5 Best Places for Breakfast in Canggu, Bali - SatuSatu Inspiration","description":"Discover the best breakfast spots in Canggu, Bali, from affordable caf\u00e9 favorites to creative brunch destinations, perfect for starting your morning right","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\/breakfast-canggu\/","og_locale":"en_US","og_type":"article","og_title":"The 5 Best Places for Breakfast in Canggu, Bali - SatuSatu Inspiration","og_description":"Discover the best breakfast spots in Canggu, Bali, from affordable caf\u00e9 favorites to creative brunch destinations, perfect for starting your morning right","og_url":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/","og_site_name":"SatuSatu Inspiration","article_published_time":"2026-04-01T11:59:54+00:00","article_modified_time":"2026-04-01T11:59:56+00:00","og_image":[{"width":1408,"height":768,"url":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png","type":"image\/png"}],"author":"Fatiya Aulia Muthmainnah","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatiya Aulia Muthmainnah","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#article","isPartOf":{"@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/"},"author":{"name":"Fatiya Aulia Muthmainnah","@id":"https:\/\/satusatu.com\/inspiration\/#\/schema\/person\/4b773aced63910f3c4d3c4a8c82516c2"},"headline":"The 5 Best Places for Breakfast in Canggu, Bali","datePublished":"2026-04-01T11:59:54+00:00","dateModified":"2026-04-01T11:59:56+00:00","mainEntityOfPage":{"@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/"},"wordCount":1553,"commentCount":0,"publisher":{"@id":"https:\/\/satusatu.com\/inspiration\/#organization"},"image":{"@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#primaryimage"},"thumbnailUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png","keywords":["Bali Culinary","Breakfast","breakfast canggu","Canggu","SatuSatu"],"articleSection":["Bali Culinary"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/","url":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/","name":"The 5 Best Places for Breakfast in Canggu, Bali - SatuSatu Inspiration","isPartOf":{"@id":"https:\/\/satusatu.com\/inspiration\/#website"},"primaryImageOfPage":{"@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#primaryimage"},"image":{"@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#primaryimage"},"thumbnailUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png","datePublished":"2026-04-01T11:59:54+00:00","dateModified":"2026-04-01T11:59:56+00:00","description":"Discover the best breakfast spots in Canggu, Bali, from affordable caf\u00e9 favorites to creative brunch destinations, perfect for starting your morning right","breadcrumb":{"@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#primaryimage","url":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png","contentUrl":"https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png","width":1408,"height":768,"caption":"breakfast canggu"},{"@type":"BreadcrumbList","@id":"https:\/\/satusatu.com\/inspiration\/breakfast-canggu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/satusatu.com\/inspiration\/"},{"@type":"ListItem","position":2,"name":"The 5 Best Places for Breakfast in Canggu, Bali"}]},{"@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\/Gemini_Generated_Image_paufp0paufp0pauf-1.png",1408,768,false],"thumbnail":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png",150,82,false],"medium":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png",300,164,false],"medium_large":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png",768,419,false],"large":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png",1024,559,false],"1536x1536":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png",1408,768,false],"2048x2048":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.png",1408,768,false],"neve-blog":["https:\/\/satusatu.com\/inspiration\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_paufp0paufp0pauf-1.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":"Canggu has built a reputation as one of Southeast Asia&#8217;s top caf\u00e9 destinations, and nowhere is that more obvious than at breakfast time. By 8am, the streets around Batu Bolong and Berawa are already buzzing with surfers, digital nomads, and travelers hunting for the morning&#8217;s best smoothie bowl, flat white, or egg plate.&nbsp; The competition&hellip;&nbsp;","_links":{"self":[{"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts\/2393","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=2393"}],"version-history":[{"count":1,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts\/2393\/revisions"}],"predecessor-version":[{"id":2396,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/posts\/2393\/revisions\/2396"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/media\/2394"}],"wp:attachment":[{"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/media?parent=2393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/categories?post=2393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/satusatu.com\/inspiration\/wp-json\/wp\/v2\/tags?post=2393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}