<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="https://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
>
    <channel>
                    <atom:link href="https://www.tomsguide.com/feeds/tag/garmin" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from Tom's Guide in Garmin ]]></title>
                <link>https://www.tomsguide.com/tag/garmin</link>
        <description><![CDATA[ All the latest garmin content from the Tom's Guide team ]]></description>
                                    <lastBuildDate>Tue, 23 Jun 2026 08:00:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ This Garmin app is helping me avoid sunburn during the heatwave, and it’s completely free ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/this-smart-garmin-app-is-helping-me-avoid-sunburn-during-the-heatwave-and-its-completely-free</link>
                                                                            <description>
                            <![CDATA[ The SunAlert Connect IQ app can help you avoid spending too long in the sun by using the UV index from your Garmin’s weather forecast. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LiajZVhFTektoEGDa3F52P</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hEKJeoVj7csDraxZzVtnQe-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/hEKJeoVj7csDraxZzVtnQe-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[SunAlert app on Garmin Forerunner 970]]></media:description>                                                            <media:text><![CDATA[SunAlert app on Garmin Forerunner 970]]></media:text>
                                <media:title type="plain"><![CDATA[SunAlert app on Garmin Forerunner 970]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hEKJeoVj7csDraxZzVtnQe-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As someone who lives in the UK, it’s true to say I don’t often have to worry that much about sunburn, at least when I’m not on holiday.</p><p>However, heatwaves do occur — the UK is currently melting thanks to 100+℉ temperatures, and as a keen runner I spend a lot of time outdoors all year round, so I do keep an eye out for risky conditions.</p><p>Recently I came across the free ConnectIQ <a href="https://apps.garmin.com/apps/33a60aac-8f33-4ca5-9e94-7fd0a61cac0d?tid=1" target="_blank" rel="nofollow">SunAlert app,</a> which gives very precise advice about your risk of sunburn at any time, based on the current UV index, the activity you have planned and the strength of sunscreen you’re using.</p><p>I downloaded it to my <a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-the-garmin-forerunner-970-for-six-months-here-are-my-long-term-pros-and-cons">Garmin Forerunner 970</a> to use during the UK heatwave, and the SunAlert app is available on almost all of the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a>.</p><h2 id="helpful-advice-based-on-conditions-and-your-skin-type">Helpful advice based on conditions and your skin type</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4127px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="YXTNyxJnvLvT2a754ZXrDe" name="SunAlert app on Garmin Forerunner 970" alt="SunAlert app on Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/YXTNyxJnvLvT2a754ZXrDe.jpg" mos="" align="middle" fullscreen="" width="4127" height="2321" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The app is naturally only to be used for advice — it’s not definitive guidance and doesn't claim to be — but it does give a set amount of time you can spend in the sun before you risk burning.</p><p>This advice is based on the UV index, as reported by the weather forecast on your Garmin watch, as well as the skin type you have set in the SunAlert app, which is based on the six Fitzpatrick skin types.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4111px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="Mi5fiaGNPmNVqXvYfXaBAe" name="SunAlert app on Garmin Forerunner 970" alt="SunAlert app on Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/Mi5fiaGNPmNVqXvYfXaBAe.jpg" mos="" align="middle" fullscreen="" width="4111" height="2313" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The app shows how long it will take before you burn, along with an estimate of how long it will take before you start tanning, for those in the sun for that purpose.</p><p>If you’re outside for a certain activity, like swimming or snow sports, you can set this in the app, along with the SPF of your sunscreen from 15-100, and this will then adjust the estimated time to burn.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4298px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="NtRQkBkkxDvoaxvDXSniFe" name="SunAlert app on Garmin Forerunner 970" alt="SunAlert app on Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/NtRQkBkkxDvoaxvDXSniFe.jpg" mos="" align="middle" fullscreen="" width="4298" height="2419" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Once you’ve got everything set up, you can start your session in the sun and then get notified when you’ve hit the predicted time that you will start burning.</p><p>The app also logs how much vitamin D it thinks you have taken in while outside and gives a target to work towards each day, which will be a useful tool for the long UK winter.</p><h2 id="sunburn-comes-on-faster-than-you-think">Sunburn comes on faster than you think</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4220px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="24LjmNNiJ7VSfJQFicZeBe" name="SunAlert app on Garmin Forerunner 970" alt="SunAlert app on Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/24LjmNNiJ7VSfJQFicZeBe.jpg" mos="" align="middle" fullscreen="" width="4220" height="2374" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Perhaps the most useful aspect of the app for me has been that it shows how little time you actually need to spend in the sun to risk burning, especially if you have a fairer skin type like mine.</p><p>If I’m only going out for a 45-minute run and it’s late morning, I’ll usually not bother with sunscreen, but the app shows that even with a moderate UV index of 5, I’d risk sunburn during that run if I was exposed the whole time.</p><p>Once the UV index gets into the high or very high range, even half an hour outdoors is risky without sunscreen, so the app has pushed me to be more diligent in applying it before all my runs.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4241px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="aX3vwyjmf7jQfnXCudd45e" name="SunAlert app on Garmin Forerunner 970" alt="SunAlert app on Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/aX3vwyjmf7jQfnXCudd45e.jpg" mos="" align="middle" fullscreen="" width="4241" height="2387" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I find it just helps to have the numbers so plainly laid out, even if they are estimates, and you can set the Sun Alert app up as a widget on your watch to get info on the risk of sunburn quickly.</p><p>It’s a completely free app and works with most Garmin watches — there are a couple of new models it’s not on yet, like the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-170-review-an-affordable-and-accurate-running-watch">Garmin Forerunner 170 </a>— so it’s definitely one I think is worth adding even just to survive the current UK heatwave, or to use all the time if you live in sunnier climates.</p><h3 class="article-body__section" id="section-we-re-tracking-all-the-best-prime-day-smartwatch-deals"><span>We're tracking all the best Prime Day smartwatch deals</span></h3><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=Wearables+%26+Fitness+Tech&price=60_&min_discount_ratio=0.95&offer_type=all&rows=4&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&show_countdown=true&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right {      right: 0;      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.previousElementSibling.scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>\n        \x3C/div>\n      \x3C/div>\n    \x3C/div>          \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="12" selected>12 Items\x3C/option>                \x3Coption value="24">24 Items\x3C/option>                \x3Coption value="48">48 Items\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Deal Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Only show products with active offers or previous prices (was_price)\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-deal-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Editor Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Enable multi-select to copy deals to CMS\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-editor-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">View Mode\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-view-mode-select">                \x3Coption value="auto">Auto Collection\x3C/option>                \x3Coption value="carousel">Carousel\x3C/option>                \x3Coption value="savings_squad">Savings Squad\x3C/option>                \x3Coption value="grid">Grid (Columns)\x3C/option>                \x3Coption value="row">Row (List)\x3C/option>              \x3C/select>            \x3C/div>          \x3C/div>        \x3C/div>      \x3C/div>      \x3Cdiv class="tg-df-filters">        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>          \x3C/svg>          \x3Cselect class="tg-df-sort-select" aria-label="Sort Deals">            \x3Coption value="date_desc">Newest First\x3C/option>            \x3Coption value="best_match">Sort by: Match\x3C/option>            \x3Coption value="price_asc">Price Low to High\x3C/option>            \x3Coption value="price_desc">Price High to Low\x3C/option>            \x3Coption value="discount_desc">Biggest Discount\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>        \x3C/div>      \x3C/div>    \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();            if (['carousel', 'carousel-compact', 'auto', 'grid', 'row'].includes(this.getViewMode())) { this.loadCarouselSpreadsheet(); }        }        getViewMode() {          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          if (mode === 'carousel' || mode === 'auto' || mode === 'grid' || mode === 'row') {             if (mode === 'carousel') this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container') && mode === 'carousel') {               this.root.classList.add('is-carousel');             } else if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Everything';             if (this.discountFilter && !params.has('min_discount_ratio')) {               this.discountFilter.value = '5';             }          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (params.has('bg_color')) {            const bg = params.get('bg_color');            if (bg === 'white') {              this.root.style.setProperty('background-color', '#ffffff', 'important');            } else if (bg === 'transparent') {              this.root.style.setProperty('background-color', 'transparent', 'important');            } else if (bg === 'light_blue') {              this.root.style.setProperty('background-color', '#E7F0FF', 'important');            }          } else {             this.root.style.removeProperty('background-color');          }                    if (params.has('view_mode')) {            if (this.viewModeSelect) {              this.viewModeSelect.value = params.get('view_mode');            } else {              this.viewModeOverride = params.get('view_mode');            }          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'discount_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            this.searchInput.value = this.currentQuery;          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'discount_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const roundels = this.root.querySelectorAll('.tg-df-carousel-cat.original-hardcoded');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: q,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              if (this.getViewMode() === 'savings_squad' && this.autocompleteDropdown && this.airedaleTags && query.length > 0) {                 const matches = this.airedaleTags.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase()).slice(0, 5);                 if (matches.length > 0) {                    this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                    this.autocompleteDropdown.classList.add('active');                 } else {                    this.autocompleteDropdown.classList.remove('active');                 }              } else if (this.autocompleteDropdown) {                 this.autocompleteDropdown.classList.remove('active');              }              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  this.deals = [];                  this.render();                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                this.activeDealTag = null;                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });              this.activeDealTag = null;              this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.fetchDeals(query);              }            });          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = this.viewModeSelect.value === 'savings_squad' ? 'date_desc' : 'discount_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }                async loadCarouselSpreadsheet() {          try {              const parseCSVRow = (str) => {                  let result = [], cur = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (inQuotes) {                          if (char === '"') {                              if (str[i + 1] === '"') { cur += '"'; i++; }                              else { inQuotes = false; }                          } else { cur += char; }                      } else {                          if (char === '"') { inQuotes = true; }                          else if (char === ',') { result.push(cur); cur = ''; }                          else { cur += char; }                      }                  }                  result.push(cur); return result;              };              const parseCSV = (str) => {                  const rows = []; let curRow = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (char === '"') inQuotes = !inQuotes;                      if ((char === '\n' || char === '\r') && !inQuotes) {                          if (char === '\r' && str[i+1] === '\n') i++;                          if (curRow) rows.push(parseCSVRow(curRow));                          curRow = '';                      } else { curRow += char; }                  }                  if (curRow) rows.push(parseCSVRow(curRow));                  return rows;              };              const preloadedCSV = decodeURIComponent(escape(atob("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/LCxBaXIgdGFncywsLCwsLCwsLCwsLCwsDQosLFBvcnRhYmxlIGNoYXJnZXJzL3dpcmVsZXNzIGNoYXJnZXJzLCwsLCwsLCwsLCwsLCwNCiwsIldhdGVyIGJvdHRsZXMgKHN0YW5sZXlzLCBPd2FsYSwgSHlkcm8gZmxhc2ssIFlldGkpIiwsLCwsLCwsLCwsLCwsDQosLEhhbmQgaGVsZCBmYW5zLCwsLCwsLCwsLCwsLCwNCiwsLCwsLCwsLCwsLCwsLCwNCmhvbWUgb2ZmaWNlLCxvZmZpY2UgY2hhaXJzLCwsLCwsLCwsLCwsLCwNCiwsc3RhbmRpbmcgZGVza3MsLCwsLCwsLCwsLCwsLA0KLCxtb25pdG9ycywsLCwsLCwsLCwsLCwsDQosLEtleWJvYXJkcywsLCwsLCwsLCwsLCwsDQosLGRvY2tpbmcgc3RhdGlvbiwsLCwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpHYW1pbmcsLENvbnNvbGVzLCwsLCwsLCwsLCwsLCwNCiwsQWNjZXNzb3JpZXMsLCwsLCwsLCwsLCwsLA0KLCxHYW1lcywsLCwsLCwsLCwsLCwsDQosLENvdWxkIGluY2x1ZGUgTGVnbz8sLCwsLCwsLCwsLCwsLA==")));              const text = preloadedCSV;              const parsed = parseCSV(text);                            const rowsByName = {};              let filterStart = -1;              parsed.forEach((rc, i) => {                 if (rc && rc.length > 0 && rc[0]) rowsByName[rc[0]] = rc;                 if (rc && rc.length > 0 && rc[0] === 'Filter buttons') filterStart = i;              });                            const cols = [];              if(rowsByName['Roundel text']) {                const headerRow = rowsByName['Roundel text'];                for(let col = 1; col < headerRow.length; col++) {                   let label = headerRow[col];                   if (!label) continue;                                      let q = rowsByName['Search Query'] && rowsByName['Search Query'][col] ? rowsByName['Search Query'][col] : '';                   let img = rowsByName['Roundel image'] && rowsByName['Roundel image'][col] ? rowsByName['Roundel image'][col] : '';                   let ds = rowsByName['Discount Amount'] && rowsByName['Discount Amount'][col] ? rowsByName['Discount Amount'][col] : '';                   let pr = rowsByName['Price Range'] && rowsByName['Price Range'][col] ? rowsByName['Price Range'][col] : '';                   let rt = rowsByName['Retailer'] && rowsByName['Retailer'][col] ? rowsByName['Retailer'][col] : '';                   let ot = rowsByName['Offer Type'] && rowsByName['Offer Type'][col] ? rowsByName['Offer Type'][col] : '';                                      let filters = [];                   if(filterStart > 0) {                     for(let r = filterStart + 1; r < parsed.length; r++) {                         if(!parsed[r] || parsed[r][0] === 'Notes' || parsed[r][0] === 'Categories to consider') break;                         let f = parsed[r][col];                         if(f) filters.push(f);                     }                   }                   cols.push({ label, img, q, ds, pr, rt, ot, filters });                }              }              this.carouselData = cols;              if (this.carouselData && this.carouselData.length > 0) {                 const isMatched = this.carouselData.some(c => c.q === this.currentQuery || c.label === this.currentQuery);                 if (!isMatched) {                    const first = this.carouselData[0];                    this.currentQuery = first.q || first.label;                    if (this.priceFilter) this.priceFilter.value = 'all';                    if (this.customPriceMin) this.customPriceMin.value = '';                    if (this.customPriceMax) this.customPriceMax.value = '';                    let dPr = first.pr || 'all';                    if (typeof dPr === 'string' && dPr !== 'all') {                       let prLower = dPr.toLowerCase();                       if (prLower.includes('min') || prLower.includes('over')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else if (prLower.includes('max') || prLower.includes('under')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       }                    }                    let dAm = '0';                    if(first.ds && typeof first.ds === 'string') {                       let m = first.ds.match(/(\d+)/);                       if(m) dAm = m[1];                    }                    if (this.discountFilter) this.discountFilter.value = dAm;                    if (this.offerTypeSelect) this.offerTypeSelect.value = first.ot || '';                    if (this.retailerSelect) this.retailerSelect.value = first.rt || '';                    this.selectedBrands = [];                    if (this.brandDropdown) {                        const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                        chks.forEach(chk => chk.checked = false);                    }                    if (this.searchInput) this.searchInput.value = this.currentQuery;                 }              }              this.renderCarouselUI();          } catch(e){ console.warn(e); }        }                renderCarouselUI() {           const roundelWrapper = this.root.querySelector('.tg-df-carousel-roundels');           if(!roundelWrapper || !this.carouselData) return;                      let html = '';           this.carouselData.forEach(r => {              const q = r.q || r.label;              const isActive = (this.currentQuery === q || this.currentQuery === r.label) ? 'active' : '';              const imgHtml = r.img ? `\x3Cimg src="${r.img}" alt="${r.label}" />` : `\x3Csvg width="32" height="32" fill="#1F69FF" viewBox="0 0 24 24">\x3Cpath d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\x3C/svg>`;              html += `                \x3Cdiv class="tg-df-roundel tg-df-carousel-cat ${isActive}" data-label="${this.escapeHTML(r.label)}">                  \x3Cdiv class="tg-df-roundel-img-box">${imgHtml}\x3C/div>                  \x3Cspan class="tg-df-roundel-label">${this.escapeHTML(r.label)}\x3C/span>                \x3C/div>              `;           });           roundelWrapper.innerHTML = html;                      // Rebind clicks           const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');           roundels.forEach(rNode => {             rNode.addEventListener('click', () => {                const r = this.carouselData.find(c => c.label === rNode.getAttribute('data-label'));                 if(!r) return;                                  if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: r.label,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = r.q || r.label;                const labelTitle = this.root.querySelector('#tg-df-carousel-title-label');                if (labelTitle) labelTitle.textContent = 'Best ' + this.currentQuery;                if (this.priceFilter) this.priceFilter.value = 'all';                if (this.customPriceMin) this.customPriceMin.value = '';                if (this.customPriceMax) this.customPriceMax.value = '';                let dPr = r.pr || 'all';                if (typeof dPr === 'string' && dPr !== 'all') {                   let prLower = dPr.toLowerCase();                   if (prLower.includes('min') || prLower.includes('over')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMin) this.customPriceMin.value = m[1];                   } else if (prLower.includes('max') || prLower.includes('under')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMax) this.customPriceMax.value = m[1];                   }                }                                let discountAmount = '0';                if(r.ds && typeof r.ds === 'string') {                   let m = r.ds.match(/(\d+)/);                   if(m) discountAmount = m[1];                }                if (this.discountFilter) this.discountFilter.value = discountAmount;                if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                                // Clear brands                    this.selectedBrands = [];                    if (this.brandDropdown) {                    const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                    chks.forEach(chk => chk.checked = false);                }                                if (this.searchInput) this.searchInput.value = this.currentQuery;                                roundels.forEach(ro => ro.classList.remove('active'));                if (rNode) rNode.classList.add('active');                                this.renderCarouselFilters(r);                this.fetchDeals(this.currentQuery);             });           });                      // Auto-highlight active           const activeR = this.carouselData.find(c => c.q === this.currentQuery || c.label === this.currentQuery);           if(activeR) this.renderCarouselFilters(activeR);        }                renderCarouselFilters(r) {           const filtersWrap = this.root.querySelector('.tg-df-carousel-filters-wrap');           if(!filtersWrap) return;                      let html = `\x3Cbutton class="tg-df-carousel-filter-btn" data-type="all">All\x3C/button>`;                      r.filters.forEach(f => {              let fL = f.toLowerCase();              let icon = '';              let logic = `data-type="custom" data-v="${this.escapeHTML(f)}"`;              if (fL === 'amazon deals' || fL === 'prime deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>`;              } else if (fL === 'lightning deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>`;              } else {                 if (fL.includes('lightning')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap">\x3Cpolygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2">\x3C/polygon>\x3C/svg>`;                 } else if (fL.includes('% off')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>`;                 } else if (fL.includes('under') || fL.includes('min ')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>`;                 }                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>${icon} ${this.escapeHTML(f)}\x3C/button>`;              }           });                      filtersWrap.innerHTML = html;                      const btns = filtersWrap.querySelectorAll('button');           btns.forEach(b => {             b.addEventListener('click', () => {                const type = b.getAttribute('data-type');                if (type === 'custom') {                   const v = b.getAttribute('data-v');                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-custom-${(v||'').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`, name: 'Custom Filter', label: v });                }                if (type === 'all') {                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: 'filter-clear-all', name: 'Clear all', label: 'Clear all filters' });                   // reset everything                   btns.forEach(btn => btn.classList.remove('active'));                   b.classList.add('active');                                      // Reset prices                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   if (this.brandDropdown) {                     const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                     chks.forEach(chk => chk.checked = false);                   }                } else {                   const v = b.getAttribute('data-v');                   const fL = v.toLowerCase();                                      let mapRet = ['amazon', 'walmart', 'best buy', 'target', 'john lewis', 'currys', 'argos'];                   const getCategory = (s) => {                      if (s === 'lightning deals' || s === 'amazon deals' || s === 'prime deals') return 'offer';                      if (s.includes('% off')) return 'discount';                      if (s.includes('under') || s.includes('over') || s.includes('min') || s.includes('max')) return 'price';                      if (mapRet.includes(s)) return 'retailer';                      return 'brand';                   };                   const cat = getCategory(fL);                   const wasActive = b.classList.contains('active');                   if (cat !== 'brand') {                      btns.forEach(btn => {                          if (btn === b) return;                          if (btn.getAttribute('data-type') === 'all') return;                          const bV = btn.getAttribute('data-v');                          if (!bV) return;                          if (getCategory(bV.toLowerCase()) === cat) btn.classList.remove('active');                      });                   }                   if (wasActive) b.classList.remove('active');                   else b.classList.add('active');                   let anyActive = Array.from(btns).some(btn => btn !== btns[0] && btn.classList.contains('active'));                   if (!anyActive) {                       btns[0].click();                       return;                   } else {                       btns[0].classList.remove('active');                   }                                      if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   btns.forEach(btn => {                       if (!btn.classList.contains('active') || btn.getAttribute('data-type') === 'all') return;                       const vv = btn.getAttribute('data-v');                       const vl = vv.toLowerCase();                                              if (vl === 'lightning deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_lightning';                       } else if (vl === 'amazon deals' || vl === 'prime deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_prime';                       } else if (vl.includes('% off')) {                          let m = vl.match(/(\d+)%/);                          if (m && this.discountFilter) this.discountFilter.value = m[1];                       } else if (vl.includes('under') || vl.includes('max')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       } else if (vl.includes('min') || vl.includes('over')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else {                          let foundR = mapRet.find(x => x === vl);                          if (foundR) {                             let realR = ['Amazon', 'Walmart', 'Best Buy', 'Target', 'John Lewis', 'Currys', 'Argos'].find(x => x.toLowerCase() === vl);                             if (this.retailerSelect) this.retailerSelect.value = realR;                          } else {                             this.selectedBrands.push(vv);                          }                       }                   });                                      if (this.brandDropdown) {                       const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                       chks.forEach(c => c.checked = this.selectedBrands.includes(c.value));                   }                                      if (r.pr && typeof r.pr === 'string') {                       let prL = r.pr.toLowerCase();                       if (prL.includes('under $')) {                           let m = prL.match(/under \$(\d+)/i);                           if (m && this.customPriceMax && !this.customPriceMax.value) this.customPriceMax.value = m[1];                       }                   }                }                                this.fetchDeals(this.currentQuery);             });           });                      // default to highlighting first           btns[0].classList.add('active');        }async fetchDeals(query, append = false) {          if (!append) {             this.showLoading();             this.deals = [];             this.displayLimit = (this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12;          } else {             this.displayLimit += (this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12;          }                    try {            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad(append);            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query, append);               } else {                 await this.fetchHawkDeals(query, append);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query, append);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (this.activeDealTag) {             const encodedTag = encodeURIComponent(this.activeDealTag.toLowerCase().replace(/\s+/g, '-'));             const url = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let dynamicBrandsCounts = {};                    targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                   dynamicBrandsCounts[data.brand] = (dynamicBrandsCounts[data.brand] || 0) + 1;                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || ''                });             });          });                    const airedaleBrandsList = Object.keys(dynamicBrandsCounts).map(b => ({              formatted_value: b,              count: dynamicBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query, append = false) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (append && this.deals.length > 0) {            url.searchParams.append('offset', this.deals.length.toString());          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    if (this.rowsSelect && this.rowsSelect.value) {            url.searchParams.append('rows', this.rowsSelect.value);          } else {             url.searchParams.append('rows', '12'); // default          }          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = 12;          if (this.rowsSelect && this.rowsSelect.value) {            rowLimit = parseInt(this.rowsSelect.value, 10) || 12;          }          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : (this.getViewMode() === 'savings_squad' ? 'date_desc' : 'discount_desc');          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin-top:8px;">${_div}                ${_div}              ${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map(v => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              return `                \x3Ca href="${this.escapeHTML(linkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item">                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)} (${this.airedaleTagCounts[tag] || 0})${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = isSavingsSquadMode ? 'View Deal' : 'Check Price';              if (isSavingsSquadMode) {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                  ${_div}                `;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = `                \x3Cdiv class="tg-df-card-merchant-wrapper">                  \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                ${_div}                \x3Cdiv class="tg-df-card-price-group">                  ${isSavingsSquadMode ? '' : `                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                  `}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description">\x3Cp>${this.escapeHTML(deal.description)}${_p}${_div}` : ''}                      ${_div}                    ${_div}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>${deal.isCheckPrice ? 'Check Price' : 'View Deal'}${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cp style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 12px; line-height: 1.4;">${this.escapeHTML(deal.description)}${_p}` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${priceGroupHtml}                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta ${isSavingsSquadMode ? 'tg-df-cta-savings-squad' : ''}" style="text-decoration: none;">${ctaText}${_a}                  ${_div}                ${_div}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit || ((this.getViewMode() === 'carousel' || this.getViewMode() === 'auto') && displayDeals.length > 0 && displayDeals.length % ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12) === 0)) {            if (this.getViewMode() === 'carousel') {               dealsHtml += `                 \x3Cbutton type="button" class="tg-df-load-more-card tg-df-load-more">                   \x3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom: 8px;">\x3Cpath d="M5 12h14">\x3C/path>\x3Cpath d="m12 5 7 7-7 7">\x3C/path>\x3C/svg>                   Load More                 ${_button}               `;            } else {               dealsHtml += `                 \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                   \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center;">Load More${_button}                 ${_div}               `;            }          }                    this.grid.innerHTML = dealsHtml;                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let existingChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             if (this.getViewMode() === 'carousel') {                 if (!existingChevron) {                     gridWrapper.insertAdjacentHTML('beforeend', '\n                 \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.previousElementSibling.scrollBy({left: 200, behavior: \'smooth\'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>');                 }             } else {                 if (existingChevron) {                     existingChevron.remove();                 }             }          }                    const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', async () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              if (displayDeals.length <= this.displayLimit) {                 loadMoreBtn.innerHTML = `                  <svg class="tg-df-spinner" style="width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83"/></svg>                  Loading...                 `;                 loadMoreBtn.disabled = true;                 await this.fetchDeals(this.currentQuery, true);              } else {                 this.displayLimit += ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12);                 this.render();              }            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            setTimeout(() => {               if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');            if (!this.processArticleFired) {                  this.processArticleFired = true;                  document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));               }            }, 50);          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Almost every Garmin watch is reduced right now ahead of Prime Day — 9 deals I’d shop now ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/almost-every-garmin-watch-is-reduced-right-now-ahead-of-prime-day-9-deals-id-shop-now</link>
                                                                            <description>
                            <![CDATA[ The Prime Day sales are about to start in earnest, but you can already get most of Garmin’s top watches for their lowest ever price. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">k2wSzWTpSnNZAgfDm4NdHC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VHkUrNBN3BpmY5vnB2VKtK-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 22 Jun 2026 09:39:18 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/VHkUrNBN3BpmY5vnB2VKtK-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Watches Savings Squad Prime Day]]></media:description>                                                            <media:text><![CDATA[Garmin Watches Savings Squad Prime Day]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Watches Savings Squad Prime Day]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VHkUrNBN3BpmY5vnB2VKtK-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In the 10 years I’ve been testing Garmin watches, the piece of advice I’ve given most consistently is not to buy one at full price. Unless you have to have the latest model as soon as it comes out, you can always get a good discount on Garmin watches when big sales come around.</p><p>You often don’t even have to wait for sales; in fact, right now almost every Garmin watch is heavily reduced at Amazon, and the Prime Day sales haven't even started.</p><p>Whether you’re looking for an entry-level watch like the<a href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CT3SGHXL" target="_blank" rel="nofollow"> Garmin Forerunner 165, which is back at its lowest ever price of $189 at Amazon</a>, or a top adventure watch like the <a href="https://www.amazon.com/Garmin-Connected-Multisport-Smartwatch-Technology/dp/B0FPMGFV9G" target="_blank" rel="nofollow">Garmin Fenix 8 Pro (which is $849 down from $1,199)</a>, you can save huge amounts on a new Garmin.</p><h2 class="article-body__section" id="section-quick-links"><span>Quick links</span></h2><ul><li><strong>Garmin Forerunner 165: </strong><a href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CT3SGHXL" target="_blank" rel="nofollow"><strong>was $249 now $189 @ Amazon</strong></a></li><li><strong>Garmin Instinct 3: </strong><a href="https://www.amazon.com/Garmin-Instinct%C2%AE-Smartwatch-Metal-Reinforced-Flashlight/dp/B0DSC8JF59" target="_blank" rel="nofollow"><strong>was $449 now $299 @ Amazon</strong></a></li><li><strong>Garmin Forerunner 265: </strong><a href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0BS1T9J4Y" target="_blank" rel="nofollow"><strong>was $449 now $336 @ Amazon</strong></a></li><li><strong>Garmin Forerunner 570: </strong><a href="https://www.amazon.com/Forerunner%C2%AE-Advanced-Triathlon-Smartwatch-Translucent/dp/B0F8QZF3GS" target="_blank" rel="nofollow"><strong>was $549 now $449 @ Amazon</strong></a></li><li><strong>Garmin Forerunner 965: </strong><a href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Colorful-Training/dp/B0BS1TP8TJ" target="_blank" rel="nofollow"><strong>was $599 now $499 @ Amazon</strong></a></li><li><strong>Garmin Venu 4: </strong><a href="https://www.amazon.com/Garmin-Advanced-Smartwatch-Colorful-Flashlight/dp/B0FRG18TLS" target="_blank" rel="nofollow"><strong>was $549 now $499 @ Amazon</strong></a></li><li><strong>Garmin Epix Pro: </strong><a href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCRDT9" target="_blank" rel="nofollow"><strong>was $999 now $499 @ Amazon</strong></a></li><li><strong>Garmin Forerunner 970: </strong><a href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QZ7233" target="_blank" rel="nofollow"><strong>was $749 now $649 @ Amazon</strong></a></li><li><strong>Garmin Fenix 8 Pro: </strong><a href="https://www.amazon.com/Garmin-Connected-Multisport-Smartwatch-Technology/dp/B0FPMGFV9G" target="_blank" rel="nofollow"><strong>was $1,199 now $849 @ Amazon</strong></a></li></ul><h2 class="article-body__section" id="section-garmin-watch-deals"><span>Garmin watch deals</span></h2><div class="product"><a data-dimension112="ac55bb8c-1bb9-46c6-99d0-2f72a007d6e4" data-action="Deal Block" data-label="Garmin Forerunner 165 Music is also reduced, dropping to $249 at Amazon" data-dimension48="Garmin Forerunner 165 Music is also reduced, dropping to $249 at Amazon" data-dimension25="$189" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CT3SGHXL" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:900px;"><p class="vanilla-image-block" style="padding-top:128.78%;"><img id="5kFqr4NPwzjapMdRURmKzG" name="Forerunner 165" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/5kFqr4NPwzjapMdRURmKzG.png" mos="" align="middle" fullscreen="" width="900" height="1159" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 165 is the perfect affordable option for runners and considerably cheaper than the new Garmin Forerunner 170, thanks to this deal, which is on the standard model of the watch. If you want music storage, the <a href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CWB662HK" target="_blank" rel="nofollow" data-dimension112="ac55bb8c-1bb9-46c6-99d0-2f72a007d6e4" data-action="Deal Block" data-label="Garmin Forerunner 165 Music is also reduced, dropping to $249 at Amazon" data-dimension48="Garmin Forerunner 165 Music is also reduced, dropping to $249 at Amazon" data-dimension25="$189">Garmin Forerunner 165 Music is also reduced, dropping to $249 at Amazon</a>.<a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CT3SGHXL" target="_blank" rel="nofollow" data-dimension112="ac55bb8c-1bb9-46c6-99d0-2f72a007d6e4" data-action="Deal Block" data-label="Garmin Forerunner 165 Music is also reduced, dropping to $249 at Amazon" data-dimension48="Garmin Forerunner 165 Music is also reduced, dropping to $249 at Amazon" data-dimension25="$189">View Deal</a></p></div><div class="product"><a data-dimension112="0298af2e-7ab7-4136-afbe-9b92493c7c49" data-action="Deal Block" data-label="The rugged Instinct 3 offers exceptional battery life for an AMOLED watch and has a built-in flashlight. It's dropped to its lowest-ever price in the Amazon sale, and there is a range of sizes and display types to choose from, including a solar MIP model that can last indefinitely on a single charge." data-dimension48="The rugged Instinct 3 offers exceptional battery life for an AMOLED watch and has a built-in flashlight. It's dropped to its lowest-ever price in the Amazon sale, and there is a range of sizes and display types to choose from, including a solar MIP model that can last indefinitely on a single charge." data-dimension25="$299" href="https://www.amazon.com/Garmin-Instinct%C2%AE-Smartwatch-Metal-Reinforced-Flashlight/dp/B0DSC8JF59" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:133.33%;"><img id="ZNKUwTZvmqavGT5ruudSjj" name="Instinct3-BG" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ZNKUwTZvmqavGT5ruudSjj.jpg" mos="" align="middle" fullscreen="" width="1200" height="1600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The rugged Instinct 3 offers exceptional battery life for an AMOLED watch and has a built-in flashlight. It's dropped to its lowest-ever price in the Amazon sale, and there is a range of sizes and display types to choose from, including a solar MIP model that can last indefinitely on a single charge.<a class="view-deal button" href="https://www.amazon.com/Garmin-Instinct%C2%AE-Smartwatch-Metal-Reinforced-Flashlight/dp/B0DSC8JF59" target="_blank" rel="nofollow" data-dimension112="0298af2e-7ab7-4136-afbe-9b92493c7c49" data-action="Deal Block" data-label="The rugged Instinct 3 offers exceptional battery life for an AMOLED watch and has a built-in flashlight. It's dropped to its lowest-ever price in the Amazon sale, and there is a range of sizes and display types to choose from, including a solar MIP model that can last indefinitely on a single charge." data-dimension48="The rugged Instinct 3 offers exceptional battery life for an AMOLED watch and has a built-in flashlight. It's dropped to its lowest-ever price in the Amazon sale, and there is a range of sizes and display types to choose from, including a solar MIP model that can last indefinitely on a single charge." data-dimension25="$299">View Deal</a></p></div><div class="product"><a data-dimension112="46b40b45-43b3-4d27-91eb-8a4ae3babc62" data-action="Deal Block" data-label="This is one of the only Garmin watches currently on sale that I think could drop further in price for Prime Day, so I'll be tracking it over the next week to see if it ends up below $300. Even if not, the Forerunner 265 is an accurate multisport watch with a bright AMOLED display and music storage, so it's good value at $336." data-dimension48="This is one of the only Garmin watches currently on sale that I think could drop further in price for Prime Day, so I'll be tracking it over the next week to see if it ends up below $300. Even if not, the Forerunner 265 is an accurate multisport watch with a bright AMOLED display and music storage, so it's good value at $336." data-dimension25="$336" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0BS1T9J4Y" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1604px;"><p class="vanilla-image-block" style="padding-top:85.66%;"><img id="jPmFXsYMrRHQaQKodNvXea" name="Garmin Forerunner 265" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/jPmFXsYMrRHQaQKodNvXea.png" mos="" align="middle" fullscreen="" width="1604" height="1374" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This is one of the only Garmin watches currently on sale that I think could drop further in price for Prime Day, so I'll be tracking it over the next week to see if it ends up below $300. Even if not, the Forerunner 265 is an accurate multisport watch with a bright AMOLED display and music storage, so it's good value at $336.<a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0BS1T9J4Y" target="_blank" rel="nofollow" data-dimension112="46b40b45-43b3-4d27-91eb-8a4ae3babc62" data-action="Deal Block" data-label="This is one of the only Garmin watches currently on sale that I think could drop further in price for Prime Day, so I'll be tracking it over the next week to see if it ends up below $300. Even if not, the Forerunner 265 is an accurate multisport watch with a bright AMOLED display and music storage, so it's good value at $336." data-dimension48="This is one of the only Garmin watches currently on sale that I think could drop further in price for Prime Day, so I'll be tracking it over the next week to see if it ends up below $300. Even if not, the Forerunner 265 is an accurate multisport watch with a bright AMOLED display and music storage, so it's good value at $336." data-dimension25="$336">View Deal</a></p></div><div class="product"><a data-dimension112="c5655e20-31d7-47b7-9d94-4dae16848a31" data-action="Deal Block" data-label="The Garmin Forerunner 570 might be the best-looking watch in the entire line-up, and while I think it's overpriced at $549, it's a very capable sports tracker that's good value at $449 in the sales." data-dimension48="The Garmin Forerunner 570 might be the best-looking watch in the entire line-up, and while I think it's overpriced at $549, it's a very capable sports tracker that's good value at $449 in the sales." data-dimension25="$449" href="https://www.amazon.com/Forerunner%C2%AE-Advanced-Triathlon-Smartwatch-Translucent/dp/B0F8QZF3GS" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="r2gsiV2h5fqFhuksy7XPkn" name="garmin-forerunner-570-47mm-advanced-gps--59a57c28-0b54-4cc2-8b37-26f48a542e3a.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/r2gsiV2h5fqFhuksy7XPkn.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Forerunner 570 might be the best-looking watch in the entire line-up, and while I think it's overpriced at $549, it's a very capable sports tracker that's good value at $449 in the sales.<a class="view-deal button" href="https://www.amazon.com/Forerunner%C2%AE-Advanced-Triathlon-Smartwatch-Translucent/dp/B0F8QZF3GS" target="_blank" rel="nofollow" data-dimension112="c5655e20-31d7-47b7-9d94-4dae16848a31" data-action="Deal Block" data-label="The Garmin Forerunner 570 might be the best-looking watch in the entire line-up, and while I think it's overpriced at $549, it's a very capable sports tracker that's good value at $449 in the sales." data-dimension48="The Garmin Forerunner 570 might be the best-looking watch in the entire line-up, and while I think it's overpriced at $549, it's a very capable sports tracker that's good value at $449 in the sales." data-dimension25="$449">View Deal</a></p></div><div class="product"><a data-dimension112="80d193f5-c698-41ad-8f1f-127c0a892a32" data-action="Deal Block" data-label="The Forerunner 965 is a lightweight sports watch that offers Garmin's exceptional navigation tools, including offline maps, in a sleeker package than models like the Epix Pro and Fenix. It's ideal for adventurous runners and triathletes who don't want too chunky a watch on their wrist." data-dimension48="The Forerunner 965 is a lightweight sports watch that offers Garmin's exceptional navigation tools, including offline maps, in a sleeker package than models like the Epix Pro and Fenix. It's ideal for adventurous runners and triathletes who don't want too chunky a watch on their wrist." data-dimension25="$499" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Colorful-Training/dp/B0BS1TP8TJ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:550px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="nPKQkXYFp7F57HHTm6DHEL" name="Garmin - Forerunner 965.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/nPKQkXYFp7F57HHTm6DHEL.jpg" mos="" align="middle" fullscreen="" width="550" height="550" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 965 is a lightweight sports watch that offers Garmin's exceptional navigation tools, including offline maps, in a sleeker package than models like the Epix Pro and Fenix. It's ideal for adventurous runners and triathletes who don't want too chunky a watch on their wrist.<a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Colorful-Training/dp/B0BS1TP8TJ" target="_blank" rel="nofollow" data-dimension112="80d193f5-c698-41ad-8f1f-127c0a892a32" data-action="Deal Block" data-label="The Forerunner 965 is a lightweight sports watch that offers Garmin's exceptional navigation tools, including offline maps, in a sleeker package than models like the Epix Pro and Fenix. It's ideal for adventurous runners and triathletes who don't want too chunky a watch on their wrist." data-dimension48="The Forerunner 965 is a lightweight sports watch that offers Garmin's exceptional navigation tools, including offline maps, in a sleeker package than models like the Epix Pro and Fenix. It's ideal for adventurous runners and triathletes who don't want too chunky a watch on their wrist." data-dimension25="$499">View Deal</a></p></div><div class="product"><a data-dimension112="c4a75a51-ae70-4711-a833-2ead1434c8a9" data-action="Deal Block" data-label="All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest-ever price. It’s one of the brand’s latest models and is packed with features, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight." data-dimension48="All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest-ever price. It’s one of the brand’s latest models and is packed with features, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight." data-dimension25="$499" href="https://www.amazon.com/Garmin-Advanced-Smartwatch-Colorful-Flashlight/dp/B0FRG18TLS" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="3AK7AA6HkKkDQXPBoeQUkD" name="Garmin Venu 4 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3AK7AA6HkKkDQXPBoeQUkD.jpg" mos="" align="middle" fullscreen="" width="1600" height="1600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest-ever price. It’s one of the brand’s latest models and is packed with features, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight.<a class="view-deal button" href="https://www.amazon.com/Garmin-Advanced-Smartwatch-Colorful-Flashlight/dp/B0FRG18TLS" target="_blank" rel="nofollow" data-dimension112="c4a75a51-ae70-4711-a833-2ead1434c8a9" data-action="Deal Block" data-label="All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest-ever price. It’s one of the brand’s latest models and is packed with features, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight." data-dimension48="All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest-ever price. It’s one of the brand’s latest models and is packed with features, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight." data-dimension25="$499">View Deal</a></p></div><div class="product"><a data-dimension112="c94353c6-5c08-42cc-b208-ec06b01a2570" data-action="Deal Block" data-label="You can enjoy a massive discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro, and offers a much cheaper alternative to the newer Fenix 8 and Fenix 8 Pro." data-dimension48="You can enjoy a massive discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro, and offers a much cheaper alternative to the newer Fenix 8 and Fenix 8 Pro." data-dimension25="$499" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCRDT9" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1080px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qR6ajzg9uXied8yzHk82kM" name="Garmin Epix Pro (Gen 2) GPS Smartwatch" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qR6ajzg9uXied8yzHk82kM.jpg" mos="" align="middle" fullscreen="" width="1080" height="1080" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>You can enjoy a massive discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro, and offers a much cheaper alternative to the newer Fenix 8 and Fenix 8 Pro.<a class="view-deal button" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCRDT9" target="_blank" rel="nofollow" data-dimension112="c94353c6-5c08-42cc-b208-ec06b01a2570" data-action="Deal Block" data-label="You can enjoy a massive discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro, and offers a much cheaper alternative to the newer Fenix 8 and Fenix 8 Pro." data-dimension48="You can enjoy a massive discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro, and offers a much cheaper alternative to the newer Fenix 8 and Fenix 8 Pro." data-dimension25="$499">View Deal</a></p></div><div class="product"><a data-dimension112="75337650-b47a-407c-93ac-5e929af18aee" data-action="Deal Block" data-label="The Forerunner 970 is the best sports watch available, in my opinion, and I used it to train for and run the London Marathon this year. It's light, attractive, and has all of Garmin's top sports and navigation features. It's reduced by $100 in the sale, which is a return to the cheapest it's ever been." data-dimension48="The Forerunner 970 is the best sports watch available, in my opinion, and I used it to train for and run the London Marathon this year. It's light, attractive, and has all of Garmin's top sports and navigation features. It's reduced by $100 in the sale, which is a return to the cheapest it's ever been." data-dimension25="$649" href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QZ7233" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:900px;"><p class="vanilla-image-block" style="padding-top:117.00%;"><img id="ed9guCwpVfBaZNATZ3F7fA" name="Forerunner 970" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ed9guCwpVfBaZNATZ3F7fA.png" mos="" align="middle" fullscreen="" width="900" height="1053" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 970 is the best sports watch available, in my opinion, and I used it to train for and run the London Marathon this year. It's light, attractive, and has all of Garmin's top sports and navigation features. It's reduced by $100 in the sale, which is a return to the cheapest it's ever been.<a class="view-deal button" href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QZ7233" target="_blank" rel="nofollow" data-dimension112="75337650-b47a-407c-93ac-5e929af18aee" data-action="Deal Block" data-label="The Forerunner 970 is the best sports watch available, in my opinion, and I used it to train for and run the London Marathon this year. It's light, attractive, and has all of Garmin's top sports and navigation features. It's reduced by $100 in the sale, which is a return to the cheapest it's ever been." data-dimension48="The Forerunner 970 is the best sports watch available, in my opinion, and I used it to train for and run the London Marathon this year. It's light, attractive, and has all of Garmin's top sports and navigation features. It's reduced by $100 in the sale, which is a return to the cheapest it's ever been." data-dimension25="$649">View Deal</a></p></div><div class="product"><a data-dimension112="9a591e7a-d681-44fd-bd4d-54165a626731" data-action="Deal Block" data-label="The Fenix 8 Pro is Garmin's current flagship adventure watch, and its only model to feature satellite and LTE connectivity, so this $350 saving is worth looking at if you regularly spend your free time off the grid." data-dimension48="The Fenix 8 Pro is Garmin's current flagship adventure watch, and its only model to feature satellite and LTE connectivity, so this $350 saving is worth looking at if you regularly spend your free time off the grid." data-dimension25="$849" href="https://www.amazon.com/Garmin-Connected-Multisport-Smartwatch-Technology/dp/B0FPMGFV9G" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1077px;"><p class="vanilla-image-block" style="padding-top:117.46%;"><img id="hvGcvSCXeNBAAhk6HMZLN8" name="Fenix 8 Pro" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/hvGcvSCXeNBAAhk6HMZLN8.png" mos="" align="middle" fullscreen="" width="1077" height="1265" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Fenix 8 Pro is Garmin's current flagship adventure watch, and its only model to feature satellite and LTE connectivity, so this $350 saving is worth looking at if you regularly spend your free time off the grid. <a class="view-deal button" href="https://www.amazon.com/Garmin-Connected-Multisport-Smartwatch-Technology/dp/B0FPMGFV9G" target="_blank" rel="nofollow" data-dimension112="9a591e7a-d681-44fd-bd4d-54165a626731" data-action="Deal Block" data-label="The Fenix 8 Pro is Garmin's current flagship adventure watch, and its only model to feature satellite and LTE connectivity, so this $350 saving is worth looking at if you regularly spend your free time off the grid." data-dimension48="The Fenix 8 Pro is Garmin's current flagship adventure watch, and its only model to feature satellite and LTE connectivity, so this $350 saving is worth looking at if you regularly spend your free time off the grid." data-dimension25="$849">View Deal</a></p></div><h2 id="smartwatches">SMARTWATCHES</h2><h3 class="article-body__section" id="section-we-re-tracking-all-the-best-prime-day-smartwatch-deals"><span>We're tracking all the best Prime Day smartwatch deals</span></h3><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=Wearables+%26+Fitness+Tech&price=60_&min_discount_ratio=0.95&offer_type=all&rows=4&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&show_countdown=true&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right {      right: 0;      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.previousElementSibling.scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>\n        \x3C/div>\n      \x3C/div>\n    \x3C/div>          \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="12" selected>12 Items\x3C/option>                \x3Coption value="24">24 Items\x3C/option>                \x3Coption value="48">48 Items\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Deal Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Only show products with active offers or previous prices (was_price)\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-deal-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Editor Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Enable multi-select to copy deals to CMS\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-editor-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">View Mode\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-view-mode-select">                \x3Coption value="auto">Auto Collection\x3C/option>                \x3Coption value="carousel">Carousel\x3C/option>                \x3Coption value="savings_squad">Savings Squad\x3C/option>                \x3Coption value="grid">Grid (Columns)\x3C/option>                \x3Coption value="row">Row (List)\x3C/option>              \x3C/select>            \x3C/div>          \x3C/div>        \x3C/div>      \x3C/div>      \x3Cdiv class="tg-df-filters">        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>          \x3C/svg>          \x3Cselect class="tg-df-sort-select" aria-label="Sort Deals">            \x3Coption value="date_desc">Newest First\x3C/option>            \x3Coption value="best_match">Sort by: Match\x3C/option>            \x3Coption value="price_asc">Price Low to High\x3C/option>            \x3Coption value="price_desc">Price High to Low\x3C/option>            \x3Coption value="discount_desc">Biggest Discount\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>        \x3C/div>      \x3C/div>    \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();            if (['carousel', 'carousel-compact', 'auto', 'grid', 'row'].includes(this.getViewMode())) { this.loadCarouselSpreadsheet(); }        }        getViewMode() {          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          if (mode === 'carousel' || mode === 'auto' || mode === 'grid' || mode === 'row') {             if (mode === 'carousel') this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container') && mode === 'carousel') {               this.root.classList.add('is-carousel');             } else if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Everything';             if (this.discountFilter && !params.has('min_discount_ratio')) {               this.discountFilter.value = '5';             }          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (params.has('bg_color')) {            const bg = params.get('bg_color');            if (bg === 'white') {              this.root.style.setProperty('background-color', '#ffffff', 'important');            } else if (bg === 'transparent') {              this.root.style.setProperty('background-color', 'transparent', 'important');            } else if (bg === 'light_blue') {              this.root.style.setProperty('background-color', '#E7F0FF', 'important');            }          } else {             this.root.style.removeProperty('background-color');          }                    if (params.has('view_mode')) {            if (this.viewModeSelect) {              this.viewModeSelect.value = params.get('view_mode');            } else {              this.viewModeOverride = params.get('view_mode');            }          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'discount_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            this.searchInput.value = this.currentQuery;          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'discount_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const roundels = this.root.querySelectorAll('.tg-df-carousel-cat.original-hardcoded');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: q,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              if (this.getViewMode() === 'savings_squad' && this.autocompleteDropdown && this.airedaleTags && query.length > 0) {                 const matches = this.airedaleTags.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase()).slice(0, 5);                 if (matches.length > 0) {                    this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                    this.autocompleteDropdown.classList.add('active');                 } else {                    this.autocompleteDropdown.classList.remove('active');                 }              } else if (this.autocompleteDropdown) {                 this.autocompleteDropdown.classList.remove('active');              }              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  this.deals = [];                  this.render();                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                this.activeDealTag = null;                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });              this.activeDealTag = null;              this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.fetchDeals(query);              }            });          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = this.viewModeSelect.value === 'savings_squad' ? 'date_desc' : 'discount_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }                async loadCarouselSpreadsheet() {          try {              const parseCSVRow = (str) => {                  let result = [], cur = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (inQuotes) {                          if (char === '"') {                              if (str[i + 1] === '"') { cur += '"'; i++; }                              else { inQuotes = false; }                          } else { cur += char; }                      } else {                          if (char === '"') { inQuotes = true; }                          else if (char === ',') { result.push(cur); cur = ''; }                          else { cur += char; }                      }                  }                  result.push(cur); return result;              };              const parseCSV = (str) => {                  const rows = []; let curRow = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (char === '"') inQuotes = !inQuotes;                      if ((char === '\n' || char === '\r') && !inQuotes) {                          if (char === '\r' && str[i+1] === '\n') i++;                          if (curRow) rows.push(parseCSVRow(curRow));                          curRow = '';                      } else { curRow += char; }                  }                  if (curRow) rows.push(parseCSVRow(curRow));                  return rows;              };              const preloadedCSV = decodeURIComponent(escape(atob("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/LCxBaXIgdGFncywsLCwsLCwsLCwsLCwsDQosLFBvcnRhYmxlIGNoYXJnZXJzL3dpcmVsZXNzIGNoYXJnZXJzLCwsLCwsLCwsLCwsLCwNCiwsIldhdGVyIGJvdHRsZXMgKHN0YW5sZXlzLCBPd2FsYSwgSHlkcm8gZmxhc2ssIFlldGkpIiwsLCwsLCwsLCwsLCwsDQosLEhhbmQgaGVsZCBmYW5zLCwsLCwsLCwsLCwsLCwNCiwsLCwsLCwsLCwsLCwsLCwNCmhvbWUgb2ZmaWNlLCxvZmZpY2UgY2hhaXJzLCwsLCwsLCwsLCwsLCwNCiwsc3RhbmRpbmcgZGVza3MsLCwsLCwsLCwsLCwsLA0KLCxtb25pdG9ycywsLCwsLCwsLCwsLCwsDQosLEtleWJvYXJkcywsLCwsLCwsLCwsLCwsDQosLGRvY2tpbmcgc3RhdGlvbiwsLCwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpHYW1pbmcsLENvbnNvbGVzLCwsLCwsLCwsLCwsLCwNCiwsQWNjZXNzb3JpZXMsLCwsLCwsLCwsLCwsLA0KLCxHYW1lcywsLCwsLCwsLCwsLCwsDQosLENvdWxkIGluY2x1ZGUgTGVnbz8sLCwsLCwsLCwsLCwsLA==")));              const text = preloadedCSV;              const parsed = parseCSV(text);                            const rowsByName = {};              let filterStart = -1;              parsed.forEach((rc, i) => {                 if (rc && rc.length > 0 && rc[0]) rowsByName[rc[0]] = rc;                 if (rc && rc.length > 0 && rc[0] === 'Filter buttons') filterStart = i;              });                            const cols = [];              if(rowsByName['Roundel text']) {                const headerRow = rowsByName['Roundel text'];                for(let col = 1; col < headerRow.length; col++) {                   let label = headerRow[col];                   if (!label) continue;                                      let q = rowsByName['Search Query'] && rowsByName['Search Query'][col] ? rowsByName['Search Query'][col] : '';                   let img = rowsByName['Roundel image'] && rowsByName['Roundel image'][col] ? rowsByName['Roundel image'][col] : '';                   let ds = rowsByName['Discount Amount'] && rowsByName['Discount Amount'][col] ? rowsByName['Discount Amount'][col] : '';                   let pr = rowsByName['Price Range'] && rowsByName['Price Range'][col] ? rowsByName['Price Range'][col] : '';                   let rt = rowsByName['Retailer'] && rowsByName['Retailer'][col] ? rowsByName['Retailer'][col] : '';                   let ot = rowsByName['Offer Type'] && rowsByName['Offer Type'][col] ? rowsByName['Offer Type'][col] : '';                                      let filters = [];                   if(filterStart > 0) {                     for(let r = filterStart + 1; r < parsed.length; r++) {                         if(!parsed[r] || parsed[r][0] === 'Notes' || parsed[r][0] === 'Categories to consider') break;                         let f = parsed[r][col];                         if(f) filters.push(f);                     }                   }                   cols.push({ label, img, q, ds, pr, rt, ot, filters });                }              }              this.carouselData = cols;              if (this.carouselData && this.carouselData.length > 0) {                 const isMatched = this.carouselData.some(c => c.q === this.currentQuery || c.label === this.currentQuery);                 if (!isMatched) {                    const first = this.carouselData[0];                    this.currentQuery = first.q || first.label;                    if (this.priceFilter) this.priceFilter.value = 'all';                    if (this.customPriceMin) this.customPriceMin.value = '';                    if (this.customPriceMax) this.customPriceMax.value = '';                    let dPr = first.pr || 'all';                    if (typeof dPr === 'string' && dPr !== 'all') {                       let prLower = dPr.toLowerCase();                       if (prLower.includes('min') || prLower.includes('over')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else if (prLower.includes('max') || prLower.includes('under')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       }                    }                    let dAm = '0';                    if(first.ds && typeof first.ds === 'string') {                       let m = first.ds.match(/(\d+)/);                       if(m) dAm = m[1];                    }                    if (this.discountFilter) this.discountFilter.value = dAm;                    if (this.offerTypeSelect) this.offerTypeSelect.value = first.ot || '';                    if (this.retailerSelect) this.retailerSelect.value = first.rt || '';                    this.selectedBrands = [];                    if (this.brandDropdown) {                        const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                        chks.forEach(chk => chk.checked = false);                    }                    if (this.searchInput) this.searchInput.value = this.currentQuery;                 }              }              this.renderCarouselUI();          } catch(e){ console.warn(e); }        }                renderCarouselUI() {           const roundelWrapper = this.root.querySelector('.tg-df-carousel-roundels');           if(!roundelWrapper || !this.carouselData) return;                      let html = '';           this.carouselData.forEach(r => {              const q = r.q || r.label;              const isActive = (this.currentQuery === q || this.currentQuery === r.label) ? 'active' : '';              const imgHtml = r.img ? `\x3Cimg src="${r.img}" alt="${r.label}" />` : `\x3Csvg width="32" height="32" fill="#1F69FF" viewBox="0 0 24 24">\x3Cpath d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\x3C/svg>`;              html += `                \x3Cdiv class="tg-df-roundel tg-df-carousel-cat ${isActive}" data-label="${this.escapeHTML(r.label)}">                  \x3Cdiv class="tg-df-roundel-img-box">${imgHtml}\x3C/div>                  \x3Cspan class="tg-df-roundel-label">${this.escapeHTML(r.label)}\x3C/span>                \x3C/div>              `;           });           roundelWrapper.innerHTML = html;                      // Rebind clicks           const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');           roundels.forEach(rNode => {             rNode.addEventListener('click', () => {                const r = this.carouselData.find(c => c.label === rNode.getAttribute('data-label'));                 if(!r) return;                                  if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: r.label,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = r.q || r.label;                const labelTitle = this.root.querySelector('#tg-df-carousel-title-label');                if (labelTitle) labelTitle.textContent = 'Best ' + this.currentQuery;                if (this.priceFilter) this.priceFilter.value = 'all';                if (this.customPriceMin) this.customPriceMin.value = '';                if (this.customPriceMax) this.customPriceMax.value = '';                let dPr = r.pr || 'all';                if (typeof dPr === 'string' && dPr !== 'all') {                   let prLower = dPr.toLowerCase();                   if (prLower.includes('min') || prLower.includes('over')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMin) this.customPriceMin.value = m[1];                   } else if (prLower.includes('max') || prLower.includes('under')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMax) this.customPriceMax.value = m[1];                   }                }                                let discountAmount = '0';                if(r.ds && typeof r.ds === 'string') {                   let m = r.ds.match(/(\d+)/);                   if(m) discountAmount = m[1];                }                if (this.discountFilter) this.discountFilter.value = discountAmount;                if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                                // Clear brands                    this.selectedBrands = [];                    if (this.brandDropdown) {                    const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                    chks.forEach(chk => chk.checked = false);                }                                if (this.searchInput) this.searchInput.value = this.currentQuery;                                roundels.forEach(ro => ro.classList.remove('active'));                if (rNode) rNode.classList.add('active');                                this.renderCarouselFilters(r);                this.fetchDeals(this.currentQuery);             });           });                      // Auto-highlight active           const activeR = this.carouselData.find(c => c.q === this.currentQuery || c.label === this.currentQuery);           if(activeR) this.renderCarouselFilters(activeR);        }                renderCarouselFilters(r) {           const filtersWrap = this.root.querySelector('.tg-df-carousel-filters-wrap');           if(!filtersWrap) return;                      let html = `\x3Cbutton class="tg-df-carousel-filter-btn" data-type="all">All\x3C/button>`;                      r.filters.forEach(f => {              let fL = f.toLowerCase();              let icon = '';              let logic = `data-type="custom" data-v="${this.escapeHTML(f)}"`;              if (fL === 'amazon deals' || fL === 'prime deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>`;              } else if (fL === 'lightning deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>`;              } else {                 if (fL.includes('lightning')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap">\x3Cpolygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2">\x3C/polygon>\x3C/svg>`;                 } else if (fL.includes('% off')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>`;                 } else if (fL.includes('under') || fL.includes('min ')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>`;                 }                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>${icon} ${this.escapeHTML(f)}\x3C/button>`;              }           });                      filtersWrap.innerHTML = html;                      const btns = filtersWrap.querySelectorAll('button');           btns.forEach(b => {             b.addEventListener('click', () => {                const type = b.getAttribute('data-type');                if (type === 'custom') {                   const v = b.getAttribute('data-v');                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-custom-${(v||'').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`, name: 'Custom Filter', label: v });                }                if (type === 'all') {                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: 'filter-clear-all', name: 'Clear all', label: 'Clear all filters' });                   // reset everything                   btns.forEach(btn => btn.classList.remove('active'));                   b.classList.add('active');                                      // Reset prices                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   if (this.brandDropdown) {                     const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                     chks.forEach(chk => chk.checked = false);                   }                } else {                   const v = b.getAttribute('data-v');                   const fL = v.toLowerCase();                                      let mapRet = ['amazon', 'walmart', 'best buy', 'target', 'john lewis', 'currys', 'argos'];                   const getCategory = (s) => {                      if (s === 'lightning deals' || s === 'amazon deals' || s === 'prime deals') return 'offer';                      if (s.includes('% off')) return 'discount';                      if (s.includes('under') || s.includes('over') || s.includes('min') || s.includes('max')) return 'price';                      if (mapRet.includes(s)) return 'retailer';                      return 'brand';                   };                   const cat = getCategory(fL);                   const wasActive = b.classList.contains('active');                   if (cat !== 'brand') {                      btns.forEach(btn => {                          if (btn === b) return;                          if (btn.getAttribute('data-type') === 'all') return;                          const bV = btn.getAttribute('data-v');                          if (!bV) return;                          if (getCategory(bV.toLowerCase()) === cat) btn.classList.remove('active');                      });                   }                   if (wasActive) b.classList.remove('active');                   else b.classList.add('active');                   let anyActive = Array.from(btns).some(btn => btn !== btns[0] && btn.classList.contains('active'));                   if (!anyActive) {                       btns[0].click();                       return;                   } else {                       btns[0].classList.remove('active');                   }                                      if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   btns.forEach(btn => {                       if (!btn.classList.contains('active') || btn.getAttribute('data-type') === 'all') return;                       const vv = btn.getAttribute('data-v');                       const vl = vv.toLowerCase();                                              if (vl === 'lightning deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_lightning';                       } else if (vl === 'amazon deals' || vl === 'prime deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_prime';                       } else if (vl.includes('% off')) {                          let m = vl.match(/(\d+)%/);                          if (m && this.discountFilter) this.discountFilter.value = m[1];                       } else if (vl.includes('under') || vl.includes('max')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       } else if (vl.includes('min') || vl.includes('over')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else {                          let foundR = mapRet.find(x => x === vl);                          if (foundR) {                             let realR = ['Amazon', 'Walmart', 'Best Buy', 'Target', 'John Lewis', 'Currys', 'Argos'].find(x => x.toLowerCase() === vl);                             if (this.retailerSelect) this.retailerSelect.value = realR;                          } else {                             this.selectedBrands.push(vv);                          }                       }                   });                                      if (this.brandDropdown) {                       const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                       chks.forEach(c => c.checked = this.selectedBrands.includes(c.value));                   }                                      if (r.pr && typeof r.pr === 'string') {                       let prL = r.pr.toLowerCase();                       if (prL.includes('under $')) {                           let m = prL.match(/under \$(\d+)/i);                           if (m && this.customPriceMax && !this.customPriceMax.value) this.customPriceMax.value = m[1];                       }                   }                }                                this.fetchDeals(this.currentQuery);             });           });                      // default to highlighting first           btns[0].classList.add('active');        }async fetchDeals(query, append = false) {          if (!append) {             this.showLoading();             this.deals = [];             this.displayLimit = (this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12;          } else {             this.displayLimit += (this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12;          }                    try {            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad(append);            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query, append);               } else {                 await this.fetchHawkDeals(query, append);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query, append);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (this.activeDealTag) {             const encodedTag = encodeURIComponent(this.activeDealTag.toLowerCase().replace(/\s+/g, '-'));             const url = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let dynamicBrandsCounts = {};                    targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                   dynamicBrandsCounts[data.brand] = (dynamicBrandsCounts[data.brand] || 0) + 1;                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || ''                });             });          });                    const airedaleBrandsList = Object.keys(dynamicBrandsCounts).map(b => ({              formatted_value: b,              count: dynamicBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query, append = false) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (append && this.deals.length > 0) {            url.searchParams.append('offset', this.deals.length.toString());          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    if (this.rowsSelect && this.rowsSelect.value) {            url.searchParams.append('rows', this.rowsSelect.value);          } else {             url.searchParams.append('rows', '12'); // default          }          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = 12;          if (this.rowsSelect && this.rowsSelect.value) {            rowLimit = parseInt(this.rowsSelect.value, 10) || 12;          }          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : (this.getViewMode() === 'savings_squad' ? 'date_desc' : 'discount_desc');          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin-top:8px;">${_div}                ${_div}              ${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map(v => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              return `                \x3Ca href="${this.escapeHTML(linkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item">                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)} (${this.airedaleTagCounts[tag] || 0})${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = isSavingsSquadMode ? 'View Deal' : 'Check Price';              if (isSavingsSquadMode) {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                  ${_div}                `;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = `                \x3Cdiv class="tg-df-card-merchant-wrapper">                  \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                ${_div}                \x3Cdiv class="tg-df-card-price-group">                  ${isSavingsSquadMode ? '' : `                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                  `}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description">\x3Cp>${this.escapeHTML(deal.description)}${_p}${_div}` : ''}                      ${_div}                    ${_div}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>${deal.isCheckPrice ? 'Check Price' : 'View Deal'}${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cp style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 12px; line-height: 1.4;">${this.escapeHTML(deal.description)}${_p}` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${priceGroupHtml}                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta ${isSavingsSquadMode ? 'tg-df-cta-savings-squad' : ''}" style="text-decoration: none;">${ctaText}${_a}                  ${_div}                ${_div}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit || ((this.getViewMode() === 'carousel' || this.getViewMode() === 'auto') && displayDeals.length > 0 && displayDeals.length % ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12) === 0)) {            if (this.getViewMode() === 'carousel') {               dealsHtml += `                 \x3Cbutton type="button" class="tg-df-load-more-card tg-df-load-more">                   \x3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom: 8px;">\x3Cpath d="M5 12h14">\x3C/path>\x3Cpath d="m12 5 7 7-7 7">\x3C/path>\x3C/svg>                   Load More                 ${_button}               `;            } else {               dealsHtml += `                 \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                   \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center;">Load More${_button}                 ${_div}               `;            }          }                    this.grid.innerHTML = dealsHtml;                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let existingChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             if (this.getViewMode() === 'carousel') {                 if (!existingChevron) {                     gridWrapper.insertAdjacentHTML('beforeend', '\n                 \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.previousElementSibling.scrollBy({left: 200, behavior: \'smooth\'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>');                 }             } else {                 if (existingChevron) {                     existingChevron.remove();                 }             }          }                    const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', async () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              if (displayDeals.length <= this.displayLimit) {                 loadMoreBtn.innerHTML = `                  <svg class="tg-df-spinner" style="width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83"/></svg>                  Loading...                 `;                 loadMoreBtn.disabled = true;                 await this.fetchDeals(this.currentQuery, true);              } else {                 this.displayLimit += ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12);                 this.render();              }            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            setTimeout(() => {               if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');            if (!this.processArticleFired) {                  this.processArticleFired = true;                  document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));               }            }, 50);          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin Fenix 7 Pro and Garmin Epix Pro both reduced by up to 50% ahead of Prime Day — here's the one I’d buy ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-7-pro-and-garmin-epix-pro-both-reduced-by-up-to-50-percent-ahead-of-prime-day-heres-the-one-id-buy</link>
                                                                            <description>
                            <![CDATA[ Both the Garmin Epix Pro and Garmin Fenix 7 Pro are reduced by hundreds of dollars ahead of the Prime Day sales, but I rate the Epix Pro as the better buy. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xSaVVmhAqFdVwKZC92Y4fA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/v5b8CdBkX8RD4rgQvB38VH-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 19 Jun 2026 12:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 22 Jun 2026 13:42:17 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/v5b8CdBkX8RD4rgQvB38VH-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Fenix 7 Pro vs Epix Pro Savings Squad]]></media:description>                                                            <media:text><![CDATA[Garmin Fenix 7 Pro vs Epix Pro Savings Squad]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Fenix 7 Pro vs Epix Pro Savings Squad]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/v5b8CdBkX8RD4rgQvB38VH-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When <a href="https://www.tomsguide.com/live/news/best-early-prime-day-deals-id-shop-2026-this-weekend">Amazon Prime Day rolls around</a> next week there will undoubtedly be a lot of great deals on Garmin watches, but I’m not sure there’ll be any that beat the discounts currently available on the Garmin Epix Pro and Garmin Fenix 7 Pro.</p><p>These are both older models, but still outstanding options that are better value than newer watches like the Garmin Fenix 8 Pro, offering excellent navigation features and top sports tracking tools in durable designs.</p><p>The 47mm sapphire model of the <a href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCRDT9" target="_blank" rel="nofollow">Garmin Epix Pro is now $499 at Amazon</a>, while the 51mm <a href="https://www.amazon.com/Garmin-Multisport-Smartwatch-Flashlight-Capability/dp/B0BYFC6GBQ" target="_blank" rel="nofollow">Garmin Fenix 7 Pro is $549 at Amazon</a>.</p><div class="product"><a data-dimension112="241ec66d-1c1c-426c-8e45-d1681df6329d" data-action="Deal Block" data-label="You can enjoy a huge discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro." data-dimension48="You can enjoy a huge discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro." data-dimension25="$499" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCRDT9" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1080px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qR6ajzg9uXied8yzHk82kM" name="Garmin Epix Pro (Gen 2) GPS Smartwatch" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qR6ajzg9uXied8yzHk82kM.jpg" mos="" align="middle" fullscreen="" width="1080" height="1080" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>You can enjoy a huge discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro.<a class="view-deal button" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCRDT9" target="_blank" rel="nofollow" data-dimension112="241ec66d-1c1c-426c-8e45-d1681df6329d" data-action="Deal Block" data-label="You can enjoy a huge discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro." data-dimension48="You can enjoy a huge discount on any size of the Garmin Epix Pro in the Amazon sale right now, with this deal being on the 47mm sapphire model of the watch. It has a bright AMOLED display as the main difference to the memory-in-pixel Fenix 7 Pro." data-dimension25="$499">View Deal</a></p></div><div class="product"><a data-dimension112="8909394d-80c8-4808-b915-8a2c4644dbdb" data-action="Deal Block" data-label="The standard 51mm model of the Garmin Fenix 7 Pro Solar is the only one that's heavily reduced on Amazon right now, but it's definitely a saving worth considering since you get such excellent battery life with the larger watch." data-dimension48="The standard 51mm model of the Garmin Fenix 7 Pro Solar is the only one that's heavily reduced on Amazon right now, but it's definitely a saving worth considering since you get such excellent battery life with the larger watch." data-dimension25="$549" href="https://www.amazon.com/Garmin-Multisport-Smartwatch-Flashlight-Capability/dp/B0BYFC6GBQ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1700px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="kYt94PTpHDkmN59CasUPsJ" name="Garmin Fenix 7 Pro sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kYt94PTpHDkmN59CasUPsJ.jpg" mos="" align="middle" fullscreen="" width="1700" height="1700" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The standard 51mm model of the Garmin Fenix 7 Pro Solar is the only one that's heavily reduced on Amazon right now, but it's definitely a saving worth considering since you get such excellent battery life with the larger watch.<a class="view-deal button" href="https://www.amazon.com/Garmin-Multisport-Smartwatch-Flashlight-Capability/dp/B0BYFC6GBQ" target="_blank" rel="nofollow" data-dimension112="8909394d-80c8-4808-b915-8a2c4644dbdb" data-action="Deal Block" data-label="The standard 51mm model of the Garmin Fenix 7 Pro Solar is the only one that's heavily reduced on Amazon right now, but it's definitely a saving worth considering since you get such excellent battery life with the larger watch." data-dimension48="The standard 51mm model of the Garmin Fenix 7 Pro Solar is the only one that's heavily reduced on Amazon right now, but it's definitely a saving worth considering since you get such excellent battery life with the larger watch." data-dimension25="$549">View Deal</a></p></div><p>If you’re considering one of the two watches, the<strong> main differences between them largely come down to display, battery life and price</strong>, because they otherwise have the same key features and similar designs. </p><p>For me, the<a href="https://www.tomsguide.com/reviews/garmin-epix-pro"> Garmin Epix Pro</a> is the better buy in the sales — it’s a watch I used for a year myself and loved, but there are some factors that could sway you to the <a href="https://www.tomsguide.com/reviews/garmin-fenix-7-pro">Garmin Fenix 7 Pro.</a></p><p>The main one is its memory-in-pixel display and the longer battery life that allows for. I prefer the brighter AMOLED screen on the Epix Pro as it’s clearer to read in most conditions, but the MIP Fenix 7 Pro is very clear in bright sunlight, where the solar model on sale will also get a battery life boost.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="w4CmMy9NEyFoRaW44rg63a" name="Garmin Epix Pro vs Garmin Fenix 7 Pro" alt="Garmin Epix Pro vs Garmin Fenix 7 Pro" src="https://cdn.mos.cms.futurecdn.net/w4CmMy9NEyFoRaW44rg63a.webp" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I tested the 51mm of both watches and the Epix Pro usually lasted me around 10 days with the screen always-on, whereas the Fenix 7 Pro 51mm Solar would last three weeks, even though I don’t live in a particularly sunny area.</p><p>This is the key trade-off if picking between the two and since the Epix Pro still offers impressive battery life I’d rather have the brighter AMOLED display myself.</p><p>Another factor to consider with the current deals is that the entire Epix Pro line-up is on sale. You can get the sapphire model of the 42mm, 47mm or 51mm watch at a huge discount, whereas it’s only the larger 51mm Fenix 7 Pro Solar that’s reduced.</p><p>This isn’t the sapphire model, so it doesn’t have the tougher screen and titanium case you get on the Epix Pro on sale. Given that the <a href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCZZ9F/" target="_blank" rel="nofollow">51mm Epix Pro is also $549 in the Amazon sale</a>, it’s better value thanks to the improved materials.</p><p>If you’re dead set on having a MIP watch then the Fenix 7 Pro is still a great option at this price, but the Epix Pro is the better watch and the better deal right now, in my opinion.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ My favorite Garmin smartwatch is back at its lowest price ahead of Prime Day — save $50 on the Garmin Venu 4 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/my-favorite-garmin-smartwatch-is-back-at-its-lowest-price-ahead-of-prime-day-save-usd50-on-the-garmin-venu-4</link>
                                                                            <description>
                            <![CDATA[ The Garmin Venu 4 is often overlooked in favor of the Forerunner and Fenix lines, but it offers a great combination of Garmin’s sports and smart features in an elegant design. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kQJC2B4LWfSWSU6VvqWK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WKyb7HWu8peyxxQRMPbLUc-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Jun 2026 10:38:23 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WKyb7HWu8peyxxQRMPbLUc-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Venu 4 Savings Squad]]></media:description>                                                            <media:text><![CDATA[Garmin Venu 4 Savings Squad]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Venu 4 Savings Squad]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WKyb7HWu8peyxxQRMPbLUc-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Given the popularity of the Forerunner and Fenix lines, it’s easy to forget about the watches in the Garmin Venu stable, which have in the past lacked key features, especially for sports tracking.</p><p>However, the Garmin Venu 4 is absolutely loaded with the brand’s best sports and smart features, and actually offers more than the equivalent Forerunner, the Garmin Forerunner 570, which doesn’t have the flashlight you do get on the Venu 4.</p><p>It’s a great-looking watch too, and right now the Venu 4 has dropped back to its lowest ever price. You can get the <a href="https://www.amazon.com/Garmin-Advanced-Smartwatch-Colorful-Flashlight/dp/B0FRG18TLS" target="_blank" rel="nofollow">Garmin Venu 4 for $499 at Amazon</a> ahead of the Prime Day sales, with all three colors of the watch available in the deal.</p><div class="product"><a data-dimension112="418b0c65-8d23-4533-8ecc-2cc1993eeb3f" data-action="Deal Block" data-label="All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest ever price. It’s one of the brand’s latest models and one of the most full-featured options, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight." data-dimension48="All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest ever price. It’s one of the brand’s latest models and one of the most full-featured options, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight." data-dimension25="$499" href="https://www.amazon.com/Garmin-Advanced-Smartwatch-Colorful-Flashlight/dp/B0FRG18TLS" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="3AK7AA6HkKkDQXPBoeQUkD" name="Garmin Venu 4 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3AK7AA6HkKkDQXPBoeQUkD.jpg" mos="" align="middle" fullscreen="" width="1600" height="1600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest ever price. It’s one of the brand’s latest models and one of the most full-featured options, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight.<a class="view-deal button" href="https://www.amazon.com/Garmin-Advanced-Smartwatch-Colorful-Flashlight/dp/B0FRG18TLS" target="_blank" rel="nofollow" data-dimension112="418b0c65-8d23-4533-8ecc-2cc1993eeb3f" data-action="Deal Block" data-label="All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest ever price. It’s one of the brand’s latest models and one of the most full-featured options, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight." data-dimension48="All colors of the Venu 4 are on sale at Amazon right now, with the watch dropping back to its lowest ever price. It’s one of the brand’s latest models and one of the most full-featured options, pairing all of Garmin’s smart features and most of its best sports tracking tools in a sleek design that has a built-in flashlight." data-dimension25="$499">View Deal</a></p></div><p>I’ve been testing the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a> for a decade and it’s rare that a watch surprises me in the way the Venu 4 did when it launched.</p><p>That’s because the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-venu-4-review">Garmin Venu 4 </a>has typically lacked some key sports tracking and training analysis features that you do get on Forerunner watches. </p><p>Garmin positions the Venu line as smartwatches, which is why the two-button Venu 4 also relies more on its touchscreen than Forerunners, which have five buttons. It offers NFC payments, music storage and access to the Connect IQ app store.</p><div><blockquote><p>The Venu 4 has every feature you get on the Forerunner 570, and then has some extras on top like the built-in flashlight and ECG measurements.</p></blockquote></div><p>However, the Venu 4 has every feature you get on the Forerunner 570, and then has some extras on top, like the built-in flashlight and ECG measurements.</p><p>Both watches usually cost the same, too, though the <a href="https://www.amazon.com/Forerunner%C2%AE-Advanced-Triathlon-Smartwatch-Translucent/dp/B0F8QZF3GS" target="_blank" rel="nofollow">Forerunner 570 is currently $449 in the Amazon sale</a>. As you’ll see from my <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-venu-4-vs-garmin-forerunner-570-which-sports-watch-should-you-get">Garmin Venu 4 vs Garmin Forerunner 570</a> article, however, I think it’s worth the upgrade to get the flashlight in particular.</p><p>Amazon Prime Day is around the corner, and the Black Friday sales aren’t too far away either. There’s a chance the Venu 4 could also drop to $449 this year, but this is a great deal on the watch and matches the cheapest it’s ever been so far.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I ran, cycled and worked out with the Garmin Forerunner 70 vs Coros Pace 4 — which sports watch should you get? ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-ran-cycled-and-worked-out-with-the-garmin-forerunner-70-vs-coros-pace-4-which-sports-watch-should-you-get</link>
                                                                            <description>
                            <![CDATA[ The Coros Pace 4 and Garmin Forerunner 70 are both great value sports watches that have proved equally accurate in my testing, but there are pros and cons to each to consider. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">U6qSgUHyv4Vjqu2ZVhXYSK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bpRRijwHnAesrKRHYQkCd8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 16 Jun 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bpRRijwHnAesrKRHYQkCd8-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 70 vs Coros Pace 4]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 70 vs Coros Pace 4]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 70 vs Coros Pace 4]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bpRRijwHnAesrKRHYQkCd8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="featured_product_block featured_block_versus" data-id="0bd9037a-e93e-4c71-b93f-e22af9edf781">            <a href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Advanced-Whitestone/dp/B0H1F6H8FN" data-model-name="Garmin Forerunner 70 GPS Watch" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:130.77%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/wvbS7up3FygJWz8ZgMF4qc.jpg" alt="Garmin Forerunner 70"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                            <div class='featured__brand'>Garmin</div>                    <div class="featured__title">Forerunner 70</div>                                    </div>                <div class="subtitle__description">                                                            <p><p>The cheapest Forerunner in Garmin’s current line-up is a great option for runners thanks to its reliable tracking and extensive training analysis, but it lacks the smart features you get on pricier models.</p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_versus" data-id="e32333b3-5d6f-4442-ba48-f55c37732370">            <a href="https://www.amazon.com/COROS-Ultralight-Touchscreen-Features-Advanced/dp/B0FYGTCX83" data-model-name="Coros Pace 4 GPS Smartwatch" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:120.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/sh2hB2yVE8YdriRCjNpJbJ.jpg" alt="Coros Pace 4"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                            <div class='featured__brand'>Coros</div>                    <div class="featured__title">Pace 4</div>                                    </div>                <div class="subtitle__description">                                                            <p><p>The Coros Pace 4 is a full triathlon watch with long battery life for a small device with an AMOLED display. After using it for over six months, I’ve been very impressed with the Pace 4’s accuracy and usability.</p></p>                </div>                            </div>        </div><p>When I first started testing the<a href="https://www.tomsguide.com/best-picks/best-running-watches"> best running watches</a> over a decade ago, the cheapest models on the market were pretty basic. They offered simple tracking with mixed levels of accuracy, and pretty much no training analysis or extra features.</p><p>These days, entry-level watches like the Garmin Forerunner 70 and Coros Pace 4 are absolutely packed with features and easily good enough to cover the essentials for runners of all levels, not just beginners.</p><p>I’ve been testing the Coros Pace 4 for over six months now, having <a href="https://www.tomsguide.com/wellness/smartwatches/i-ran-the-london-marathon-with-the-garmin-forerunner-970-vs-coros-pace-4-which-was-more-accurate">used it for the London Marathon</a>, and I’ve been comparing it directly to the Garmin Forerunner 70 since it launched recently, including using both for a 10K race.</p><p>Both are outstanding options for runners at a great price, but the Pace 4 offers more to triathletes and has some extras like multi-band GPS and a barometer; the Forerunner 70 offers better training analysis and a more polished design and user interface.</p><p>I’ve outlined what I consider the key differences between the two watches below, and there’s more detail on each in our full <a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-the-coros-pace-4-for-six-months-here-are-my-long-term-pros-and-cons">Coros Pace 4 review</a> and <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-review">Garmin Forerunner 70 review</a>.</p><h2 class="article-body__section" id="section-garmin-forerunner-70-vs-coros-pace-4-price-and-availability"><span>Garmin Forerunner 70 vs Coros Pace 4: Price and availability</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4611px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="gxsRbqHZxnSqZhYCrMUQj8" name="Garmin Forerunner 70 vs Coros Pace 4" alt="Garmin Forerunner 70 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:210,l:667,cw:4611,ch:2594,q:80/gxsRbqHZxnSqZhYCrMUQj8.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Coros Pace 4 launched in November 2025 and costs $249 / £229 for the standard version of the watch, and $279 / £249 for the aluminium model, which has a metal bezel.</p><p>Garmin launched the Forerunner 70 alongside the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-170-review-an-affordable-and-accurate-running-watch">Garmin Forerunner 170</a> in May 2026. The Forerunner 70 costs $249 / £219 and sits below the Forerunner 170 (from $299 / £259) in the Garmin line-up, lacking some of the smart features and extra sensors that are on the Forerunner 170.</p><p>The Pace 4 and Forerunner 70 both sit at the bottom of their respective brand’s line-ups, but are still packed with useful sports tracking features and are among the best value sports watches you can get right now.</p><h2 class="article-body__section" id="section-garmin-forerunner-70-vs-coros-pace-4-specs"><span>Garmin Forerunner 70 vs Coros Pace 4: Specs</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Coros Pace 4</strong></p></td><td  ><p><strong>Garmin Forerunner 70</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$249.99/£229.99; $279.99/£249.99 (Aluminium)</p></td><td  ><p>$249.99/£219.99</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>43.4 x 11.8mm</p></td><td  ><p>42.6 x 11.9mm</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td></tr><tr><td class="firstcol " ><p><strong>Bezel</strong></p></td><td  ><p>Plastic or aluminium</p></td><td  ><p>Plastic</p></td></tr><tr><td class="firstcol " ><p><strong>Screen</strong></p></td><td  ><p>Glass</p></td><td  ><p>Glass</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>40-41g</p></td><td  ><p>40g</p></td></tr><tr><td class="firstcol " ><p><strong>Water resistance</strong></p></td><td  ><p>5ATM</p></td><td  ><p>5ATM</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (watch mode)</strong></p></td><td  ><p>Up to 19 days</p></td><td  ><p>Up to 13 days</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (GPS)</strong></p></td><td  ><p>24 hours (multi-band GPS, always-on)</p></td><td  ><p>16 hours (all-systems GPS, always-on)</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>4GB</p></td><td  ><p>512MB</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-garmin-forerunner-70-vs-coros-pace-4-design-and-display"><span>Garmin Forerunner 70 vs Coros Pace 4: Design and display</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4638px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HtCQNCr7c6oBqbZEXXc999" name="Garmin Forerunner 70 vs Coros Pace 4" alt="Garmin Forerunner 70 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:329,l:548,cw:4638,ch:2609,q:80/HtCQNCr7c6oBqbZEXXc999.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Coros Pace 4 and Garmin Forerunner 70 are both small, lightweight watches with plastic designs (aside from the aluminum bezel on the more expensive Pace 4 model). I found both very comfortable to wear for long periods, and they fit well on slim wrists.</p><p>Despite the small designs, the 1.2” AMOLED displays are clear and easy to read on both in all conditions, even during runs where I usually show five or six stats at a time.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5086px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MGmymazRtwkEEUWwuotUm8" name="Garmin Forerunner 70 vs Coros Pace 4" alt="Garmin Forerunner 70 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:242,l:393,cw:5086,ch:2861,q:80/MGmymazRtwkEEUWwuotUm8.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Pace 4 has three buttons, one of which is a digital dial, whereas the Garmin has five buttons. I prefer the five-button design myself, as I find it more reliable than the dial on the Coros, which I often set off accidentally.</p><p>Both watches have optical heart rate monitors, but the Pace 4 has more sensors than the Forerunner 70, with a barometer, altimeter and compass. It also offers multi-band GPS tracking, whereas the most accurate is all-systems on the Forerunner 70.</p><p>The Coros Pace 4 can also connect to more sensors than the Forerunner 70, like cycling power meters, whereas the Forerunner 70 is much more focused on running.</p><h2 class="article-body__section" id="section-garmin-forerunner-70-vs-coros-pace-4-sports-tracking-and-training-analysis"><span>Garmin Forerunner 70 vs Coros Pace 4: Sports tracking and training analysis</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4940px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="CnHTAoXQ7DNVag66pEF6v8" name="Garmin Forerunner 70 vs Coros Pace 4" alt="Garmin Forerunner 70 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:201,l:420,cw:4940,ch:2779,q:80/CnHTAoXQ7DNVag66pEF6v8.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The main difference with sports tracking is that the Pace 4 is a full multisport watch with a triathlon mode where you can transition between swimming, cycling and running. </p><p>This isn’t available on the Forerunner 70, and it also doesn’t have an open-water swimming mode, which the Pace 4 does.</p><p>You get a little more training analysis on the Forerunner 70, most notably Garmin’s Training Readiness stat, which gives a rating out of 100 based on factors like recent sleep, stress and workouts. </p><p>Both watches offer training load analysis along with race predictions and VO2 max estimates, with enough data to satisfy even very keen runners.</p><h2 class="article-body__section" id="section-garmin-forerunner-70-vs-coros-pace-4-gps-heart-rate-accuracy"><span>Garmin Forerunner 70 vs Coros Pace 4: GPS & heart rate accuracy</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4675px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="bM3SzmXEoNaq99V6vLdDw8" name="Garmin Forerunner 70 vs Coros Pace 4" alt="Garmin Forerunner 70 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:402,l:621,cw:4675,ch:2630,q:80/bM3SzmXEoNaq99V6vLdDw8.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both watches have proved reliably accurate for me with GPS throughout my testing, which has included races with both. The Coros Pace 4 even produced a pretty accurate track during the Canary Wharf section of the London Marathon, which is notably difficult for watches.</p><p>In theory, the multi-band GPS option on the Pace 4 should be more accurate than the all-systems mode on the Forerunner 70, but in practice, Garmin’s all-systems mode is so reliable I’ve not seen any differences between the two watches in my testing so far.</p><p>Both logged almost exactly 10.00km in the 10K race I did, and the GPS tracks were essentially identical, as they have been on other runs with both watches.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4263px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NjbugofMFj4wmLUNkAp2L9" name="Garmin Forerunner 70 vs Coros Pace 4" alt="Garmin Forerunner 70 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:402,l:731,cw:4263,ch:2398,q:80/NjbugofMFj4wmLUNkAp2L9.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>When it comes to heart rate accuracy, both have been good, but the Garmin has tended to be a little more reliable than the Coros, especially at the start of runs. </p><p>In the 10K race, along with other runs with both watches, the Forerunner 70 heart rate reading has been accurate throughout, whereas the Pace 4 often reads high for a few minutes before locking onto my heart rate correctly.</p><p>My main takeaway here, though, is that these are both very accurate watches overall and match up well with devices that cost twice their price or more.</p><h2 class="article-body__section" id="section-garmin-forerunner-70-vs-coros-pace-4-battery-life"><span>Garmin Forerunner 70 vs Coros Pace 4: Battery life</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4702px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zWmrMhGV8fqWbxP7N8kEV9" name="Garmin Forerunner 70 vs Coros Pace 4" alt="Garmin Forerunner 70 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:329,l:557,cw:4702,ch:2645,q:80/zWmrMhGV8fqWbxP7N8kEV9.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Battery life is always a strong area for Coros watches, and that’s the case in this comparison as well. The Pace 4 lasts up to 19 days on a charge, or six days with the always-on display, and offers 24 hours of multi-band GPS tracking.</p><p>The Garmin Forerunner 70 lasts up to 13 days in watch mode or five days with the screen on always-on mode, and offers 16 hours of all-systems GPS tracking.</p><p>In practice, I found that with the watches set to always-on running every day, I tend to get around 4.5 days out of the Forerunner 70 and just over five from the Pace 4. It’s not a major difference, but the Coros certainly lasts longer with normal use and also outstrips the Garmin for one ultra-long individual activity.</p><h2 class="article-body__section" id="section-garmin-forerunner-70-vs-coros-pace-4-smart-features"><span>Garmin Forerunner 70 vs Coros Pace 4: Smart features </span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4702px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2a9j488ZevuZXXCmxYuf59" name="Garmin Forerunner 70 vs Coros Pace 4" alt="Garmin Forerunner 70 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:292,l:631,cw:4702,ch:2645,q:80/2a9j488ZevuZXXCmxYuf59.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Garmin kept its best smart features for the Forerunner 170, so the Forerunner 70 doesn’t offer NFC payments or music storage, though it does offer more customization than the Coros Pace 4 and has access to more apps and widgets through the Garmin Connect IQ app store.</p><p>The Coros Pace 4 doesn’t have NFC payments either, but does offer music storage for MP3 files, which you can drag and drop onto the watch. It doesn’t link with streaming services though, so if you really want smart features, the Forerunner 170 is worth considering.</p><p>Neither watch has offline maps, but both offer breadcrumb navigation with turn-by-turn directions and a back-to-start pointer, which I always find handy if I get myself lost.</p><h2 class="article-body__section" id="section-garmin-forerunner-70-vs-coros-pace-4-verdict"><span>Garmin Forerunner 70 vs Coros Pace 4: Verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4821px;"><p class="vanilla-image-block" style="padding-top:56.15%;"><img id="y5mmAeQSWvtEKmj5Y47uo8" name="Garmin Forerunner 70 vs Coros Pace 4" alt="Garmin Forerunner 70 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:206,l:425,cw:4821,ch:2707,q:80/y5mmAeQSWvtEKmj5Y47uo8.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both of these watches are excellent and accurate options that have impressed me throughout testing, but the Coros Pace 4 has a few important extra features, especially if you’re a triathlete. </p><p>It has better battery life, more sensors and also music storage, though this feature isn’t useful unless you have a lot of MP3 files on hand.</p><p>The Garmin has a nicer design in my opinion, and the user interface is more customizable with more smart widgets, like sports scores and stocks. It also has better training analysis for me, including the handy Training Readiness.</p><p>I don’t think there’s a clear winner here if none of those features sound vital to you, but one factor that could swing it in the future is the fact that Garmin does usually reduce its watches in big sales periods, whereas Coros doesn’t, so the Forerunner 70 could end up being cheaper.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/running/i-test-running-shoes-for-a-living-and-you-dont-need-to-buy-the-latest-models-these-5-last-gen-shoes-are-just-as-good-and-often-on-sale">Forget pricey new running shoes — I would get these last-gen Hoka, Saucony and New Balance at a steep discount instead</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ We asked Tom's Guide readers if they prefer the Fitbit Air vs. the Garmin Forerunner 70 — and the results were overwhelming ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness-trackers/we-asked-toms-guide-readers-if-they-prefer-the-fitbit-air-vs-the-garmin-forerunner-70-and-the-results-were-overwhelming</link>
                                                                            <description>
                            <![CDATA[ Fitbit Air vs Garmin Forerunner 70: Which wearable is more popular? With over 800 responses, 67% of readers would buy this tracker over the other. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PxA7pX5zKBPRSWwKVdnMFK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eNA2i2htvrPTQUDfXX7WNR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 16 Jun 2026 05:45:00 +0000</pubDate>                                                                                                                                <updated>Tue, 16 Jun 2026 12:02:35 +0000</updated>
                                                                                                                                            <category><![CDATA[Fitness Trackers]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Smartwatches]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/eNA2i2htvrPTQUDfXX7WNR-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Forerunner 70 next to the Fitbit Air fitness tracker on the same wrist]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Forerunner 70 next to the Fitbit Air fitness tracker on the same wrist]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Forerunner 70 next to the Fitbit Air fitness tracker on the same wrist]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eNA2i2htvrPTQUDfXX7WNR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We asked Tom’s Guide readers which new fitness tracker they prefer, the screen-free Fitbit Air or the running-focused Garmin Forerunner 70, and your response was overwhelming.</p><p>With more than 800 total votes — 821 to be exact — one wearable proved far more popular than the other, receiving nods from 67% of respondents. So, which of these <a href="https://www.tomsguide.com/us/best-fitness-trackers,review-2066.html">top-performing fitness trackers</a> came out on top, the <a href="https://www.tomsguide.com/wellness/fitness-trackers/fitbit-air-review">Fitbit Air</a> or the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-review">Garmin Forerunner 70</a>? Read on.</p><h3 class="article-body__section" id="section-67-of-tg-readers-prefer-the-fitbit-air-but-why"><span>67% of TG readers prefer the Fitbit Air, but why?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4163px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="uzqVqau5gm5cPhz9DYttUR" name="F70-v-FitbitAir-01" alt="Close-up of the Garmin Forerunner 70 next to the Fitbit Air fitness tracker on the same wrist" src="https://cdn.mos.cms.futurecdn.net/uzqVqau5gm5cPhz9DYttUR.jpg" mos="" align="middle" fullscreen="" width="4163" height="2342" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>We ran our “Which 2026 fitness tracker do you prefer, the latest Garmin or the newest Fitbit?” poll for two weeks, and the results speak for themselves. With all votes tallied, 67% of Tom’s Guide readers prefer the Fitbit Air to the Garmin Forerunner 70. But why?</p><p>For starters, the Fitbit Air is just $99, and the Garmin Forerunner 70 is $249, but that’s just one likely factor in the former’s popularity. </p><p>An even bigger reason folks prefer the Fitbit might come down to the target audiences. While the Garmin Forerunner 70 is designed with <a href="https://www.tomsguide.com/wellness/running/im-a-running-noob-doing-my-first-5k-heres-all-the-tech-im-using-to-cross-the-finish-line">running enthusiasts</a> in mind, the Fitbit Air is geared toward, well, anyone who’s looking for health and fitness insights from a no-fuss wearable.</p><p>Ultimately, the Forerunner 70 is a more niche product, while the Fitbit Air has more <a href="https://www.youtube.com/watch?v=y9lNbNGbo24" target="_blank">mass appeal</a>. </p><div class="product"><a data-dimension112="adceea34-6f93-46b7-ba65-c5d0fb95feea" data-action="Deal Block" data-label="The Fitbit Air is a small, easy-wearing, and screen-free fitness tracker offering up to seven days of battery, meaningful sleep insights, and dependable workout-tracking performance. It's  Google's first new Fitbit in nearly three years, and my favorite tracker of 2026 so far." data-dimension48="The Fitbit Air is a small, easy-wearing, and screen-free fitness tracker offering up to seven days of battery, meaningful sleep insights, and dependable workout-tracking performance. It's  Google's first new Fitbit in nearly three years, and my favorite tracker of 2026 so far." data-dimension25="$99" href="https://www.amazon.com/Google-Fitbit-Air-Screenless-Personalized/dp/B0GTMJF7PV?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:858px;"><p class="vanilla-image-block" style="padding-top:95.22%;"><img id="6rQV9bADzd2zqYvNPGPxwE" name="Screenshot 2026-05-28 at 12.55.35 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6rQV9bADzd2zqYvNPGPxwE.png" mos="" align="middle" fullscreen="" width="858" height="817" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Fitbit Air is a small, easy-wearing, and screen-free fitness tracker offering up to seven days of battery, meaningful sleep insights, and dependable workout-tracking performance. It's  Google's first new Fitbit in nearly three years, and my favorite tracker of 2026 so far.<a class="view-deal button" href="https://www.amazon.com/Google-Fitbit-Air-Screenless-Personalized/dp/B0GTMJF7PV?th=1" target="_blank" rel="nofollow" data-dimension112="adceea34-6f93-46b7-ba65-c5d0fb95feea" data-action="Deal Block" data-label="The Fitbit Air is a small, easy-wearing, and screen-free fitness tracker offering up to seven days of battery, meaningful sleep insights, and dependable workout-tracking performance. It's  Google's first new Fitbit in nearly three years, and my favorite tracker of 2026 so far." data-dimension48="The Fitbit Air is a small, easy-wearing, and screen-free fitness tracker offering up to seven days of battery, meaningful sleep insights, and dependable workout-tracking performance. It's  Google's first new Fitbit in nearly three years, and my favorite tracker of 2026 so far." data-dimension25="$99">View Deal</a></p></div><div class="product"><a data-dimension112="0debec55-c9ac-469f-9079-72d4db6d95e8" data-action="Deal Block" data-label="The Forerunner 70 is Garmin's latest beginner-focused running watch, replacing the beloved Forerunner 55. Upgrades include a bright AMOLED screen and loads of training tools and insights for runners, offered neatly in a familiar, user-friendly package." data-dimension48="The Forerunner 70 is Garmin's latest beginner-focused running watch, replacing the beloved Forerunner 55. Upgrades include a bright AMOLED screen and loads of training tools and insights for runners, offered neatly in a familiar, user-friendly package." data-dimension25="$249" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Advanced-Training/dp/B0H1F7T6G9/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1042px;"><p class="vanilla-image-block" style="padding-top:103.45%;"><img id="JxZy6K7r5Qf8aMgGg2NDqQ" name="Screenshot 2026-05-19 at 2.33.47 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/JxZy6K7r5Qf8aMgGg2NDqQ.png" mos="" align="middle" fullscreen="" width="1042" height="1078" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 70 is Garmin's latest beginner-focused running watch, replacing the beloved Forerunner 55. Upgrades include a bright AMOLED screen and loads of training tools and insights for runners, offered neatly in a familiar, user-friendly package. <a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Advanced-Training/dp/B0H1F7T6G9/" target="_blank" rel="nofollow" data-dimension112="0debec55-c9ac-469f-9079-72d4db6d95e8" data-action="Deal Block" data-label="The Forerunner 70 is Garmin's latest beginner-focused running watch, replacing the beloved Forerunner 55. Upgrades include a bright AMOLED screen and loads of training tools and insights for runners, offered neatly in a familiar, user-friendly package." data-dimension48="The Forerunner 70 is Garmin's latest beginner-focused running watch, replacing the beloved Forerunner 55. Upgrades include a bright AMOLED screen and loads of training tools and insights for runners, offered neatly in a familiar, user-friendly package." data-dimension25="$249">View Deal</a></p></div><p><strong>Fitbit Air vs Garmin Forerunner 70: Biggest differences </strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4805px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bFju7tvNftUTkppemXS2tT" name="Fitbit-Air-lead-05" alt="Close-up of the Fitbit Air on-wrist on a red strap against a blue background" src="https://cdn.mos.cms.futurecdn.net/bFju7tvNftUTkppemXS2tT.jpg" mos="" align="middle" fullscreen="" width="4805" height="2703" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>I’ve already covered the core differences between the Fitbit Air vs Garmin Forerunner 70 in the intro to my <a href="https://www.tomsguide.com/wellness/fitness-trackers/i-walked-3-000-steps-with-the-fitbit-air-vs-garmin-forerunner-70-and-im-seriously-amazed-by-the-results">3,000-step walk test</a> between the two (Spoiler alert: both performed with remarkable accuracy). But to summarize, the Garmin boasts more training and recovery tools, running features, and onboard GPS. It’s light on smart features but does offer mirrored notifications and media control.</p><p>The Fitbit Air, meanwhile, offers a well-rounded mix of holistic and fitness features with no screen, buttons, or ability to mirror notifications. It also requires a paired smartphone for location data when working out. </p><p>Ultimately, both the Fitbit Air and Garmin Forerunner 70 impressed me during testing, with each proving reliable, long-lasting, durable, and comfortable. </p><p>Haven’t voted in our Fitbit Air vs Garmin Forerunner 70 poll yet? Make your voice heard now, below.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqvznX"></div>                            </div>                            <script src="https://kwizly.com/embed/OqvznX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-vs-forerunner-55-biggest-upgrades-explained">Garmin Forerunner 70 vs Forerunner 55: Here's how Garmin's new entry-level running watch stacks up against its predecessor</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/i-went-for-a-run-with-the-fitbit-air-and-garmin-forerunner-70-to-see-how-the-usd99-tracker-compared-and-im-impressed">I went for a run with the Fitbit Air and Garmin Forerunner 70 to see how the $99 tracker compared, and I’m impressed</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/fitbit-air-vs-fitbit-inspire-3-which-usd99-fitness-tracker-wins">Fitbit Air vs Fitbit Inspire 3 — which $99 fitness tracker wins?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This free Garmin watch face is perfect for World Cup fans — see every match and live scores at a glance ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/this-free-garmin-watch-face-is-perfect-for-world-cup-fans-see-every-match-and-live-scores-at-a-glance</link>
                                                                            <description>
                            <![CDATA[ The soccer World Cup is about to kick off in earnest, and this free Garmin watch face is the perfect way to keep up to date with the competition. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">C9UC4VnTQvxidWMfajYEkQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xkJcqBUHif9bP4oi3o3Hi8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 11 Jun 2026 08:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/xkJcqBUHif9bP4oi3o3Hi8-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 970 World Cup Watch Face]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 970 World Cup Watch Face]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 970 World Cup Watch Face]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xkJcqBUHif9bP4oi3o3Hi8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>World Cup fever is a serious condition, and symptoms include a Google search history that contains questions like "Who is Curaçao’s best player?" and "Where to buy Curaçao home shirt 2026?"</p><p>If you, like me, have been afflicted by World Cup fever, then you’re going to want to stay on top of the competition closely in the coming weeks, and given how large the group stages of this particular World Cup are, that’s not going to be the easiest thing to do.</p><p>Luckily for Garmin users, an indie developer has created a free watch face that shows all the details you need at a glance, including upcoming fixtures and live scores.</p><p>The <a href="https://apps.garmin.cn/apps/5eef51a2-f715-4784-917d-0e34dd565eb4" target="_blank" rel="nofollow">WC2026 Live Pro face from GR_apps</a> is available for free on the Connect IQ app store, and it will be my go-to for the next few weeks on my Garmin Forerunner 970.</p><p>If you have one of the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches </a>and are excited about the World Cup, I heartily recommend giving it a go.</p><h2 id="upcoming-fixtures-and-group-standings-at-a-glance">Upcoming fixtures and group standings at a glance</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3779px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="yxk6WfFfUBFkgV2ezbFPe8" name="Garmin Forerunner 970 World Cup Watch Face" alt="Garmin Forerunner 970 World Cup Watch Face" src="https://cdn.mos.cms.futurecdn.net/yxk6WfFfUBFkgV2ezbFPe8.jpg" mos="" align="middle" fullscreen="" width="3779" height="2126" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The top half of the watch face is devoted to showing the upcoming schedule for the World Cup, so you can see all of the day’s matches easily, with kick-off times shown in your local time zone. (If you want to know the best way to watch each game, be sure to check out <a href="https://www.tomsguide.com/entertainment/streaming/toms-guide-to-the-world-cup">Tom's Guide to the World Cup</a>.)</p><p>Along with showing the matches with team flags, there is also information on the standings in each group, so you can see the points and goal difference for each side.</p><p>If you select a favorite team in the settings available in the Connect IQ app store, their next match will also be shown even if it’s not on that day, with a gold star to highlight it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4518px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="ZrGGRMem5pNtesgy7Kwck8" name="Garmin Forerunner 970 World Cup Watch Face" alt="Garmin Forerunner 970 World Cup Watch Face" src="https://cdn.mos.cms.futurecdn.net/ZrGGRMem5pNtesgy7Kwck8.jpg" mos="" align="middle" fullscreen="" width="4518" height="2541" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can also set the always-on version of the screen to show the day’s matches and kick-off times, so you don’t even need to wake your display to see what’s coming up.</p><h2 id="live-scores-during-matches">Live scores during matches</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3666px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aWxKEAoc8xcCcb2iXrX6g8" name="Garmin Forerunner 970 World Cup Watch Face" alt="Garmin Forerunner 970 World Cup Watch Face" src="https://cdn.mos.cms.futurecdn.net/aWxKEAoc8xcCcb2iXrX6g8.jpg" mos="" align="middle" fullscreen="" width="3666" height="2062" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>During the games themselves, the watch face will update automatically to show the minutes played and the score, so you don’t miss any goals.</p><p>I’ve been using the face before the tournament actually starts, so I can’t say how well this works yet, or indeed if it’s very taxing on the battery life of your watch, but even if it is, I’m happy to charge my Garmin a bit more regularly to keep up to date with the World Cup.</p><h2 id="complications-to-show-your-activity-stats">Complications to show your activity stats</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3975px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="cvMX8gw39hsZE7uenocnf8" name="Garmin Forerunner 970 World Cup Watch Face" alt="Garmin Forerunner 970 World Cup Watch Face" src="https://cdn.mos.cms.futurecdn.net/cvMX8gw39hsZE7uenocnf8.jpg" mos="" align="middle" fullscreen="" width="3975" height="2238" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The bottom half of the watch face shows the time (broken up by two soccer balls instead of standard dots, which is adorable), plus the date, temperature and two complications that you can customize in the Connect IQ app.</p><p>There’s not a lot of choice — if you normally have a very sporty watch face with stats like your weekly mileage and training readiness, you can’t do that here — but you can show your activity stats like steps and calories, or the battery life on your watch.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/running/i-test-running-shoes-for-a-living-and-you-dont-need-to-buy-the-latest-models-these-5-last-gen-shoes-are-just-as-good-and-often-on-sale">Forget pricey new running shoes — I would get these last-gen Hoka, Saucony and New Balance at a steep discount instead</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I ran a half marathon with the Garmin Forerunner 170 vs Garmin Forerunner 265 — which is better? ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-ran-a-half-marathon-with-the-garmin-forerunner-170-vs-garmin-forerunner-265-which-is-better</link>
                                                                            <description>
                            <![CDATA[ The new Garmin Forerunner 170 is an excellent running watch, but is there more value in grabbing the older Garmin Forerunner 265 in the sales? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vR6kgy7QwmENRK2gjB3CBN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/meSPAkXaDjypHKS7HsyJJi-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 10 Jun 2026 12:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/meSPAkXaDjypHKS7HsyJJi-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 265 vs Garmin Forerunner 170]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 265 vs Garmin Forerunner 170]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 265 vs Garmin Forerunner 170]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/meSPAkXaDjypHKS7HsyJJi-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-170-review-an-affordable-and-accurate-running-watch">Garmin Forerunner 170</a> just launched, and it has immediately established itself as one of the <a href="https://www.tomsguide.com/best-picks/best-running-watches">best running watches</a> available thanks to its lightweight design, accurate tracking, and handy smart features.</p><p>It’s one of the more affordable Forerunner models in Garmin’s current line-up, offering some extra features compared with the entry-level <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-review">Garmin Forerunner 70 </a>and coming in substantially cheaper than the mid-range <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Garmin Forerunner 570</a>.</p><p>However, perhaps the most potent intra-Garmin competition actually comes from older watches, like the <a href="https://www.tomsguide.com/reviews/garmin-forerunner-265">Garmin Forerunner 265</a>. While the Forerunner 265’s software isn’t as up to date as the Forerunner 170’s, it offers almost all the same features plus a few upgrades, and is often close to the Forerunner 170’s price in sales.</p><p>I’ve tested both watches extensively and compared them directly on a half-marathon run; here are the key differences you need to know about.</p>        <div class="featured_product_block featured_block_versus" data-id="3b3d5ba1-053e-4109-b78e-f1c15c4e96d9">            <a href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Advanced-Training/dp/B0H1F79N52" data-model-name="Garmin Forerunner 170 Music" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:95.12%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/prtHi9JcAcmpjgcydbRB5j.jpg" alt="Garmin Forerunner 170"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                            <div class='featured__brand'>Garmin</div>                    <div class="featured__title">Forerunner 170 Music</div>                                    </div>                <div class="subtitle__description">                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="80" /></span></div>                                        <p><p>The new Garmin Forerunner 170 Music is a running-focused watch that packs in all of Garmin’s smart features, including music storage and NFC payments, alongside reliably accurate sports tracking and useful training analysis.</p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_versus" data-id="1ca0cd4c-8dec-4e07-8242-1c28dfb691df">            <a href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0BS1THXFW" data-model-name="Forerunner 265" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/hWk4Tso7U92BXrFNDk8f6W.jpg" alt="REI Sale Items"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                            <div class='featured__brand'>Garmin</div>                    <div class="featured__title">Forerunner 265</div>                                    </div>                <div class="subtitle__description">                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="80" /></span></div>                                        <p><p>The Garmin Forerunner 265 is a full multi-sport watch that comes in two sizes. It’s an older model now, so it lacks the latest Garmin user interface, but it offers some upgrades on the Forerunner 170, like multi-band GPS, and is often reduced to around the price of the new watch in sales.</p></p>                </div>                            </div>        </div><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-garmin-forerunner-265-price"><span>Garmin Forerunner 170 vs Garmin Forerunner 265: price</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4654px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6Bosc8TAfJGV3KfoYr5Xyi" name="Garmin Forerunner 265 vs Garmin Forerunner 170" alt="Garmin Forerunner 265 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:210,l:612,cw:4654,ch:2618,q:80/6Bosc8TAfJGV3KfoYr5Xyi.jpg" mos="" align="middle" fullscreen="" width="5709" height="3211" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Garmin Forerunner 170 comes in two models, one with music storage and one without. The standard Forerunner 170 costs $299/£259, while the music model is $349/£299. I’ll mostly be comparing the music model to the Forerunner 265 in this article, because the Forerunner 265 has music as standard.</p><p>While the Garmin Forerunner 265’s list price is much higher than the Forerunner 170’s at $449/£369, it’s almost always on sale somewhere, and tends to cost around $349-$379, though it has dropped to $299 in the past.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-garmin-forerunner-265-specs"><span>Garmin Forerunner 170 vs Garmin Forerunner 265: specs</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Garmin Forerunner 170</strong></p></td><td  ><p><strong>Garmin Forerunner 265</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$299.99/£259.99; $349.99/£299.99 (Music)</p></td><td  ><p>$449/£369</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>42.6 x 11.9mm</p></td><td  ><p>41.7 x 12.9mm (42mm); 46.1 x 12.9mm (46mm)</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td><td  ><p>1.2in 360 x 360 AMOLED (42mm); 1.3in 416 x 416 AMOLED (46mm)</p></td></tr><tr><td class="firstcol " ><p><strong>Bezel</strong></p></td><td  ><p>Plastic</p></td><td  ><p>Plastic </p></td></tr><tr><td class="firstcol " ><p><strong>Screen</strong></p></td><td  ><p>Glass</p></td><td  ><p>Glass</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>41g</p></td><td  ><p>39g (42mm); 47g (46mm)</p></td></tr><tr><td class="firstcol " ><p><strong>Water resistance</strong></p></td><td  ><p>5ATM</p></td><td  ><p>5ATM</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (watch mode)</strong></p></td><td  ><p>Up to 10 days</p></td><td  ><p>Up to 15 days (42mm); Up to 13 days (46mm)</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (GPS)</strong></p></td><td  ><p>14 hours (all-systems, always-on)</p></td><td  ><p>15 hours (42mm, multi-band, always-on); 14 hours (46mm, multi-band, always-on)</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>4GB</p></td><td  ><p>8GB</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-garmin-forerunner-265-design-and-display"><span>Garmin Forerunner 170 vs Garmin Forerunner 265: design and display</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4711px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gS7XhGmdU3KYmBqum9ceki" name="Garmin Forerunner 265 vs Garmin Forerunner 170" alt="Garmin Forerunner 265 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:320,l:384,cw:4711,ch:2650,q:80/gS7XhGmdU3KYmBqum9ceki.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Garmin Forerunner 170 Music comes in four colors and one size, with its 43mm case sitting between the two sizes of the Forerunner 265 available, which are 42mm and 46mm.</p><p>Both watches have bright AMOLED displays that I found easy to read in all conditions. You get a 1.2in display on the Forerunner 170, which is again in between the sizes on the Forerunner 265, which has a 1.1in display on the 42mm watch, and a 1.3in display on the 46mm.</p><p>You get the same Elevate Gen 4 heart rate monitor on both watches, which is not Garmin’s latest Elevate Gen 5, which is on models like the Forerunner 570 and <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Forerunner 970</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4263px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hJHoSjwmaNg2XrmkV3bXSi" name="Garmin Forerunner 265 vs Garmin Forerunner 170" alt="Garmin Forerunner 265 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:759,l:941,cw:4263,ch:2398,q:80/hJHoSjwmaNg2XrmkV3bXSi.jpg" mos="" align="middle" fullscreen="" width="5711" height="3212" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both are lightweight watches with five buttons, and I found them both very comfortable to wear 24/7. I tested the larger Forerunner 265, which is noticeably bigger than the Forerunner 170, but with two size options in the 265 line-up, you can pick the one that suits you.</p><p>They mostly have the same sensors under the hood, with a barometric altimeter and compass, but the Forerunner 265 offers Garmin’s most accurate multi-band GPS mode, whereas the Forerunner 170 only offers all-systems GPS — this is still very accurate, but more on that later.</p><p>Both watches have the same 5 ATM water resistance rating and can pair with external sensors via both Bluetooth and ANT+, including cycling power meters.</p><p>The Forerunner 170 runs Garmin’s latest OS, which it shares with the Forerunner 570 and Forerunner 970. This isn’t just a visual upgrade on the Forerunner 265, but also means the Forerunner 170 gets access to new widgets like Garmin’s Sports Scores, Battery, and Stocks widgets.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-garmin-forerunner-265-sports-tracking-and-training-analysis"><span>Garmin Forerunner 170 vs Garmin Forerunner 265: sports tracking and training analysis</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4391px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CkDeTAGbEjY9tmp7vE7bPi" name="Garmin Forerunner 265 vs Garmin Forerunner 170" alt="Garmin Forerunner 265 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:292,l:722,cw:4391,ch:2470,q:80/CkDeTAGbEjY9tmp7vE7bPi.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>One of the main differences between the two watches is that the Forerunner 265 is a full multi-sport watch with a dedicated triathlon mode, something that the Forerunner 170 lacks.</p><p>You can still track all kinds of cycling and swimming workouts with the Forerunner 170; it just doesn’t have the triathlon mode, which allows for transitions within a single activity.</p><p>Both watches offer the same useful training analysis, including Garmin’s Training Readiness and Training Status features, but the Forerunner 170 has an extra in Garmin’s new Quick Workout feature.</p><p>You can use this to create a running workout in seconds, picking an intensity level and duration that suits then following the instructions from the watch during your sessions. </p><p>I<a href="https://www.tomsguide.com/wellness/smartwatches/i-tried-the-new-quick-workout-feature-on-the-garmin-forerunner-170-and-its-goals-were-too-tough-for-me-heres-how-i-adapted"> gave the Quick Workout a try,</a> and although it can set rather optimistic targets, it’s a good way to vary your training when not following a dedicated plan.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-garmin-forerunner-265-gps-heart-rate-accuracy"><span>Garmin Forerunner 170 vs Garmin Forerunner 265: GPS & heart rate accuracy</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4884px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="BdZsyH6Cf3C6yyBVQ6UJRi" name="Garmin Forerunner 265 vs Garmin Forerunner 170" alt="Garmin Forerunner 265 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:266,l:338,cw:4884,ch:2747,q:80/BdZsyH6Cf3C6yyBVQ6UJRi.jpg" mos="" align="middle" fullscreen="" width="5711" height="3212" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both watches have the same heart rate sensor on board, and during my extended testing comparing them to a chest strap, they have been similarly accurate. </p><p>That is to say, both are pretty reliable, especially in warm weather, and just sometimes lag behind the chest strap’s readings during intervals. Both were right in line with a chest strap during the half-marathon run I did, when I had the Garmin Forerunner 970 linked to the Garmin HRM 600.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4875px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DMtsVeSiB3keZVLgBSkFpi" name="Garmin Forerunner 265 vs Garmin Forerunner 170" alt="Garmin Forerunner 265 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:155,l:475,cw:4875,ch:2742,q:80/DMtsVeSiB3keZVLgBSkFpi.jpg" mos="" align="middle" fullscreen="" width="5711" height="3212" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With regards to GPS accuracy, the Forerunner 265 offering multi-band GPS means that it should be more reliable overall, especially when tracking activities in city centers where tall buildings can scramble signals.</p><p>In practice, the Forerunner 170’s all-systems GPS tracking has been as accurate as a multi-band Garmin during all of my testing to date. </p><p>I’d prefer to have a multi-band watch for peace of mind, but both watches are very reliable, and it’s unlikely to make a practical difference unless you always run among skyscrapers.</p><p>On the half-marathon run, I compared both watches with the Forerunner 970 in its multi-band mode, and the GPS tracks and overall distance and pace stats were nigh-on identical.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-garmin-forerunner-265-battery-life"><span>Garmin Forerunner 170 vs Garmin Forerunner 265: battery life</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4026px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="ZNom82ZRjdypVXjfRSCyRi" name="Garmin Forerunner 265 vs Garmin Forerunner 170" alt="Garmin Forerunner 265 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:430,l:1024,cw:4026,ch:2265,q:80/ZNom82ZRjdypVXjfRSCyRi.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Garmin Forerunner 265 wins on battery life. With the screen set to raise-to-wake, the 46mm model lasts up to 13 days in watch mode, while the smaller 42mm watch lasts 15 days. Both offer five days of battery in always-on mode.</p><p>In comparison, the Forerunner 170 offers 10 days in watch mode with the screen set to raise-to-wake, and just four days when always-on.</p><p>The Forerunner 170 offers 14 hours of GPS tracking in all-systems mode, while the Forerunner 265 46mm offers 14 hours of multi-band tracking, and the Forerunner 42mm offers 15 hours.</p><p>These are all the on-paper numbers, so how do the watches fare in the real world? With the screen always-on, running every day, I have to charge the Forerunner 170 every 3.5 days on average, while the larger Forerunner 265 lasts me 4.5 days on average.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-garmin-forerunner-265-smart-features"><span>Garmin Forerunner 170 vs Garmin Forerunner 265: smart features </span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4263px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="h8i5GaybsWhJC7jNvi5cMi" name="Garmin Forerunner 265 vs Garmin Forerunner 170" alt="Garmin Forerunner 265 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:512,l:941,cw:4263,ch:2398,q:80/h8i5GaybsWhJC7jNvi5cMi.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you opt for the Forerunner 170 Music model, you get the same key smart features as on the Forerunner 265, such as Wifi connectivity, music storage, including being able to link the watch with streaming services, and NFC payments.</p><p>The standard Forerunner 170 doesn’t offer WiFi or music storage, but does have NFC payments, so if you always carry your phone with you, it could be a cheaper option.</p><p>There are some extra widgets on the Forerunner 170, like Sports Scores and Stocks, and as a new watch, it will also continue to get software updates for the foreseeable future, whereas the Forerunner 265 won’t be getting new features anymore.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-garmin-forerunner-265-verdict"><span>Garmin Forerunner 170 vs Garmin Forerunner 265: verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5077px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CTtP9bkyCSF9rAbSHvMPei" name="Garmin Forerunner 265 vs Garmin Forerunner 170" alt="Garmin Forerunner 265 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:256,l:375,cw:5077,ch:2856,q:80/CTtP9bkyCSF9rAbSHvMPei.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you’re a triathlete, there’s a clear reason to upgrade to the Forerunner 265, especially if it’s close to the price of the Forerunner 170, and the two size options of the Forerunner 265, longer battery life, and multi-band GPS are all good reasons to look at the older watch as well.</p><p>The Garmin Forerunner 170 has proved to be an equally accurate and capable running watch in my testing, though, and having a new model does futureproof you for the next couple of years with regard to new software updates.</p><p>If you’re a runner, I wouldn’t pay extra for the Forerunner 265 unless you want the bigger screen of the 46mm model, and if you’re not bothered about music storage, the standard Forerunner 170 is the best value of all.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/running/i-test-running-shoes-for-a-living-and-you-dont-need-to-buy-the-latest-models-these-5-last-gen-shoes-are-just-as-good-and-often-on-sale">Forget pricey new running shoes — I would get these last-gen Hoka, Saucony and New Balance at a steep discount instead</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ All I want for Father's Day is this limited edition Garmin that's currently 25% off at Amazon ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/all-i-want-for-fathers-day-is-this-limited-edition-garmin-thats-currently-25-percent-off-at-amazon</link>
                                                                            <description>
                            <![CDATA[ Garmin's rugged adventure smartwatch has gone back on sale down to its lowest price in a snazzy limited edition color. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3UXqod4uWps446oksCjZfn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GypDkNKEPPt6KHkxsCXwnY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 05 Jun 2026 10:06:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/GypDkNKEPPt6KHkxsCXwnY-1280-80.jpg">
                                                            <media:credit><![CDATA[Amazon]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Instinct 3 sunburst]]></media:description>                                                            <media:text><![CDATA[Amazon Instinct 3 sunburst]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Instinct 3 sunburst]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GypDkNKEPPt6KHkxsCXwnY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Garmin Instinct 3 is one heckuva good-looking smartwatch, and right now, the limited edition 'Sunburst' version has <a href="https://www.amazon.com/dp/B0GSWC8HY3" target="_blank" rel="nofollow">dropped by 25% over at Amazon</a>. If you don't want the striking limited edition model, the<a href="https://www.amazon.com/dp/B0DSG9VCRH" target="_blank" rel="nofollow"> regular black version is also discounted by 25%</a> right now. </p><p>And wouldn't you know, <a href="https://www.tomsguide.com/sales-events/the-best-early-fathers-day-gifts-to-grab-before-the-june-rush">Father's Day is right around the corner</a> — so this could make the perfect Father's Day gift for your dear old Dad. </p><div class="product"><a data-dimension112="1e7e4a7f-9335-4df8-8b87-34a5598b70da" data-action="Deal Block" data-label="longest-lasting smartwatch" data-dimension48="longest-lasting smartwatch" data-dimension25="$299" href="https://www.amazon.com/Garmin-Instinct%C2%AE-Smartwatch-Built-Flashlight/dp/B0GSWC8HY3" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1198px;"><p class="vanilla-image-block" style="padding-top:125.21%;"><img id="TGagRv9Lyp2rxzDUoY93ma" name="71G5SEUxmIL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TGagRv9Lyp2rxzDUoY93ma.jpg" mos="" align="middle" fullscreen="" width="1198" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Instinct 3 Solar is easily the <a href="https://www.tomsguide.com/Garmin-Instinct-3-review#section-garmin-instinct-3-battery-life" data-dimension112="1e7e4a7f-9335-4df8-8b87-34a5598b70da" data-action="Deal Block" data-label="longest-lasting smartwatch" data-dimension48="longest-lasting smartwatch" data-dimension25="$299">longest-lasting smartwatch</a> we've tested... and we've reviewed tons of watches! It's also impressively well-built, with 100 meters of water resistance, a metal-reinforced bezel, and a shock-resistant design. Fitness and adventure tracking tools are plentiful, GPS and elevation data are precise, and an onboard LED flashlight proves extremely handy.<a class="view-deal button" href="https://www.amazon.com/Garmin-Instinct%C2%AE-Smartwatch-Built-Flashlight/dp/B0GSWC8HY3" target="_blank" rel="nofollow" data-dimension112="1e7e4a7f-9335-4df8-8b87-34a5598b70da" data-action="Deal Block" data-label="longest-lasting smartwatch" data-dimension48="longest-lasting smartwatch" data-dimension25="$299">View Deal</a></p></div><p>I'll admit straight up that I'm a G-Shock guy, so the chunky and rugged design of the Instinct 3 really appeals to me. My colleague Dan Bracaglia had the pleasure of reviewing the <a href="https://www.tomsguide.com/Garmin-Instinct-3-review">Garmin Instinct 3</a> and proclaimed it might just be the ultimate smartwatch for outdoor enthusiasts.</p><p>There's 100 meters of water resistance, and battery life that varies from 18 days on the non-solar AMOLED 45mm version to 24 days for the 50mm model in standard smartwatch mode.</p><p>If you're using GPS tracking, you <em>still</em> get an impressive 68 hours of battery from the smaller model and 86 hours from the larger one. To put that in context, the <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-series-11-review">Apple Watch Series 11</a> is rated for 24 hours of use in smartwatch mode or 8 hours with GPS tracking. </p><p>And if you don't want the AMOLED screen, this watch also comes with a Memory in Pixel (MIP) display version that offers you solar charging.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1650px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="AGWkZKhYMQrf5wumbbwdf7" name="Garmin Instinct 3" alt="Garmin Instinct 3" src="https://cdn.mos.cms.futurecdn.net/AGWkZKhYMQrf5wumbbwdf7.jpg" mos="" align="middle" fullscreen="" width="1650" height="928" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Garmin)</span></figcaption></figure><p>One of the extra features — that's since been copied by others — is the hidden LED flashlight tucked into the case. This little design element is likely to come in very handy if you're working your way along a trail after dark and forgot to bring a flashlight.</p><p>We've already got our <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-instinct-4-wishlist-3-upgrades-i-want-most-in-my-favorite-outdoor-adventure-watch">Garmin Instinct 4 wishlist</a> ready for the next generation of this watch, but in the meantime, the Instinct 3 is hands-down one of the best adventure watches you can buy. And with a cool $100 knocked off the asking price, this is the deal to grab before you plan your summer camping trip. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/Garmin-Instinct-3-review">I wore the Garmin Instinct 3 for six weeks and it's a near-perfect smartwatch for outdoor enthusiasts</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-wore-the-garmin-fenix-8-vs-garmin-instinct-3-for-two-weeks-which-is-better">I wore the Garmin Fenix 8 vs. Garmin Instinct 3 for two weeks — which is better?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-hiked-up-new-yorks-highest-waterfall-with-the-apple-watch-10-vs-garmin-instinct-3-5-things-i-learned">I hiked up New York's highest waterfall with the Apple Watch 10 vs Garmin Instinct 3 — 5 things I learned</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Garmin Epix Pro is back to its lowest ever price — I used it for a year and think it's better value than the Fenix 8 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/the-garmin-epix-pro-is-back-to-its-lowest-ever-price-i-used-it-for-a-year-and-think-its-better-value-than-the-fenix-8</link>
                                                                            <description>
                            <![CDATA[ You can save $500 on the Garmin Epix Pro right now and even though it’s an older model, I think it’s the best value sports watch available at its discounted price of $499. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Jn8r4dLVLtpHtETr4PNaQK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/oFCkWdQYC8Jww9UkuDanMT-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 05 Jun 2026 09:59:43 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/oFCkWdQYC8Jww9UkuDanMT-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Epix Pro Savings Squad ]]></media:description>                                                            <media:text><![CDATA[Garmin Epix Pro Savings Squad ]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Epix Pro Savings Squad ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/oFCkWdQYC8Jww9UkuDanMT-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Amazon Prime Day is just around the corner but you don’t have to wait if you’re in the market for a new sports watch, because the Garmin Epix Pro is currently reduced by 50% in the Amazon sale, returning to its lowest ever price.</p><p>The <a href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCRDT9" target="_blank" rel="nofollow">47mm Garmin Epix Pro Sapphire model is down to $499 at Amazon</a>, while those who like big watches can get the <a href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCZZ9F" target="_blank" rel="nofollow">51mm Garmin Epix Pro Sapphire for $549 at Amazon</a>, a huge $550 saving on its list price.</p><div class="product"><a data-dimension112="2c6968ab-97ef-4c74-9d11-dd476e0663bb" data-action="Deal Block" data-label="The Garmin Epix Pro sapphire is back at its lowest ever price, with the 47mm of the watch reduced to $499 and the 51mm model down to $549. You simply can't get a better watch at those prices, with the newer Fenix 8 costing $849 in the sales itself." data-dimension48="The Garmin Epix Pro sapphire is back at its lowest ever price, with the 47mm of the watch reduced to $499 and the 51mm model down to $549. You simply can't get a better watch at those prices, with the newer Fenix 8 costing $849 in the sales itself." data-dimension25="$499" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCRDT9" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1080px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qR6ajzg9uXied8yzHk82kM" name="Garmin Epix Pro (Gen 2) GPS Smartwatch" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qR6ajzg9uXied8yzHk82kM.jpg" mos="" align="middle" fullscreen="" width="1080" height="1080" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Epix Pro sapphire is back at its lowest ever price, with the 47mm of the watch reduced to $499 and the 51mm model down to $549. You simply can't get a better watch at those prices, with the newer Fenix 8 costing $849 in the sales itself.<a class="view-deal button" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFCRDT9" target="_blank" rel="nofollow" data-dimension112="2c6968ab-97ef-4c74-9d11-dd476e0663bb" data-action="Deal Block" data-label="The Garmin Epix Pro sapphire is back at its lowest ever price, with the 47mm of the watch reduced to $499 and the 51mm model down to $549. You simply can't get a better watch at those prices, with the newer Fenix 8 costing $849 in the sales itself." data-dimension48="The Garmin Epix Pro sapphire is back at its lowest ever price, with the 47mm of the watch reduced to $499 and the 51mm model down to $549. You simply can't get a better watch at those prices, with the newer Fenix 8 costing $849 in the sales itself." data-dimension25="$499">View Deal</a></p></div><p>I tested both sizes of the watch when it first launched, and wore the larger 51mm <a href="https://www.tomsguide.com/reviews/garmin-epix-pro">Garmin Epix Pro</a> for a year, using it to track the London Marathon and a 50-mile ultramarathon.</p><p>At the time it was the best sports watch available, and even though it’s now been superseded by the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-review">Garmin Fenix 8 </a>and <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-pro-review-the-greatest-fenix-yet">Garmin Fenix 8 Pro</a>, the Epix Pro is still a fantastic watch packed with top class sports tracking and navigation features.</p><p>Even in sales the Fenix 8 Sapphire will cost you $849, so you make a big saving by opting for the Epix Pro, and at $499 there’s nothing else on the market from Garmin or any other brand that matches the features it offers.</p><p>It doesn’t have the mic and speaker on the Fenix 8, or the LTE and satellite connectivity on the Fenix 8 Pro, and the Epix Pro is missing some of the latest training analysis and smart features available on the new watches.</p><p>But it already has everything you need to track and analyze your training, along with offline maps and equally-good navigation tools as the Fenix 8 and Fenix 8 Pro, and it’s just as accurate with regards to GPS tracking.</p><p>I’m also pleased it’s the sapphire model that’s on sale, because it has a more durable screen and a lighter titanium case than the standard Epix Pro.</p><p>If you don’t need the latest watch but do need a rugged AMOLED adventure watch that lasts, the Epix Pro is simply unbeatable value in the Amazon sale.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Apple and Garmin mark Global Running Day with limited edition badges — here's how to get them ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/apple-and-garmin-mark-global-running-day-with-limited-edition-badges-heres-how-to-get-them</link>
                                                                            <description>
                            <![CDATA[ To celebrate Global Running Day, Apple Watch users can earn a special award by running a 5K, and you can only get it today. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">fvSa4i6uDhaRxNt5cDuvaC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cx9rQ2vYYM6zeWKrAe4Cjc-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 10:08:21 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/cx9rQ2vYYM6zeWKrAe4Cjc-1280-80.jpg">
                                                            <media:credit><![CDATA[Apple / Garmin / Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Apple Watch and Garmin running badges]]></media:description>                                                            <media:text><![CDATA[Apple Watch and Garmin running badges]]></media:text>
                                <media:title type="plain"><![CDATA[Apple Watch and Garmin running badges]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cx9rQ2vYYM6zeWKrAe4Cjc-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Today is the day to lace up your <a href="https://www.tomsguide.com/best-picks/best-running-shoes">best running shoes</a> and get out for a run. Why? It's Global Running Day 2026, and if you happen to be wearing one of the <a href="https://www.tomsguide.com/best-picks/best-apple-watch">best Apple Watches</a> or <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches,</a> you can earn yourself a special award.</p><p>This is a little extra incentive to notch up a run — whether it's outside or on one of the <a href="https://www.tomsguide.com/best-picks/best-treadmills">best treadmills</a> at the gym — it all counts. And you get a nice digital souvenir to add to your collection. I personally love collecting Apple's limited edition badges, so if I can get out the door for a quick 5K today, I definitely will.</p><p>If you're a determined Apple or Garmin wearer (or you just want a little bit of extra motivation today), then you're going to want to know how to earn these limited edition trinkets. </p><p>The good news is that in both cases, it couldn't be any simpler.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Oomj9e"></div>                            </div>                            <script src="https://kwizly.com/embed/Oomj9e.js" async></script><section class="howto-block">                    <h3>How to get the Apple Watch Global Running Day award</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/MWtjjkpxyXxsPnGx9GBBJ5.jpg"                                        alt="Apple Watch Series 10 running screen"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/MWtjjkpxyXxsPnGx9GBBJ5.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>The simple answer is, of course, to go for a run with your Apple Watch on! You'll need to log at least 3.1 miles/5K and record it on your watch as either an outdoor run or a treadmill run for it to count, though.</p><p>Once you’re done, you’ll earn the activity award, which is styled like a running track with colorful rings surrounding ‘2026’. It’s almost exactly the same as <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-marks-global-running-day-with-a-limited-edition-award-heres-how-to-earn-it">last year’s award</a>, in fact, just with a different date and colors in the rings. It would have been nice if Apple had changed it up, but I guess the consistency is nice if you're looking back over your trophies. I personally snagged the 2025 award, but I missed the year before.</p><p>You can earn the award using any of the <a href="https://www.tomsguide.com/round-up/best-apple-watch-apps">best Apple Watch apps </a>that sync workouts to the Health app, so you’re not confined to using the native Workout app on the watch.</p></p>                </section><section class="howto-block">                    <h3>How to get the Garmin Global Running Day award</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/Efeq2djdKvmFYnKPwcJbj7.jpg"                                        alt="Garmin Fenix 8"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/Efeq2djdKvmFYnKPwcJbj7.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>The process is exactly the same with Garmin, all you have to do is record a running activity before the sun sets on today, June 3, 2026. As with Apple, you'll get a limited edition running badge that's a blue and white running shoe marked '2026'.</p><p>It doesn't matter if you complete the activity on a road, track, trail or treadmill — it all counts. And unlike Apple, there's no minimum distance you need to complete, but I'd encourage you to challenge yourself!</p></p>                </section><h2 id="an-extra-bonus-from-strava-and-runna">An extra bonus from Strava and Runna</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3519px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="5KFXCRruqNGPHox4FCjs6f" name="Running workout.jpg" alt="Running workout with man and woman on a trail" src="https://cdn.mos.cms.futurecdn.net/5KFXCRruqNGPHox4FCjs6f.jpg" mos="" align="middle" fullscreen="" width="3519" height="1980" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>There's an added bonus up for grabs today if you happen to use Strava. Recording a run of 5K or more today will give you free access to Runna Premium for two weeks. Runna is our number one pick for the <a href="https://www.tomsguide.com/round-up/best-running-apps">best running apps</a> and a former Tom's Guide Fitness Awards winner.</p><p>The app offers a personalized training plan that uses AI to calibrate itself based on your workouts. As your performance increases, so does the plan. If you want to know more about how this works, check out our <a href="https://www.tomsguide.com/reviews/runna-app">in-depth Runna review</a>.</p><p>If you do decide to head out for a run, whether you want to attempt a PR or just grab one of the aforementioned awards, have fun. I'm coming back from <a href="https://www.tomsguide.com/wellness/running/injury-ended-my-hopes-of-a-marathon-pr-now-ill-never-neglect-this-one-strength-building-exercise-again">an injury that prevented my marathon attempt</a> this season, so it's slow going for me, but I still can't help wanting to earn those badges.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/best-picks/best-treadmills">The best treadmills I've tested with hundreds of indoor miles</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-review">I tested the Garmin Forerunner 70 for two weeks — and it’s my favorite running watch for the money in 2026</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-3-exercises-i-prefer-over-lunges-for-building-strong-stable-legs-and-knees-over-40">I'm a weightlifting coach — 3 exercises I prefer over lunges for building strong, stable legs and knees over 40</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested the Garmin Forerunner 70 for two weeks — and it’s my favorite running watch for the money in 2026 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-review</link>
                                                                            <description>
                            <![CDATA[ The Garmin Forerunner 70 offers nearly all of the brand's top-tier features and insights for runners, in a supremely lightweight, comfy, and fairly priced package. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">JvBdKQ9Hu8kLFBjk3yB2gB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/HKhCgdb23AFfAgTBXbpdJj-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 08:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/HKhCgdb23AFfAgTBXbpdJj-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Forerunner 70 on a user&#039;s wrist against a bright blue background]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Forerunner 70 on a user&#039;s wrist against a bright blue background]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Forerunner 70 on a user&#039;s wrist against a bright blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/HKhCgdb23AFfAgTBXbpdJj-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Garmin Forerunner 70 ($249 as tested) is the brand’s latest entry-level running watch. It’s basically a <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-170-review-an-affordable-and-accurate-running-watch">Garmin Forerunner 170</a> with fewer smart features and slightly less impressive under-the-hood tech for $50 cheaper.</p><p>However, the Forerunner 70 is positively bursting with training insights, recovery advice, and race-day metrics for runners. It also boasts a bright AMOLED screen, a comfortable case, and impressive battery life. </p><p><a href="https://www.tomsguide.com/wellness/running/im-a-running-noob-doing-my-first-5k-heres-all-the-tech-im-using-to-cross-the-finish-line">I’m a newbie runner</a>, and I wore the <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-took-my-first-jog-with-garmins-new-entry-level-running-watch-5-things-to-know-about-the-forerunner-70">Garmin Forerunner 70</a> for two weeks. In that time, I compared tracking performance against the competition while running and walking, tested battery life claims, analysed sleep insights versus other popular wearables, tried out the few smart features on offer, and ultimately, put it through hell (I’m hard on my smartwatches). </p><p>Here’s everything you need to know about the Garmin Forerunner 70. </p><h3 class="article-body__section" id="section-garmin-forerunner-70-versus-the-competition"><span>Garmin Forerunner 70: Versus the competition</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3136px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2quFAiqLVqH7V8kHtbMdq3" name="Forerunner55-v-70" alt="Close-up split screen showing the Garmin Forerunner 70 on the left and the Forerunner 55 on the right" src="https://cdn.mos.cms.futurecdn.net/2quFAiqLVqH7V8kHtbMdq3.jpg" mos="" align="middle" fullscreen="" width="3136" height="1764" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><div ><table><caption>Garmin Forerunner 70 vs 55 vs 170 vs Coros Pace 4</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>Forerunner 70</p></th><th  ><p>Forerunner 55</p></th><th  ><p>Forerunner 170</p></th><th  ><p>Coros Pace 4</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Launch price</strong></p></td><td  ><p>$249</p></td><td  ><p>$199</p></td><td  ><p>$299<br>$349 (Music edition)</p></td><td  ><p>$249<br>$279 (Aluminum)</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>42.6 x 42.6 x 11.9 mm</p></td><td  ><p>42 x 42 x 11.6 mm</p></td><td  ><p>42.6 x 42.6 x 11.9 mm</p></td><td  ><p>43.4 x 43.4 x 11.8 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p> 40 g </p></td><td  ><p>37 g</p></td><td  ><p>41 g</p></td><td  ><p>40-41 g</p></td></tr><tr><td class="firstcol " ><p><strong>Display type </strong></p></td><td  ><p>AMOLED</p></td><td  ><p>MIP</p></td><td  ><p>AMOLED</p></td><td  ><p>AMOLED</p></td></tr><tr><td class="firstcol " ><p><strong>Display size</strong></p></td><td  ><p>1.2-inch</p></td><td  ><p>1.04-inch</p></td><td  ><p>1.2-inch</p></td><td  ><p>1.2-inch</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>13 days</p></td><td  ><p>14 days</p></td><td  ><p>10 days</p></td><td  ><p>19 days</p></td></tr><tr><td class="firstcol " ><p><strong>GPS battery life</strong></p></td><td  ><p>23 hours</p></td><td  ><p>20 hours</p></td><td  ><p>20 hours</p></td><td  ><p>24 hours</p></td></tr><tr><td class="firstcol " ><p><strong>Water resistance </strong></p></td><td  ><p>50 meters</p></td><td  ><p>50 meters</p></td><td  ><p>50 meters</p></td><td  ><p>50 meters</p></td></tr></tbody></table></div><p>The <a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-review">Coros Pace 4</a> is the nearest non-Garmin competitor to the Forerunner 70. Both cost about the same, but the Pace 4 offers more precise multi-band GPS, an altimeter for elevation tracking data, superior battery life, and support for multisport workouts.</p><p>That said, the Forerunner 70 has a more polished user interface — both on the watch and in the app — better physical controls, and valuable metrics, like Training Readiness Score, which are absent on the Pace 4.</p><p>Another option at $249 is the <a href="https://www.tomsguide.com/wellness/smartwatches/suunto-run-review-a-great-value-amoled-sports-watch-for-runners">Suunto Run</a>, which also has some advantages over the Forerunner 70 — like dual-band GPS and onboard music storage — but it lacks the level of training insights and refined user experience of the Garmin.</p><p>In terms of the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-vs-garmin-forerunner-170-the-main-differences-between-garmins-two-new-running-watches">Garmin Forerunner 70 vs 170</a>, the latter sports an altimeter and an onboard temperature sensor for advanced women’s health tracking. The Forerunner 170 additionally supports NFC for mobile payments, and if you pony up extra cash for the ‘Music’ edition, you even get onboard storage for saving Spotify/Amazon Music/Deezer tunes for offline enjoyment. </p><p>Finally, the jump from the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-vs-forerunner-55-biggest-upgrades-explained">Forerunner 55 to the Forerunner 70</a> is a big one, with the newer model gaining a bright AMOLED screen, an updated user interface, and lots of new advanced training insights for runners.</p><h3 class="article-body__section" id="section-garmin-forerunner-70-value-3-5"><span>Garmin Forerunner 70 value: 3/5</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4460px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="z9A3xuNVMvmhF3STJiiFRM" name="Forerunner70-04" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/z9A3xuNVMvmhF3STJiiFRM.jpg" mos="" align="middle" fullscreen="" width="4460" height="2509" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><ul><li><strong>The Garmin Forerunner 70 is $249 and available now</strong></li><li><strong>The Forerunner 70 is the same cost as the Coros Pace 4, its closest competitor </strong></li><li><strong>Garmin's new entry-level watch is $50 more than its predecessor, the Forerunner 55, at launch, but the price will likely come down</strong></li></ul><p>The Garmin Forerunner 70 is <a href="https://www.garmin.com/en-US/p/1941179/pn/010-04307-00/" target="_blank" rel="nofollow">priced at $249.99</a>, which is $50 more than the launch price of its predecessor, the Forerunner 55. However, $199 in 2021 dollars — when the Forerunner 55 first debuted — is equivalent to roughly $240 in 2026 dollars, accounting for inflation. This makes the price hike a bit more digestible.</p><p>Moreover, I fully expect the Forerunner 70 to see a price drop, perhaps even by the holiday season. After all, the Forerunner 55 regularly sells for $149. </p><p>The Garmin Forerunner 70 is available now in your choice of Tidal Blue, Soft Pink, Cool Lavender, Citron, Whitestone (shown), and Black. </p><h3 class="article-body__section" id="section-garmin-forerunner-70-design-and-comfort-5-5"><span>Garmin Forerunner 70 design and comfort: 5/5</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5050px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="x6siTJN53QFG9ieoPWKTiM" name="Forerunner70-06" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white next to the Forerunner 170 in black" src="https://cdn.mos.cms.futurecdn.net/x6siTJN53QFG9ieoPWKTiM.jpg" mos="" align="middle" fullscreen="" width="5050" height="2841" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><ul><li><strong>Lightweight, comfortable case design with five buttons and a bright AMOLED touchscreen </strong></li><li><strong>There's only one size: 42mm</strong></li><li><strong>50 meters of water resistance is enough for surface-level swims and showers</strong></li></ul><p>The Garmin Forerunner 70 is nearly identical in case size, weight, and button placement to its predecessor, the Forerunner 55, and exactly the same as its higher-end sibling, the Forerunner 170. </p><p>Unlike the Forerunner 55, which has a somewhat dull, Memory in Pixel (MIP) display that isn't touch sensitive, the new Forerunner 70 sports a bright and well-saturated 1.2-inch AMOLED touchscreen, which I found responsive, and had no issue reading in direct sunlight. </p><p>Made from fiber-reinforced polymer, aka plastic, the case is delightfully lightweight and easy-wearing. There's only one size available, 42.6mm, which some users might find a tad larger than their liking, especially if you have smaller wrists. </p><p>Water resistance is a respectable 50 meters, which is enough to survive surface-level swimming, sweaty workouts, showers, etc. </p><h3 class="article-body__section" id="section-garmin-forerunner-70-fitness-tracking-4-5"><span>Garmin Forerunner 70 fitness tracking: 4/5</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3765px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qf5HiAgQ35P8tkC8awxWQM" name="Forerunner70-03" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/qf5HiAgQ35P8tkC8awxWQM.jpg" mos="" align="middle" fullscreen="" width="3765" height="2118" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><ul><li><strong>New, high-end training tools for runners compared to its predecessor</strong></li><li><strong>Onboard GPS provides location data without a smartphone, but no onboard altimeter for elevation tracking</strong></li></ul><p>Even though the Garmin Forerunner 70 is an entry-level model, it's positively brimming with high-end running metrics, insights, training tools, and recovery advice. </p><p>For example, unlike its predecessor, the Forerunner 55, the new Forerunner 70 supports Garmin's Training Load, Training Status, and Training Readiness metrics, all of which I find highly useful when planning what types of workouts to do... or not, on a daily basis to avoid overexertion.</p><p>You also get hardcore running dynamic insights to help you train and ultimately improve your form, like ground contact time, vertical oscillation, vertical ratio, and stride length. In terms of cardio and performance, the Forerunner 70 measures your running power, VO2 Max, Heart Rate Variability (HRV), and blood oxygen saturation levels.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5011px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="mKcWHy4FyfXAdxg6cMjXUM" name="Forerunner70-02" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/mKcWHy4FyfXAdxg6cMjXUM.jpg" mos="" align="middle" fullscreen="" width="5011" height="2818" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Prepping for an upcoming event, like <a href="https://www.tomsguide.com/wellness/fitness/i-just-ran-my-first-5k-heres-how-i-conquered-the-pre-race-jitters">running your first 5k</a>? The Garmin Coach feature on the Forerunner 70 can generate custom, adaptive training plans to help you make it across the finish line with grace and style. </p><p>Despite being a running watch, the Forerunner 70 supports over 80 workout types. Fitness tracking accuracy is solid overall, but the lack of an onboard barometric altimeter led to less than precise elevation gain data in my testing.</p><p>For example, when I pitted the <a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-500-steps-with-the-apple-watch-se-3-vs-garmin-forerunner-70-and-this-smartwatch-won">Forerunner 70 vs the Apple Watch SE 3</a> in a 5,500-step tracking comparison, both devices performed extremely well across the board, from step count to total distance to heart rate to pace. However, Garmin's climb data was considerably lower than Apple's and the control. </p><h3 class="article-body__section" id="section-garmin-forerunner-70-health-tracking-3-5"><span>Garmin Forerunner 70 health tracking: 3/5</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5265px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="8mNCH8k5bKV3g5BrEwQQKG" name="GarminForerunner70-02" alt="Close-up of the Garmin Forerunner 70 showing the blood ox measuring tool" src="https://cdn.mos.cms.futurecdn.net/8mNCH8k5bKV3g5BrEwQQKG.jpg" mos="" align="middle" fullscreen="" width="5265" height="2961" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><ul><li><strong>Impressive daily sleep reports with sleep score and Body Battery metric</strong></li><li><strong>Limited women’s health tracking tools; no thermometer </strong></li><li><strong>Accurate heart rate tracking with SpO2 readings</strong></li></ul><p>Modern Garmin watches offer comprehensive and digestible sleep insights, and the Forerunner 70 is no exception, with details on your sleep cycles, disturbances, a numeric sleep score, and rating. The Forerunner 70 also supports Garmin's handy body Battery metric, which provides the best overall gauge of your well-being, taking into account sleep, recent workouts, stress, and more.</p><p>Finally, the Garmin Forerunner 70 lacks an onboard body temperature sensor, unlike the higher-end Forerunner 170, so women's health tracking insights are, well, lacking. While the pricier model offers period predictions, the Forerunner 70 does not.</p><h3 class="article-body__section" id="section-garmin-forerunner-70-smart-and-safety-features-2-5"><span>Garmin Forerunner 70 smart and safety features: 2/5</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4066px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HVK2QdK8Ee7XrTFGS4JWJM" name="Forerunner70-05" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/HVK2QdK8Ee7XrTFGS4JWJM.jpg" mos="" align="middle" fullscreen="" width="4066" height="2287" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><ul><li><strong>Smart features are limited; for NFC support and onboard music storage, get the Forerunner 170 Music</strong></li><li><strong>The Forerunner 70 supports mirrored smartphone notifications and media control for both Android and iOS </strong></li><li><strong>Safety features include incident detection and Garmin's LiveTrack location-sharing </strong></li></ul><p>If you're looking for smart features like NFC payments and onboard music storage, the Garmin Forerunner 70 probably isn't the watch for you. Instead, consider the Forerunner 170 or 170 Music. </p><p>However, neither of these Garmin running watches offers anything near the level of smart features you get from the <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch">best full-featured smartwatch</a> models, like the <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-series-11-review">Apple Watch Series 11</a> and <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-went-hands-on-with-google-pixel-watch-4-and-it-could-be-my-new-favorite-smartwatch-for-android">Pixel Watch 4</a>. Then again, the Forerunner series wipes the floor with those models in terms of advanced running metrics and insights.</p><p>The Forerunner 70 plays nicely with Android and iOS devices, supporting mirrored notification and media control. You can also enter a destination in Google Maps on your smartphone, and the Forerunner 70 will provide turn-by-turn directions on the screen.</p><p>Garmin's new entry-level watch also supports two important safety features: Incident Detection, similar to Apple's fall and crash detection, and LiveTrack location sharing.</p><h3 class="article-body__section" id="section-garmin-forerunner-70-battery-life-4-5"><span>Garmin Forerunner 70 battery life: 4/5</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4659px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="iwTvdpwLVAJFPsBxnhV2JM" name="Forerunner70-07" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/iwTvdpwLVAJFPsBxnhV2JM.jpg" mos="" align="middle" fullscreen="" width="4659" height="2620" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><ul><li><strong>Solid battery performance: 13 days in smartwatch mode or up to six days when using the always-on display</strong></li><li><strong>GPS battery life is good for between 16 and 23 hours, depending on your tracking mode</strong></li></ul><p>Battery life on the Garmin Forerunner 70 is fairly good. In smartwatch mode, Garmin promises up to 13 days of use. However, I tested the Forerunner 70 with the always-on display setting engaged. Under these circumstances, Garmin says the watch should last up to five days per charge, but I consistently got six days, even with lots of use and 24/7 wearing.</p><p>When tracking an outdoor workout with all-system GPS engaged, you can expect around 16 hours of use, or 23 hours if you switch out of all-system GPS. The watch also recharges quite quickly; it took roughly 90 minutes to go from ~10% to 100% in my testing.</p><h3 class="article-body__section" id="section-garmin-forerunner-70-review-verdict"><span>Garmin Forerunner 70 review: Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4070px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="dyUTv8XNZgMQarvoVj4vRM" name="Forerunner70-01" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/dyUTv8XNZgMQarvoVj4vRM.jpg" mos="" align="middle" fullscreen="" width="4070" height="2289" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><div><blockquote><p>The Garmin Forerunner 70 is a near-perfect smartwatch for folks who crave Garmin's best running tools and training insights but don't want to break the bank</p></blockquote></div><p>The Garmin Forerunner 70 is a near-perfect smartwatch for folks who crave Garmin's best running tools and training insights but don't want to break the bank. Sure, smart features are all but non-existent, but that's why Garmin also sells the Forerunner 170 and 170 Music.</p><p>With a comfortable and sporty design, bright display, refined user interface, solid battery performance, and reliable fitness tracking accuracy (aside from climb data), there's a lot to like about Garmin's new entry-level model. However, it's not the only appealing running watch at this price point.</p><p>The <a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-review">Coros Pace 4</a> is also $249 and offers a lot of the same tools as the Forerunner 70, in a similarly-sized package, but with better battery performance, more accurate GPS, and support for multisport tracking. </p><p>That said, I prefer the Forerunner 70s' user interface and greater number of physical controls. Garmin's entry-level model also offers metrics I've come to rely on, like Training Readiness, which you won't find on the Coros. </p><p><em><strong>Garmin Forerunner 70 final score: 21/30</strong></em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I walked 3,000 steps with the Fitbit Air vs Garmin Forerunner 70 — and I’m seriously amazed by the results ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness-trackers/i-walked-3-000-steps-with-the-fitbit-air-vs-garmin-forerunner-70-and-im-seriously-amazed-by-the-results</link>
                                                                            <description>
                            <![CDATA[ Can the $99 Fitbit compete with the $249 Forerunner 70? I decided to find out by wearing both while walking exactly 3,000 steps and comparing the results. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">JUuVPu6ZGkSekeKWEhpPTD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uzqVqau5gm5cPhz9DYttUR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 28 May 2026 05:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 28 May 2026 20:00:52 +0000</updated>
                                                                                                                                            <category><![CDATA[Fitness Trackers]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Smartwatches]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/uzqVqau5gm5cPhz9DYttUR-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Forerunner 70 next to the Fitbit Air fitness tracker on the same wrist]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Forerunner 70 next to the Fitbit Air fitness tracker on the same wrist]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Forerunner 70 next to the Fitbit Air fitness tracker on the same wrist]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uzqVqau5gm5cPhz9DYttUR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I tested the fitness tracking performance of the new Fitbit Air versus the (also) new Garmin Forerunner 70, and was seriously amazed by the results. </p><p>The <a href="https://www.tomsguide.com/wellness/fitness-trackers/fitbit-air-review">Fitbit Air</a> is a screen-less, wallet-friendly alternative to the Whoop 5.0, while the <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-took-my-first-jog-with-garmins-new-entry-level-running-watch-5-things-to-know-about-the-forerunner-70">Garmin Forerunner 70</a> is the brand’s latest entry-level running watch, replacing the beloved but aging <a href="https://www.tomsguide.com/reviews/garmin-forerunner-55">Forerunner 55</a>.</p><p>To find out which of these 2026 wearables is the more accurate fitness tracker, I walked 3,000 steps with the Garmin on my left wrist and the Fitbit on my right. As a primary control for this head-to-head, I manually counted my steps (with some help from my trusty, old-school <a href="https://www.amazon.com/SDARMING-Counters-Counting-Knitting-Coaching/dp/B0971CF137/" target="_blank" rel="nofollow">tally counter</a>). Additionally, I logged my walk using the Strava app on an iPhone 16 Plus. </p><div class="product"><a data-dimension112="ec9f2724-77ae-47ed-ac0f-a3e915ff831b" data-action="Deal Block" data-label="The Fitbit Air is a tiny, lightweight, and screen-free fitness tracker with seven days of battery, detailed sleep insights, and reliable workout-tracking chops. It's also the brand's first new Fitbit in nearly three years, and my favorite tracker of 2026." data-dimension48="The Fitbit Air is a tiny, lightweight, and screen-free fitness tracker with seven days of battery, detailed sleep insights, and reliable workout-tracking chops. It's also the brand's first new Fitbit in nearly three years, and my favorite tracker of 2026." data-dimension25="$99" href="https://www.amazon.com/Google-Fitbit-Air-Screenless-Personalized/dp/B0GTMJF7PV?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:858px;"><p class="vanilla-image-block" style="padding-top:95.22%;"><img id="6rQV9bADzd2zqYvNPGPxwE" name="Screenshot 2026-05-28 at 12.55.35 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6rQV9bADzd2zqYvNPGPxwE.png" mos="" align="middle" fullscreen="" width="858" height="817" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Fitbit Air is a tiny, lightweight, and screen-free fitness tracker with seven days of battery, detailed sleep insights, and reliable workout-tracking chops. It's also the brand's first new Fitbit in nearly three years, and my favorite tracker of 2026.<a class="view-deal button" href="https://www.amazon.com/Google-Fitbit-Air-Screenless-Personalized/dp/B0GTMJF7PV?th=1" target="_blank" rel="nofollow" data-dimension112="ec9f2724-77ae-47ed-ac0f-a3e915ff831b" data-action="Deal Block" data-label="The Fitbit Air is a tiny, lightweight, and screen-free fitness tracker with seven days of battery, detailed sleep insights, and reliable workout-tracking chops. It's also the brand's first new Fitbit in nearly three years, and my favorite tracker of 2026." data-dimension48="The Fitbit Air is a tiny, lightweight, and screen-free fitness tracker with seven days of battery, detailed sleep insights, and reliable workout-tracking chops. It's also the brand's first new Fitbit in nearly three years, and my favorite tracker of 2026." data-dimension25="$99">View Deal</a></p></div><div class="product"><a data-dimension112="1c6fe19d-d223-4d3f-a7ba-785952d4421b" data-action="Deal Block" data-label="The Forerunner 70 is Garmin's latest entry-level running watch, replacing the ancient Forerunner 55. It boasts a bright AMOLED screen, a lightweight and durable case, accurate GPS tracking, and tons of training tools and insights for runners." data-dimension48="The Forerunner 70 is Garmin's latest entry-level running watch, replacing the ancient Forerunner 55. It boasts a bright AMOLED screen, a lightweight and durable case, accurate GPS tracking, and tons of training tools and insights for runners." data-dimension25="$249" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Advanced-Training/dp/B0H1F7T6G9/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1042px;"><p class="vanilla-image-block" style="padding-top:103.45%;"><img id="JxZy6K7r5Qf8aMgGg2NDqQ" name="Screenshot 2026-05-19 at 2.33.47 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/JxZy6K7r5Qf8aMgGg2NDqQ.png" mos="" align="middle" fullscreen="" width="1042" height="1078" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 70 is Garmin's latest entry-level running watch, replacing the ancient Forerunner 55. It boasts a bright AMOLED screen, a lightweight and durable case, accurate GPS tracking, and tons of training tools and insights for runners. <a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Advanced-Training/dp/B0H1F7T6G9/" target="_blank" rel="nofollow" data-dimension112="1c6fe19d-d223-4d3f-a7ba-785952d4421b" data-action="Deal Block" data-label="The Forerunner 70 is Garmin's latest entry-level running watch, replacing the ancient Forerunner 55. It boasts a bright AMOLED screen, a lightweight and durable case, accurate GPS tracking, and tons of training tools and insights for runners." data-dimension48="The Forerunner 70 is Garmin's latest entry-level running watch, replacing the ancient Forerunner 55. It boasts a bright AMOLED screen, a lightweight and durable case, accurate GPS tracking, and tons of training tools and insights for runners." data-dimension25="$249">View Deal</a></p></div><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/LCKJ8K4sdXk" allowfullscreen></iframe></div></div><h3 class="article-body__section" id="section-fitbit-air-vs-garmin-forerunner-70-fitness-tracking-accuracy-compared"><span>Fitbit Air vs Garmin Forerunner 70: fitness tracking accuracy compared</span></h3><p>Before diving into the results, it’s worth noting some key differences between these two devices. For one, the Garmin Forerunner 70 is <a href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Advanced-Training/dp/B0H1F9VT52/" target="_blank" rel="nofollow">$250 on Amazon</a> and other major retailers, which is more than twice the cost of the <a href="https://www.amazon.com/gp/aw/d/B0GTMTZF3V/">$99 Fitbit Air</a>. </p><p>Both wearables offer their primary health and fitness tracking features without a subscription. Want personalized insights, trend reports, workout recommendations, and more? <a href="https://www.tomsguide.com/wellness/fitness/the-fitbit-app-is-officially-dead-but-dont-panic-its-replacement-is-even-better">Google Health Premium</a> for the Fitbit Air is $9.99 a month or $99 for the year, while <a href="https://www.tomsguide.com/wellness/smartwatches/i-tried-garmin-connect-for-a-week-heres-3-things-i-like-and-3-i-dislike">Garmin Connect+</a> is $6.99 a month or $69.99 annually. </p><p>The other notable difference is that the Garmin Forerunner 70 sports an onboard GPS while the Fitbit Air doesn’t. This means you'll need to carry your smartphone for location and elevation data when tracking an outdoor workout with the Air, something that isn’t the case for the Forerunner 70.</p><p>Now, on to the test results!</p><h3 class="article-body__section" id="section-fitbit-air-vs-garmin-forerunner-70-walk-test-results"><span>Fitbit Air vs Garmin Forerunner 70: Walk test results </span></h3><div ><table><caption>3,000-step walk comparison vs Garmin vs Strava</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>Fitbit Air</p></th><th  ><p>Forerunner 70</p></th><th  ><p>Control</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Steps</p></td><td  ><p>3,004 steps</p></td><td  ><p>2.996 steps</p></td><td  ><p>3,000 steps (manual count)</p></td></tr><tr><td class="firstcol " ><p>Distance</p></td><td  ><p>1.61 miles</p></td><td  ><p>1.57 miles</p></td><td  ><p>1.60 miles (Strava)</p></td></tr><tr><td class="firstcol " ><p>Climb</p></td><td  ><p>165 feet</p></td><td  ><p>154 feet</p></td><td  ><p>176 feet (Strava)</p></td></tr><tr><td class="firstcol " ><p>Average pace (elapsed) </p></td><td  ><p>18 mins 31 secs</p></td><td  ><p>17 mins 48 secs</p></td><td  ><p>18 mins 21 secs (Strava)</p></td></tr><tr><td class="firstcol " ><p>Average heart rate</p></td><td  ><p>116 bpm</p></td><td  ><p>125 bpm</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p>Max heart rate</p></td><td  ><p>161 bpm</p></td><td  ><p>163 bpm</p></td><td  ><p>n/a</p></td></tr></tbody></table></div><p>Any step count total within one hundred steps of my actual tally is considered a fantastic result by TG walk test standards. For this head-to-head, the Fitbit Air and Garmin Forerunner 70 were both within just five steps of the actual tally, a seriously amazing outcome. Strava, meanwhile, logged 3,006 total steps taken.</p><p>Distance data also lines up nicely across the board, with Fitbit's tally being just a tad closer to the control. The Fitbit Air also delivered a more accurate elevation gain total than the Garmin Forerunner 70, which notably lacks a barometric altimeter for tracking climb data (the Air piggyback's off your phone's altimeter just like it does for GPS).</p><p>While Strava and Garmin each provide moving and elapsed pace metrics, the Fitbit Air only offers one, and doesn't specify which it is (my money is on the latter). The figures above reflect Garmin and Strava's elapsed pace. For moving pace, Strava noted 17 mins 15 secs per mile, while Garmin logged 17 mins 35 secs. </p><p>Fitbit's average heart rate metric is quite a bit lower than Garmin's — the Fitbit was on my right wrist and the Garmin on my left, which could be a factor — but both wearables recorded roughly the same max heart rate for the walk, which notably included some extra-steep terrain to get my blood pumping. </p><h3 class="article-body__section" id="section-fitbit-air-vs-garmin-forerunner-70-winner"><span>Fitbit Air vs Garmin Forerunner 70: Winner </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3706px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="eNA2i2htvrPTQUDfXX7WNR" name="F70-v-FitbitAir-02" alt="Close-up of the Garmin Forerunner 70 next to the Fitbit Air fitness tracker on the same wrist" src="https://cdn.mos.cms.futurecdn.net/eNA2i2htvrPTQUDfXX7WNR.jpg" mos="" align="middle" fullscreen="" width="3706" height="2085" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>And the winner is... both wearables! This one is a tie, as both the Air and Forerunner 70 were within four steps of my actual count. </p><p>Ultimately, the Fitbit Air is one of the <a href="https://www.tomsguide.com/us/best-fitness-trackers,review-2066.html">best fitness trackers</a> you can buy in 2026, and while I'm still reviewing the Garmin Forerunner 70, there's a solid shot it's destined for our <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watch</a> guide as well. </p><p>This is to say, top-notch performance is not only what I hoped for from these two modern wearables, but also what I expected. And both delivered with flying colors. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqvznX"></div>                            </div>                            <script src="https://kwizly.com/embed/OqvznX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-just-added-whatsapp-support-to-a-huge-number-of-watches-heres-how-to-unlock-it">Garmin just added WhatsApp support to a huge number of watches — here’s how to unlock it</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/the-fitbit-air-is-basically-just-a-screen-less-fitbit-inspire-3-and-thats-a-very-good-thing">The Fitbit Air is basically just a screen-less Fitbit Inspire 3 — and that’s a very good thing</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-spent-one-week-with-a-wallet-friendly-garmin-forerunner-970-dupe-5-things-that-stand-out-about-the-usd300-cheaper-amazfit-cheetah-2-pro">I spent one week with a wallet-friendly Garmin Forerunner 970 dupe —  5 things that stand out about the $300 cheaper Amazfit Cheetah 2 Pro</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tried the new Quick Workout feature on the Garmin Forerunner 170, and its goals were too tough for me — here’s how I adapted ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-tried-the-new-quick-workout-feature-on-the-garmin-forerunner-170-and-its-goals-were-too-tough-for-me-heres-how-i-adapted</link>
                                                                            <description>
                            <![CDATA[ Garmin’s new Quick Workout feature can be a handy way to mix up your runs without following a training plan, but be wary of blindly following every target it sets. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EzbfWqkPKPFQj9gz9NMoqB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AgMToB7aXVuPQ2dFFUwsXT-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 27 May 2026 08:32:37 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/AgMToB7aXVuPQ2dFFUwsXT-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 170 Quick Workout]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 170 Quick Workout]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 170 Quick Workout]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AgMToB7aXVuPQ2dFFUwsXT-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As an extremely keen runner who has followed a structured training plan set by a coach for seven years, it’s fair to say I’m not the target audience for Garmin’s new Quick Workout feature.</p><p>The feature was introduced with the <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-took-my-first-jog-with-garmins-new-entry-level-running-watch-5-things-to-know-about-the-forerunner-70">Garmin Forerunner 70</a> and <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-just-dropped-two-new-entry-level-smartwatches-why-the-garmin-forerunner-70-and-170-could-be-the-best-beginner-running-watches-in-2026">Garmin Forerunner 170</a> sports watches, and offers runners an easy way to mix up the training they do without following a plan.</p><p>To use the tool, you simply choose how hard you want to work that day and for how long, and it sets you a target run to follow and guides you through each step. </p><p>I’m currently testing both of the new Forerunners to see how they compare to the <a href="https://www.tomsguide.com/best-picks/best-running-watches">best running watches</a> available, and I gave the Quick Workout feature a try one lunchtime when I had an easy run on my plan.</p><p>Here’s how to use the feature, and what I learned from testing it.</p><h3 class="article-body__section" id="section-how-to-use-garmin-s-quick-workout-feature"><span>How to use Garmin’s Quick Workout Feature</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="etc48T3LHPPnU3mptbj4aD" name="Garmin Quick Workout Feature" alt="Garmin Quick Workout Feature" src="https://cdn.mos.cms.futurecdn.net/etc48T3LHPPnU3mptbj4aD.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Quick Workout is designed to make life easier for you and it is very simple to use.</p><ol start="1"><li>Start a run</li><li>Scroll down to Training</li><li>Select Quick Workout</li><li>Choose the intensity level: Easy, Moderate, Hard, Very Hard</li><li>Choose the duration: 30, 45, or 60 minutes</li><li>Check the workout and hit ‘Do Workout’</li><li>Start your run when GPS is locked on</li></ol><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="toGv7je6jfmupQ92UZ6hiD" name="Garmin Quick Workout Feature" alt="Garmin Quick Workout Feature" src="https://cdn.mos.cms.futurecdn.net/toGv7je6jfmupQ92UZ6hiD.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Once you start a run you’ll get a special data screen that shows the step of the workout you're on along with a guideline to help you hit the target pace set.</p><h3 class="article-body__section" id="section-the-sessions-are-a-mix-of-base-tempo-threshold-and-sprint-intervals"><span>The sessions are a mix of base, tempo, threshold and sprint intervals</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1381px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="4epTVGzGMRu6KySLgqGj3F" name="Garmin Quick Workout Feature" alt="Garmin Quick Workout Feature" src="https://cdn.mos.cms.futurecdn.net/4epTVGzGMRu6KySLgqGj3F.jpg" mos="" align="middle" fullscreen="" width="1381" height="777" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>From what I can tell so far, the four intensity levels available in Quick Workouts each relate to common types of run you’d find on a training plan.</p><p>Easy workouts are base training, Moderate are tempo runs, set at around my marathon pace, Hard runs push you to threshold pace — the pace you could sustain for around an hour — and Very Hard runs involve short sprint intervals.</p><p>It’s a good mix of runs, and if you include a variety of the above in your week, you’ll no doubt get fitter, but I’d be wary of doing more than one or two workouts above the Easy level each week to avoid pushing yourself too hard.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W09zMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W09zMO.js" async></script><h3 class="article-body__section" id="section-the-targets-are-set-based-on-ideal-conditions"><span>The targets are set based on ideal conditions</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6DxWkaHdW2mawxubQ4TrnD" name="Garmin Quick Workout Feature" alt="Garmin Quick Workout Feature" src="https://cdn.mos.cms.futurecdn.net/6DxWkaHdW2mawxubQ4TrnD.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>When I looked through the various options for the Quick Workouts, I noticed that the pace targets were pretty tough for me, and are based on what I’d consider ideal conditions — so running on flat roads in good weather when I was well-rested.</p><p>That’s very rarely the case during a normal training week, I find, when you’re tired and often have to run on suboptimal roads near your house in whatever weather there is.</p><p>Even on the easy run I chose, the target pace of 4:20/km (6:58/mile) was too fast to be an easy run, because I was on a hilly route and tired from staying up too late watching my soccer team lose a crucial match. </p><p>I dropped the pace to 4:40/km (7:31/mile) to make sure I was actually doing an easy run, and I think that kind of adjustment can be important to get the most from the Quick Workout tool.</p><h3 class="article-body__section" id="section-you-need-to-consider-your-terrain-and-condition"><span>You need to consider your terrain and condition</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1348px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="wcPoQUjR27AEF3niJgntV" name="Garmin Quick Workout Feature" alt="Garmin Quick Workout Feature" src="https://cdn.mos.cms.futurecdn.net/wcPoQUjR27AEF3niJgntV.jpg" mos="" align="middle" fullscreen="" width="1348" height="758" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’m an experienced runner and know my paces and what different effort levels feel like, but if you’re a beginner jumping in with the feature, which is aimed at more casual runners, you do need to be careful to make sure you’re working at the right level.</p><p>If you’re running on trails or a hilly route, dealing with wind and rain, or just coming off a bad night’s sleep, you might find the paces set too fast, and it’s important to then adapt by slowing down so you don’t overdo it.</p><p>In general, I find that runners are bad at following workouts blindly, then blaming themselves if they can’t do it, but remember these are just guideline goals and the aim is simply to get you working at a certain effort level, so keep easy runs easy and maintain a controlled effort on tempo and threshold runs.</p><p>If you keep that in mind, the new feature can be a fantastic tool for mixing up your runs and improving your fitness in different ways without needing to follow a full training plan.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/running/i-test-running-shoes-for-a-living-and-you-dont-need-to-buy-the-latest-models-these-5-last-gen-shoes-are-just-as-good-and-often-on-sale">Forget pricey new running shoes — I would get these last-gen Hoka, Saucony and New Balance at a steep discount instead</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin Forerunner 170 review: an affordable and accurate running watch ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-170-review-an-affordable-and-accurate-running-watch</link>
                                                                            <description>
                            <![CDATA[ The Garmin Forerunner 170 offers everything runners need to track their training plus some useful smart features, all in an attractive and lightweight package. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">v8uFNC9MkFAYxQtKisQBw7</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ug5FmZQf9hiP7MfZhM4D79-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 24 May 2026 04:15:00 +0000</pubDate>                                                                                                                                <updated>Tue, 09 Jun 2026 10:32:39 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ug5FmZQf9hiP7MfZhM4D79-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 170]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 170]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 170]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ug5FmZQf9hiP7MfZhM4D79-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>While the most expensive Garmin models like the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-pro-review-the-greatest-fenix-yet">Fenix 8 Pro</a> draw a lot of attention, it’s the entry-level watches that I see most often on the wrists of my fellow runners, so the launch of two new affordable Forerunners is a big deal.</p><p>The Garmin Forerunner 170 is the more expensive of the pair, offering more sensors and smart features than the <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-took-my-first-jog-with-garmins-new-entry-level-running-watch-5-things-to-know-about-the-forerunner-70">Garmin Forerunner 70</a>, but both are excellent options for runners in particular, thanks to their lightweight designs, accurate tracking, and relatively low price tags.</p><p>I’ve been testing the Garmin Forerunner 170 Music model for the past two weeks, and during that time I’ve compared it to the Forerunner 70 and the <a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-the-coros-pace-4-for-six-months-here-are-my-long-term-pros-and-cons">Coros Pace 4</a>, another affordable option I count among the <a href="https://www.tomsguide.com/best-picks/best-running-watches">best running watches</a> available.</p><p>In my full Garmin Forerunner 170 review, I’ll cover how it performed during my runs and other workouts and how it compares to other watches, including its predecessor, the <a href="https://www.tomsguide.com/wellness/smartwatches/i-ran-10k-with-the-garmin-forerunner-165-vs-garmin-forerunner-170-is-the-new-watch-worth-the-upgrade">Garmin Forerunner 165</a>.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-review-price-and-availability"><span>Garmin Forerunner 170 Review: Price and availability</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3648px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="52iqtndGvKWUFznGxbs638" name="Forerunner_70_and_170_family_on_ground" alt="a photo of the Garmin Forerunner 170 lineup" src="https://cdn.mos.cms.futurecdn.net/52iqtndGvKWUFznGxbs638.jpg" mos="" align="middle" fullscreen="" width="3648" height="2052" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Garmin)</span></figcaption></figure><p>The Garmin Forerunner 170 launched in May 2026, and it costs $299/£259 for the standard model and $249/£299 for the Music model, which is a $50 price rise on the Forerunner 165.</p><p>At the same time, the Garmin Forerunner 70 launched as a cheaper alternative. The Forerunner 70 is $249/£219 and lacks some sensors and smart features that are on the Forerunner 170.</p><p>The main rivals from other brands are the Coros Pace 4 and <a href="https://www.tomsguide.com/wellness/smartwatches/suunto-run-review-a-great-value-amoled-sports-watch-for-runners">Suunto Run</a>, which both cost $249 and are similarly small, lightweight AMOLED sports watches.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-review-specs-compared"><span>Garmin Forerunner 170 Review: Specs compared</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Garmin Forerunner 165</strong></p></td><td  ><p><strong>Garmin Forerunner 170</strong></p></td><td  ><p><strong>Coros Pace 4</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$249.99/£249.99; $299.99/£289.99 (Music)</p></td><td  ><p>$299.99/£259.99; $349.99/£299.99 (Music)</p></td><td  ><p>$249.99/£229.99; $279.99/£249.99 (Music)</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>43 x 11.6mm</p></td><td  ><p>42.6 x 11.9mm</p></td><td  ><p>43.4 x 11.8mm</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td></tr><tr><td class="firstcol " ><p><strong>Bezel</strong></p></td><td  ><p>Plastic</p></td><td  ><p>Plastic</p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td></tr><tr><td class="firstcol " ><p><strong>Screen</strong></p></td><td  ><p>Glass</p></td><td  ><p>Glass</p></td><td  ><p>Glass</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>39g</p></td><td  ><p>41g</p></td><td  ><p>40-41g</p></td></tr><tr><td class="firstcol " ><p><strong>Water resistance</strong></p></td><td  ><p>5ATM</p></td><td  ><p>5ATM</p></td><td  ><p>5ATM</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (watch mode)</strong></p></td><td  ><p>Up to 11 days</p></td><td  ><p>Up to 10 days</p></td><td  ><p>Up to 19 days</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (GPS)</strong></p></td><td  ><p>19 hours (all-systems GPS, always-on)</p></td><td  ><p>20 hours (all-systems GPS, always-on)</p></td><td  ><p>24 hours (multi-band GPS, always-on)</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>4GB</p></td><td  ><p>4GB</p></td><td  ><p>4GB</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-garmin-forerunner-170-review-design-and-display"><span>Garmin Forerunner 170 Review: Design and display</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4848px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s8vuKh9DzUpiq5iqX7G7i9" name="Garmin Forerunner 170" alt="Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:302,l:420,cw:4848,ch:2727,q:80/s8vuKh9DzUpiq5iqX7G7i9.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Forerunner 170 is a very light and slim watch that sits comfortably on the wrist. I barely noticed it was there at times, and it doesn’t catch on jackets or dig in uncomfortably when you’re sleeping.</p><p>It has Garmin’s classic five-button design, which is easier to use to navigate the menus than the touchscreen at times, though the touchscreen is also nice and snappy.</p><p>The 1.2in AMOLED display is smaller than on pricier Garmin watches, but I still found it easy to read in all conditions, even with five stats on display during my runs.</p><p>Garmin opted not to put its latest optical heart rate sensor on the watch, so it doesn’t offer the ECG and skin temperature readings you get on models with the Elevate Gen 5 sensors, and in the past, I’ve found the Gen 4 sensor the Forerunner 170 uses to be a little less accurate than the Gen 5.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="eJEHUmEPaRsusmpJZmq659" name="Garmin Forerunner 170" alt="Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/eJEHUmEPaRsusmpJZmq659.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You do get an array of other sensors on the Forerunner 170, including a barometer, altimeter and gyroscope, which you don’t get on the cheaper Forerunner 70. </p><p>This has made a difference to the quality of its elevation tracking during activities in my testing, with the Forerunner 170 showing smoother, more accurate elevation plots.</p><p>The Forerunner 170 can also pair with external sensors, including chest straps and cycling power meters via Bluetooth and ANT+ — you can’t pair cycling sensors with the Forerunner 70.</p><p>You get 4GB of storage on board, and the Forerunner 170 has a water resistance rating of 5 ATM, making it suitable for pool and open-water swimming.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-review-sports-tracking-and-training-analysis"><span>Garmin Forerunner 170 Review: Sports tracking and training analysis</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4419px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="5GxrATJEfJ9CLJQsTq88Y9" name="Garmin Forerunner 170" alt="Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:292,l:768,cw:4419,ch:2486,q:80/5GxrATJEfJ9CLJQsTq88Y9.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Compared to the Forerunner 165, the Forerunner 170 has new sports features in the shape of more extensive training analysis and many new sports modes, including a lot of winter, team and racket sports.</p><p>The extra training analysis is a notable addition because it gets things like Training Status, Training Readiness and more Training Load analysis that Garmin has previously reserved for more expensive models.</p><p>It doesn’t have all the metrics you get on top Forerunners, missing Running Tolerance, for example, a stat I like a lot on the Garmin Forerunner 970, but there’s more than enough on the Forerunner 170 to satisfy keen runners. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5168px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5bdJAcA63ehoj57QLRPZ49" name="Garmin Forerunner 170" alt="Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:64,l:430,cw:5168,ch:2907,q:80/5bdJAcA63ehoj57QLRPZ49.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As a marathoner, I have everything I need to keep an eye on my training load to ensure I’m building sensibly, and the Training Readiness stat is handy for a quick rating of the current state of your body based on things like recent sleep, stress and training sessions.</p><p>Another new addition to the watch is a Quick Workout feature for runners that can give you a guided session based on how hard you want to work and how long you have to run.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1348px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="wcPoQUjR27AEF3niJgntV" name="Garmin Quick Workout Feature" alt="Garmin Quick Workout Feature" src="https://cdn.mos.cms.futurecdn.net/wcPoQUjR27AEF3niJgntV.jpg" mos="" align="middle" fullscreen="" width="1348" height="758" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I tried it out, and it’s simple to use and gives a variety of sessions you can use to balance your training without needing to follow a structured plan, from easy runs to sprint intervals. It gave me quite tough sessions, though, so I found I did need to scale them back a bit to run at the right intensity.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-review-gps-hr-accuracy"><span>Garmin Forerunner 170 Review: GPS & HR accuracy</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZW3o5FaxbF2Apdf3d8mq7Y" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/ZW3o5FaxbF2Apdf3d8mq7Y.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Garmin didn’t upgrade with the heart rate sensor or GPS chipset on the Forerunner 170, which doesn’t offer multi-band GPS; its most accurate mode is all-systems GPS.</p><p>Multi-band GPS isn’t essential, but the multi-band tracking you get from Garmin’s pricier watches is the most accurate on the market, and other affordable watches offer multi-band, including the Coros Pace 4 and Suunto Run.</p><p>During my testing of the Forerunner 170, it has been as accurate as multi-band watches I’ve compared it to, including the Pace 4 and <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Garmin Forerunner 970</a>, and although I do use multi-band when available, I don’t think there’s a huge difference in practice.</p><p>The exception would be if you regularly run in city centers under tall buildings, when a multi-band can help you get a reliable GPS signal, but even on city runs, the Forerunner 170 has been fine for me.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4876px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="opGTsLLNxYXMrCrXnyPPpX" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:219,l:366,cw:4876,ch:2743,q:80/opGTsLLNxYXMrCrXnyPPpX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I was disappointed that the Forerunner 170 didn’t get Garmin’s latest Elevate Gen 5 heart rate sensor, though, because in my long-term testing of the brand’s watches, I have found that more accurate than the Gen 4 sensor on the Forerunner 170.</p><p>So far in testing the Forerunner 170’s heart rate has been pretty accurate, only really lagging behind a chest strap’s readings during an interval session, though I’ve been running in warm weather when optical sensors tend to be more reliable.</p><p>Ultimately, the GPS and HR accuracy on the watch has been good for me so far, and I expect that will continue, but it’s still a little disappointing not to get Garmin’s best sensor and GPS option on the watch.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-review-smart-features"><span>Garmin Forerunner 170 Review: Smart features</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4492px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="sy8fg3nj3nWZv4BjN5qBK9" name="Garmin Forerunner 170" alt="Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:366,l:658,cw:4492,ch:2527,q:80/sy8fg3nj3nWZv4BjN5qBK9.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>One area where the Forerunner 170 separates itself from other affordable sports watches is its smart features. Both models have NFC payments through Garmin Pay, and the Music can link up with streaming services (Spotify, Deezer and Amazon Music) and store audio files for offline playback.</p><p>It’s still not a true smartwatch, with the Connect IQ app store having far fewer useful apps than the Apple App Store or Google Play, but rivals like the Coros Pace 4 don’t have NFC payments and can only store MP3 files, rather than offering support for streaming services.</p><p>These smart features are the main reason to upgrade from the Forerunner 70, or indeed from the Forerunner 170, to the Forerunner 170 Music, so deciding whether you need them is important for picking between the new watches.</p><p>The Forerunner 170 doesn’t have offline maps, but it does offer breadcrumb navigation with turn-by-turn directions, which is usually enough to keep you on track unless you’re heading into the wilderness.</p><p>You can also customize your watch face and widgets extensively, and the new user interface on the watch, which is the same as the one on the Forerunner 570 and Forerunner 970, brings handy widgets like Sports Scores and a Battery Life tracker, which you don’t get on the Forerunner 165.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-review-battery-life"><span> Garmin Forerunner 170 Review: Battery life</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AkCFC93MfRnh8894F6YAsX" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/AkCFC93MfRnh8894F6YAsX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As a small watch with a bright AMOLED display, it’s not unexpected that the Forerunner 170 doesn’t offer especially long battery life, but it’s actually less long-lasting on this front than the Forerunner 70 and Coros Pace 4.</p><p>You get up to 10 days of use with the screen set to raise-to-wake and four days with it always-on, and 20 hours of all-systems GPS tracking.</p><p>In my testing, I had the screen set to always-on, medium brightness, and ran every day with the watch, and it lasted around three and a half days on average. </p><h2 class="article-body__section" id="section-should-you-buy-the-garmin-forerunner-170"><span>Should you buy the Garmin Forerunner 170?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4391px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qSSALV8KPyrtPNFyJuopA9" name="Garmin Forerunner 170" alt="Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:402,l:585,cw:4391,ch:2470,q:80/qSSALV8KPyrtPNFyJuopA9.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Garmin Forerunner 170 is an excellent little watch that I enjoyed using, and the upgrade in training analysis means it’s a great option for new and experienced runners alike.</p><p>Garmin didn’t throw the kitchen sink at it with the upgrades they could have put on the watch, but did improve upon the Forerunner 165 in several important areas.</p><p>That said, the Forerunner 165 remains a strong alternative that will generally cost you $100 less in sales if you’re not worried about the extra training analysis and upgraded user interface.</p><p>Another older Garmin to consider is the Forerunner 265, which is a full triathlon watch with multi-band GPS and a larger AMOLED display, and it’s usually in sales for the same price as the Forerunner 170. </p><p>The Forerunner 265 has the old user interface and won’t be getting new features going forward, but it’s a very capable watch already, and comes in two sizes, so you can still get a small watch if you want.</p><p>If you're not bothered about the smart features on the watch, or very accurate elevation tracking in particular, then the Forerunner 70 is a better buy too, since it’s very similar to the Forerunner 170 otherwise.</p><p>Outside of Garmin, the Coros Pace 4 is a strong alternative if you don’t need the Garmin smart features. It has multi-band GPS and is a full triathlon watch, and it proved very accurate for me over six months of testing while training for the London Marathon.</p><p>It’s a crowded market, as you can see from the above. The Forerunner 170 more than holds its own, but I think you might find better value in an older Garmin or the Coros Pace 4.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You don’t need the latest Garmin watches — these 5 older models are reduced by as much as $500 and offer better value ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/you-dont-need-the-latest-garmin-watches-these-5-older-models-are-reduced-by-as-much-as-usd500-and-offer-better-value</link>
                                                                            <description>
                            <![CDATA[ Garmin is always generous with its discounts on the older watches in its line-up, and you can save up to $500 on some excellent last-gen models right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8msaU9EacXzELxaNuQZrVK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/729YEbtncCUJW4ADhDTySC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 22 May 2026 09:27:04 +0000</pubDate>                                                                                                                                <updated>Mon, 25 May 2026 17:17:44 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/729YEbtncCUJW4ADhDTySC-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 965 and Garmin Forerunner 265 Flex for Less]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 965 and Garmin Forerunner 265 Flex for Less]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 965 and Garmin Forerunner 265 Flex for Less]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/729YEbtncCUJW4ADhDTySC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you watched the London Marathon very closely this year you might have noticed that the winners of both the men’s and women’s races wore old Garmin watches. Sabastian Sawe broke the two-hour barrier using a Garmin Forerunner 55, while Tigist Assefa set a women-only marathon record while wearing the Forerunner 255.</p><p>Now elite athletes don’t necessarily need the latest and greatest tech because they have coaches and other support staff helping to keep their training on track, but if some of the best runners in history can get by with a last-gen watch, most of us can too.</p><div><blockquote><p>If some of the best runners in history can get by with a last-gen watch, most of us can too.</p></blockquote></div><p>The major benefit of buying an older Garmin instead of the latest model is the huge savings you can make. Last-gen Garmin watches are almost always in sales, and even if they’re missing some of the latest features, they’re still reliable trackers with durable designs.</p><p>I’ve been testing Garmin watches for a decade and have tried almost every model launched in that time, and I’ve picked out five last-gen Garmins that are currently going for a song in the sales. (For more deals, check out our <a href="https://www.tomsguide.com/live/news/best-last-minute-memorial-day-sales-id-shop-today-2026">last-minute Memorial Day sales live blog</a>).</p><h3 class="article-body__section" id="section-quick-links"><span>Quick Links</span></h3><ul><li><strong></strong><a href="https://www.amazon.com/stores/page/FF0DE967-3578-4FF5-9BB4-07591E715EEE" target="_blank" rel="nofollow"><strong>shop all Garmin deals at Amazon</strong></a><strong></strong></li><li><strong>Garmin Forerunner 55: </strong><a href="https://www.amazon.com/Garmin-Forerunner-Running-Suggested-Workouts/dp/B092RCLKHN" target="_blank" rel="nofollow"><strong>was $199 now $167 @ Amazon</strong></a></li><li><strong>Garmin Forerunner 165 Music: </strong><a href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CWB662HK" target="_blank" rel="nofollow"><strong>was $299 now $249 @ Amazon</strong></a></li><li><strong>Garmin Forerunner 265: </strong><a href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Whitestone/dp/B0BS1T7G8S" target="_blank" rel="nofollow"><strong>was $449 now $349 @ Amazon</strong></a></li><li><strong>Garmin Forerunner 965: </strong><a href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Colorful-Training/dp/B0BS1XZY7T" target="_blank" rel="nofollow"><strong>was $599 now $499 @ Amazon</strong></a></li><li><strong>Garmin Epix Pro: </strong><a href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFDZ6KB" target="_blank" rel="nofollow"><strong>was $999 now $499 @ Amazon</strong></a></li></ul><h3 class="article-body__section" id="section-best-garmin-deals-on-last-gen-models"><span> Best Garmin deals on last-gen models</span></h3><div class="product"><a data-dimension112="5e8e6662-fa42-41e3-9c48-5b763f6c655c" data-action="Deal Block" data-label="has an AMOLED screen among other upgrades" data-dimension48="has an AMOLED screen among other upgrades" data-dimension25="$167" href="https://www.amazon.com/Garmin-Forerunner-Running-Suggested-Workouts/dp/B092RCLKHN" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1516px;"><p class="vanilla-image-block" style="padding-top:82.72%;"><img id="cLVVeqFXuri9RMxTycdrTc" name="Garmin-Forerunner-55.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cLVVeqFXuri9RMxTycdrTc.jpg" mos="" align="middle" fullscreen="" width="1516" height="1254" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The cheapest Garmin you can buy right now, the Forerunner 55 is an entry-level running watch that offers accurate tracking and extras like suggested workouts. It’s now been superseded by the Forerunner 70, which <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-vs-forerunner-55-biggest-upgrades-explained" data-dimension112="5e8e6662-fa42-41e3-9c48-5b763f6c655c" data-action="Deal Block" data-label="has an AMOLED screen among other upgrades" data-dimension48="has an AMOLED screen among other upgrades" data-dimension25="$167">has an AMOLED screen among other upgrades</a>, but the Forerunner 55 is currently over $80 cheaper thanks to this deal.<a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner-Running-Suggested-Workouts/dp/B092RCLKHN" target="_blank" rel="nofollow" data-dimension112="5e8e6662-fa42-41e3-9c48-5b763f6c655c" data-action="Deal Block" data-label="has an AMOLED screen among other upgrades" data-dimension48="has an AMOLED screen among other upgrades" data-dimension25="$167">View Deal</a></p></div><div class="product"><a data-dimension112="7d0afdec-67f6-42ff-8372-f7b158113f32" data-action="Deal Block" data-label="Forerunner 170 as a successor to the Forerunner 165" data-dimension48="Forerunner 170 as a successor to the Forerunner 165" data-dimension25="$249" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CWB662HK" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:675px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="7GxV2AK4CUU5iZBg96GNiF" name="Garmin Forerunner 165 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7GxV2AK4CUU5iZBg96GNiF.jpg" mos="" align="middle" fullscreen="" width="675" height="675" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Garmin just launched the <a href="https://www.tomsguide.com/wellness/smartwatches/i-ran-10k-with-the-garmin-forerunner-165-vs-garmin-forerunner-170-is-the-new-watch-worth-the-upgrade" data-dimension112="7d0afdec-67f6-42ff-8372-f7b158113f32" data-action="Deal Block" data-label="Forerunner 170 as a successor to the Forerunner 165" data-dimension48="Forerunner 170 as a successor to the Forerunner 165" data-dimension25="$249">Forerunner 170 as a successor to the Forerunner 165</a>, but the older model is $100 cheaper right now owing to this deal. The new watch has more training analysis features and an upgraded user interface, but the Forerunner 165 is just as accurate and packs in all the essentials runners need for a lot less.<a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CWB662HK" target="_blank" rel="nofollow" data-dimension112="7d0afdec-67f6-42ff-8372-f7b158113f32" data-action="Deal Block" data-label="Forerunner 170 as a successor to the Forerunner 165" data-dimension48="Forerunner 170 as a successor to the Forerunner 165" data-dimension25="$249">View Deal</a></p></div><div class="product"><a data-dimension112="bc8ad38c-6537-4759-86cf-0b36aff1c12e" data-action="Deal Block" data-label="its successor the Forerunner 570" data-dimension48="its successor the Forerunner 570" data-dimension25="$349" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Whitestone/dp/B0BS1T7G8S" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1143px;"><p class="vanilla-image-block" style="padding-top:128.96%;"><img id="SbdUfSRENkHrbVN4umrqwG" name="Forerunner265.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/SbdUfSRENkHrbVN4umrqwG.jpg" mos="" align="middle" fullscreen="" width="1143" height="1474" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 265 is on sale for the same price as the new Forerunner 170 Music, and it’s $100 cheaper than <a href="https://www.tomsguide.com/wellness/fitness-trackers/garmin-forerunner-265-vs-forerunner-570-which-running-watch-should-you-buy" data-dimension112="bc8ad38c-6537-4759-86cf-0b36aff1c12e" data-action="Deal Block" data-label="its successor the Forerunner 570" data-dimension48="its successor the Forerunner 570" data-dimension25="$349">its successor the Forerunner 570</a>. It’s a lightweight running and triathlon watch with a bright AMOLED display and dual-band GPS — something you don’t get on the Forerunner 170. <a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Whitestone/dp/B0BS1T7G8S" target="_blank" rel="nofollow" data-dimension112="bc8ad38c-6537-4759-86cf-0b36aff1c12e" data-action="Deal Block" data-label="its successor the Forerunner 570" data-dimension48="its successor the Forerunner 570" data-dimension25="$349">View Deal</a></p></div><div class="product"><a data-dimension112="c0082443-f166-4b33-be86-a4aaf0860f67" data-action="Deal Block" data-label="Garmin Forerunner 970" data-dimension48="Garmin Forerunner 970" data-dimension25="$499" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Colorful-Training/dp/B0BS1XZY7T" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:550px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="nPKQkXYFp7F57HHTm6DHEL" name="Garmin - Forerunner 965.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/nPKQkXYFp7F57HHTm6DHEL.jpg" mos="" align="middle" fullscreen="" width="550" height="550" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-the-garmin-forerunner-970-for-six-months-here-are-my-long-term-pros-and-cons" data-dimension112="c0082443-f166-4b33-be86-a4aaf0860f67" data-action="Deal Block" data-label="Garmin Forerunner 970" data-dimension48="Garmin Forerunner 970" data-dimension25="$499">Garmin Forerunner 970</a> is the best sports watch I’ve ever tested, but the older Forerunner 965 is not far off as good and it’s $150 cheaper than the new model in the sales. The Forerunner 965 has a light, attractive design and is packed with sports and navigation features, including offline maps.<a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Colorful-Training/dp/B0BS1XZY7T" target="_blank" rel="nofollow" data-dimension112="c0082443-f166-4b33-be86-a4aaf0860f67" data-action="Deal Block" data-label="Garmin Forerunner 970" data-dimension48="Garmin Forerunner 970" data-dimension25="$499">View Deal</a></p></div><div class="product"><a data-dimension112="3c5d94d9-5743-4399-a01b-51311dd6d649" data-action="Deal Block" data-label="Epix Pro" data-dimension48="Epix Pro" data-dimension25="$499" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFDZ6KB" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1427px;"><p class="vanilla-image-block" style="padding-top:90.82%;"><img id="7EiWpH6cPgTeBzZ4anc5h8" name="Garmin Epix Pro" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7EiWpH6cPgTeBzZ4anc5h8.png" mos="" align="middle" fullscreen="" width="1427" height="1296" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The biggest saving you can get on a Garmin right now is this $500 discount on the <a href="https://www.tomsguide.com/wellness/smartwatches/is-the-garmin-epix-pro-still-worth-it-in-2026-ive-tested-the-newer-garmin-fenix-8-and-fenix-8-pro-and-the-epix-pro-is-a-great-value-alternative" data-dimension112="3c5d94d9-5743-4399-a01b-51311dd6d649" data-action="Deal Block" data-label="Epix Pro" data-dimension48="Epix Pro" data-dimension25="$499">Epix Pro</a>, which is hundreds of dollars cheaper than the newer Fenix 8 and Fenix 8 Pro as a result. The Epix Pro is a rugged AMOLED watch with great battery life and sports and navigation features, and has everything you need to train for your event or embark on epic adventures in the wilderness.<a class="view-deal button" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFDZ6KB" target="_blank" rel="nofollow" data-dimension112="3c5d94d9-5743-4399-a01b-51311dd6d649" data-action="Deal Block" data-label="Epix Pro" data-dimension48="Epix Pro" data-dimension25="$499">View Deal</a></p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I walked 5,500 steps with the Apple Watch SE 3 vs Garmin Forerunner 70 — and the results surprised me  ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-walked-5-500-steps-with-the-apple-watch-se-3-vs-garmin-forerunner-70-and-this-smartwatch-won</link>
                                                                            <description>
                            <![CDATA[ I tested Garmin's new entry-level running watch, the Forerunner 70, against Apple's budget-friendly SE 3. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cH7EfVqNrqGKRaJKY5vCzm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uzCTGKb7YrpPFJxNBc5Mmk-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 22 May 2026 06:15:00 +0000</pubDate>                                                                                                                                <updated>Fri, 22 May 2026 14:04:10 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/uzCTGKb7YrpPFJxNBc5Mmk-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Apple Watch SE 3 next to the Garmin Forerunner 70]]></media:description>                                                            <media:text><![CDATA[Close-up of the Apple Watch SE 3 next to the Garmin Forerunner 70]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Apple Watch SE 3 next to the Garmin Forerunner 70]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uzCTGKb7YrpPFJxNBc5Mmk-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Apple Watch SE 3 vs Garmin Forerunner 70: which is the better smartwatch for fitness tracking? Both devices start at $249, and even though the SE 3 has more smart features and the Forerunner 70 has more training tools for runners, when it comes to basic fitness tracking chops, the two are pretty evenly matched.</p><p>So, to determine which smartwatch is best, I tracked a 5,500-step walk with one device on either wrist while manually counting my steps as my primary control. As a control for climb, pace, and distance, I also logged the walk using the Strava app on my iPhone 16 Plus. </p><p>Which smartwatch, the <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-se-3-review">Apple Watch SE 3</a> or <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-took-my-first-jog-with-garmins-new-entry-level-running-watch-5-things-to-know-about-the-forerunner-70">Garmin Forerunner 70</a>, aligned more closely with the control data? Read on. </p><h3 class="article-body__section" id="section-i-walked-5-000-steps-with-the-apple-watch-se-3-vs-garmin-forerunner-70"><span>I walked 5,000 steps with the Apple Watch SE 3 vs Garmin Forerunner 70</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4701px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="ivvtovzfPqH589zbvVpFuk" name="Forerunner70-SE3-03" alt="Close-up of the Apple Watch SE 3 next to the Garmin Forerunner 70" src="https://cdn.mos.cms.futurecdn.net/ivvtovzfPqH589zbvVpFuk.jpg" mos="" align="middle" fullscreen="" width="4701" height="2644" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>While the Garmin Forerunner just arrived this month and is currently being reviewed, the SE 3 debuted last fall and is already considered one of the <a href="https://www.tomsguide.com/us/best-cheap-smartwatches,review-6342.html#section-best-cheap-apple-watch">best budget smartwatches</a> of 2026. Moreover, I’ve already had the chance to compare its fitness-tracking abilities head-to-head with the competition.</p><p>For example, and much to my surprise, when I tested the <a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-550-steps-with-the-apple-watch-11-vs-apple-watch-se-3-and-im-genuinely-surprised-by-the-results">Apple Watch SE 3 vs the Series 11</a>, a more premium device, the former proved (slightly) more accurate. Of course, that’s just one test. However, when I pitted the <a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-7-500-steps-with-the-apple-watch-se-3-vs-amazfit-active-max-and-theres-a-clear-winner#section-apple-watch-se-3-vs-amazfit-active-max-and-the-winner-is">SE 3 vs the Amazfit Active Max</a>, Apple’s entry-level watch again came out on top.</p><p>Does the trend continue when the Apple Watch SE 3 goes up against the newer Garmin Forerunner 70? Find the results of my 5,500-step walk test below.</p><div class="product"><a data-dimension112="1876c692-8105-42dd-b725-096109152401" data-action="Deal Block" data-label="The Apple Watch SE 3 is my favorite full-featured smartwatch for the money in 2026, boasting loads of smart features, safety tools, and health/fitness tracking tech." data-dimension48="The Apple Watch SE 3 is my favorite full-featured smartwatch for the money in 2026, boasting loads of smart features, safety tools, and health/fitness tracking tech." data-dimension25="$" href="https://www.amazon.com/Apple-Smartwatch-Midnight-Aluminum-Always/dp/B0FQFW7M9H/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1273px;"><p class="vanilla-image-block" style="padding-top:117.83%;"><img id="2bCWceQAvz6EQqKG8LB4ee" name="Apple Watch SE 3 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/2bCWceQAvz6EQqKG8LB4ee.png" mos="" align="middle" fullscreen="" width="1273" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Apple Watch SE 3 is my favorite full-featured smartwatch for the money in 2026, boasting loads of smart features, safety tools, and health/fitness tracking tech. <a class="view-deal button" href="https://www.amazon.com/Apple-Smartwatch-Midnight-Aluminum-Always/dp/B0FQFW7M9H/" target="_blank" rel="nofollow" data-dimension112="1876c692-8105-42dd-b725-096109152401" data-action="Deal Block" data-label="The Apple Watch SE 3 is my favorite full-featured smartwatch for the money in 2026, boasting loads of smart features, safety tools, and health/fitness tracking tech." data-dimension48="The Apple Watch SE 3 is my favorite full-featured smartwatch for the money in 2026, boasting loads of smart features, safety tools, and health/fitness tracking tech." data-dimension25="$">View Deal</a></p></div><div class="product"><a data-dimension112="2f2418f1-4a2c-49c3-8262-dd581a348fcf" data-action="Deal Block" data-label="The Garmin Forerunner 70 is light on smart features but goes big on premium training and recovery tools for runners. Plus, it's easy-wearing and long-lasting, with a bright, easy-to-read screen." data-dimension48="The Garmin Forerunner 70 is light on smart features but goes big on premium training and recovery tools for runners. Plus, it's easy-wearing and long-lasting, with a bright, easy-to-read screen." data-dimension25="$" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Advanced-Training/dp/B0H1F9VT52/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1042px;"><p class="vanilla-image-block" style="padding-top:103.45%;"><img id="JxZy6K7r5Qf8aMgGg2NDqQ" name="Screenshot 2026-05-19 at 2.33.47 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/JxZy6K7r5Qf8aMgGg2NDqQ.png" mos="" align="middle" fullscreen="" width="1042" height="1078" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Forerunner 70 is light on smart features but goes big on premium training and recovery tools for runners. Plus, it's easy-wearing and long-lasting, with a bright, easy-to-read screen.<a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner%C2%AE-Smartwatch-Advanced-Training/dp/B0H1F9VT52/" target="_blank" rel="nofollow" data-dimension112="2f2418f1-4a2c-49c3-8262-dd581a348fcf" data-action="Deal Block" data-label="The Garmin Forerunner 70 is light on smart features but goes big on premium training and recovery tools for runners. Plus, it's easy-wearing and long-lasting, with a bright, easy-to-read screen." data-dimension48="The Garmin Forerunner 70 is light on smart features but goes big on premium training and recovery tools for runners. Plus, it's easy-wearing and long-lasting, with a bright, easy-to-read screen." data-dimension25="$">View Deal</a></p></div><h3 class="article-body__section" id="section-apple-watch-se-3-vs-garmin-forerunner-70-test-results"><span>Apple Watch SE 3 vs Garmin Forerunner 70: Test results</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Apple Watch SE 3</p></th><th  ><p>Garmin Forerunner 70</p></th><th  ><p>Control</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Step count</strong></p></td><td  ><p>5,434 steps</p></td><td  ><p>5,528 steps</p></td><td  ><p>5,500 steps (manual count)</p></td></tr><tr><td class="firstcol " ><p><strong>Distance</strong></p></td><td  ><p>2.80 miles</p></td><td  ><p>2.76 miles </p></td><td  ><p>2.83 miles (Strava)</p></td></tr><tr><td class="firstcol " ><p><strong>Elevation gain</strong></p></td><td  ><p>457 feet</p></td><td  ><p>381 feet</p></td><td  ><p> 437 feet (Strava)</p></td></tr><tr><td class="firstcol " ><p><strong>Average pace</strong></p></td><td  ><p>18 mins 24 secs per mile</p></td><td  ><p> 18 mins 09 secs per mile</p></td><td  ><p>17 mins 51 secs per mile (Strava)</p></td></tr><tr><td class="firstcol " ><p><strong>Average heart rate</strong></p></td><td  ><p>129 bpm</p></td><td  ><p>125 bpm</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Max heart rate</strong></p></td><td  ><p>157 bpm</p></td><td  ><p>158 bpm</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Total calories burned</strong></p></td><td  ><p>394 calories</p></td><td  ><p>341 calories</p></td><td  ><p>n/a</p></td></tr></tbody></table></div><p>Honestly, there's no real surprises here: Both the Apple Watch SE 3 and Garmin Forerunner 70 produced remarkably accurate totals, each within one hundred steps of my manual count. By comparison, Strava noted 5,518 total steps during the duration of my roughly 50-minute walk.</p><p>Distance data is consistent enough for my liking across the board. Apple's elevation gain data — this was on a hilly walk — appears slightly inflated compared to Strava, but it's still within the ballpark of acceptable. </p><p>The Garmin Forerunner 70, meanwhile, appears to have significantly undercounted my upward efforts. This is likely because the device lacks an onboard barometric altimeter for tracking changes in elevation with precision. The SE 3 sports this valuable piece of tech, as do most modern smartphones. </p><p>Strava and Garmin report your average moving pace (shown above) and average elapsed pace for outdoor workouts like walks, runs, and hikes. Apple, meanwhile, only offers one pace metric and doesn't specify which, though I suspect it's the latter. As a result, pace data from even the <a href="https://www.tomsguide.com/best-picks/best-apple-watch">best Apple Watch</a> models tends to be a tad more sluggish than the competition, as is the case here.</p><p>The SE 3 calculated a slightly higher average heart rate, but both smartwatches noted roughly the same maximum. Calorie data is also pretty similar, with the Apple Watch reporting a bit more effort; a sensible conclusion given its higher average heart rate.</p><h3 class="article-body__section" id="section-apple-watch-se-3-vs-garmin-forerunner-70-winner"><span>Apple Watch SE 3 vs Garmin Forerunner 70: Winner</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5122px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="TZS3YLVn7NcrKUPMWUPXek" name="Forerunner70-SE3-01" alt="Close-up of the Apple Watch SE 3 next to the Garmin Forerunner 70" src="https://cdn.mos.cms.futurecdn.net/TZS3YLVn7NcrKUPMWUPXek.jpg" mos="" align="middle" fullscreen="" width="5122" height="2882" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Going on step count alone, the Apple Watch SE 3 undercounted by 66 steps, while the Garmin Forerunner 70 overcounted by just 28 steps. This makes Garmin's new entry-level running watch the official winner of this Apple versus Garmin showdown.</p><p>That said, Apple's distance, and more notably, elevation data lines up better with the control data than Garmin's. </p><p>Ultimately, both watches performed remarkably well, but if you're choosing between the two and tend to run/walk/hike in hilly locations, then the SE 3 will almost certainly be a better choice than the Forerunner 70 thanks to its onboard altimeter. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W0mwRO"></div>                            </div>                            <script src="https://kwizly.com/embed/W0mwRO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/ive-been-wearing-the-new-fitbit-air-all-week-3-reasons-why-im-obsessed-with-this-usd99-tracker">I’ve been wearing the new Fitbit Air all week — 3 reasons why I’m obsessed with this $99 tracker</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/7-hidden-apple-watch-features-i-swear-by">7 hidden Apple Watch features I swear by</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-and-the-winner-was-nearly-too-close-to-call">I walked 5,000 steps with the Garmin Forerunner 570 vs Apple Watch Ultra 3 — and the winner was nearly too close to call</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin Forerunner 70 vs Forerunner 55: Here's how Garmin's new entry-level running watch stacks up against its predecessor ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-vs-forerunner-55-biggest-upgrades-explained</link>
                                                                            <description>
                            <![CDATA[ The new Garmin Forerunner 70 represents a major upgrade over the five-year-old Forerunner 55. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">upP8RNEumt6eztARyDqAjW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2quFAiqLVqH7V8kHtbMdq3-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 20 May 2026 09:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 02 Jun 2026 00:54:53 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2quFAiqLVqH7V8kHtbMdq3-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up split screen showing the Garmin Forerunner 70 on the left and the Forerunner 55 on the right]]></media:description>                                                            <media:text><![CDATA[Close-up split screen showing the Garmin Forerunner 70 on the left and the Forerunner 55 on the right]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up split screen showing the Garmin Forerunner 70 on the left and the Forerunner 55 on the right]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2quFAiqLVqH7V8kHtbMdq3-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Garmin Forerunner 70 versus Garmin Forerunner 55: which entry-level running watch wins? The answer may seem obvious... the newer model is better, but depending on your needs and budget, that's not necessarily the case.</p><p>The Forerunner 55 debuted back in 2021, and ever since, it's topped our list of best smartwatch models for <a href="https://www.tomsguide.com/wellness/running/im-a-running-noob-doing-my-first-5k-heres-all-the-tech-im-using-to-cross-the-finish-line">newbie runners</a>. However, the Forerunner 70 just arrived —full review coming soon — and it's gunning to be the new sheriff of entry-level running ville. Does it have what it takes to beat its predecessor?</p><p>Below, I've compared the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-just-dropped-two-new-entry-level-smartwatches-why-the-garmin-forerunner-70-and-170-could-be-the-best-beginner-running-watches-in-2026">Garmin Forerunner 70</a> vs the <a href="https://www.tomsguide.com/reviews/garmin-forerunner-55">Forerunner 55</a> across six categories: cost, design, display, fitness and training tools, smart features, and battery life. For each of those, I've declared a winner, along with an overall winner between the two at the very end. </p><h3 class="article-body__section" id="section-specs-compared"><span>Specs compared</span></h3><p>But first, let's compare core specs between the Forerunner 70 and Forerunner 55.</p><div ><table><caption>Garmin Forerunner 70 vs 55</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>Forerunner 70</p></th><th  ><p>Forerunner 55</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Launch price</strong></p></td><td  ><p>$249</p></td><td  ><p>$199</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>42.6 x 42.6 x 11.9 mm</p></td><td  ><p>42 x 42 x 11.6 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p> 40 g </p></td><td  ><p>37 g</p></td></tr><tr><td class="firstcol " ><p><strong>Display type </strong></p></td><td  ><p>AMOLED</p></td><td  ><p>MIP</p></td></tr><tr><td class="firstcol " ><p><strong>Display size</strong></p></td><td  ><p>1.2-inch</p></td><td  ><p>1.04-inch</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>13 days</p></td><td  ><p>14 days</p></td></tr><tr><td class="firstcol " ><p><strong>GPS battery life</strong></p></td><td  ><p>23 hours</p></td><td  ><p>20 hours</p></td></tr><tr><td class="firstcol " ><p><strong>Water resistance </strong></p></td><td  ><p>50 meters</p></td><td  ><p>50 meters</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-forerunner-70-vs-55-cost"><span>Forerunner 70 vs 55: Cost</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="v54tZgdMauYQQwgEj3RKNi" name="TG_Garmin_forerunner-55_4.jpg" alt="Garmin Forerunner 55 review" src="https://cdn.mos.cms.futurecdn.net/v54tZgdMauYQQwgEj3RKNi.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Garmin Forerunner 55 debuted at $50 less than the Forerunner 70, $199 versus $249. However, $199 in 2021 is worth roughly $240 in 2026, accounting for inflation, so the actual price of each is about the same.</p><p>That said, the Forerunner 55 can be picked up in 2026 for $169 or less, making it the better value between the two watches. </p><p><em><strong>Winner: </strong></em><em>Garmin Forerunner 55</em></p><div class="product"><a data-dimension112="b334a82b-e9fa-4342-87e9-c6330cfedf5a" data-action="Deal Block" data-label="Garmin's new entry-level running watch is positively brimming with high-end tools and metrics to help runners train and recover like a pro. It also boasts a bright, AMOLED screen and fantastic battery life." data-dimension48="Garmin's new entry-level running watch is positively brimming with high-end tools and metrics to help runners train and recover like a pro. It also boasts a bright, AMOLED screen and fantastic battery life." data-dimension25="$249" href="https://www.garmin.com/en-US/p/1941179/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1042px;"><p class="vanilla-image-block" style="padding-top:103.45%;"><img id="JxZy6K7r5Qf8aMgGg2NDqQ" name="Screenshot 2026-05-19 at 2.33.47 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/JxZy6K7r5Qf8aMgGg2NDqQ.png" mos="" align="middle" fullscreen="" width="1042" height="1078" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Garmin's new entry-level running watch is positively brimming with high-end tools and metrics to help runners train and recover like a pro. It also boasts a bright, AMOLED screen and fantastic battery life. <a class="view-deal button" href="https://www.garmin.com/en-US/p/1941179/" target="_blank" rel="nofollow" data-dimension112="b334a82b-e9fa-4342-87e9-c6330cfedf5a" data-action="Deal Block" data-label="Garmin's new entry-level running watch is positively brimming with high-end tools and metrics to help runners train and recover like a pro. It also boasts a bright, AMOLED screen and fantastic battery life." data-dimension48="Garmin's new entry-level running watch is positively brimming with high-end tools and metrics to help runners train and recover like a pro. It also boasts a bright, AMOLED screen and fantastic battery life." data-dimension25="$249">View Deal</a></p></div><div class="product"><a data-dimension112="714fc967-bab2-4045-81f4-eab97ac5b4bc" data-action="Deal Block" data-label="The Forerunner 55 is a bit long in the tooth, but it still provides lots of basic workout tracking features in a well-built package with solid battery performance at a cost that's hard to argue with." data-dimension48="The Forerunner 55 is a bit long in the tooth, but it still provides lots of basic workout tracking features in a well-built package with solid battery performance at a cost that's hard to argue with." data-dimension25="$169" href="https://www.garmin.com/en-US/p/741137/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:116.93%;"><img id="kXf4oWUAmgg8uKmAyBsVCj" name="Garmin-Forerunner-55b.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kXf4oWUAmgg8uKmAyBsVCj.jpg" mos="" align="middle" fullscreen="" width="1500" height="1754" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 55 is a bit long in the tooth, but it still provides lots of basic workout tracking features in a well-built package with solid battery performance at a cost that's hard to argue with. <a class="view-deal button" href="https://www.garmin.com/en-US/p/741137/" target="_blank" rel="nofollow" data-dimension112="714fc967-bab2-4045-81f4-eab97ac5b4bc" data-action="Deal Block" data-label="The Forerunner 55 is a bit long in the tooth, but it still provides lots of basic workout tracking features in a well-built package with solid battery performance at a cost that's hard to argue with." data-dimension48="The Forerunner 55 is a bit long in the tooth, but it still provides lots of basic workout tracking features in a well-built package with solid battery performance at a cost that's hard to argue with." data-dimension25="$169">View Deal</a></p></div><h3 class="article-body__section" id="section-forerunner-70-vs-55-design"><span>Forerunner 70 vs 55: design</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5050px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="x6siTJN53QFG9ieoPWKTiM" name="Forerunner70-06" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/x6siTJN53QFG9ieoPWKTiM.jpg" mos="" align="middle" fullscreen="" width="5050" height="2841" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>In terms of physical footprint and button placement, the Forerunner 70 is essentially a match with the Forerunner 55. Sure, the newer model is ever so slightly larger — I'm talking percentages of millimeters here — and 3 g heavier, but both wear comfortably on my 6.5-inch wrist. </p><p>While the Forerunner 55 is a button-only affair, the Forerunner 70 combines touch sensitivity with physical controls, five buttons in total (just like on the Forerunner 55). Both devices feature a reasonably resilient plastic case with 50 meters of water resistance, enough for short surface-level swims. </p><p>As a whole, ever-so-slight differences aside, these two watches are basically the same when it comes to design. </p><p><em><strong>Winner: </strong></em><em>draw</em></p><h3 class="article-body__section" id="section-forerunner-70-vs-55-display"><span>Forerunner 70 vs 55: Display</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4460px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="z9A3xuNVMvmhF3STJiiFRM" name="Forerunner70-04" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/z9A3xuNVMvmhF3STJiiFRM.jpg" mos="" align="middle" fullscreen="" width="4460" height="2509" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>This is where the newer model starts to outshine its predecessor. While the Forerunner 55 sports a rather low-contrast 1.04-inch Memory in Pixel (MIP) display, the Forerunner 70 features a bigger, brighter, and better-saturated 1.2-inch AMOLED touchscreen display. </p><p>Both are visible in bright daylight, but the Forerunner 70's display is overall more engaging to interact with. In terms of protection, the Forerunner 55 and 60 both use chemically-treated glass, rather than a tougher sapphire crystal, but a slightly raised bezel on each provides additional protection from bumps and scratches. </p><p><em><strong>Winner:</strong></em><em> Garmin Forerunner 70</em></p><h3 class="article-body__section" id="section-forerunner-70-vs-55-fitness-and-training"><span>Forerunner 70 vs 55: Fitness and training</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5011px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="mKcWHy4FyfXAdxg6cMjXUM" name="Forerunner70-02" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/mKcWHy4FyfXAdxg6cMjXUM.jpg" mos="" align="middle" fullscreen="" width="5011" height="2818" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>When it comes to tracking running/workout basics, both the Forerunner 55 and 70 provide insights into your distance, pace, speed, and heart rate. You also get recovery advice, race time predictions, pacing advice, and daily workout suggestions from either model, along with fairly detailed sleep reports and Garmin's dynamic Body Battery metric. </p><p>However, the Forerunner 70 offers a handful of high-end training tools absent on the Forerunner 55, while supporting a wide range of workout types beyond running; 80+ compared to 18 for the Forerunner 55.</p><p>The Foerunner 70's high-end training tools include the brand's handy Training Load, Training Status, and Training Readiness metrics to help you avoid overexertion, along with comprehensive running dynamic insights into ground contact time, vertical oscillation, vertical ratio, and stride length. The Forerunner 70 additionally tracks your running power, VO2 Max, Heart Rate Variability (HRV), and blood oxygen saturation levels. </p><p>Both devices support Garmin Coach, adaptive training plans aimed at runners prepping for an upcoming event, but the feature is more customizable and comprehensive on the newer model. </p><p><em><strong>Winner:</strong></em><em> Garmin Forerunner 70</em></p><h3 class="article-body__section" id="section-forerunner-70-vs-55-smart-features"><span>Forerunner 70 vs 55: Smart features</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4066px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HVK2QdK8Ee7XrTFGS4JWJM" name="Forerunner70-05" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/HVK2QdK8Ee7XrTFGS4JWJM.jpg" mos="" align="middle" fullscreen="" width="4066" height="2287" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Neither the Forerunner 70 nor the Forerunner 55 offers anything close to the smart features you'll find on some of the <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch">best full-featured smartwatches</a> in 2026, like the <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-series-11-review">Apple Watch Series 11</a> and <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-went-hands-on-with-google-pixel-watch-4-and-it-could-be-my-new-favorite-smartwatch-for-android">Google Pixel Watch 4</a>, but both at least mirror smartphone notifications from Android and iOS devices,  provide music controls for your paired device, and offer basic safety features, including incident detection and Garmin's LiveTrack location-sharing tool.  </p><p><em><strong>Winner:</strong></em><em> draw</em></p><h3 class="article-body__section" id="section-forerunner-70-vs-55-battery-life"><span>Forerunner 70 vs 55: Battery life</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="TUGvp7Ffc9f5SuAK7vbtEj" name="TG_Garmin_forerunner-55_LISTING.jpg" alt="Garmin Forerunner 55 review" src="https://cdn.mos.cms.futurecdn.net/TUGvp7Ffc9f5SuAK7vbtEj.jpg" mos="" align="middle" fullscreen="" width="2000" height="1126" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Garmin)</span></figcaption></figure><p>Battery life is essentially the same between the Forerunner 55 and 70. The former is rated to last up to two weeks per charge in smartwatch mode compared to 13 days for the newer model. When using the onboard GPS to track outdoor workouts, the Forerunner 55 promises up to 20 hours of battery compared to between 16 and 23 hours for the Forerunner 70, depending on which GPS mode you use. </p><p><em><strong>Winner:</strong></em><em> draw</em></p><h3 class="article-body__section" id="section-verdict"><span>Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3765px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qf5HiAgQ35P8tkC8awxWQM" name="Forerunner70-03" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/qf5HiAgQ35P8tkC8awxWQM.jpg" mos="" align="middle" fullscreen="" width="3765" height="2118" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>The Garmin Forerunner 70 sports the same basic case design, dimensions, button layout, and battery life as the Forerunner 55. However, an upgraded display and massive expansion of its running toolkit make it a better choice for most users. Sure, it costs $80 more than its predecessor (as of writing), but that extra cash gets you quite a lot more smartwatch, IMHO.</p><p><em><strong>Overall winner: </strong></em><em>Garmin Forerunner 70</em></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-just-took-my-first-jog-with-garmins-new-entry-level-running-watch-5-things-to-know-about-the-forerunner-70">I just took my first jog with Garmin’s new entry-level running watch — 5 things to know about the Forerunner 70</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-vs-garmin-forerunner-170-the-main-differences-between-garmins-two-new-running-watches">Garmin Forerunner 70 vs Garmin Forerunner 170 — what are the main differences between Garmin’s two new running watches</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-ran-10k-with-the-garmin-forerunner-165-vs-garmin-forerunner-170-is-the-new-watch-worth-the-upgrade">I ran 10K with the Garmin Forerunner 165 vs Garmin Forerunner 170: is the new watch worth the upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I ran, cycled and worked out with the Garmin Forerunner 170 vs Coros Pace 4: here's the winner ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-ran-cycled-and-worked-out-with-the-garmin-forerunner-170-vs-coros-pace-4-which-is-better</link>
                                                                            <description>
                            <![CDATA[ I did a variety of workouts while wearing the Coros Pace 4 and Garmin Forerunner 170, and there are some key differences between them. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tFx3tTZ5SNfrZc8DxrkvzV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2UHfyQBcZQG2vGH3hWzZuU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 19 May 2026 08:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 15 Jun 2026 12:17:28 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2UHfyQBcZQG2vGH3hWzZuU-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Coros Pace 4 next to Garmin Forerunner 170 on a wrist]]></media:description>                                                            <media:text><![CDATA[Coros Pace 4 next to Garmin Forerunner 170 on a wrist]]></media:text>
                                <media:title type="plain"><![CDATA[Coros Pace 4 next to Garmin Forerunner 170 on a wrist]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2UHfyQBcZQG2vGH3hWzZuU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you’re looking for an affordable sports watch then the <a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-the-coros-pace-4-for-six-months-here-are-my-long-term-pros-and-cons">Coros Pace 4 </a>and <a href="https://www.tomsguide.com/wellness/smartwatches/i-ran-10k-with-the-garmin-forerunner-165-vs-garmin-forerunner-170-is-the-new-watch-worth-the-upgrade">Garmin Forerunner 170</a> should be near the top of your list. </p><p>Both are among the <a href="https://www.tomsguide.com/best-picks/best-running-watches">best running watches</a> in particular, and pack a lot of impressive features into small, featherweight designs that fit small wrists well.</p><p>I’ve been testing the two watches head-to-head for the past few days, using both to track an all-out 5K along with couple of other runs, an indoor bike ride and two strength workouts.</p><p>I’m a fan of both watches and they mostly offer similar features, but there are some pros and cons to each, with the Coros being cheaper and having longer battery life, while the Garmin has better smart features and a more polished user interface.</p><p>Here’s what I learned from testing the Garmin Forerunner 170 and Coros Pace 4 head-to-head.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-coros-pace-4-price"><span>Garmin Forerunner 170 vs Coros Pace 4: price</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bwDM6aooietb4LHovSS9GY" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/bwDM6aooietb4LHovSS9GY.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Coros Pace 4 costs $249 or $279 if you opt for the Coros Pace 4 Aluminium, which has a metal bezel.</p><p>It’s cheaper than the Garmin Forerunner 170, which is $299 for the standard model and $349 for the Forerunner 170 Music, which has music storage and WiFi. </p><div class="product"><a data-dimension112="b771c1db-4f3b-4492-8767-78bdfc78ab3f" data-action="Deal Block" data-label="The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165." data-dimension48="The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165." data-dimension25="$349" href="https://www.garmin.com/en-US/p/2014513/pn/010-03920-12/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:964px;"><p class="vanilla-image-block" style="padding-top:95.12%;"><img id="prtHi9JcAcmpjgcydbRB5j" name="Garmin Forerunner 170" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/prtHi9JcAcmpjgcydbRB5j.jpg" mos="" align="middle" fullscreen="" width="964" height="917" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165.<a class="view-deal button" href="https://www.garmin.com/en-US/p/2014513/pn/010-03920-12/" target="_blank" rel="nofollow" data-dimension112="b771c1db-4f3b-4492-8767-78bdfc78ab3f" data-action="Deal Block" data-label="The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165." data-dimension48="The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165." data-dimension25="$349">View Deal</a></p></div><div class="product"><a data-dimension112="45c1801c-fd24-409e-8740-e8c808532567" data-action="Deal Block" data-label="Coros Pace 4 Aluminum model" data-dimension48="Coros Pace 4 Aluminum model" data-dimension25="$249" href="https://www.amazon.com/COROS-Ultralight-Touchscreen-Features-Advanced/dp/B0FYGTCX83/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:831px;"><p class="vanilla-image-block" style="padding-top:131.53%;"><img id="myvKDNp3qYeHPKM4wyEs8n" name="Coros Pace 4" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/myvKDNp3qYeHPKM4wyEs8n.png" mos="" align="middle" fullscreen="" width="831" height="1093" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>In six months of testing, I've only come to like the Coros Pace 4 more and more, and it's an excellent value watch compared to other sports watches. I now wear the slightly pricier <a href="https://www.amazon.com/COROS-Ultralight-Touchscreen-Navigation-Run-Black/dp/B0GS1DYVPM" target="_blank" rel="sponsored" data-dimension112="45c1801c-fd24-409e-8740-e8c808532567" data-action="Deal Block" data-label="Coros Pace 4 Aluminum model" data-dimension48="Coros Pace 4 Aluminum model" data-dimension25="$249">Coros Pace 4 Aluminum model</a>, which has a metal bezel that gives it a more premium look.<a class="view-deal button" href="https://www.amazon.com/COROS-Ultralight-Touchscreen-Features-Advanced/dp/B0FYGTCX83/" target="_blank" rel="nofollow" data-dimension112="45c1801c-fd24-409e-8740-e8c808532567" data-action="Deal Block" data-label="Coros Pace 4 Aluminum model" data-dimension48="Coros Pace 4 Aluminum model" data-dimension25="$249">View Deal</a></p></div><p>There is the cheaper Garmin Forerunner 70 ($249), which has the same look as the Forerunner 170 but doesn’t have music, NFC payments or some of the sensors on the 170, like a barometer and altimeter.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-coros-pace-4-specs"><span> Garmin Forerunner 170 vs Coros Pace 4: specs</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3934px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rKN5V3oisQhSDPfFFFZY8Y" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:603,l:950,cw:3934,ch:2213,q:80/rKN5V3oisQhSDPfFFFZY8Y.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Coros Pace 4</strong></p></td><td  ><p><strong>Garmin Forerunner 170</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$249.99/£229.99; $279.99/£249.99 (Aluminium)</p></td><td  ><p>$299.99/£259.99; $349.99/£299.99 (Music)</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>43.4 x 11.8mm</p></td><td  ><p>42.6 x 11.9mm</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td></tr><tr><td class="firstcol " ><p><strong>Bezel</strong></p></td><td  ><p>Plastic or aluminium</p></td><td  ><p>Plastic</p></td></tr><tr><td class="firstcol " ><p><strong>Screen</strong></p></td><td  ><p>Glass</p></td><td  ><p>Glass</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>40-41g</p></td><td  ><p>41g</p></td></tr><tr><td class="firstcol " ><p><strong>Water resistance</strong></p></td><td  ><p>5ATM</p></td><td  ><p>5ATM</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (watch mode)</strong></p></td><td  ><p>Up to 19 days</p></td><td  ><p>Up to 10 days</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (GPS)</strong></p></td><td  ><p>24 hours (multi-band GPS, always-on)</p></td><td  ><p>14 hours (all-systems GPS, always-on)</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>4GB</p></td><td  ><p>4GB</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-coros-pace-4-design"><span>Garmin Forerunner 170 vs Coros Pace 4: design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4419px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="Md85t3aGguiNJUoVncLUpX" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:210,l:658,cw:4419,ch:2486,q:80/Md85t3aGguiNJUoVncLUpX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both watches have lightweight designs that are either all-plastic, or mostly-plastic if you opt for the Coros Pace 4 Aluminium, which has a metal bezel. There are more color options for the Forerunner 170 at the moment, including attractive teal and pink designs.</p><p>I like the look and feel of both watches — they’re very comfortable to wear 24/7 because they’re so small and light, and they still have bright 1.2in AMOLED displays that are easy to read during and outside workouts.</p><p>The Forerunner 170 has five buttons, whereas the Pace 4 has three buttons, one of which is a digital dial. I find this dial easy to trigger accidentally and overall slightly prefer the five-button design of the Forerunner 170, but it’s not a major difference.</p><p>Both watches have all the usual sensors on board, like an optical heart rate sensor, barometric altimeter and compass, and both have a 5ATM water resistance rating and 4GB of storage.  The Pace 4 has a mic you can use for voice commands and to take notes.</p><p>You can connect external sensors including cycling power meters and heart rate chest straps via Bluetooth on the Pace 4, and via Blutooth and ANT+ on the Forerunner 170.</p><p>The Pace 4 offers multi-band GPS tracking, whereas the Forerunner 170’s most accurate mode is all-systems GPS — more on how much of a difference that makes later.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-coros-pace-4-sports-tracking-and-training-analysis"><span>Garmin Forerunner 170 vs Coros Pace 4: Sports tracking and training analysis</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6WovMFCwRuCzJ873uSPDaX" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/6WovMFCwRuCzJ873uSPDaX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>A big plus point for the Coros Pace 4 is that it’s a full triathlon watch with a multisport mode, whereas the Forerunner 170 is more running-focused and doesn’t have a multisport mode. </p><p>Both watches offer a lot of different sports modes, including track run and open water swimming, and training analysis that includes a breakdown of your acute vs chronic training load, VO2 max estimates, race predictions and a recovery advisor.</p><p>One extra feature you get on the Forerunner 170 is Training Readiness, which is a score out of 100 rating the state of your body at that time, based on things like recent sleep and stress and training history.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-coros-pace-4-gps-hr-accuracy"><span>Garmin Forerunner 170 vs Coros Pace 4: GPS & HR accuracy</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZW3o5FaxbF2Apdf3d8mq7Y" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/ZW3o5FaxbF2Apdf3d8mq7Y.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Garmin’s decision not to give the Forerunner 170 multi-band GPS, which is available on its more expensive watches, is probably based on the fact it drains battery life quicker, and Garmin’s all-systems-on GPS tracking is accurate enough anyway.</p><p>On the latter point, it’s true that in my years of testing Garmin watches as a marathoner I’ve rarely, if ever, felt that the brand’s all-systems GPS wasn’t good enough, but I still prefer to use Garmin’s multi-band GPS when it’s available for the best possible accuracy, especially in city centers.</p><p>I’ve used the Coros Pace 4 for six months and it’s produced very accurate GPS tracking in multi-band mode, including <a href="https://www.tomsguide.com/wellness/smartwatches/i-ran-the-london-marathon-with-the-garmin-forerunner-970-vs-coros-pace-4-which-was-more-accurate">at the London Marathon</a>.</p><p>When testing the two watches head to head recently I found that they produced pretty much identical distance and pace stats, along with very similar GPS tracks, while running a 5K parkrun and on a 10-mile run in my local forest.</p><p>I’d still rather have multi-band myself, but so far in various tests with the Forerunner 170 the all-systems GPS has been reliably accurate, and it also was in my long-term testing of the Forerunner 165.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4912px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="V4H8H2fjTESjFwHkoDbPmX" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:430,l:466,cw:4912,ch:2763,q:80/V4H8H2fjTESjFwHkoDbPmX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With regards to the heart rate tracking of the two watches, in the workouts I’ve done so far both have been pretty good, but the Coros Pace 4 did have some erroneous spikes and didn’t match up as closely with the readings from a chest strap as the Forerunner 170.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-coros-pace-4-smart-features"><span>Garmin Forerunner 170 vs Coros Pace 4: smart features</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zTXL5Ynk3ARbP9fvYDv9hX" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/zTXL5Ynk3ARbP9fvYDv9hX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Smarts are an area where Garmin is well ahead of other sports watch manufacturers, and that’s the case with the Forerunner 170 vs the Pace 4.</p><p>The Forerunner 170 allows for much more customization of watch faces, including the colors used and stats on show, has more widgets like Sports Scores, offers NFC payments and the music model can link up with streaming services including Spotify as well as storing music files.</p><p>While the Coros Pace 4 does offer music storage, this is only for MP3 files; you can’t link it with a streaming service. It doesn’t offer NFC payments either, and doesn't have access to an app store like Garmin’s Connect IQ. </p><p>Both can control music playback on your phone, and one extra you do get with the Pace 4 is a mic you can use for voice commands like starting a timer or a workout.</p><p>Neither watch has offline maps, but both do offer breadcrumb navigation with turn-by-turn directions so you can follow routes through a line and pointer trail.</p><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-coros-pace-4-battery-life"><span>Garmin Forerunner 170 vs Coros Pace 4: battery life</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AkCFC93MfRnh8894F6YAsX" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/AkCFC93MfRnh8894F6YAsX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Garmin wins on smarts, but Coros wins on battery life. The Pace 4 offers up to 19 days of juice in watch mode, which drops to six days if you have the screen always-on, while the Forerunner 170 only offers 10 days of battery life and four days with the screen always-on.</p><p>The Pace 4 also offers more GPS battery life despite using the more power-intensive multi-band mode. You get 24 hours of multi-band tracking vs 14 hours of all-systems-on GPS with the Forerunner 170.</p><p>In my testing the Pace 4 routinely lasts five days when running every day with the screen always-on, even in the high mileage weeks of marathon training. </p><p>The Forerunner 170 has so far needed charging every three to four days in my testing, always with the screen always-on and running daily.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W09zMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W09zMO.js" async></script><h2 class="article-body__section" id="section-garmin-forerunner-170-vs-coros-pace-4-verdict"><span>Garmin Forerunner 170 vs Coros Pace 4: verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4190px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pG9UR6iF5QqkHZPPRQoBzX" name="Garmin Forerunner 170 vs Coros Pace 4" alt="Garmin Forerunner 170 vs Coros Pace 4" src="https://cdn.mos.cms.futurecdn.net/v2/t:430,l:823,cw:4190,ch:2357,q:80/pG9UR6iF5QqkHZPPRQoBzX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This is a really hard choice I will say there isn’t a bad call you can make here; both are excellent watches that I’ve enjoyed using and found reliably accurate.</p><p>I find the Garmin user interface a little slicker and more polished, and the Forerunner 170 has a lot of features you won’t get on the Pace 4, especially smart features.</p><p>For its part the Coros Pace 4 is a full triathlon watch with longer battery life and has multi-band GPS on board, even if this hasn’t proved a big difference-maker in testing so far.</p><p>The Coros is also cheaper, which could be the biggest difference of all, especially as the Pace 4 is $100 cheaper than the Forerunner 170 Music I’ve been testing. It’s still a lot more affordable even if you opt for the Pace 4 Aluminium for a more premium feel.</p><p>Having used the Pace 4 for a full marathon training block and found it so reliably good, I’d lean towards it myself given the saving and the fact I don’t use music or NFC payments on my watch. But if you need those features in particular the Forerunner 170 is the clear pick.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/running/i-test-running-shoes-for-a-living-and-you-dont-need-to-buy-the-latest-models-these-5-last-gen-shoes-are-just-as-good-and-often-on-sale">Forget pricey new running shoes — I would get these last-gen Hoka, Saucony and New Balance at a steep discount instead</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just spent 36 hours with Garmin’s new entry-level watch for runners — 5 things to know about the Garmin Forerunner 70 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-just-took-my-first-jog-with-garmins-new-entry-level-running-watch-5-things-to-know-about-the-forerunner-70</link>
                                                                            <description>
                            <![CDATA[ The Garmin Forerunner 70 is a massive upgrade over its predecessor, the five-year-old Forerunner 55. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vTV3CtXzjY6bXAAeppnuwD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/z9A3xuNVMvmhF3STJiiFRM-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 19 May 2026 05:15:00 +0000</pubDate>                                                                                                                                <updated>Wed, 20 May 2026 22:11:14 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/z9A3xuNVMvmhF3STJiiFRM-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Forerunner 70 entry-level running watch in white]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Forerunner 70 entry-level running watch in white]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Forerunner 70 entry-level running watch in white]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/z9A3xuNVMvmhF3STJiiFRM-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I just got back from my first jog with the Garmin Forerunner 70, the brand's new entry-level smartwatch for runners. As a <a href="https://www.tomsguide.com/wellness/running/im-a-running-noob-doing-my-first-5k-heres-all-the-tech-im-using-to-cross-the-finish-line">newbie runner</a> myself who just recently <a href="https://www.tomsguide.com/wellness/fitness/i-ran-a-5k-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-5-things-i-learned">ran his first 5K</a>, I've been eager to get my hands on the Forerunner 70 ever since its debut.</p><p>A serious upgrade over its predecessor, the five-year-old <a href="https://www.tomsguide.com/reviews/garmin-forerunner-55">Garmin Forerunner 55</a>, the new Garmin Forerunner 70 might just be the <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch">best smartwatch</a> for beginner runners in 2026. Of course, I'll need to spend more than 36 hours with the device to make that call; stay tuned for my full review coming late next week. </p><p>In the meantime, here are the five most important things you should know about the Garmin Forerunner 70, including analysis on its launch price, design, running tools, smart features, and battery performance. </p><h3 class="article-body__section" id="section-1-50-pricier-than-its-predecessor"><span>1. $50 pricier than its predecessor</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3136px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2quFAiqLVqH7V8kHtbMdq3" name="Forerunner55-v-70" alt="Close-up split screen showing the Garmin Forerunner 70 on the left and the Forerunner 55 on the right" src="https://cdn.mos.cms.futurecdn.net/2quFAiqLVqH7V8kHtbMdq3.jpg" mos="" align="middle" fullscreen="" width="3136" height="1764" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Garmin Forerunner 70 replaces the Forerunner 55 in the brand's lineup as the new entry-level option for runners. However, while the Forerunner 55 debuted with a $199 price tag, Garmin upped the cost of entry with the Forerunner 70 to <a href="https://www.garmin.com/en-US/p/1941179/" target="_blank" rel="nofollow">$249 via Garmin directly</a>.</p><p>To be fair, the Forerunner 55 debuted in June 2021, nearly five years ago, and accounting for inflation, that $199 launch price is more like ~$240 in 2026 dollars. Still, the Forerunner 55 has consistently sold for closer to $169 for over a year, making the price hike on the Forerunner 70 feel more extreme. </p><p>Ultimately, the newer model offers more than enough upgrades to justify the increase, IMHO, including a bright AMOLED screen instead of a less-vibrant MIP display. It also sports one of Garmin's newer health sensor arrays (though not the latest) and offers additional training tools for runners, normally reserved for higher-end models, including training load and status, personalized workout plans, race time predictions, and more. </p><h3 class="article-body__section" id="section-2-same-design-as-forerunner-170"><span>2. Same design as Forerunner 170</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5050px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="x6siTJN53QFG9ieoPWKTiM" name="Forerunner70-06" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/x6siTJN53QFG9ieoPWKTiM.jpg" mos="" align="middle" fullscreen="" width="5050" height="2841" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>The Garmin Forerunner 70 launched alongside the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-just-dropped-two-new-entry-level-smartwatches-why-the-garmin-forerunner-70-and-170-could-be-the-best-beginner-running-watches-in-2026">Forerunner 170 and 170 Music</a>. The 170 and 170 Music are a step-up from the 70 in terms of price and features; however, the design is essentially the same across all three devices.</p><p>The Forerunner 70 and 170 each sport the same bright and well-saturated 1.2-inch AMOLED touchscreen with ample maximum brightness for daytime viewing. The physical footprint is also the same: both have a manageable case diameter of 42.6mm with a weight of roughly 40 g. That's a little heavier than the <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-series-11-review">Apple Watch Series 11</a>, one of the <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch#section-best-smartwatch-for-iphone">best smartwatches</a> in 2026, but not by much.</p><p>Given these are entry-level and mid-tier wearables, it's not surprising the cases are made entirely of reinforced polymer (plastic), while the protective glass is a 'chemically strengthened' affair rather than the more durable sapphire crystal found on higher-end Garmins.</p><p>All of Garmin's Forerunner models are now touch-sensitive, and the Forerunner 70 and 170, like higher-end Forerunners, pair touch controls with ample physical ones. As someone who loathes operating a touchscreen with sweaty hands post-workout, the five buttons along the edge of the case are a godsend. </p><h3 class="article-body__section" id="section-3-lots-of-heady-training-tools-for-runners"><span>3. Lots of heady training tools for runners </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5011px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="mKcWHy4FyfXAdxg6cMjXUM" name="Forerunner70-02" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/mKcWHy4FyfXAdxg6cMjXUM.jpg" mos="" align="middle" fullscreen="" width="5011" height="2818" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Garmin went ahead and jam-packed the Forerunner 70 with all sorts of high-end training tools and metrics for runners that were previously only found on pricier Forerunner models. </p><p>The include access to Garmin Run Coach personalized training plans for events like a 5K, 10K, half, or full marathon. The Forerunner 70 can also generate custom daily workouts, even if you're not a runner, and can ping you with morning and nightly health reports (if you like). </p><p>In terms of running metrics, the Forerunner 70 supports Garmin's useful training status and training load insights, provides race time predictions, monitors all sorts of running dynamics, like ground contact time, vertical oscillation, vertical Ratio, and stride length, while additionally tracking your VO2 max, heart rate variability, running power, and recovery time. </p><p>You can also predownload and sync running courses to the watch for race day navigation. Not a runner? No problem. The Forerunner 70 supports over 80 workout types.</p><h3 class="article-body__section" id="section-4-no-altimeter-thermometer-nfc-or-music-storage"><span>4. No altimeter, thermometer, NFC, or music storage </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4066px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HVK2QdK8Ee7XrTFGS4JWJM" name="Forerunner70-05" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/HVK2QdK8Ee7XrTFGS4JWJM.jpg" mos="" align="middle" fullscreen="" width="4066" height="2287" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>To differentiate between the pricier Forerunner 170 and 170 Music, the Forerunner 70 omits several features and pieces of onboard tech, including most notably a barometric altimeter for precise elevation tracking. Now, this doesn't mean that the Forerunner 70 won't provide you with climb data — it can still use its GPS for that task — the results may just not be as accurate as the Forerunner 170.</p><p>There's also no body temperature sensor, which Garmin watches use to monitor women's health trends, sleep quality, and potential signs of illness.</p><p>On the smart feature side of things, you won't find any onboard storage for saving playlists and podcasts for offline listening (sans smartphone). The Forerunner 70 also doesn't have NFC, so you can't use Garmin Pay. </p><h3 class="article-body__section" id="section-5-up-to-13-days-of-battery-life"><span>5. Up to 13 days of battery life</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4659px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="iwTvdpwLVAJFPsBxnhV2JM" name="Forerunner70-07" alt="Close-up of the Garmin Forerunner 70 entry-level running watch in white" src="https://cdn.mos.cms.futurecdn.net/iwTvdpwLVAJFPsBxnhV2JM.jpg" mos="" align="middle" fullscreen="" width="4659" height="2620" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Despite upgrading to a more battery-intensive display type, the Garmin Forerunner 70 offers nearly the same battery life rating as its predecessor, the Forerunner 50. The newer model gets up to 13 days per charge compared to 14 days for the older one.</p><p>If you switch on the always-on display, that rating drops to five days per charge, which is still respectable. When using GPS to track an outdoor workout, you can expect between 16 and 23 hours of usage. </p><p>Ultimately, price increase aside, my initial impressions of the new Garmin Forerunner 70 are nothing short of positive. Now, it's time to test the watch against some of the <a href="https://www.tomsguide.com/us/best-gps-watches,review-2638.html">best sports watches</a> for workout tracking in 2026, and see how it holds up. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Oza4mW"></div>                            </div>                            <script src="https://kwizly.com/embed/Oza4mW.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/forget-the-whoop-5-0-the-new-fitbit-air-is-a-screen-less-subscription-free-fitness-tracker-for-the-masses">Forget the Whoop 5.0 — The new Fitbit Air is a screen-less, subscription-free fitness tracker for the masses</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-just-ran-my-first-5k-heres-how-i-conquered-the-pre-race-jitters">I just ran my first 5K — 5 practical ways I conquered my pre-race nerves for a strong finish</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-tested-the-usd79-amazfit-bip-6-vs-the-usd249-apple-watch-se-3-and-the-cheaper-smartwatch-is-a-lot-better-than-i-thought">I tested the $79 Amazfit Bip 6 vs the $249 Apple Watch SE 3 — and the cheaper smartwatch is a lot better than I thought</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I ran 10K with the Garmin Forerunner 165 vs Garmin Forerunner 170: is the new watch worth the upgrade? ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-ran-10k-with-the-garmin-forerunner-165-vs-garmin-forerunner-170-is-the-new-watch-worth-the-upgrade</link>
                                                                            <description>
                            <![CDATA[ The Garmin Forerunner 170 replaces the popular Garmin Forerunner 165 in the brand’s line-up, so is it a worthwhile upgrade on the older watch? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">aSsYibtY7cgQdYPcAyjYtn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/i2tQjgAyVUPWvYNKLisGRi-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 16 May 2026 10:30:00 +0000</pubDate>                                                                                                                                <updated>Mon, 18 May 2026 08:47:50 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/i2tQjgAyVUPWvYNKLisGRi-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 165 vs Garmin Forerunner 170]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 165 vs Garmin Forerunner 170]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 165 vs Garmin Forerunner 170]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/i2tQjgAyVUPWvYNKLisGRi-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Garmin launched a lot of watches in 2025 but didn’t update the more affordable end of its Forerunner line, so it’s not a surprise that the first major Garmin release of 2026 is an entry-level running watch.</p><p><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-just-dropped-two-new-entry-level-smartwatches-why-the-garmin-forerunner-70-and-170-could-be-the-best-beginner-running-watches-in-2026">Three entry-level running watches</a> in fact. The Garmin Forerunner 70 is the most affordable new option in the Garmin lineup, replacing the <a href="https://www.tomsguide.com/reviews/garmin-forerunner-55">Forerunner 55</a>, while the Garmin Forerunner 170 and Forerunner 170 Music replace the<a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-165"> Garmin Forerunner 165</a>.</p><p>The Forerunner 165 has been one of the <a href="https://www.tomsguide.com/best-picks/best-running-watches">best running watches</a> on the market since it launched, so I was keen to see if the Forerunner 170 was a worthy upgrade. </p><p>I tested both watches out with a 10K run to check their GPS and HR accuracy, as well as looking at the hardware and software updates Garmin has made to the new watch.</p><h3 class="article-body__section" id="section-garmin-forerunner-165-vs-garmin-forerunner-170-price"><span>Garmin Forerunner 165 vs Garmin Forerunner 170: price</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4876px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="n9mZdukDS6ogxqXRqn4QpR" name="Garmin Forerunner 165 vs Garmin Forerunner 170" alt="Garmin Forerunner 165 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:265,l:384,cw:4876,ch:2743,q:80/n9mZdukDS6ogxqXRqn4QpR.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Forerunner 165 and Forerunner 170 both come in two models, one that offers music storage and one that doesn’t. The standard Forerunner 165 is $249 and the Forerunner 165 Music is $299, while the Forerunner 170 is $299 for the standard watch and $349 for the music model.</p><p>That’s at full price, but the Forerunner 165 is almost always on sale so the likelihood is you’ll pay $100 more for the Forerunner 170 rather than $50.</p><p>There is also the new Forerunner 70 to consider, which is $249 and doesn’t offer music or NFC payments, as well as not having an altimeter or barometer, but otherwise mostly has the same features as the Forerunner 170.</p><div class="product"><a data-dimension112="801c052b-19ce-4212-bc2a-14298dedad05" data-action="Deal Block" data-label="The Forerunner 165 is now a regular on sale so you should be able to get it for $100 more than the Forerunner 170, including right now at Amazon where the older watch is reduced by $50." data-dimension48="The Forerunner 165 is now a regular on sale so you should be able to get it for $100 more than the Forerunner 170, including right now at Amazon where the older watch is reduced by $50." data-dimension25="$249" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CWB662HK" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:675px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="7GxV2AK4CUU5iZBg96GNiF" name="Garmin Forerunner 165 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7GxV2AK4CUU5iZBg96GNiF.jpg" mos="" align="middle" fullscreen="" width="675" height="675" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 165 is now a regular on sale so you should be able to get it for $100 more than the Forerunner 170, including right now at Amazon where the older watch is reduced by $50.<a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0CWB662HK" target="_blank" rel="nofollow" data-dimension112="801c052b-19ce-4212-bc2a-14298dedad05" data-action="Deal Block" data-label="The Forerunner 165 is now a regular on sale so you should be able to get it for $100 more than the Forerunner 170, including right now at Amazon where the older watch is reduced by $50." data-dimension48="The Forerunner 165 is now a regular on sale so you should be able to get it for $100 more than the Forerunner 170, including right now at Amazon where the older watch is reduced by $50." data-dimension25="$249">View Deal</a></p></div><div class="product"><a data-dimension112="309c3f4b-0cf9-404e-8ad4-f1a57e54eba3" data-action="Deal Block" data-label="The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165." data-dimension48="The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165." data-dimension25="$349" href="https://www.garmin.com/en-US/p/2014513/pn/010-03920-12/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:964px;"><p class="vanilla-image-block" style="padding-top:95.12%;"><img id="prtHi9JcAcmpjgcydbRB5j" name="Garmin Forerunner 170" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/prtHi9JcAcmpjgcydbRB5j.jpg" mos="" align="middle" fullscreen="" width="964" height="917" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165.<a class="view-deal button" href="https://www.garmin.com/en-US/p/2014513/pn/010-03920-12/" target="_blank" rel="nofollow" data-dimension112="309c3f4b-0cf9-404e-8ad4-f1a57e54eba3" data-action="Deal Block" data-label="The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165." data-dimension48="The Forerunner 170 is available to order from Garmin directly, before its wider launch in the coming weeks. It comes in four colors and offers a lot of handy new features and better training analysis than the Forerunner 165." data-dimension25="$349">View Deal</a></p></div><h3 class="article-body__section" id="section-garmin-forerunner-165-vs-garmin-forerunner-170-specs-compared"><span>Garmin Forerunner 165 vs Garmin Forerunner 170: specs compared</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4492px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="ThuFBS9W4dPp3eHGfDbPNS" name="Garmin Forerunner 165 vs Garmin Forerunner 170" alt="Garmin Forerunner 165 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:247,l:484,cw:4492,ch:2527,q:80/ThuFBS9W4dPp3eHGfDbPNS.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Garmin Forerunner 165</strong></p></td><td  ><p><strong>Garmin Forerunner 170</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$249.99/£249.99; $299.99/£289.99 (Music)</p></td><td  ><p>$299.99/£259.99; $349.99/£299.99 (Music)</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>43 x 11.6mm</p></td><td  ><p>42.6 x 11.9mm</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td><td  ><p>1.2in 390 x 390 AMOLED</p></td></tr><tr><td class="firstcol " ><p><strong>Bezel</strong></p></td><td  ><p>Plastic</p></td><td  ><p>Plastic</p></td></tr><tr><td class="firstcol " ><p><strong>Screen</strong></p></td><td  ><p>Glass</p></td><td  ><p>Glass</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>39g</p></td><td  ><p>41g</p></td></tr><tr><td class="firstcol " ><p><strong>Water resistance</strong></p></td><td  ><p>5ATM</p></td><td  ><p>5ATM</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (watch mode)</strong></p></td><td  ><p>Up to 11 days</p></td><td  ><p>Up to 10 days</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life (GPS)</strong></p></td><td  ><p>19 hours (all-systems GPS, always-on)</p></td><td  ><p>20 hours (all-systems GPS, always-on)</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>4GB</p></td><td  ><p>4GB</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-garmin-forerunner-165-vs-garmin-forerunner-170-design-and-user-interface"><span>Garmin Forerunner 165 vs Garmin Forerunner 170: design and user interface</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4720px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DrUUpiew9dQTCjfxmhNKnR" name="Garmin Forerunner 165 vs Garmin Forerunner 170" alt="Garmin Forerunner 165 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:322,l:448,cw:4720,ch:2655,q:80/DrUUpiew9dQTCjfxmhNKnR.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The two watches have very similar designs, with small plastic cases, 1.2in AMOLED touchscreen displays and five buttons. </p><p>Both are lightweight and comfortable to wear, and they have the same GPS chipset and optical heart rate sensor. One sensor that is new for the Forerunner 170 is a gyroscope, which is used to improve movement tracking during activities.</p><p>When wearing both side by side they feel the same on the wrist, and look the same too, bar the different color options and the fact the Forerunner 170 has a colorful bezel rather than a black one.</p><p>The user interface has been significantly updated on the Forerunner 170, however, which uses the same OS as the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Forerunner 570 </a>and <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Forerunner 970</a>, and so has a lot of new widgets and other small features not on the Forerunner 165,</p><p>These include the battery and sports scores widgets, a calculator app, Garmin’s Lifestyle Logging, Health Status, Evening Report and Sleep Coach features. </p><p>Once you start using the watch, the amount of changes becomes apparent, and the Forerunner 170 will continue to receive updates going forward, while the Forerunner 165 won’t get new features. </p><h3 class="article-body__section" id="section-garmin-forerunner-165-vs-garmin-forerunner-170-sports-tracking-and-training-analysis"><span>Garmin Forerunner 165 vs Garmin Forerunner 170: sports tracking and training analysis</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4547px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="XjrxibEaFtBKm5ZJTfcneR" name="Garmin Forerunner 165 vs Garmin Forerunner 170" alt="Garmin Forerunner 165 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:359,l:823,cw:4547,ch:2558,q:80/XjrxibEaFtBKm5ZJTfcneR.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The update that caught my eye immediately when I started testing the Forerunner 170 is the enhanced training analysis it offers compared with the Forerunner 165.</p><p>You get most of Garmin’s key training analysis stats, including training readiness, training status and acute load, features that had previously been reserved for pricier models like the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Forerunner 570</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4281px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nGNTfW7d6Cdm6q4VjviU7S" name="Garmin Forerunner 165 vs Garmin Forerunner 170" alt="Garmin Forerunner 165 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:238,l:877,cw:4281,ch:2408,q:80/nGNTfW7d6Cdm6q4VjviU7S.jpg" mos="" align="middle" fullscreen="" width="5711" height="3212" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This means the new watch is a more capable running watch in particular. Even as a keen marathoner, it has everything I need in terms of analysis to support my training, whereas the Forerunner 165 felt a bit lightweight in this area compared with entry-level options from other brands like the <a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-the-coros-pace-4-for-six-months-here-are-my-long-term-pros-and-cons">Coros Pace 4</a>.</p><p>The Forerunner 170 also brings a lot of new sports modes to the table, including a lot of winter, team and racket sports that didn’t have their own mode on the Forerunner 165.</p><p>There are some new running stats too, including Grade Adjusted Pace to help judge your effort on hilly runs, and training plans for cycling and strength workouts alongside running.</p><p>Finally, Garmin has introduced a new Quick Workout feature with the Forerunner 170, which you can use to create running workouts based simply on how hard you want them to be (easy, moderate, hard or very hard), and how long (15-60 minutes).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W09zMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W09zMO.js" async></script><h3 class="article-body__section" id="section-garmin-forerunner-165-vs-garmin-forerunner-170-gps-hr"><span>Garmin Forerunner 165 vs Garmin Forerunner 170: GPS & HR</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5177px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sYoLApyCpGaPBK5dbabAsR" name="Garmin Forerunner 165 vs Garmin Forerunner 170" alt="Garmin Forerunner 165 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:64,l:457,cw:5177,ch:2912,q:80/sYoLApyCpGaPBK5dbabAsR.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Neither the Forerunner 165 nor the Forerunner 170 offers multi-band GPS tracking, the most accurate mode available from Garmin watches, but I will say that in my long-term use of the Forerunner 165 it still proved to be a very accurate GPS watch.</p><p>I’ll be testing the Forerunner 170 extensively to check its accuracy too, but on the 10K run I did with both watches they were both very accurate when compared to the Garmin Forerunner 970 in multi-band mode.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5241px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="c5ZFj6XjYKgfDV9rrW2nvR" name="Garmin Forerunner 165 vs Garmin Forerunner 170" alt="Garmin Forerunner 165 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:128,l:457,cw:5241,ch:2948,q:80/c5ZFj6XjYKgfDV9rrW2nvR.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The two watches both have the same Elevate Gen 4 optical heart rate sensor on board, rather than the latest Elevate Gen 5 used on more expensive Garmin models.</p><p>I have found the Gen 5 sensor to be an upgrade for accuracy when testing other Garmin models in the past few years, but in the two test runs I’ve done with the Forerunner 170 so far it’s been good.</p><p>On the 10K run I compared the readings of the Forerunner 165 and the Forerunner 170 to those of a chest strap, which is the most accurate way to track your heart rate on the run, and the watches read in line with the chest strap throughout.</p><h3 class="article-body__section" id="section-garmin-forerunner-165-vs-garmin-forerunner-170-verdict"><span> Garmin Forerunner 165 vs Garmin Forerunner 170: verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4985px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="f7AN24SLQ5ReoqUMdKCmaR" name="Garmin Forerunner 165 vs Garmin Forerunner 170" alt="Garmin Forerunner 165 vs Garmin Forerunner 170" src="https://cdn.mos.cms.futurecdn.net/v2/t:91,l:311,cw:4985,ch:2804,q:80/f7AN24SLQ5ReoqUMdKCmaR.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Garmin Forerunner 170 is an upgrade on the Forerunner 165, introducing a whole load of new software features that make it a better watch for day-to-day use as well as supporting your training.</p><p>However, the improved user interface and new training analysis features might not be crucial additions for you, and the core tracking is still excellent and equally accurate on the older Forerunner 165.</p><p>Since you can usually get the Forerunner 165 for $100 less, it’s a case of weighing up whether those new features, along with the possibility of future software updates, are worth $100 to you. </p><p>I’d get the newer watch myself, primarily for the training analysis tools, while I think the Quick Workout feature will be very handy for new runners, but if you’d rather have $100 in your pocket along with a great running watch, the Forerunner 165 is tempting.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/running/i-test-running-shoes-for-a-living-and-you-dont-need-to-buy-the-latest-models-these-5-last-gen-shoes-are-just-as-good-and-often-on-sale">Forget pricey new running shoes — I would get these last-gen Hoka, Saucony and New Balance at a steep discount instead</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I spent one week with a wallet-friendly Garmin Forerunner 970 dupe — 5 things that stand out about the $300 cheaper Amazfit Cheetah 2 Pro ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness/i-spent-one-week-with-a-wallet-friendly-garmin-forerunner-970-dupe-5-things-that-stand-out-about-the-usd300-cheaper-amazfit-cheetah-2-pro</link>
                                                                            <description>
                            <![CDATA[ I spent a week with the Amazfit Cheetah 2 Pro smartwatch, a Garmin Fenix 8 and Forerunner 970 competitor, with a much more reasonable price tag. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mtT5TCprqinkeGvbmmJ8QH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/To9q8BrgDnTHtP8An4H5Le-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 16 May 2026 06:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Fitness]]></category>
                                                    <category><![CDATA[Running]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/To9q8BrgDnTHtP8An4H5Le-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Amazfit Cheetah 2 Pro smartwatch, a budget-friendly competitor to the Garmin Forerunner 970]]></media:description>                                                            <media:text><![CDATA[Close-up of the Amazfit Cheetah 2 Pro smartwatch, a budget-friendly competitor to the Garmin Forerunner 970]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Amazfit Cheetah 2 Pro smartwatch, a budget-friendly competitor to the Garmin Forerunner 970]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/To9q8BrgDnTHtP8An4H5Le-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Amazfit makes some of my favorite wallet-friendly alternatives to popular Garmin smartwatch models. Take the new <a href="https://www.tomsguide.com/wellness/smartwatches/forget-the-garmin-forerunner-970-heres-why-the-amazfit-cheetah-2-pro-could-leave-the-competition-in-the-dust#section-amazfit-cheetah-2-pro-fitness-and-training-tools">Amazfit Cheetah 2 Pro</a>; it offers many of the same high-end design elements, features, and training tools as Garmin's top running watch, the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Forerunner 970</a>, for way less money. </p><p>I brought the Amazfit Cheetah 2 Pro on a trip to Hawaii's Big Island, where I spent a week testing its performance while running, snorkeling, swimming, and hiking. Here are the five most important things you should know about the Amazfit Cheetah 2 Pro. </p><h3 class="article-body__section" id="section-1-it-s-significantly-cheaper-than-the-forerunner-970"><span>1. It's significantly cheaper than the Forerunner 970</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5002px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="zsFNJvFdbXkp93MwMUUmp7" name="Cheetah2Pro-06" alt="Close-up of the Amazfit Cheetah 2 Pro smartwatch, a budget-friendly competitor to the Garmin Fenix 8" src="https://cdn.mos.cms.futurecdn.net/zsFNJvFdbXkp93MwMUUmp7.jpg" mos="" align="middle" fullscreen="" width="5002" height="2813" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Priced at <a href="https://us.amazfit.com/products/cheetah-2-pro" target="_blank" rel="nofollow">$450 via Amazfit</a> directly, the Cheetah 2 Pro is a full $300 cheaper than the Garmin Forerunner 970. It's also less than half the cost of the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-review">Garmin Fenix 8</a>, the brand's top multisport watch, which starts at $1,000. </p><p>Even if you step down to Garmin's mid-level running watch, the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Forerunner 570</a>, the Cheetah 2 Pro is still $100 more affordable. </p><div class="product"><a data-dimension112="1bebf0b3-33a1-4770-aed5-2d65fea5fc66" data-action="Deal Block" data-label="The Cheetah 2 Pro is a premium running watch and direct competitor to the $750 Garmin Forerunner 970, offering a similar set of advanced training tools and metrics, support for offline maps, epic battery life, and a super-bright display, all packed into a sporty, durable package." data-dimension48="The Cheetah 2 Pro is a premium running watch and direct competitor to the $750 Garmin Forerunner 970, offering a similar set of advanced training tools and metrics, support for offline maps, epic battery life, and a super-bright display, all packed into a sporty, durable package." data-dimension25="$449" href="https://www.amazon.com/Amazfit-Cheetah-Smartwatch-Sapphire-Flashlight/dp/B0GVVSQN3J/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1260px;"><p class="vanilla-image-block" style="padding-top:105.87%;"><img id="3Hccgy2cLGFECrRnb8uAyN" name="Screenshot 2026-05-15 at 11.52.21 AM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3Hccgy2cLGFECrRnb8uAyN.png" mos="" align="middle" fullscreen="" width="1260" height="1334" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Cheetah 2 Pro is a premium running watch and direct competitor to the $750 Garmin Forerunner 970, offering a similar set of advanced training tools and metrics, support for offline maps, epic battery life, and a super-bright display, all packed into a sporty, durable package.<a class="view-deal button" href="https://www.amazon.com/Amazfit-Cheetah-Smartwatch-Sapphire-Flashlight/dp/B0GVVSQN3J/" target="_blank" rel="nofollow" data-dimension112="1bebf0b3-33a1-4770-aed5-2d65fea5fc66" data-action="Deal Block" data-label="The Cheetah 2 Pro is a premium running watch and direct competitor to the $750 Garmin Forerunner 970, offering a similar set of advanced training tools and metrics, support for offline maps, epic battery life, and a super-bright display, all packed into a sporty, durable package." data-dimension48="The Cheetah 2 Pro is a premium running watch and direct competitor to the $750 Garmin Forerunner 970, offering a similar set of advanced training tools and metrics, support for offline maps, epic battery life, and a super-bright display, all packed into a sporty, durable package." data-dimension25="$449">View Deal</a></p></div><h3 class="article-body__section" id="section-2-the-design-feels-premium"><span>2. The design feels premium</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3392px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LvV5bQpUoa93oM8TKYbaBZ" name="Cheetah2Pro-05" alt="Close-up of the side of the Amazfit Cheetah 2 Pro" src="https://cdn.mos.cms.futurecdn.net/LvV5bQpUoa93oM8TKYbaBZ.jpg" mos="" align="middle" fullscreen="" width="3392" height="1908" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>The Cheetah 2 Pro is one of Amazfit's more attractive watches, with a two-tone black-and-silver design that pairs a titanium chassis with a plastic housing. The result is a reasonably lightweight 46.5 g wearable that should hold up to the daily wear and tear. By comparison, the Forerunner 970 is 56 g.</p><p>Similar to other recent Amazfit models, this one features a faux tachometer along the outer edge of the screen, a subtle yet appreciated nod to the mechanical watches of yore. </p><p>The screen is sapphire crystal, which is more resilient to scratches and chips than reinforced glass. Two buttons, with ample gnarling for grip and plenty of tactile response, adorn either side of the case. These can be used for navigation, or you can use the reasonably responsive touchscreen, which maxes out at a brightness of 3,000 nits, making it easily visible in direct sunlight. It also supports always-on mode.</p><p>The Cheetah 2 Pro only comes in 48mm, which is larger than I prefer. It's also fairly thick at 15.6mm compared to 12.9mm for the Garmin Forerunner 970. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5118px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="Ghy6kyJzCmXJFwrc7sPzqm" name="Cheetah2Pro-01" alt="Close-up of the Amazfit Cheetah 2 Pro smartwatch, a budget-friendly competitor to the Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/Ghy6kyJzCmXJFwrc7sPzqm.jpg" mos="" align="middle" fullscreen="" width="5118" height="2878" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><h3 class="article-body__section" id="section-3-loads-of-running-tools"><span>3. Loads of running tools</span></h3><p>The Cheetah 2 Pro is a technology-packed smartwatch designed specifically with hardcore runners in mind. Still, the wearable supports over 170 workout modes. </p><p>It also features dual-band GPS tracking, an onboard alimeter for precise elevation data, and the brand's latest health sensor array with 24/7 heart rate tracking and blood oxygen readings. Amazfit's latest additionally plays nicely with popular third-party fitness tracking apps like Strava.</p><p>In terms of metrics for runners, the Cheetah 2 Pro provides insights into more than pace, heart rate, and speed; it also measures your vertical oscillation, ground contact time, V02 max, training load, training effect, and power. It can additionally generate custom-tailored training plans — support I look forward to testing — and track running performance over extended periods. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4114px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="za8oj4sST2vb57QmrBd9FA" name="Cheetah2Pro-04" alt="Close-up of the Amazfit Cheetah 2 Pro smartwatch, a budget-friendly competitor to the Garmin Fenix 8" src="https://cdn.mos.cms.futurecdn.net/za8oj4sST2vb57QmrBd9FA.jpg" mos="" align="middle" fullscreen="" width="4114" height="2314" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>That said, training and recovery insights aren't quite as comprehensive as those found on the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a>, though the Cheetah 2 Pro comes pretty darn close. It also generates fairly detailed daily sleep reports. </p><p>Like the Forerunner 970 and Fenix 8, the Cheetah 2 Pro supports downloading route maps for offline navigation with turn-by-turn directions and automatic rerouting. </p><p>That said, in my experience, Amazfit's take on offline maps is far less intuitive/a lot more clunky than Garmin's. However, there's a chance that Amazfit has tweaked the maps experience for the better with this latest premium release (stay tuned for my full review).</p><h3 class="article-body__section" id="section-4-the-right-amount-of-smarts"><span>4. The right amount of 'smarts'</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3426px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jTqwixLBAbu9r3CQAWZsdF" name="Cheetah2Pro-07" alt="Close-up of the Amazfit Cheetah 2 Pro smartwatch, a budget-friendly competitor to the Garmin Fenix 8" src="https://cdn.mos.cms.futurecdn.net/jTqwixLBAbu9r3CQAWZsdF.jpg" mos="" align="middle" fullscreen="" width="3426" height="1927" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>To store all those offline maps, along with no shortage of playlists and podcasts for offline listening, the Cheetah 2 Pro offers  32GB of onboard storage. It also had NFC for tap-to-pay, an onboard speaker and microphone for taking Bluetooth calls from the wrist, mirrored smartphone notifications for both Android and iOS devices, and a handy voice memo app.</p><p>Compared to the best full-featured smartwatches in 2026, like the <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-series-11-review">Apple Watch Series 11</a> and <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-went-hands-on-with-google-pixel-watch-4-and-it-could-be-my-new-favorite-smartwatch-for-android">Google Pixel Watch 4</a>, these smart features may not seem like much; however, they are a near-match with the smart features found in the Garmin Forerunner 970.</p><h3 class="article-body__section" id="section-5-the-included-strap-is-a-disappointment"><span>5. The included strap is a disappointment </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5333px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="88P6WJ76zR9yCuGnnPzBSX" name="Cheetah2Pro-02" alt="Close-up of the Amazfit Cheetah 2 Pro smartwatch, a budget-friendly competitor to the Garmin Fenix 8" src="https://cdn.mos.cms.futurecdn.net/88P6WJ76zR9yCuGnnPzBSX.jpg" mos="" align="middle" fullscreen="" width="5333" height="3000" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>When I first unboxed the Amazfit Cheetah 2 Pro, I was instantly enamored with the included silicone strap. Giving off the vibes of a classic 1960s skin dive watch strap, my infatuation was sadly short-lived.   </p><p>For starters, the strap came with one mis-sized spring bar (which should've been a sign of things to come), causing frustration when I initially attempted to affix it to the watch. Fortunately, my favorite cheapo Timex dumb watch makes use of the same-sized spring bars as the Cheetah 2 Pro, so I was able to borrow one for the duration of my trip. </p><p>Unfortunately, after swapping the Amazfit strap back and forth between the Cheetah 2 Pro and my Timex a handful of times, a tear began to develop in the silicone around one of the spring bars, effectively rendering the strap useless. </p><p>As a result, I had to swap in my Timex strap on the Cheetah 2 Pro for the last few days, resulting in it sitting somewhat awkwardly on my wrist (see image above). Of course, a crappy strap shouldn't make or break a smartwatch, given most folks swap out the standard-issued one sooner or later, but the tear is disappointing nonetheless. </p><p>That aside, after one week with the Cheetah 2 Pro, I'm pretty impressed. The question is, can it truly compete tit-for-tat with Garmin's top running watch, the Forerunner 970, when it comes to accuracy, durability, and reliability... all for $300 less?</p><p>I'll attempt to answer that question in my forthcoming Cheetah 2 Pro review.  Stay tuned!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/running/im-a-running-noob-doing-my-first-5k-heres-all-the-tech-im-using-to-cross-the-finish-line">I’m a running noob doing my first 5K — here’s all the tech I’m using to cross the finish line</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-and-the-winner-was-nearly-too-close-to-call">I walked 5,000 steps with the Garmin Forerunner 570 vs Apple Watch Ultra 3 — and the winner was nearly too close to call</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-logged-37-miles-at-mwc-2026-on-my-garmin-instinct-3-here-are-5-things-i-learned">I logged 37 miles at MWC 2026 on my Garmin Instinct 3 — here are 5 things I learned</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin’s screen-less Whoop competitor could cost five times as much as the Fitbit Air  ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness-trackers/garmins-screen-less-whoop-competitor-could-cost-five-times-as-much-as-the-fitbit-air</link>
                                                                            <description>
                            <![CDATA[ Garmin is rumored to be working on a screen-less Whoop rival, but recently leaked pricing info has me worried. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CEKBdqv8YuP5Mhj4oVBWyn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/abavLE8wUsUF3VN3k8bZXU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 23:54:11 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Fitness Trackers]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Smartwatches]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/abavLE8wUsUF3VN3k8bZXU-1280-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/abavLE8wUsUF3VN3k8bZXU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Garmin is rumored to be working on a diminutive, screen-less, potentially subscription-free fitness tracker to rival the popular Whoop 5.0. Sound familiar? Google just launched a similar product in the form of the <a href="https://www.tomsguide.com/wellness/fitness-trackers/forget-the-whoop-5-0-the-new-fitbit-air-is-a-screen-less-subscription-free-fitness-tracker-for-the-masses">Fitbit Air</a>. </p><p>However, unlike the $99 Fitbit Air, the forthcoming <a href="https://www.tomsguide.com/wellness/fitness-trackers/garmins-screenless-fitness-tracker-just-leaked-and-if-this-price-is-accurate-the-fitbit-air-wont-be-worried">Garmin Cirqa</a> could be anything but wallet-friendly, if recently leaked pricing information turns out to be true. Here’s everything we think we know about the Garmin Cirqa so far.</p><h3 class="article-body__section" id="section-garmin-cirqa-could-be-5x-the-cost-of-the-fitbit-air"><span>Garmin Cirqa could be 5x the cost of the Fitbit Air</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="M8T6RzKkhosv69xgzAGj4L" name="Garmin Cirqa leak" alt="A leaked retail page showing an unannounced Garmin fitness tracker" src="https://cdn.mos.cms.futurecdn.net/M8T6RzKkhosv69xgzAGj4L.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Stylus Store)</span></figcaption></figure><p>According to a recent leak from a Ukrainian retailer and first reported on by <a href="https://www.notebookcheck.net/Garmin-CIRQA-leaks-at-onlineshop-with-surprisingly-high-price.1296728.0.html" target="_blank">Notebookcheck</a>, the forthcoming <a href="https://www.tomsguide.com/wellness/fitness-trackers/garmins-rumored-screen-less-wearable-just-might-be-the-subscription-free-whoop-rival-ive-been-waiting-for">Garmin Cirqa</a> will cost 22,399 Ukrainian hryvnia, or roughly $500 USD when it debuts. </p><p>That’s five times the cost of the Fitbit Air for a device that’s rumored to offer a similar set of health and fitness tracking features. That’s also pricier than the <a href="https://www.tomsguide.com/wellness/fitness-trackers/whoop-5-0-review-should-you-give-a-whoop-about-this-new-tracker">Whoop 5.0</a>, which costs between $199 and $239 per year, depending on your membership tier. Those prices include the device itself. </p><h3 class="article-body__section" id="section-garmin-cirqa-potential-features-and-specs"><span>Garmin Cirqa potential features and specs</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2243px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="mhCxvbV9KM4P9KqNcjtWaR" name="IMG_3573" alt="doing an ECG reading on the Whoop MG" src="https://cdn.mos.cms.futurecdn.net/mhCxvbV9KM4P9KqNcjtWaR.jpg" mos="" align="middle" fullscreen="" width="2243" height="1262" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Rumors of a new Garmin fitness tracker called the Cirqa began popping off when the device briefly appeared on one of the brand’s regional websites. Initially spotted by <a href="https://the5krunner.com/2026/03/18/garmin-cirqa-launch-next-week/">the5krunner</a>, concrete details are frustratingly limited. Even still, a recent <a href="https://the5krunner.com/2026/02/10/garmin-cirqa-fcc-analysis/">filing for the ‘CIRQA’ </a>by Garmin with the U.S. Federal Communications Commission (FCC) seems to confirm the wearable’s existence. </p><p>That filing suggests that the rumored Cirqa, if that even is its name, could come in two sizes and feature a heart rate sensor. However, we don’t know what other onboard tech it may offer. Given its likely small/lightweight design, an onboard GPS seems unlikely. Then again, for $500, perhaps Garmin will manage to squeeze one in.</p><p>Other potential onboard tech could include a blood oxygen and/or body temp sensor. I also expect battery life to be good for at least a week or more per charge, given the Fitbit Air is rated for seven days of battery life and the Whoop 5.0 lasts for 14 days per charge. </p><h3 class="article-body__section" id="section-garmin-cirqa-launch-date-prediction"><span>Garmin Cirqa launch date prediction </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2970px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="ftG2ZAp8TnvN5ZvrPkzeTA" name="IMG_7591" alt="a photo of the Garmin Forerunner 170 on the wrist" src="https://cdn.mos.cms.futurecdn.net/ftG2ZAp8TnvN5ZvrPkzeTA.jpg" mos="" align="middle" fullscreen="" width="2970" height="1671" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With no credible launch date rumors to go off of, the best we can do is guess when the Garmin Cirqa might debut. Given the brand just launched two new devices this week, the entry-level <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-just-dropped-two-new-entry-level-smartwatches-why-the-garmin-forerunner-70-and-170-could-be-the-best-beginner-running-watches-in-2026">Forerunner 70</a> and mid-tier Forerunner 170 running watches, we may have to wait a little while for another new Garmin. </p><p>With that in mind, a summer or fall debut for the Garmin Cirqa screen-less fitness tracker seems entirely possible. Here’s hoping that Garmin manages to knock the launch price down by a few hundred dollars before then. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness/i-ran-a-5k-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-5-things-i-learned"><strong>I ran a 5K with the Garmin Forerunner 570 vs Apple Watch Ultra 3 and although the pace data matched up perfectly, the Garmin’s exercise load metric and detailed vertical ratio analysis made it the clear winner</strong></a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-vs-garmin-forerunner-170-the-main-differences-between-garmins-two-new-running-watches"><strong>Garmin Forerunner 70 vs Garmin Forerunner 170 — what are the main differences between Garmin’s two new running watches</strong></a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-tested-the-usd79-amazfit-bip-6-vs-the-usd249-apple-watch-se-3-and-the-cheaper-smartwatch-is-a-lot-better-than-i-thought"><strong>I tested the $79 Amazfit Bip 6 vs the $249 Apple Watch SE 3 — and the cheaper smartwatch is a lot better than I thought</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin's screenless fitness tracker just leaked and, if this price is accurate, the Fitbit Air won't be worried ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness-trackers/garmins-screenless-fitness-tracker-just-leaked-and-if-this-price-is-accurate-the-fitbit-air-wont-be-worried</link>
                                                                            <description>
                            <![CDATA[ Garmin is planning to rival the Whoop band and Fitbit Air with a screenless fitness tracker, but the price could be a sticking point. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qrDYThezS72yeV2PddvWye</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JpSXwAkfnPAtMwt3ZYMFrR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 10:06:29 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Fitness Trackers]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Smartwatches]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JpSXwAkfnPAtMwt3ZYMFrR-1280-80.jpg">
                                                            <media:credit><![CDATA[Google]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Fitbit Air fitness tracker]]></media:description>                                                            <media:text><![CDATA[Close-up of the Fitbit Air fitness tracker]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Fitbit Air fitness tracker]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JpSXwAkfnPAtMwt3ZYMFrR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Take a look at our <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a> guide and you'll probably find exactly the kind of sports watch or fitness tracker you're looking for. Unless, of course, you want one without a screen.</p><p>Screenless fitness trackers like the <a href="https://www.tomsguide.com/wellness/fitness-trackers/whoop-5-0-review-should-you-give-a-whoop-about-this-new-tracker">Whoop 5.0</a> and <a href="https://www.tomsguide.com/wellness/fitness-trackers/oura-ring-4-review">Oura Ring 4</a> seem to quietly be on the rise — Fitbit has just <a href="https://www.tomsguide.com/wellness/fitness-trackers/forget-the-whoop-5-0-the-new-fitbit-air-is-a-screen-less-subscription-free-fitness-tracker-for-the-masses">unveiled the Fitbit Air</a>, and now it seems Garmin <a href="https://www.tomsguide.com/wellness/fitness-trackers/garmins-rumored-screen-less-wearable-just-might-be-the-subscription-free-whoop-rival-ive-been-waiting-for">isn't far behind</a>. </p><p>A Ukrainian retailer appears to have accidentally leaked the upcoming "Garmin Cirqa" screenless tracker. Spotted by <a href="https://www.notebookcheck.net/Garmin-CIRQA-leaks-at-onlineshop-with-surprisingly-high-price.1296728.0.html" target="_blank">Notebookcheck</a>, this leak suggests the black tracker will be a low-key screenless fabric band available in two sizes: S/M and L/XL.</p><p>As expected, the Garmin Cirqa will monitor heart rate and passively document metrics like steps and calories, as well as sleep quality. So far, so good. But let's talk about that price.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xmo3PW"></div>                            </div>                            <script src="https://kwizly.com/embed/Xmo3PW.js" async></script><h2 id="a-high-price-for-minimalism">A high price for minimalism</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="M8T6RzKkhosv69xgzAGj4L" name="Garmin Cirqa leak" alt="A leaked retail page showing an unannounced Garmin fitness tracker" src="https://cdn.mos.cms.futurecdn.net/M8T6RzKkhosv69xgzAGj4L.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Stylus Store)</span></figcaption></figure><p>According to the listing (which, at time of writing, is <a href="https://stls.store/garmin-cirqa-black-010-04675-00-p1457732c1514.html#about" target="_blank">still live</a>), the most eye-catching thing about this minimalist piece of fitness tech is the price. It states the Garmin Cirqa will be available for 22,399 Ukrainian hryvnia, which roughly translates to $507 / £379. That's already more expensive than either the Oura Ring 4 ($349) or the Fitbit Air ($99). And if you throw in a $6.99 per month <a href="https://www.tomsguide.com/wellness/smartwatches/i-tried-garmin-connect-for-a-week-heres-3-things-i-like-and-3-i-dislike">Garmin Connect+ membership</a>, it gets even more pricey.</p><p>Whoop, which arguably started the screenless trend, doesn't charge up front for the band, but users still need to pay between $199 and $359 a year for an active subscription. So if this listing does prove to be true — and the pricing is carried across — Garmin is planning to release the most expensive screenless tracker on the market.</p><p>The natural caveats are all in place: this is an unconfirmed leak, and pricing could easily change in different regions. But at a time when many of us are trying to save as much as possible when it comes to our tech, it would be a bold move for Garmin to launch with a price so much higher than market rivals.</p><div class="product"><a data-dimension112="2d59bf97-e51f-40e2-8086-4eb94af7081a" data-action="Deal Block" data-label="Garmin Forerunner 265 review" data-dimension48="Garmin Forerunner 265 review" data-dimension25="$349" href="https://www.amazon.com/dp/B0BS1T7G8S" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2295px;"><p class="vanilla-image-block" style="padding-top:100.04%;"><img id="xG42cp4qBMeThn5yCckwWQ" name="garmin forerunner 265.jpeg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xG42cp4qBMeThn5yCckwWQ.jpeg" mos="" align="middle" fullscreen="" width="2295" height="2296" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The latest Forerunner is our new top pick for the best Garmin watch. In our <a href="https://www.tomsguide.com/reviews/garmin-forerunner-265" data-dimension112="2d59bf97-e51f-40e2-8086-4eb94af7081a" data-action="Deal Block" data-label="Garmin Forerunner 265 review" data-dimension48="Garmin Forerunner 265 review" data-dimension25="$349">Garmin Forerunner 265 review</a>, we called it "a huge improvement" over the previous model. This iteration of the watch brings a gorgeous AMOLED display with a higher resolution, plus Garmin's Training Readiness Score feature. You also get accurate GPS and lots of advanced training metrics at a glance.<a class="view-deal button" href="https://www.amazon.com/dp/B0BS1T7G8S" target="_blank" rel="nofollow" data-dimension112="2d59bf97-e51f-40e2-8086-4eb94af7081a" data-action="Deal Block" data-label="Garmin Forerunner 265 review" data-dimension48="Garmin Forerunner 265 review" data-dimension25="$349">View Deal</a></p></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness/upgrade-your-run-with-these-12-best-running-apparel-picks-on-amazon-under-usd100">Upgrade your run with these 12 best running apparel picks on Amazon under $100</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-70-vs-garmin-forerunner-170-the-main-differences-between-garmins-two-new-running-watches">Garmin Forerunner 70 vs Garmin Forerunner 170 — what are the main differences between Garmin’s two new running watches</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/forget-the-whoop-5-0-the-new-fitbit-air-is-a-screen-less-subscription-free-fitness-tracker-for-the-masses">Forget the Whoop 5.0 — The new Fitbit Air is a screen-less, subscription-free fitness tracker for the masses</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin just dropped two new entry-level smartwatches — why the Garmin Forerunner 70 and 170 could be the best beginner running watches in 2026 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/garmin-just-dropped-two-new-entry-level-smartwatches-why-the-garmin-forerunner-70-and-170-could-be-the-best-beginner-running-watches-in-2026</link>
                                                                            <description>
                            <![CDATA[ Garmin's new entry-level running watches just dropped, and they look mighty fine. Here's everything you need to know about the Forerunner 70 and 170. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">MXFL9qhHF4Yx3M8oGut6pN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QiyxNJDpfjegDFXbyJt6Eh-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 12 May 2026 11:07:33 +0000</pubDate>                                                                                                                                <updated>Wed, 13 May 2026 23:12:09 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/QiyxNJDpfjegDFXbyJt6Eh-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the new Garmin Forerunner 70 and Forerunner 170 running watches]]></media:description>                                                            <media:text><![CDATA[Close-up of the new Garmin Forerunner 70 and Forerunner 170 running watches]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the new Garmin Forerunner 70 and Forerunner 170 running watches]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QiyxNJDpfjegDFXbyJt6Eh-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Garmin just announced a refresh of the brand’s entry-level running watch lineup. Replacing the <a href="https://www.tomsguide.com/reviews/garmin-forerunner-55">Garmin Forerunner 55</a> and <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-165">Forerunner 165</a>, meet the new Garmin Forerunner 70 and Forerunner 170.</p><p>The former is designed to help <a href="https://www.tomsguide.com/wellness/running/im-a-running-noob-doing-my-first-5k-heres-all-the-tech-im-using-to-cross-the-finish-line">newbie runners</a> get into the sport, while the latter is for runners looking to take their training to the next level. Both sport bright, colorful AMOLED screens and identical case designs, available in an alluring range of colors. </p><h3 class="article-body__section" id="section-garmin-forerunner-70-and-170-price-and-availability"><span>Garmin Forerunner 70 and 170: price and availability </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3778px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QFcZFPHrM35oBqyqns8wFh" name="Forerunner70-170-02" alt="Close-up of the new Garmin Forerunner 70 and Forerunner 170 running watches" src="https://cdn.mos.cms.futurecdn.net/QFcZFPHrM35oBqyqns8wFh.jpg" mos="" align="middle" fullscreen="" width="3778" height="2125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>The Garmin Forerunner 70 is $249 and expected to ship by the end of May or early April. The Forerunner 170 comes in two varieties, one with onboard storage for music, priced at $349, and one without, for $299; it's also expected to ship around the same time.</p><h3 class="article-body__section" id="section-garmin-forerunner-70-and-170-design"><span>Garmin Forerunner 70 and 170: Design</span></h3><p>The Forerunner 70 and Forerunner 170 look identical. They share the same manageable 43mm diameter case design, with five physical buttons on the side, paired with the same 1.2-inch bright and well-saturated AMOLED touchscreen. </p><p>Lightweight and comfortable on the wrist, based on my hands-on experience, the case is built from fiber-reinforced polymer (i.e., plastic) and boasts a respectable water resistance rating of 50 meters.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4955px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="C8gmw2GTozSGuwqsHrLfQh" name="Forerunner70-170-04" alt="Close-up of the new Garmin Forerunner 70 and Forerunner 170 running watches" src="https://cdn.mos.cms.futurecdn.net/C8gmw2GTozSGuwqsHrLfQh.jpg" mos="" align="middle" fullscreen="" width="4955" height="2787" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><h3 class="article-body__section" id="section-garmin-forerunner-70-and-170-health-and-fitness"><span>Garmin Forerunner 70 and 170: Health and fitness </span></h3><p>Both devices support over 80 exercise types, including individual workouts and team sports, and offer useful metrics like a Training Readiness score, Body Battery Score, Sleep Score, and Heart Rate Variability insights. You also get 24/7 health monitoring, daily sleep reports, and a cool, new “Quick Workout” feature.</p><p>For Quick Workouts, users select an intensity level on a scale from one to four, along with the amount of time they have for their workout. The watch then generates several exercise options to choose from. </p><p>The Forerunner 70 and 170 also support Adaptive Training Plans via Garmin Coach, along with daily workout suggestions, and useful training and recovery insights. </p><h3 class="article-body__section" id="section-garmin-forerunner-70-and-170-battery"><span>Garmin Forerunner 70 and 170: Battery</span></h3><p>The more entry-level Forerunner 70 promises up to 13 days of battery per charge, while the Forerunner 170 offers up to 10 days per charge. </p><h3 class="article-body__section" id="section-garmin-forerunner-70-vs-forerunner-170-key-differences"><span>Garmin Forerunner 70 vs Forerunner 170: Key differences </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5173px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QXgs93BwyApqbEh6XZRiSh" name="Forerunner70-170-01" alt="Close-up of the new Garmin Forerunner 70 and Forerunner 170 running watches" src="https://cdn.mos.cms.futurecdn.net/QXgs93BwyApqbEh6XZRiSh.jpg" mos="" align="middle" fullscreen="" width="5173" height="2910" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Despite looking identical, there are a handful of notable differences between the Garmin Forerunner 70 and the Forerunner 170. For starters, the Forerunner 70 doesn’t have any onboard storage for music, while the Forerunner 170 Music edition does. The higher-end model additionally has NFC for mobile payments via Garmin Pay, something that’s absent on the more affordable Forerunner 70.</p><p>You also don’t get an onboard altimeter inside the Forerunner 70 for precise elevation tracking, but you do on the Forerunner 170. Both watches, however, have onboard GPS, so you don’t need to carry a paired smartphone for location tracking.</p><p>Finally, the Forerunner 170 offers several training tools that are absent on the Forerunner 70, including Garmin’s Cycling Coach feature for bikers and the cycling VO2 Max metric for tracking cardiovascular fitness. However, the Forerunner 70 <em>does</em> have VO2 Max for runners. </p><h3 class="article-body__section" id="section-garmin-forerunner-70-and-170-outlook"><span>Garmin Forerunner 70 and 170: Outlook </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5006px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MCGn4snQrHrDDYt4B4G3Ph" name="Forerunner70-170-05" alt="Close-up of the new Garmin Forerunner 70 and Forerunner 170 running watches" src="https://cdn.mos.cms.futurecdn.net/MCGn4snQrHrDDYt4B4G3Ph.jpg" mos="" align="middle" fullscreen="" width="5006" height="2816" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Sporting bright displays, lightweight cases, ample buttons, solid battery performance, and plenty of training tools, the new Garmin Forerunner 70 and 170 just might be the best entry-level running watches on the market in 2026. Of course, I’ll hold off making any concrete claims until I’ve had the chance to thoroughly test both (full reviews coming in the next few weeks). </p><p>However, I do have one concern: the price. Ignoring the new models for a moment, Garmin’s most entry-level running watch, the still-excellent Forerunner 55, can be picked up for well under $200, while the higher-end Forerunner 165 starts at $249.</p><p>With the Forerunner 70 and 170, Garmin has upped the starting cost for the brand’s entry-level and entry/mid-level running watches by $50 across the board. The question is, will this price hike dissuade potential buyers, especially when you can pick up a decent, budget-minded alternative from a lesser-known brand — like the <a href="https://www.tomsguide.com/wellness/smartwatches/amazfit-active-max-review-a-high-end-garmin-dupe-for-the-price-of-an-entry-level-smartwatch">Amazfit Active Max</a> — at close to half the cost? Time will tell. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/take-off-that-apple-watch-5-reasons-why-its-okay-to-swap-your-smartwatch-for-a-dumb-watch">I review smartwatches for a living, but these are 5 reasons why I sometimes still wear a 'dumb' watch</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-series-12-everything-we-know-so-far">Apple Watch Series 12 rumors — everything we know so far</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/garmins-rumored-screen-less-wearable-just-might-be-the-subscription-free-whoop-rival-ive-been-waiting-for">Garmin’s rumored screen-less wearable just might be the subscription-free Whoop rival I’ve been waiting for</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forget the Fenix 8: I tested the Garmin Epix Pro for a year and it’s still better value ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/is-the-garmin-epix-pro-still-worth-it-in-2026-ive-tested-the-newer-garmin-fenix-8-and-fenix-8-pro-and-the-epix-pro-is-a-great-value-alternative</link>
                                                                            <description>
                            <![CDATA[ If you can get the right deal on the Garmin Epix Pro it’s half the price of the newer Fenix models, and it’s still a fantastic sports and adventure watch. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NtH6DnmxQajoLopn2Sp4XS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/igNMtcgequQoiSH7Fb9VMo-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 12 May 2026 11:00:00 +0000</pubDate>                                                                                                                                <updated>Thu, 14 May 2026 09:17:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/igNMtcgequQoiSH7Fb9VMo-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Epix Pro Savings Squad]]></media:description>                                                            <media:text><![CDATA[Garmin Epix Pro Savings Squad]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Epix Pro Savings Squad]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/igNMtcgequQoiSH7Fb9VMo-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With the price of Garmin’s flagship Fenix line rising with every new model, the value offered by older watches in sales becomes more and more attractive, and the <a href="https://www.tomsguide.com/reviews/garmin-epix-pro">Garmin Epix Pro</a> is almost always discounted somewhere these days.</p><p>It’s been superseded by both the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-review">Garmin Fenix 8</a> and <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-pro-review-the-greatest-fenix-yet">Garmin Fenix 8 Pro </a>since its launch, but the Epix Pro is still packed with sports and navigation features and well worth considering if you want an adventure watch but don’t want to pay the high prices demanded by the latest models.</p><p>I’ve tested every model of the Garmin Fenix and Epix watches since the Garmin Fenix 5 Plus and wore the Epix Pro for a year when originally testing it, so I’m well acquainted with what it offers compared with the latest and <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches.</a></p><p>I’ll cover the key upgrades available on the newer watches below and the relative pros and cons of opting for the Epix Pro instead, so you can decide if it offers everything you need or not.</p><div class="product"><a data-dimension112="95225f70-8599-47d3-8c2d-d0edfa02f934" data-action="Deal Block" data-label="The Garmin Epix Pro sapphire is frequently available for under $500 for the smaller sizes, and this deal is on the 42mm watch. It’s one of the best AMOLED sports watches I’ve tested, offering accurate sports tracking and insightful training analysis, as well as excellent navigation tools and useful smart features like music storage. You simply won’t find a better sports watch at this price, so unless you need the upgrades available on newer Garmins, the Epix Pro is worth looking at." data-dimension48="The Garmin Epix Pro sapphire is frequently available for under $500 for the smaller sizes, and this deal is on the 42mm watch. It’s one of the best AMOLED sports watches I’ve tested, offering accurate sports tracking and insightful training analysis, as well as excellent navigation tools and useful smart features like music storage. You simply won’t find a better sports watch at this price, so unless you need the upgrades available on newer Garmins, the Epix Pro is worth looking at." data-dimension25="$499" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFBZCH9" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1427px;"><p class="vanilla-image-block" style="padding-top:90.82%;"><img id="7EiWpH6cPgTeBzZ4anc5h8" name="Garmin Epix Pro" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7EiWpH6cPgTeBzZ4anc5h8.png" mos="" align="middle" fullscreen="" width="1427" height="1296" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Epix Pro sapphire is frequently available for under $500 for the smaller sizes, and this deal is on the 42mm watch. It’s one of the best AMOLED sports watches I’ve tested, offering accurate sports tracking and insightful training analysis, as well as excellent navigation tools and useful smart features like music storage. You simply won’t find a better sports watch at this price, so unless you need the upgrades available on newer Garmins, the Epix Pro is worth looking at.<a class="view-deal button" href="https://www.amazon.com/Garmin-Performance-Smartwatch-Technology-Flashlight/dp/B0BYFBZCH9" target="_blank" rel="nofollow" data-dimension112="95225f70-8599-47d3-8c2d-d0edfa02f934" data-action="Deal Block" data-label="The Garmin Epix Pro sapphire is frequently available for under $500 for the smaller sizes, and this deal is on the 42mm watch. It’s one of the best AMOLED sports watches I’ve tested, offering accurate sports tracking and insightful training analysis, as well as excellent navigation tools and useful smart features like music storage. You simply won’t find a better sports watch at this price, so unless you need the upgrades available on newer Garmins, the Epix Pro is worth looking at." data-dimension48="The Garmin Epix Pro sapphire is frequently available for under $500 for the smaller sizes, and this deal is on the 42mm watch. It’s one of the best AMOLED sports watches I’ve tested, offering accurate sports tracking and insightful training analysis, as well as excellent navigation tools and useful smart features like music storage. You simply won’t find a better sports watch at this price, so unless you need the upgrades available on newer Garmins, the Epix Pro is worth looking at." data-dimension25="$499">View Deal</a></p></div><h3 class="article-body__section" id="section-what-you-need-to-know-about-the-garmin-epix-pro"><span>What you need to know about the Garmin Epix Pro</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3364px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="DhV3q4Zhu39si8GQVkxs98" name="IMG_6658.jpg" alt="a photo of the Garmin Epix Pro on the wrist" src="https://cdn.mos.cms.futurecdn.net/DhV3q4Zhu39si8GQVkxs98.jpg" mos="" align="middle" fullscreen="" width="3364" height="1892" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future/Tom's Guide)</span></figcaption></figure><p>The Garmin Epix Pro launched in 2023 and it comes in three sizes — 42mm, 47mm and 51mm — and two options — standard, which has a glass screen and steel case, and sapphire, which has a sapphire crystal screen and titanium case.</p><p>Opting for a titanium model sets you back an extra $100 based on the original pricing of the Epix Pro, which cost from $899 to $1099 at the time of launch, depending on the model you went for. </p><p>The Epix Pro was released alongside the<a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-7-pro-vs-garmin-epix-pro-which-should-you-get-in-the-early-prime-day-sales"> Garmin Fenix 7 Pro</a>, which had the same features but a memory-in-pixel (MIP) display as opposed to the AMOLED screen on the Epix Pro.</p><p>In the years since Garmin has folded the Epix line into the Fenix line, so the Fenix 8 had both AMOLED and MIP options. The Fenix 8 AMOLED and Fenix 8 Pro AMOLED are the direct successors to the Epix Pro.</p><p>The Epix Pro is a rugged adventure watch with a metal case, long battery life, excellent navigation features and detailed sports tracking and training analysis. </p><p>It also has a built-in flashlight and some useful smart features, including music storage and the ability to link up with streaming services, and NFC payments. </p><p>The newer Fenix watches have a few more features, but even the latest models from other brands like Suunto and Coros aren’t as feature rich as the Epix Pro.</p><h3 class="article-body__section" id="section-garmin-epix-pro-specs-compared"><span>Garmin Epix Pro: specs compared</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3407px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="duCm9dgGQuHV5cTx72VPv7" name="IMG_6691.jpg" alt="a photo of the morning report on the Garmin Epix Pro" src="https://cdn.mos.cms.futurecdn.net/duCm9dgGQuHV5cTx72VPv7.jpg" mos="" align="middle" fullscreen="" width="3407" height="1916" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future/Tom's Guide)</span></figcaption></figure><div ><table><caption>Garmin Epix Pro vs Garmin Fenix 8 AMOLED vs Garmin Fenix 8 Pro AMOLED </caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Garmin Epix Pro</strong></p></td><td  ><p><strong>Garmin Fenix 8 AMOLED </strong></p></td><td  ><p><strong>Garmin Fenix 8 Pro AMOLED </strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$899-$1099</p></td><td  ><p>$999-$1199</p></td><td  ><p>$1199-$1299</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>42mm, 47mm, or 51mm</p></td><td  ><p>43mm, 47mm or 51mm</p></td><td  ><p>47mm or 51mm</p></td></tr><tr><td class="firstcol " ><p><strong>Thickness</strong></p></td><td  ><p>14.2mm (42mm), 14.6mm (47mm), 15.0mm (51mm)</p></td><td  ><p>13.8mm (43mm & 47mm), 14.7mm (51mm)</p></td><td  ><p>16mm (47mm), 16.5mm (51mm)</p></td></tr><tr><td class="firstcol " ><p><strong>Case weight (titanium)</strong></p></td><td  ><p>42g (47mm), 47g (47mm), 60g (51mm)</p></td><td  ><p>44g (47mm), 52g (47mm), 64g (51mm)</p></td><td  ><p>56g (47mm), 65g (51mm)</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>Glass or sapphire crystal</p></td><td  ><p>Glass or sapphire crystal</p></td><td  ><p>Sapphire crystal</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>None</p></td><td  ><p>None</p></td><td  ><p>LTE & satellite</p></td></tr><tr><td class="firstcol " ><p><strong>Smartwatch battery life (raise-to-wake)</strong></p></td><td  ><p>10 days (43mm), 16 days (47mm), 31 days (51mm)</p></td><td  ><p>10 days (43mm), 16 days (47mm), 29 days (51mm)</p></td><td  ><p>15 days (47mm), 27 days (51m)</p></td></tr><tr><td class="firstcol " ><p><strong>Smartwatch battery life (always-on)</strong></p></td><td  ><p>4 days (43mm), 6 days (47mm), 11 days (51mm)</p></td><td  ><p>4 days (43mm), 7 days (47mm), 13 days (51mm)</p></td><td  ><p>8 days (47mm), 15 days (51mm)</p></td></tr><tr><td class="firstcol " ><p><strong>GPS battery life (all-systems)</strong></p></td><td  ><p>16 hours (43mm), 32 hours (47mm), 48 hours (51mm)</p></td><td  ><p>18 hours (43mm), 30 hours (47mm), 54 hours (51mm)</p></td><td  ><p>26 hours (47mm), 47 hours (51mm)</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-how-much-should-the-garmin-epix-pro-cost-in-2026"><span>How much should the Garmin Epix Pro cost in 2026?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3445px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="u4WuDk4sMShnNcvoCkJaxD" name="IMG_6660.jpg" alt="a photo of the Garmin Epix Pro on the wrist" src="https://cdn.mos.cms.futurecdn.net/u4WuDk4sMShnNcvoCkJaxD.jpg" mos="" align="middle" fullscreen="" width="3445" height="1938" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future/Tom's Guide)</span></figcaption></figure><p>The best deals available tend to be on the sapphire titanium model of the watch, which I do think is worth getting over the standard model anyway, because it’s lighter and more durable.</p><p>If you shop around the likes of Amazon, Walmart and Best Buy, you can usually find the watch for half its original price, so $499 for the 42mm and 47mm sapphire watches, and $549 for the 51mm sapphire watch. On occasion the 47mm watch has dropped to $449, which is the lowest I’ve ever seen it.</p><p>Even in sales you’ll pay more like $849 for the equivalent Fenix 8 and $949 for the Fenix 8 Pro, so it’s a notable saving to opt for the Epix Pro.</p><h3 class="article-body__section" id="section-what-do-newer-models-offer"><span>What do newer models offer?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B63V5jMEy5D6AVZEE4UASa" name="Garmin Fenix 8 Pro" alt="Garmin Fenix 8 and Garmin Fenix 8 Pro" src="https://cdn.mos.cms.futurecdn.net/B63V5jMEy5D6AVZEE4UASa.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There are some design differences between the Epix Pro and newer models, starting with the fact you can get a MIP or AMOLED screen on the Fenix 8, and AMOLED or <a href="https://www.tomsguide.com/wellness/smartwatches/i-tried-garmins-usd2k-microled-smartwatch-and-the-display-was-even-better-than-i-expected">MicroLED on the Fenix 8 Pro</a>.</p><p>I’m going to compare the AMOLED models of those watches though, since that’s the most applicable if you’re picking between them and the Epix Pro.</p><p>Other design upgrades on the newer watches include a speaker and mic, leakproof buttons and a diveproof rating of 40m. The Fenix 8 Pro also has a brighter AMOLED screen than older models.</p><p>On the software side of things the newer Fenix watches have an updated user interface that’s a bit easier to navigate, and are still getting updates that bring new features to them, like Garmin’s handy running tolerance estimate and running economy measurements.</p><p>One of the biggest upgrades available is only on the Fenix 8 Pro, which is LTE and satellite connectivity. </p><p>This could be an invaluable addition if you regularly head off the grid for your activities, since it allows you to stay connected where there’s no cellular signal. It’s also handy for general use if you prefer not to bring your phone with you during activities.</p><p>In my extensive testing — I’ve run marathons with all three watches and an ultramarathon with the Epix Pro — I found that they offered the same level of GPS and heart rate accuracy, impressing on both fronts.</p><p>Going forward, I expect the Fenix 8 Pro will continue to get new software features via updates for the foreseeable future, something that’s not the case with the Epix Pro, which I think will only get things like bug fixes. </p><h3 class="article-body__section" id="section-is-the-garmin-epix-pro-still-worth-it-in-2026"><span>Is the Garmin Epix Pro still worth it in 2026?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1024px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rFWhbHSPezjpcaEXnVjhsd" name="Garmin Epix Pro" alt="Garmin Epix Pro" src="https://cdn.mos.cms.futurecdn.net/rFWhbHSPezjpcaEXnVjhsd.jpg" mos="" align="middle" fullscreen="" width="1024" height="576" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you’re putting together a checklist of features you want on your watch and it includes a rugged design, maps, an AMOLED display and impeccable sports tracking, the Epix Pro ticks all those boxes.</p><p>It’s absolutely still worth looking at in 2026, because a lot of the updates available on newer Garmin watches are not essentials for everyone. If you don’t need the mic and speaker or LTE/satellite connectivity and don’t go diving, the Epix Pro covers the same bases well at a much lower price in sales.</p><p>You won’t get software updates and at times the Epix Pro can look and feel a little dated when compared directly to the newer Fenix watches, but that’s not a huge price to pay given the saving you’re making.</p><p>Outside the Fenix 8 and Fenix 8 Pro some other new watches that compete with the Epix Pro include the<a href="https://www.tomsguide.com/wellness/smartwatches/i-just-went-hands-on-with-the-suunto-vertical-2-and-it-beats-my-favorite-garmin-in-5-big-ways"> Suunto Vertical 2</a>, which offers longer battery life and is $599 (steel) or $699 (titanium), and the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Garmin Forerunner 970</a> ($749), which is lighter and slimmer than the Epix Pro and has all of Garmin’s latest features, but has a mostly plastic design.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W09zMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W09zMO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/running/im-a-running-noob-doing-my-first-5k-heres-all-the-tech-im-using-to-cross-the-finish-line">I’m a running noob doing my first 5K — here’s all the tech I’m using to cross the finish line</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-and-the-winner-was-nearly-too-close-to-call">I walked 5,000 steps with the Garmin Forerunner 570 vs Apple Watch Ultra 3 — and the winner was nearly too close to call</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-logged-37-miles-at-mwc-2026-on-my-garmin-instinct-3-here-are-5-things-i-learned">I logged 37 miles at MWC 2026 on my Garmin Instinct 3 — here are 5 things I learned</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin Fenix 8 vs Fenix 8 Pro — both are reduced by $250 now and after testing each one here's why I think the Fenix 8 is better value for most people ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-fenix-8-pro-both-are-reduced-by-usd250-now-and-after-testing-each-one-heres-why-i-think-the-fenix-8-is-better-value-for-most-people</link>
                                                                            <description>
                            <![CDATA[ Garmin’s flagship Fenix watches are both heavily reduced right now and having tested both extensively I’d opt for the standard Fenix 8 unless you need LTE and satellite connectivity. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">fza4KmUqic3taJiSqU8HFh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QHuiu53xqrNpAyLsdgrTBG-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 07 May 2026 09:57:00 +0000</pubDate>                                                                                                                                <updated>Thu, 07 May 2026 10:48:47 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/QHuiu53xqrNpAyLsdgrTBG-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Fenix 8 vs Fenix 8 Pro deal]]></media:description>                                                            <media:text><![CDATA[Garmin Fenix 8 vs Fenix 8 Pro deal]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Fenix 8 vs Fenix 8 Pro deal]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QHuiu53xqrNpAyLsdgrTBG-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’ve been testing the Garmin Fenix line of sports watches since the Fenix 5 Plus launched back in 2018, and have seen first-hand the price of Garmin’s flagship rise from $699 to the dizzying heights of $1,999 for the Garmin Fenix 8 Pro MicroLED, which launched in 2025.</p><p>These price rises mean that it’s more important than ever to look out for deals on the Fenix, and right now both the Garmin Fenix 8 and Garmin Fenix 8 Pro AMOLED are reduced by $250.</p><p>That means you can get the <a href="https://www.amazon.com/Garmin-f%C4%93nix%C2%AE-Multisport-Long-Lasting-Built/dp/B0DC6ZD31R" target="_blank" rel="nofollow">Garmin Fenix 8 for $749 at Amazon,</a> and the <a href="https://www.amazon.com/Garmin-Connected-Multisport-Smartwatch-Technology/dp/B0FPMGFV9G" target="_blank" rel="nofollow">Garmin Fenix 8 Pro AMOLED for $949</a>, or pay $100 more to get the larger 51mm model of either watch.</p><div class="product"><a data-dimension112="b5089bd7-41d5-45e6-878c-05e29ac6b0db" data-action="Deal Block" data-label="All three sizes of the Garmin Fenix 8 are reduced in the Amazon sale, and you can get them with either steel or titanium cases. The lowest price available is on the steel 43mm or 47mm watches, while titanium models cost $100 more." data-dimension48="All three sizes of the Garmin Fenix 8 are reduced in the Amazon sale, and you can get them with either steel or titanium cases. The lowest price available is on the steel 43mm or 47mm watches, while titanium models cost $100 more." data-dimension25="$749" href="https://www.amazon.com/Garmin-f%C4%93nix%C2%AE-Multisport-Long-Lasting-Built/dp/B0DC6ZD31R" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:694px;"><p class="vanilla-image-block" style="padding-top:116.86%;"><img id="DUPZqNYp7WjoWX5YqacXLE" name="Garmin Fenix 8" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DUPZqNYp7WjoWX5YqacXLE.png" mos="" align="middle" fullscreen="" width="694" height="811" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>All three sizes of the Garmin Fenix 8 are reduced in the Amazon sale, and you can get them with either steel or titanium cases. The lowest price available is on the steel 43mm or 47mm watches, while titanium models cost $100 more.<a class="view-deal button" href="https://www.amazon.com/Garmin-f%C4%93nix%C2%AE-Multisport-Long-Lasting-Built/dp/B0DC6ZD31R" target="_blank" rel="nofollow" data-dimension112="b5089bd7-41d5-45e6-878c-05e29ac6b0db" data-action="Deal Block" data-label="All three sizes of the Garmin Fenix 8 are reduced in the Amazon sale, and you can get them with either steel or titanium cases. The lowest price available is on the steel 43mm or 47mm watches, while titanium models cost $100 more." data-dimension48="All three sizes of the Garmin Fenix 8 are reduced in the Amazon sale, and you can get them with either steel or titanium cases. The lowest price available is on the steel 43mm or 47mm watches, while titanium models cost $100 more." data-dimension25="$749">View Deal</a></p></div><div class="product"><a data-dimension112="ad70b259-179c-4c52-9049-f6c338f17c31" data-action="Deal Block" data-label="The Garmin Fenix 8 Pro AMOLED is available in 47mm and 51mm sizes and offers LTE and satellite connectivity as its key upgrade on the standard Fenix 8. The AMOLED model is better value than the Fenix 8 Pro MicroLED, even though the latter is also reduced in the sale." data-dimension48="The Garmin Fenix 8 Pro AMOLED is available in 47mm and 51mm sizes and offers LTE and satellite connectivity as its key upgrade on the standard Fenix 8. The AMOLED model is better value than the Fenix 8 Pro MicroLED, even though the latter is also reduced in the sale." data-dimension25="$949" href="https://www.amazon.com/Garmin-Connected-Multisport-Smartwatch-Technology/dp/B0FPMGFV9G" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1300px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Fm3K2W4UvNjTmfT7NxLGuZ" name="Garmin Fenix 8 Pro AMOLED sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Fm3K2W4UvNjTmfT7NxLGuZ.jpg" mos="" align="middle" fullscreen="" width="1300" height="1300" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Fenix 8 Pro AMOLED is available in 47mm and 51mm sizes and offers LTE and satellite connectivity as its key upgrade on the standard Fenix 8. The AMOLED model is better value than the Fenix 8 Pro MicroLED, even though the latter is also reduced in the sale.<a class="view-deal button" href="https://www.amazon.com/Garmin-Connected-Multisport-Smartwatch-Technology/dp/B0FPMGFV9G" target="_blank" rel="nofollow" data-dimension112="ad70b259-179c-4c52-9049-f6c338f17c31" data-action="Deal Block" data-label="The Garmin Fenix 8 Pro AMOLED is available in 47mm and 51mm sizes and offers LTE and satellite connectivity as its key upgrade on the standard Fenix 8. The AMOLED model is better value than the Fenix 8 Pro MicroLED, even though the latter is also reduced in the sale." data-dimension48="The Garmin Fenix 8 Pro AMOLED is available in 47mm and 51mm sizes and offers LTE and satellite connectivity as its key upgrade on the standard Fenix 8. The AMOLED model is better value than the Fenix 8 Pro MicroLED, even though the latter is also reduced in the sale." data-dimension25="$949">View Deal</a></p></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VC4hdknxmjRZrg6cWAxdsK" name="Garmin Fenix 8 Pro" alt="Garmin Fenix 8 Pro" src="https://cdn.mos.cms.futurecdn.net/VC4hdknxmjRZrg6cWAxdsK.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both are outstanding watches that I’ve used extensively myself — I’ve run marathons using both watches, and used them for months of training as well — so is the Fenix 8 Pro worth the upgrade?</p><p>For me the decision comes down to one thing; do you need the LTE and satellite connectivity features on the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-pro-review-the-greatest-fenix-yet">Garmin Fenix 8 Pro</a>? </p><p>This is the main upgrade you get with the pricier watch, and it can be a vital one if your adventures regularly take you off the grid, or you just like to head into the great outdoors without a phone.</p><p>There are other upgrades on the Fenix 8 Pro, like a slightly brighter display, but during my testing I didn’t find this made a noticeable difference when using the watches.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CHKkT48W3XRCpCreZeh8Sa" name="Garmin Fenix 8 Pro" alt="Garmin Fenix 8 Pro" src="https://cdn.mos.cms.futurecdn.net/CHKkT48W3XRCpCreZeh8Sa.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The standard <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-review">Garmin Fenix 8</a> also has some advantages. It’s lighter and slimmer than the Pro models as well as being cheaper, and it also comes in three sizes 43mm, 47mm and 51mm, whereas the Pro only comes in 47mm and 51mm sizes.</p><p>Fans of MIP screens will only find it available with the Fenix 8 Solar model; you can only get AMOLED or <a href="https://www.tomsguide.com/wellness/smartwatches/the-inside-story-of-how-garmin-beat-apple-and-everyone-else-to-make-the-worlds-first-microled-smartwatch">MicroLED</a> screens with the Fenix 8 Pro.</p><p>You can also get a steel model of the Fenix 8, which is the cheapest option, whereas only titanium versions of the Fenix 8 Pro are available. That said, I’d pay the $100 extra to get a titanium Fenix 8 if you opt for it, because it’s lighter and more durable than the steel watch.</p><p>If you pick up any model of the Fenix 8 or Fenix 8 Pro you’re going to have a great sports watch on your wrist, but unless you need extra connectivity, the Fenix 8 is the better value pick.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I ran a 5K with the Garmin Forerunner 570 vs Apple Watch Ultra 3 and although the pace data matched up perfectly across both devices, the Garmin’s exercise load metric and detailed vertical ratio analysis made it the clear winner ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness/i-ran-a-5k-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-5-things-i-learned</link>
                                                                            <description>
                            <![CDATA[ Garmin vs Apple, which smartwatch is better for tracking a run? I decided to find out by running my first 5K wearing both. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CcCGe97rwaEQDt2yog8Aqh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gJh2NAjbajQqFFxQJfFLYg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 06 May 2026 05:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 06 May 2026 21:07:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Fitness]]></category>
                                                    <category><![CDATA[Running]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gJh2NAjbajQqFFxQJfFLYg-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Forerunner 570 and Apple Watch Ultra 3 in the writer&#039;s hand showing the results of a 5K run]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Forerunner 570 and Apple Watch Ultra 3 in the writer&#039;s hand showing the results of a 5K run]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Forerunner 570 and Apple Watch Ultra 3 in the writer&#039;s hand showing the results of a 5K run]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gJh2NAjbajQqFFxQJfFLYg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I just participated in my very first official running event: a 5K in Durham, North Carolina. Despite some <a href="https://www.tomsguide.com/wellness/fitness/i-just-ran-my-first-5k-heres-how-i-conquered-the-pre-race-jitters">pre-race jitters</a>, I managed to complete the event in 31 minutes and 11 seconds, a much faster time than I was anticipating!</p><p>While my running bib for the event tracked my progress and pace throughout the race, I also wore a <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Garmin Forerunner 570</a> on one wrist and an <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-ultra-3-review">Apple Watch Ultra 3</a> on the other for additional insights into my performance. </p><p>Both watches performed well, churning out similar data across the board. However, there are some exceptions worth calling out, especially when comparing the watch stats to my official race time and pace. </p><h3 class="article-body__section" id="section-1-my-official-finish-time-was-faster-than-apple-s-and-garmin-s"><span>1. My official finish time was faster than Apple's and Garmin’s</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1290px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="GSVXUgM5sZJVQoxuLeMAHg" name="first-5K-03" alt="Dan Bracaglia at his first 5K race" src="https://cdn.mos.cms.futurecdn.net/GSVXUgM5sZJVQoxuLeMAHg.jpg" mos="" align="middle" fullscreen="" width="1290" height="726" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>The chip in a race bib begins tracking the second you cross the starting line and concludes the moment you pass the finish, for an ultra-precise time calculation, and one that ultimately proved to be quicker than what Apple or Garmin calculated. </p><p>To be fair, I began tracking on both smartwatches about 50 feet before crossing the start, and forgot to end tracking until a minute or more after the race’s completion. As a result, the Forerunner 570 noted a “moving time” of 32 minutes and 27 seconds, while the Ultra 3 said my “workout time” was 32 minutes and 22 seconds. </p><p>These finish times are still pretty close to my official finish; however, I expected the Garmin to be more in lock-step with the chip’s tally, given the fact that I’d preloaded the race and course onto my Forerunner 570 the night before.</p><h3 class="article-body__section" id="section-2-garmin-s-post-run-performance-insights-go-deeper-than-apple-s"><span>2. Garmin’s post-run performance insights go deeper than Apple’s</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1289px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jieZT9EFGydumfTnkuNTSK" name="Garmin-run-5K-01" alt="Post-5K race data from the Garmin Forerunner 570" src="https://cdn.mos.cms.futurecdn.net/jieZT9EFGydumfTnkuNTSK.jpg" mos="" align="middle" fullscreen="" width="1289" height="725" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>In addition to metrics like heart rate, average pace, elevation gain, and finish time, both the Apple Watch Ultra 3 (using Apple’s native fitness app) and Garmin Forerunner 570  provide insights into power, cadence, vertical oscillation, ground contact time, and stride length.</p><p>Only Garmin breaks down your time spent walking versus running though. In my case, I spent 91 seconds of the race walking, a takeaway I was pretty proud of. Garmin also provides a metric for vertical ratio. While vertical oscillation tells you how much vertical movement your torso makes with each step, vertical ratio clues you into just how efficient your running style is. </p><p>Calculated by dividing vertical oscillation by stride length (and multiplying by 100), the lower your vertical ratio percentage, the more efficient your running is. Mine was 9.1 cm, which is about average for my age and gender.</p><h3 class="article-body__section" id="section-3-pace-data-matches-up-nicely-across-the-board"><span>3. Pace data matches up nicely across the board</span></h3><p>All three tracking methods noted a similar average pace. The bib chip noted a pace of roughly 10:02 per mile, while Garmin calculated my average pace at 10:01 per mile. Apple’s tally was a little more generous with a pace of 9:57 per mile. </p><h3 class="article-body__section" id="section-4-garmin-s-recovery-insights-are-better-than-apple-s"><span>4. Garmin's recovery insights are better than Apple's</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1290px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="JNLRxqr6RwjxF8PeUw9RSK" name="Garmin-run-5K-02" alt="Post-5K race data from the Garmin Forerunner 570" src="https://cdn.mos.cms.futurecdn.net/JNLRxqr6RwjxF8PeUw9RSK.jpg" mos="" align="middle" fullscreen="" width="1290" height="726" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Apple’s native fitness tracking app still doesn’t provide recovery time recommendations post-workout, while Garmin does. For my 5K running efforts, the Forerunner 570 recommended a recovery time of a whopping 71 hours! </p><p>That seemed like a lot, at first. However, I’m now roughly three days out from the event, and still feeling a tad sore in my quads. So, perhaps 71 hours of post-race rest was right on the money. </p><p>I also appreciate Garmin's exercise load metric, which you won't find on even the <a href="https://www.tomsguide.com/best-picks/best-apple-watch">best Apple Watch</a> models (though Apple does offer a training load stat). Garmin’s exercise load calculates the physiological impact of a workout, or how strenuous it is on the body, by monitoring your post-exercise oxygen consumption and how long it takes you to return to your non-workout baseline.</p><p>A higher exercise load number, between 185 and 300, indicates a harder workout. Meanwhile, scores below 100 reflect an easy workout, while scores between 100 and 170 reflect moderate effort. In my case, Garmin calculated my exercise load for the 5K at 225, indicating a more intense amount of effort than normal.</p><h3 class="article-body__section" id="section-5-both-watches-showed-my-speed-increasing-with-each-mile"><span>5. Both watches showed my speed increasing with each mile </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5130px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="JVEAj9u6NVdWNAW2RELDXg" name="first-5K-02" alt="Close-up of the Garmin Forerunner 570 and Apple Watch Ultra 3 next to a race metal" src="https://cdn.mos.cms.futurecdn.net/JVEAj9u6NVdWNAW2RELDXg.jpg" mos="" align="middle" fullscreen="" width="5130" height="2886" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Lastly, both the Apple Watch Ultra 3 and Garmin Forerunner 570 showed my speed increasing with each passing mile. Garmin calculated my first mile at 10:39, my second at 9:38, and my third at 9:35. Apple, meanwhile, noted a mile-one time of 10:21, a mile-two time of 9:36, and a mile-three time of 9:34. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OzLple"></div>                            </div>                            <script src="https://kwizly.com/embed/OzLple.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/running/im-a-running-noob-doing-my-first-5k-heres-all-the-tech-im-using-to-cross-the-finish-line">I’m a running noob doing my first 5K — here’s all the tech I’m using to cross the finish line</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-and-the-winner-was-nearly-too-close-to-call">I walked 5,000 steps with the Garmin Forerunner 570 vs Apple Watch Ultra 3 — and the winner was nearly too close to call</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-logged-37-miles-at-mwc-2026-on-my-garmin-instinct-3-here-are-5-things-i-learned">I logged 37 miles at MWC 2026 on my Garmin Instinct 3 — here are 5 things I learned</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Garmin Forerunner 970 is my favorite running watch and it’s back at its lowest price right now ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/the-garmin-forerunner-970-is-my-favorite-running-watch-and-its-back-at-its-lowest-price-right-now</link>
                                                                            <description>
                            <![CDATA[ I just trained for and ran the London Marathon with the Garmin Forerunner 970 and it’s the best running watch I’ve tested, so this deal is worth looking at. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">74zSUuxaF47mW855x8PG4B</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/TR3L53EF7yNYQrpbAGwJQD-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 01 May 2026 09:47:32 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/TR3L53EF7yNYQrpbAGwJQD-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 970 Low Price]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 970 Low Price]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 970 Low Price]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/TR3L53EF7yNYQrpbAGwJQD-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I get to test a lot of great smartwatches for my job, but it’s only the very best watches that stay on my wrist after testing. When it comes to my own marathon training, the Garmin Forerunner 970 has been my go-to for almost a year now.</p><p>This year, I used it to train for and run the London Marathon, and it proved both impeccably accurate and genuinely useful throughout the past five months of training.</p><p>After all this testing I can’t speak highly enough of the Forerunner 970, but it is expensive at full price, so I’m always keeping an eye out for discounts.</p><p>Right now you can get the <a href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QZ7233" target="_blank" rel="nofollow">Garmin Forerunner 970 for $649 at Amazon</a>, which is a $100 saving and matches the lowest price I’ve seen on the watch.</p><div class="product"><a data-dimension112="125bddbb-baf9-42b0-bfeb-a12253153e8a" data-action="Deal Block" data-label="All three colors of the Garmin Forerunner 970 are reduced by $100 on Amazon right now, matching the lowest price I’ve ever seen on the watch. It’s the best sports watch available in my view, offering best-in-class tracking, training analysis and navigation features in a lightweight but durable design." data-dimension48="All three colors of the Garmin Forerunner 970 are reduced by $100 on Amazon right now, matching the lowest price I’ve ever seen on the watch. It’s the best sports watch available in my view, offering best-in-class tracking, training analysis and navigation features in a lightweight but durable design." data-dimension25="$649" href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QZ7233" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1268px;"><p class="vanilla-image-block" style="padding-top:94.95%;"><img id="3GKnEu7CdhtxPMfnPCMCiA" name="Garmin Forerunner 970" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png" mos="" align="middle" fullscreen="" width="1268" height="1204" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>All three colors of the Garmin Forerunner 970 are reduced by $100 on Amazon right now, matching the lowest price I’ve ever seen on the watch. It’s the best sports watch available in my view, offering best-in-class tracking, training analysis and navigation features in a lightweight but durable design.<a class="view-deal button" href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QZ7233" target="_blank" rel="nofollow" data-dimension112="125bddbb-baf9-42b0-bfeb-a12253153e8a" data-action="Deal Block" data-label="All three colors of the Garmin Forerunner 970 are reduced by $100 on Amazon right now, matching the lowest price I’ve ever seen on the watch. It’s the best sports watch available in my view, offering best-in-class tracking, training analysis and navigation features in a lightweight but durable design." data-dimension48="All three colors of the Garmin Forerunner 970 are reduced by $100 on Amazon right now, matching the lowest price I’ve ever seen on the watch. It’s the best sports watch available in my view, offering best-in-class tracking, training analysis and navigation features in a lightweight but durable design." data-dimension25="$649">View Deal</a></p></div><p>The <a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-the-garmin-forerunner-970-for-six-months-here-are-my-long-term-pros-and-cons">Garmin Forerunner 970</a> is the top-of-the-range Forerunner and so is packed with all of Garmin’s best sports tracking and training analysis features. </p><p>It also has offline maps and excellent navigation features, and the only significant differences between it and the more expensive <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-pro-review-the-greatest-fenix-yet">Garmin Fenix 8 Pro</a> are that the latter has a metal case and LTE and satellite connectivity.</p><p>I’ve found the Garmin Forerunner 970 to be durable in my extended testing — its sapphire screen is a notable upgrade on the Garmin Forerunner 965’s glass one — and I prefer its lighter, slimmer design to the bigger Fenix.</p><p>Having tracked the price of the watch for a while I think that this $100 discount will be regularly available in sale periods throughout 2026, but I don’t think the watch will drop much lower at any point. </p><p>A bigger discount is possible, but unlikely unless Garmin launches a successor, but I wouldn’t expect an update to the Forerunner 970 to land until next year, matching the two-year gap between the Forerunner 965 and Forerunner 970.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’m a running noob doing my first 5K — here’s all the tech I’m using to cross the finish line ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/running/im-a-running-noob-doing-my-first-5k-heres-all-the-tech-im-using-to-cross-the-finish-line</link>
                                                                            <description>
                            <![CDATA[ I'm running my first 5K in a few days; here's everything I'll be wearing on race day to ensure I make it across the finish line with a smile on my face. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ojDhKu3xsgaM4GXonzormg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/woJwX2XdSWNJj8jEpfHjoa-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 29 Apr 2026 05:48:50 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Running]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/woJwX2XdSWNJj8jEpfHjoa-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Rossignol Vezor trail running shoes in bright red/orange next to the Garmin Forerunner 570 smartwatch]]></media:description>                                                            <media:text><![CDATA[Close-up of the Rossignol Vezor trail running shoes in bright red/orange next to the Garmin Forerunner 570 smartwatch]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Rossignol Vezor trail running shoes in bright red/orange next to the Garmin Forerunner 570 smartwatch]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/woJwX2XdSWNJj8jEpfHjoa-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’m a running noob. While several of my colleagues on the Tom’s Guide fitness team just <a href="https://www.tomsguide.com/wellness/smartwatches/i-ran-the-london-marathon-with-the-garmin-forerunner-970-vs-coros-pace-4-which-was-more-accurate">completed the London Marathon</a> — with rather impressive times, I might add — I’m prepping for a much more modest event: My first 5K.</p><p>Though I’m an avid <a href="https://www.tomsguide.com/wellness/smartwatches/i-biked-11-miles-with-the-apple-watch-ultra-3-vs-strava-and-theres-a-clear-winner">cyclist</a>, <a href="https://www.tomsguide.com/wellness/fitness/i-climbed-seattles-twin-peaks-to-test-the-worlds-most-compact-full-size-binoculars-and-i-was-amazed-by-what-i-saw">hiker</a>, <a href="https://www.tomsguide.com/wellness/ive-been-snowboarding-for-20-years-9-pieces-of-gear-id-buy-over-and-over-again">snowboarder</a>, and all-around outdoor adventure enthusiast, running has never really been my cup of tea. But I’m trying to change that! Which is why back in March, at 38-years-old, I signed up to run my first 5K and began training. </p><p>There have been some bumps in the road: sore lower back muscles, likely from over-extending my stride (an issue I have since corrected), rolled ankles, dropped AirPods, etc. However, with under a week to go until the big day, I’m feeling cautiously optimistic that I won’t only survive my first 5K, but actually enjoy it.</p><p>With that said, here are the five pieces of gear I’ll be using come race day to help me get across the finish line in a timely (for me) fashion. </p><h3 class="article-body__section" id="section-1-smartwatch-garmin-forerunner-570-and-apple-watch-ultra-3"><span>1. Smartwatch: Garmin Forerunner 570 and Apple Watch Ultra 3</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4348px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="KNvQMFR2nKBJ6oyeYGNLBi" name="AWU3-GarminF570-05" alt="Close-up of the Apple Watch Ultra 3 and Garmin Forerunner 570 in a user's hand with blooming flowers in the background" src="https://cdn.mos.cms.futurecdn.net/KNvQMFR2nKBJ6oyeYGNLBi.jpg" mos="" align="middle" fullscreen="" width="4348" height="2446" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>“Two watches??” You bet! As a wearable tech reporter, I’m always eager to test the tracking performance of popular smartwatches head-to-head in real-world scenarios (even if my race performance is far from noteworthy). </p><p>I chose the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Garmin Forerunner 570</a> because it’s been my go-to smartwatch for training. It’s also incredibly lightweight, easy to view in bright sunlight, great on battery life, and perhaps most importantly (to me), has onboard storage to save my Spotify running playlists.</p><p>The <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-ultra-3-review">Apple Watch Ultra 3</a>, meanwhile, should be Apple’s most accurate fitness tracker thanks to multiband GPS. $150 pricier than the Forerunner 570, the Ultra 3 similarly boasts an ultra-bright display, solid battery performance, and detailed post-race fitness insights. </p><p>Stay tuned for a post-5K article on how the two devices ultimately compare, both in terms of race-day comfort, performance, and metrics. In the meantime, here’s my 5,000-step fitness tracking accuracy comparison with the <a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-and-the-winner-was-nearly-too-close-to-call">Ultra 3 vs. the Forerunner 570</a> (spoiler: it was almost too close to call).</p><div class="product"><a data-dimension112="b7ce6653-8849-469f-95c7-06f3dad9cd75" data-action="Deal Block" data-label="The Forerunner 570 is a midrange smartwatch built with runners in mind and big on training and recovery features. It also sports a bright screen and a lightweight, comfy design with plenty of battery for even the longest runs." data-dimension48="The Forerunner 570 is a midrange smartwatch built with runners in mind and big on training and recovery features. It also sports a bright screen and a lightweight, comfy design with plenty of battery for even the longest runs." data-dimension25="$449" href="https://www.bestbuy.com/product/garmin-forerunner-570-gps-smartwatch-47-mm-aluminum-amp-yellow-aluminum-2025/JXF9YFFYHL/sku/6633095" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1271px;"><p class="vanilla-image-block" style="padding-top:97.88%;"><img id="bG4vPzQ6L2ZmYCf274jVDF" name="Garmin Forerunner 570" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bG4vPzQ6L2ZmYCf274jVDF.png" mos="" align="middle" fullscreen="" width="1271" height="1244" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 570 is a midrange smartwatch built with runners in mind and big on training and recovery features. It also sports a bright screen and a lightweight, comfy design with plenty of battery for even the longest runs.<a class="view-deal button" href="https://www.bestbuy.com/product/garmin-forerunner-570-gps-smartwatch-47-mm-aluminum-amp-yellow-aluminum-2025/JXF9YFFYHL/sku/6633095" target="_blank" rel="nofollow" data-dimension112="b7ce6653-8849-469f-95c7-06f3dad9cd75" data-action="Deal Block" data-label="The Forerunner 570 is a midrange smartwatch built with runners in mind and big on training and recovery features. It also sports a bright screen and a lightweight, comfy design with plenty of battery for even the longest runs." data-dimension48="The Forerunner 570 is a midrange smartwatch built with runners in mind and big on training and recovery features. It also sports a bright screen and a lightweight, comfy design with plenty of battery for even the longest runs." data-dimension25="$449">View Deal</a></p></div><h3 class="article-body__section" id="section-earbuds-beats-powerbeats-pro-2"><span>Earbuds: Beats Powerbeats Pro 2 </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2963px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="AqQcrASEDGfGhE8Uo8BzM4" name="BeatsPro2" alt="Beats PowerBeats Pro 2 in orange" src="https://cdn.mos.cms.futurecdn.net/AqQcrASEDGfGhE8Uo8BzM4.jpg" mos="" align="middle" fullscreen="" width="2963" height="1667" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I mentioned losing an earbud while training in the intro; more specifically, it was an <a href="https://www.tomsguide.com/reviews/airpods-pro-2-review">Apple AirPods Pro 2</a> that managed to dislodge itself from my dainty ear canal not once but twice during my month of training. </p><p>To avoid similar issues on 5K day, I treated myself to a shiny new pair of <a href="https://www.tomsguide.com/audio/beats-powerbeats-pro-2-review">Beats Powerbeats Pro 2</a>, which offer excellent battery life, powerful bass, and most crucially, over-ear hooks to ensure a secure fit. They're also our top pick for <a href="https://www.tomsguide.com/wellness/fitness/best-workout-headphones">best workout headphones</a> in 2026.</p><p>That said, I’m not 100% sold on the design, especially coming from a pair of AirPods. Out of the box, I’m finding the hooks on the Powerbeats Pro 2 a tad uncomfortable. It’s something I anticipated, but hope to overcome sooner rather than later. Either way, I’m planning on bringing my AirPods Pro 2 along as a backup, just in case.</p><div class="product"><a data-dimension112="ad5d5bc9-6888-435e-a01c-f203de3b698f" data-action="Deal Block" data-label="Big on bass and battery life, the Powerbeats Pro 2 feature an over-ear "hook" to ensure they stay put in your ears, even during the most extreme workouts." data-dimension48="Big on bass and battery life, the Powerbeats Pro 2 feature an over-ear "hook" to ensure they stay put in your ears, even during the most extreme workouts." data-dimension25="$249" href="https://www.amazon.com/dp/B0DT2LTRL7?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:622px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Cwv4L3j7rqxiF4Zv8g3EN" name="Beats Powerbeats Pro 2 orange sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Cwv4L3j7rqxiF4Zv8g3EN.jpg" mos="" align="middle" fullscreen="" width="622" height="622" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Big on bass and battery life, the Powerbeats Pro 2 feature an over-ear "hook" to ensure they stay put in your ears, even during the most extreme workouts.<a class="view-deal button" href="https://www.amazon.com/dp/B0DT2LTRL7?th=1" target="_blank" rel="nofollow" data-dimension112="ad5d5bc9-6888-435e-a01c-f203de3b698f" data-action="Deal Block" data-label="Big on bass and battery life, the Powerbeats Pro 2 feature an over-ear "hook" to ensure they stay put in your ears, even during the most extreme workouts." data-dimension48="Big on bass and battery life, the Powerbeats Pro 2 feature an over-ear "hook" to ensure they stay put in your ears, even during the most extreme workouts." data-dimension25="$249">View Deal</a></p></div><h3 class="article-body__section" id="section-running-shoes-rossignol-vezor"><span> Running shoes: Rossignol Vezor</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7VpKnUzA2rpBe9Z8amccmB" name="Rosignol-shoes" alt="Close-up of the Rossignol Vezor trail running shoes in bright red/orange next to the Garmin Forerunner 570 smartwatch" src="https://cdn.mos.cms.futurecdn.net/7VpKnUzA2rpBe9Z8amccmB.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Rossignol is a relatively new player in the running shoe world, but skiers will likely recognize the name. The French-based brand has been manufacturing skis and outdoor gear for well over 100 years.</p><p>The $180 Rossignol Vezor is a trail running shoe, which I prefer to standard running kicks. Seattle, Washington (where I live), is a wet, hilly city, and I need all the traction I can get while training, especially when you factor in deadly piles of rain-soaked leaves (IYKYK).</p><p>These bad boys are mighty grippy, with a responsive, plush heel and breathable, lightweight design. They are also quite loud. Not in terms of foot-on-ground sound, but in terms of color. I have the neon red option, and you can probably see me coming from a mile out. </p><p>Ultimately, I broke in my pair of Vezors while covering <a href="https://www.tomsguide.com/tech-events/best-of-ces-2026-awards-the-top-25-new-gadgets">CES 2026</a> earlier this year, where <a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-65-000-steps-with-the-garmin-venu-4-5-things-i-learned">I walked roughly 65,000 steps</a> in three days. Comfortable from the moment I put them on, they’ve also treated me well during my short training period. </p><div class="product"><a data-dimension112="78f51adb-9fbc-403a-a8f3-dc846ab5f063" data-action="Deal Block" data-label="Save 30% off these super comfortable, responsive, and grippy trail running shoes from legendary outdoor moutaineering brand Rossignol." data-dimension48="Save 30% off these super comfortable, responsive, and grippy trail running shoes from legendary outdoor moutaineering brand Rossignol." data-dimension25="$126" href="https://paragonsports.com/products/5297_1097415_1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:896px;"><p class="vanilla-image-block" style="padding-top:96.99%;"><img id="zrDrfuPrrLa4Fr4R49Evwn" name="Screenshot 2026-04-28 at 3.52.07 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/zrDrfuPrrLa4Fr4R49Evwn.png" mos="" align="middle" fullscreen="" width="896" height="869" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Save 30% off these super comfortable, responsive, and grippy trail running shoes from legendary outdoor moutaineering brand Rossignol. <a class="view-deal button" href="https://paragonsports.com/products/5297_1097415_1" target="_blank" rel="nofollow" data-dimension112="78f51adb-9fbc-403a-a8f3-dc846ab5f063" data-action="Deal Block" data-label="Save 30% off these super comfortable, responsive, and grippy trail running shoes from legendary outdoor moutaineering brand Rossignol." data-dimension48="Save 30% off these super comfortable, responsive, and grippy trail running shoes from legendary outdoor moutaineering brand Rossignol." data-dimension25="$126">View Deal</a></p></div><h3 class="article-body__section" id="section-shorts-pudulla-running-shorts"><span>Shorts: Pudulla running shorts</span></h3><p>I’m not too picky about running shorts. I also wasn’t looking to break the bank on a pair, which is why I opted for the well-reviewed Pudulla Men’s Running Shorts from <a href="https://paragonsports.com/products/5297_1097415_1" target="_blank" rel="nofollow">Amazon for just $19</a>.</p><p>Technically, two shorts in one, a skin-hugging spandex layer wicks sweat, prevents chaffing, and keeps, erhm, everything in place. The outer layer, meanwhile, is lightweight, fast-drying, and loosey goosey.</p><p>Though I’m not planning on running the 5K with my smartphone on me, I also appreciate the hidden phone-sized pocket in the spandex layer. </p><div class="product"><a data-dimension112="d15b4813-45f3-442b-994c-91ff34752235" data-action="Deal Block" data-label="The generic workout/running shorts from Amazon are a steal at $19. Available in a bunch of styles, they feature a stretchy, sweat-wicking inner shell and fast-drying, lightweight outer." data-dimension48="The generic workout/running shorts from Amazon are a steal at $19. Available in a bunch of styles, they feature a stretchy, sweat-wicking inner shell and fast-drying, lightweight outer." data-dimension25="$19" href="https://www.amazon.com/dp/B08BNK9VGK?th=1&psc=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:99.10%;"><img id="8maDZhwtiUG8MoVenuVig7" name="Running-shorts" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8maDZhwtiUG8MoVenuVig7.jpg" mos="" align="middle" fullscreen="" width="1000" height="991" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The generic workout/running shorts from Amazon are a steal at $19. Available in a bunch of styles, they feature a stretchy, sweat-wicking inner shell and fast-drying, lightweight outer.<a class="view-deal button" href="https://www.amazon.com/dp/B08BNK9VGK?th=1&psc=1" target="_blank" rel="nofollow" data-dimension112="d15b4813-45f3-442b-994c-91ff34752235" data-action="Deal Block" data-label="The generic workout/running shorts from Amazon are a steal at $19. Available in a bunch of styles, they feature a stretchy, sweat-wicking inner shell and fast-drying, lightweight outer." data-dimension48="The generic workout/running shorts from Amazon are a steal at $19. Available in a bunch of styles, they feature a stretchy, sweat-wicking inner shell and fast-drying, lightweight outer." data-dimension25="$19">View Deal</a></p></div><h3 class="article-body__section" id="section-t-shirt-rei-saharaha-shade-t-shirt"><span>T-shirt: REI Saharaha Shade T-shirt </span></h3><p>When it comes to working out in the great outdoors, whether hiking, kayaking, cycling, or climbing, REI’s lightweight, quick-drying Sahara Shade T-shirts are my go-to; they’re also fantastic t-shirts for travel.</p><p>Available in a huge range of colors, these tees are rated UPF 50+ for sun protection and feature a regular fit with plenty of underarm room. So soft, comfortable, and functional, I’m frankly convinced that these are the best darn t-shirts under $40. The only question is, which color do I wear on race day? </p><div class="product"><a data-dimension112="76e53c3e-c070-40e2-be20-eb7b2d7b6abc" data-action="Deal Block" data-label="The REI Sahara Shade t-shirts are perfect for workouts, hikes, travel, and just about any activity that involves sweating. Soft, comfortable, and quick-drying, these tees additionally protect from the sun's harmful rays." data-dimension48="The REI Sahara Shade t-shirts are perfect for workouts, hikes, travel, and just about any activity that involves sweating. Soft, comfortable, and quick-drying, these tees additionally protect from the sun's harmful rays." data-dimension25="$39" href="https://www.rei.com/product/C01708/rei-co-op-sahara-shade-t-shirt-mens" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="xKHqUoFiQvn9kQx7LkiJYN" name="Sahara-t" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xKHqUoFiQvn9kQx7LkiJYN.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The REI Sahara Shade t-shirts are perfect for workouts, hikes, travel, and just about any activity that involves sweating. Soft, comfortable, and quick-drying, these tees additionally protect from the sun's harmful rays.<a class="view-deal button" href="https://www.rei.com/product/C01708/rei-co-op-sahara-shade-t-shirt-mens" target="_blank" rel="nofollow" data-dimension112="76e53c3e-c070-40e2-be20-eb7b2d7b6abc" data-action="Deal Block" data-label="The REI Sahara Shade t-shirts are perfect for workouts, hikes, travel, and just about any activity that involves sweating. Soft, comfortable, and quick-drying, these tees additionally protect from the sun's harmful rays." data-dimension48="The REI Sahara Shade t-shirts are perfect for workouts, hikes, travel, and just about any activity that involves sweating. Soft, comfortable, and quick-drying, these tees additionally protect from the sun's harmful rays." data-dimension25="$39">View Deal</a></p></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/the-best-thing-i-bought-in-2025-is-the-airpods-pro-2-from-2022-heres-why">I finally splurged on a pair of Apple AirPods Pro 2 — and I'll never wear cheap earbuds again</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-ran-a-half-marathon-with-the-apple-watch-ultra-3-vs-garmin-forerunner-970-to-test-the-gps-and-heart-rate-accuracy-heres-the-winner">I ran a half marathon with the Apple Watch Ultra 3 vs Garmin Forerunner 970 to test the GPS and heart rate accuracy — here’s the winner</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-logged-37-miles-at-mwc-2026-on-my-garmin-instinct-3-here-are-5-things-i-learned">I logged 37 miles at MWC 2026 on my Garmin Instinct 3 — here are 5 things I learned</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I ran the London Marathon with the Garmin Forerunner 970 vs Coros Pace 4 — which was more accurate? ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-ran-the-london-marathon-with-the-garmin-forerunner-970-vs-coros-pace-4-which-was-more-accurate</link>
                                                                            <description>
                            <![CDATA[ I wore the Garmin Forerunner 970 and Coros Pace 4 to train for and run the London Marathon, and both have proved impressively accurate throughout my testing. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">V2qDgHCMzTmRFBXsx6tLF6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uAALjkkWGupQJM2LnxnZHU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 28 Apr 2026 04:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/uAALjkkWGupQJM2LnxnZHU-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Coros Pace 4 vs Garmin Forerunner 970]]></media:description>                                                            <media:text><![CDATA[Coros Pace 4 vs Garmin Forerunner 970]]></media:text>
                                <media:title type="plain"><![CDATA[Coros Pace 4 vs Garmin Forerunner 970]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uAALjkkWGupQJM2LnxnZHU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’ve run the London Marathon nine times and if there’s one thing I’ve learned from all those races it’s that having one of the <a href="https://www.tomsguide.com/best-picks/best-running-watches">best running watches</a> on your wrist can help you train for and pace the event.</p><p>Over the years I’ve noticed a clear improvement in the GPS accuracy on top watches in the race, especially around the skyscrapers in Canary Wharf, and the reliability of optical heart rate sensors has also got better.</p><p>This year I used the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Garmin Forerunner 970 </a>and <a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-review">Coros Pace 4</a> on race day, having also used them for months of training for the London Marathon. </p><p>Both are great options for runners and performed well during the race — here’s how they compared for GPS, heart rate and race prediction accuracy.</p><div class="product"><a data-dimension112="2cf54d70-2920-4b83-996b-c1f7789b28d2" data-action="Deal Block" data-label="The Garmin Forerunner 970 is the best running watch you can buy in my opinion, with a lightweight, attractive design and all the features you could ever need. It's rarely in sales but right now two colors of the watch is reduced to $649 at Amazon" data-dimension48="The Garmin Forerunner 970 is the best running watch you can buy in my opinion, with a lightweight, attractive design and all the features you could ever need. It's rarely in sales but right now two colors of the watch is reduced to $649 at Amazon" data-dimension25="$649" href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QWPVNK?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1268px;"><p class="vanilla-image-block" style="padding-top:94.95%;"><img id="3GKnEu7CdhtxPMfnPCMCiA" name="Garmin Forerunner 970" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png" mos="" align="middle" fullscreen="" width="1268" height="1204" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Forerunner 970 is the best running watch you can buy in my opinion, with a lightweight, attractive design and all the features you could ever need. It's rarely in sales but right now two colors of the watch is reduced to $649 at Amazon<a class="view-deal button" href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QWPVNK?th=1" target="_blank" rel="nofollow" data-dimension112="2cf54d70-2920-4b83-996b-c1f7789b28d2" data-action="Deal Block" data-label="The Garmin Forerunner 970 is the best running watch you can buy in my opinion, with a lightweight, attractive design and all the features you could ever need. It's rarely in sales but right now two colors of the watch is reduced to $649 at Amazon" data-dimension48="The Garmin Forerunner 970 is the best running watch you can buy in my opinion, with a lightweight, attractive design and all the features you could ever need. It's rarely in sales but right now two colors of the watch is reduced to $649 at Amazon" data-dimension25="$649">View Deal</a></p></div><div class="product"><a data-dimension112="9bed1838-960e-45f6-931c-6551653d4210" data-action="Deal Block" data-label="The Pace 4 is perfect for runners and triathletes who want a small, accurate watch with a bright display that's also great value. It comes in either black or white and with either a silicone or nylon band — I'd go for nylon to make the watch even lighter. The new Black Crystal model of the watch has an aluminum bezel to make it feel more premium." data-dimension48="The Pace 4 is perfect for runners and triathletes who want a small, accurate watch with a bright display that's also great value. It comes in either black or white and with either a silicone or nylon band — I'd go for nylon to make the watch even lighter. The new Black Crystal model of the watch has an aluminum bezel to make it feel more premium." data-dimension25="$249" href="https://www.amazon.com/COROS-Ultralight-Touchscreen-Features-Navigation/dp/B0FYGTCX83" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="8PQ2stEv3xWBVKY7QoZAp5" name="Coros Pace 4 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8PQ2stEv3xWBVKY7QoZAp5.jpg" mos="" align="middle" fullscreen="" width="1200" height="1200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Pace 4 is perfect for runners and triathletes who want a small, accurate watch with a bright display that's also great value. It comes in either black or white and with either a silicone or nylon band — I'd go for nylon to make the watch even lighter. The new Black Crystal model of the watch has an aluminum bezel to make it feel more premium.<a class="view-deal button" href="https://www.amazon.com/COROS-Ultralight-Touchscreen-Features-Navigation/dp/B0FYGTCX83" target="_blank" rel="nofollow" data-dimension112="9bed1838-960e-45f6-931c-6551653d4210" data-action="Deal Block" data-label="The Pace 4 is perfect for runners and triathletes who want a small, accurate watch with a bright display that's also great value. It comes in either black or white and with either a silicone or nylon band — I'd go for nylon to make the watch even lighter. The new Black Crystal model of the watch has an aluminum bezel to make it feel more premium." data-dimension48="The Pace 4 is perfect for runners and triathletes who want a small, accurate watch with a bright display that's also great value. It comes in either black or white and with either a silicone or nylon band — I'd go for nylon to make the watch even lighter. The new Black Crystal model of the watch has an aluminum bezel to make it feel more premium." data-dimension25="$249">View Deal</a></p></div><h3 class="article-body__section" id="section-gps-accuracy"><span>GPS Accuracy</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4574px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HifsGjy6oMKkSsDkaujV8U" name="Coros Pace 4 vs Garmin Forerunner 970" alt="Coros Pace 4 vs Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:201,l:704,cw:4574,ch:2573,q:80/HifsGjy6oMKkSsDkaujV8U.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both watches recorded a total distance that was impressively close to the official marathon distance of 26.219 miles, though the Garmin Forerunner 970 was closer to this.</p><p>I did have to weave around some runners early on but was mostly able to run the optimal racing line, which is marked on the road in the London Marathon, so I probably ran close to the official distance on the day.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4565px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2MMVjMc5ocJFJ4QXhHHgwT" name="Coros Pace 4 vs Garmin Forerunner 970" alt="Coros Pace 4 vs Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:338,l:512,cw:4565,ch:2568,q:80/2MMVjMc5ocJFJ4QXhHHgwT.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both watches were hitting mile splits quite close to the markers on the course too, though I did reset the lap counter a couple of times to bring them nearer in line to the markers.</p><p>The hardest part of the course for GPS accuracy is around Canary Wharf, where there are a lot of tall buildings to block satellite signals and when going through the Blackfriars Underpass.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/bWgBCdEF59MzWzjtW9fH4d.png" alt="GPS track London Marathon" /><figcaption><small role="credit">DC Rainmaker Analyzer</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fQ32HPv2Qtrs7zcQyKxU7d.png" alt="GPS track London Marathon" /><figcaption><small role="credit">DC Rainmaker Analyzer</small></figcaption></figure></figure><p>Both watches produced pretty impressive GPS tracks around Canary Wharf and though I did notice my split pace stats going a little haywire in that area, it wasn’t as drastic as during past London Marathons.</p><h3 class="article-body__section" id="section-heart-rate-accuracy"><span>Heart Rate Accuracy</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4474px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="MKTZ2ya9Xt9D3WYnziok9U" name="Coros Pace 4 vs Garmin Forerunner 970" alt="Coros Pace 4 vs Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:265,l:557,cw:4474,ch:2516,q:80/MKTZ2ya9Xt9D3WYnziok9U.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In training I generally wear a chest strap heart rate monitor to get the most reliable results, but the Pace 4 and Forerunner 970 have mostly been accurate for me when I have used their built-in optical sensors in the past, and they were accurate on race day.</p><p>While I didn’t wear a chest strap to compare the watches too, the heart rate readings were in agreement throughout the race and exactly where I’d expect them to be as someone who has run a lot of marathons, including some with a chest strap.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2618px;"><p class="vanilla-image-block" style="padding-top:38.50%;"><img id="4qdmCFHDSY3yX2ggci8Hij" name="HR Graph" alt="HR Graph" src="https://cdn.mos.cms.futurecdn.net/4qdmCFHDSY3yX2ggci8Hij.png" mos="" align="middle" fullscreen="" width="2618" height="1008" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DC Rainmaker Analyzer)</span></figcaption></figure><p>The Pace 4 did show too high a reading for a few minutes at the start of the marathon, but quickly locked onto the right heart rate and stayed there for the rest of the race.</p><h3 class="article-body__section" id="section-race-predictions"><span>Race Predictions</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1733px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="v8eRfGXSZf8ZD9jMarUbbZ" name="Coros Pace 4 vs Garmin Forerunner 970" alt="Coros Pace 4 vs Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v8eRfGXSZf8ZD9jMarUbbZ.jpg" mos="" align="middle" fullscreen="" width="1733" height="975" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’ve been tracking the marathon race prediction from the Forerunner 970 and Pace 4 throughout my training and the Coros has generally been more optimistic. It predicted a time of 2:24:04 on race morning, while the Forerunner 970 said 2:28:04.</p><p>My time was 2:28:49 in the end, but it doesn’t tell the whole story of which prediction was better, as I set out aiming for a 2:24 and then struggled in the second half, running a slower pace than for either prediction.</p><p>I’d say had I started more conservatively and run a more even race, my time would probably have fallen in between the two predictions and Coros’s predictions have been closer to my other race results of late, but Garmin’s estimate was closer to my final result at London.</p><h3 class="article-body__section" id="section-verdict"><span>Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4702px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ouSYWFh7yXyLym4fgCGPwT" name="Coros Pace 4 and Garmin Forerunner 970" alt="Coros Pace 4 and Garmin Forerunner 970 on a man's wrist" src="https://cdn.mos.cms.futurecdn.net/v2/t:319,l:567,cw:4702,ch:2645,q:80/ouSYWFh7yXyLym4fgCGPwT.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Overall, the Garmin Forerunner 970 was a little more accurate across the board at the London Marathon, but the Coros Pace 4 was also excellent. </p><p>I’d have been very happy using either watch by itself on race day and both have been reliable training partners for the past few months, offering useful training analysis and accurate tracking.</p><p>The Garmin offers a little more in terms of training features and also has offline maps, a more robust design with a flashlight, and a larger, brighter screen, but the Coros is considerably cheaper.</p><p>I rate the Forerunner 970 as the best running watch overall, and the Pace 4 as the best value option from any brand, and if you’re about to kick off marathon training, either will do a great job.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WlVE1X"></div>                            </div>                            <script src="https://kwizly.com/embed/WlVE1X.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/not-the-fenix-9-this-is-the-new-garmin-watch-i-want-to-see-in-2026?hasComeFromProof=true">Not the Fenix 9 — this is the new Garmin watch I want to see in 2026</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin just added WhatsApp support to a huge number of watches — here’s how to unlock it ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/garmin-just-added-whatsapp-support-to-a-huge-number-of-watches-heres-how-to-unlock-it</link>
                                                                            <description>
                            <![CDATA[ You can finally reply to WhatsApp messages on your Garmin watch, assuming you have a supported model. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZTK6oGJ9GLdFa62xHufPLo</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qJ3Bcmf3tQ3ctiLRgYmKT3-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 25 Apr 2026 12:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qJ3Bcmf3tQ3ctiLRgYmKT3-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 570 with WhatsApp shown on the screen]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 570 with WhatsApp shown on the screen]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 570 with WhatsApp shown on the screen]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qJ3Bcmf3tQ3ctiLRgYmKT3-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Your Garmin watch may have a new trick up its sleeve. While pretty much every current Garmin watch supports mirrored messages and notifications from your smartphone, the ability to actually reply to messages is quite limited. </p><p>Some Garmin models support message replies if paired with an Android phone, but iPhone users are entirely out of luck. That is, until now: Garmin just added <a href="https://www.tomsguide.com/computing/instant-messengers/hidden-whatsapp-features-you-should-know-about">WhatsApp</a> integration with message replies to an enormous number of devices.</p><p>Here’s everything you need to know about Garmin smartwatch WhatsApp support. </p><h4 class="article-body__section" id="section-whatsapp-compatible-garmin-models"><span>WhatsApp-compatible Garmin models </span></h4><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4654px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XPwohVdNabWckW9beAFwq3" name="GarminWhatsApp-02" alt="Garmin Forerunner 570 with WhatsApp shown on the screen" src="https://cdn.mos.cms.futurecdn.net/XPwohVdNabWckW9beAFwq3.jpg" mos="" align="middle" fullscreen="" width="4654" height="2618" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>The following Garmin smartwatch models now support WhatsApp, accessible via Garmin’s Connect IQ Store.</p><ul><li><strong>Garmin D2</strong></li><li><strong>Garmin Enduro 3</strong></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-review"><strong>Garmin Fenix 8 series</strong></a></li><li><strong>Garmin Fenix E</strong></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review"><strong>Garmin Forerunner 570 series</strong></a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch"><strong>Garmin Forerunner 970 </strong></a></li><li><strong>Garmin Tactix 8 series</strong></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-venu-4-review"><strong>Garmin Venu 4 series</strong></a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-venu-x1-review"><strong>Garmin Venu X1</strong></a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-wore-the-garmin-vivoactive-6-for-a-month-and-it-has-nearly-everything-i-want-in-a-smartwatch"><strong>Garmin Vivoactive 6</strong></a></li></ul><p>These are all relatively recent models, with many of them bordering on the pricey side. However, the $399 Garmin Vivoactive 6 — a device with “nearly everything I want in a smartwatch,” as noted in our <a href="https://www.tomsguide.com/wellness/smartwatches/i-wore-the-garmin-vivoactive-6-for-a-month-and-it-has-nearly-everything-i-want-in-a-smartwatch">Vivoactive 6 review</a> — also makes the cut, which is nice to see.</p><h3 class="article-body__section" id="section-how-to-get-whatsapp-on-your-garmin-smartwatch"><span>How to get WhatsApp on your Garmin smartwatch</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4718px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="cPwQz8h7Wn9UHMrwPZSmb3" name="GarminWhatsApp-01" alt="Garmin Forerunner 570 with WhatsApp shown on the screen" src="https://cdn.mos.cms.futurecdn.net/cPwQz8h7Wn9UHMrwPZSmb3.jpg" mos="" align="middle" fullscreen="" width="4718" height="2653" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Installing and logging into your WhatsApp account via your Garmin watch is a fairly straightforward affair that took me roughly five minutes on my Garmin Forerunner 570. Start by downloading the Garmin Connect IQ Store app to your paired smartphone. Then search for WhatsApp, confirm installation, and permissions. </p><p>After a few minutes, your watch should display a confirmation of successful installation. Next, open WhatsApp on your watch and follow the account login instructions. They consist of scanning a QR code on the watch's screen with your smartphone camera, confirming the linked device, and that’s basically it.</p><p>You can now view your recent WhatsApp chats on your Garmin and even reply using either an on-screen keyboard with predictive word and phrase completion or via one of Garmin’s basic smart replies, which include phrases like “thanks” and “See you later.”</p><p>Oh, and the integration also supports emojis.</p><h3 class="article-body__section" id="section-whatsapp-limitations"><span>WhatsApp limitations</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3415px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="22jUZvExpnKJddPDrLydk3" name="GarminWhatsApp-03" alt="Garmin Forerunner 570 with WhatsApp message replies" src="https://cdn.mos.cms.futurecdn.net/22jUZvExpnKJddPDrLydk3.jpg" mos="" align="middle" fullscreen="" width="3415" height="1921" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>You can only view your ten most recent conversations using WhatsApp on a Garmin watch. The tiny keyboard is also a little clunky to use; however, the predictive text and phrase suggestions are darn helpful. </p><p>One other notable limitation of WhatsApp integration on Garmin watches: you can’t start a new message from scratch. To do that, you’ll need to pull out your smartphone. </p><h3 class="article-body__section" id="section-garmin-whatsapp-integration-outlook"><span>Garmin WhatsApp Integration Outlook</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4171px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9A96yRMidfmF8UxKiJrWr3" name="GarminWhatsApp-06" alt="Garmin Forerunner 570 with WhatsApp message replies" src="https://cdn.mos.cms.futurecdn.net/9A96yRMidfmF8UxKiJrWr3.jpg" mos="" align="middle" fullscreen="" width="4171" height="2346" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>While support for iMessages would be the bee’s knees, integration of WhatsApp into a whole bunch of popular Garmin models is definitely a big step forward in Garmin’s quest to match the smart features of the <a href="https://www.tomsguide.com/best-picks/best-apple-watch">best Apple Watch</a> models and the <a href="https://www.tomsguide.com/best-picks/best-smartwatches-android">best Android smartwatches</a>. </p><p>That said, I’d like to see the brand bring this functionality to more modestly-priced models, not just the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmins</a>, including the entry-level <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-165">Garmin Forerunner 165</a>, the <a href="https://www.tomsguide.com/reviews/garmin-forerunner-265">Forerunner 265</a>, and even the rugged <a href="https://www.tomsguide.com/Garmin-Instinct-3-review">Garmin Instinct 3</a>.</p><p>What are your thoughts? Will you be using WhatsApp on your Garmin going forward, assuming your watch is supported? Let me know your thoughts in the comments below. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/forget-the-whoop-5-0-a-screenless-fitbit-air-could-arrive-this-summer-for-just-usd99">Finally, a new Fitbit? Rumors of Google’s screenless ‘Fitbit Air’ hint at a spring launch</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/how-to-save-spotify-music-to-your-garmin-watch-for-offline-listening">How to save Spotify music to your Garmin watch for offline listening</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-se-3-vs-garmin-forerunner-165-which-budget-smartwatch-wins">Garmin Forerunner 165 vs Apple Watch SE 3: Which entry-level smartwatch wins?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to save Spotify music to your Garmin watch ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/how-to-save-spotify-music-to-your-garmin-watch-for-offline-listening</link>
                                                                            <description>
                            <![CDATA[ Leave your phone at home; instead, follow these steps to download your favorite music directly to your Garmin watch for offline listening. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PwgNoBymxEAq2oELkS9Zm6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UtWUJqYgSJvvtJ89hXKY57-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 23 Apr 2026 09:30:00 +0000</pubDate>                                                                                                                                <updated>Mon, 27 Apr 2026 14:11:30 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UtWUJqYgSJvvtJ89hXKY57-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[How to save Spotify music to your Garmin Forerunner 570]]></media:description>                                                            <media:text><![CDATA[How to save Spotify music to your Garmin Forerunner 570]]></media:text>
                                <media:title type="plain"><![CDATA[How to save Spotify music to your Garmin Forerunner 570]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UtWUJqYgSJvvtJ89hXKY57-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin smartwatches</a> offer onboard storage for music and podcasts. This perk means that you can jam out to your tunes while working out, without having to lug around a hefty smartphone.</p><p>Best of all, Garmin's offline music feature plays nicely with many of the most popular streaming apps, including Spotify and Amazon Music. </p><p>However, the process to initially get your preferred streaming downloaded and synced to your Garmin is slightly involved, which is why I am here to help. </p><p>Follow along as I walk you through the complete process, which should take roughly 15 minutes. The result will be a smartwatch filled to the brim with all your favorite pump-up tracks. </p><p>Also, while I'm specifically using Spotify for this explainer, the process of adding music to your Garmin watch using one of the other supported streaming platforms is essentially the same. </p><h2 id="how-to-save-spotify-music-to-your-garmin-watch">How to save Spotify music to your Garmin watch</h2><ol start="1"><li><strong>Download the Garmin Connect IQ app to your smartphone </strong></li><li><strong>Log in to the app store and search for Spotify (or your preferred music app) </strong></li><li><strong>Download the app and accept permissions </strong></li><li><strong>On your Garmin watch, select Music from the menus and then Spotify</strong></li><li><strong>Open the Garmin Connect app on your smartphone, enter your Spotify login credentials, and agree to the terms</strong></li><li><strong>Open the Spotify app on your Garmin watch and tap "Get started"</strong></li><li><strong>Select the playlists and/or podcasts you wish to download for offline listening</strong></li><li><strong>Wait for the music to sync; once complete, your download will appear in the Spotify music library on your watch</strong></li><li><strong>Pair some Bluetooth headphones with your Garmin and get your jam on</strong></li></ol><p><em>Read on to see full illustrated instructions for each step.   </em></p><section class="howto-block">                    <h3>1. Download the Garmin Connect IQ app to your smartphone </h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/XoyXBMMnCCXd5XjMrGnNX6.jpg"                                        alt="How to save Spotify music to your Garmin Forerunner 570"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/XoyXBMMnCCXd5XjMrGnNX6.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Garmin)</div></figure>                    <p><p>To save Spotify music to your Garmin smartwatch for offline listening, you'll first need to <strong>download the Garmin Connect IQ app to your smartphone</strong>. You'll find it in both the Apple App Store and the Google Play Store.  </p></p>                </section><section class="howto-block">                    <h3>2. Log in to the app store and search for Spotify (or your preferred music app) </h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/LDv9FLKE9ne2x8Svt5NiW6.jpg"                                        alt="How to save Spotify music to your Garmin Forerunner 570"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/LDv9FLKE9ne2x8Svt5NiW6.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Spotify)</div></figure>                    <p><p><strong>Open the Connect IQ app and select the Garmin watch you'd like to download Spotify to</strong>. Next, <strong>search for Spotify or your preferred music streaming platform</strong>. Garmin watches support Spotify, Amazon Music, Deezer, and YouTube Music.</p></p>                </section><section class="howto-block">                    <h3>3. Download the app and accept permissions </h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/zqVYAQaaQgWgLg5qKZmSX6.jpg"                                        alt="How to save Spotify music to your Garmin Forerunner 570"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/zqVYAQaaQgWgLg5qKZmSX6.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Spotify)</div></figure>                    <p><p>Once you've located your preferred music streaming app, <strong>tap "Install" and accept any permissions</strong>. Note: Make sure your Garmin watch is close by. After a few minutes, the app should appear on your smartwatch.</p></p>                </section><section class="howto-block">                    <h3>4. On your Garmin watch, select 'Music' from the menus and then Spotify</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/QvYZMgN7qjBVnrcrceuF47.jpg"                                        alt="How to save Spotify music to your Garmin Forerunner 570"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/QvYZMgN7qjBVnrcrceuF47.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Dan Bracaglia/Tom's Guide)</div></figure>                    <p><p>Once you receive the notification that the app has been successfully installed, <strong>open your Garmin's menus and select "Music" and then "Music providers."</strong> Go ahead and <strong>tap on Spotify or your streaming platform of choice</strong>. This should result in a message stating you need to log in via the Garmin Connect app on your phone.  </p></p>                </section><section class="howto-block">                    <h3>5. Open the Garmin Connect app on your smartphone, enter your Spotify login credentials</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/5MZg7rYuhrVy3SPEJL6VV6.jpg"                                        alt="How to save Spotify music to your Garmin Forerunner 570"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/5MZg7rYuhrVy3SPEJL6VV6.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Spotify)</div></figure>                    <p><p>Before opening the Garmin Connect app, first make sure it's up to date. With that taken care of, <strong>open the Garmin Connect app</strong>; a pop-up should appear asking you to sign in to Spotify or your preferred streaming platform. <strong>Tap "Sign In" and enter your app login credentials when prompted. </strong></p></p>                </section><section class="howto-block">                    <h3>6. Open the Spotify app on your Garmin watch and tap 'Get started'</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/euaJvcRBvu9xQxL9PRbAp6.jpg"                                        alt="How to save Spotify music to your Garmin Forerunner 570"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/euaJvcRBvu9xQxL9PRbAp6.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Dan Bracaglia/Tom's Guide)</div></figure>                    <p><p>At this point, you should be able to open the Spotify app on your Garmin watch. Go ahead and<strong> tap "Get started" to select playlists or podcasts you wish to download </strong>to the watch locally for offline listening. </p></p>                </section><section class="howto-block">                    <h3>7. Select the playlists and/or podcasts you wish to download </h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/i3r5sGJKtYFrzpbfFQdTk6.jpg"                                        alt="How to save Spotify music to your Garmin Forerunner 570"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/i3r5sGJKtYFrzpbfFQdTk6.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Dan Bracaglia/Tom's Guide)</div></figure>                    <p><p><strong>Tap the green "Add" button to download a playlist or podcast.</strong> Note: You can't search for individual artists or albums, but you can view and download the songs you most recently listened to. </p></p>                </section><section class="howto-block">                    <h3>8. Wait for the music to sync</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/nyECjRjaJpEGWZwQii5Y57.jpg"                                        alt="How to save Spotify music to your Garmin Forerunner 570"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/nyECjRjaJpEGWZwQii5Y57.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Dan Bracaglia/Tom's Guide)</div></figure>                    <p><p>Once you're happy with your music/podcast selection, <strong>go ahead and confirm your downloads and wait for the data to sync to the watch</strong>. This can take anywhere from several minutes to half an hour, depending on how much your tranfering. </p></p>                </section><section class="howto-block">                    <h3>9. Pair some Bluetooth headphones with your Garmin and get your jam on</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/4cmxBqdivzrPypagashG89.jpg"                                        alt="How to save Spotify music to your Garmin Forerunner 570"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/4cmxBqdivzrPypagashG89.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Dan Bracaglia/Tom's Guide)</div></figure>                    <p><p>Once the download is complete, you'll receive a message stating as much. <strong>Your playlist/podcast(s) can now be selected from the Spotify "Library" tab</strong>. Now it's time to pair a set of Bluetooth headphones with your Garmin watch, ditch your phone, and head out for a run/walk/hike/bike ride with some sweet, sweet music playing in your ears. </p></p>                </section><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4620px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="XnoQwKMttsffEQ8SvNSKs6" name="GarminSpotify-01" alt="How to save Spotify music to your Garmin Forerunner 570" src="https://cdn.mos.cms.futurecdn.net/XnoQwKMttsffEQ8SvNSKs6.jpg" mos="" align="middle" fullscreen="" width="4620" height="2599" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>How many songs/podcasts you can save depends on which Garmin smartwatch model you own. The <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Garmin Forerunner 570</a>, for example, has 8GB of internal storage, which should be enough to save 500 or more songs/podcasts. </p><p>Which begs the question, what do you like to listen to while working out? I'm a fan of punk rock and classic hip-hop; let me know your preferences in the comments below. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-and-the-winner-was-nearly-too-close-to-call">I walked 5,000 steps with the Garmin Forerunner 570 vs Apple Watch Ultra 3 — and the winner was nearly too close to call</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-ran-a-half-marathon-with-the-apple-watch-ultra-3-vs-garmin-forerunner-970-to-test-the-gps-and-heart-rate-accuracy-heres-the-winner">I ran a half marathon with the Apple Watch Ultra 3 vs Garmin Forerunner 970 to test the GPS and heart rate accuracy — here’s the winner</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-se-3-vs-garmin-forerunner-165-which-budget-smartwatch-wins">Garmin Forerunner 165 vs Apple Watch SE 3: Which entry-level smartwatch wins?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Massive Garmin sale — save big on Garmin’s best watches for running, biking and hiking  ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/massive-garmin-sale-save-big-on-garmins-best-watches-for-running-biking-and-hiking</link>
                                                                            <description>
                            <![CDATA[ My top Garmin smartwatch picks for running, cycling, hiking, and more are all discounted during this epic spring sale. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">27rb2yRFAaXrKTM9VH68NW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/yaL9XTKoBPfLqrd6sDVKdB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 21 Apr 2026 22:37:39 +0000</pubDate>                                                                                                                                <updated>Thu, 23 Apr 2026 09:50:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/yaL9XTKoBPfLqrd6sDVKdB-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Instinct 3 showing the &#039;Torch&#039; LED flashlight illuminated from the top of the watch case]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Instinct 3 showing the &#039;Torch&#039; LED flashlight illuminated from the top of the watch case]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Instinct 3 showing the &#039;Torch&#039; LED flashlight illuminated from the top of the watch case]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/yaL9XTKoBPfLqrd6sDVKdB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The springtime is the perfect time to dive headfirst into a new workout regimen, especially if you’re keen on exercising in the great outdoors. Of course, you’ll probably want some sort of device to track your progress. That’s where I come in.</p><p>Garmin makes some of the <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch">best smartwatch</a> models around, but with so many options to choose from (20+), how do you narrow down the selection? You could start by simply browsing the best Garmin watch deals, which I’ve linked to below.</p><p>I’ve personally tested and highly recommend each of these models. Just getting into running? Grab the Garmin Forerunner 165 for just <a href="https://www.bestbuy.com/product/garmin-forerunner-165-gps-smartwatch-43-mm-fiber-reinforced-polymer-black-slate-gray-2024/JXF9YF456W/sku/6586585" target="_blank" rel="nofollow">$210 via Best Buy</a>, reduced from $250. Into mountain adventures? You’ll love the <a href="https://www.walmart.com/ip/Garmin-Instinct-E-45-mm-Electric-Lime-with-Electric-Lime-Band/14959011427" target="_blank" rel="nofollow">Garmin Instinct E</a>, which is just $229 at Walmart, marked down from $299. </p><p>Find info on these deals and more below. </p><h2 class="article-body__section" id="section-quick-links"><span>Quick Links</span></h2><ul><li><strong>Garmin Forerunner 165: </strong><a href="https://www.bestbuy.com/product/garmin-forerunner-165-gps-smartwatch-43-mm-fiber-reinforced-polymer-black-slate-gray-2024/JXF9YF456W/sku/6586585" target="_blank" rel="nofollow"><strong>was $249 now $210 @ Best Buy</strong></a></li><li><strong>Garmin Instinct E: </strong><a href="https://www.walmart.com/ip/Garmin-Instinct-E-45-mm-Electric-Lime-with-Electric-Lime-Band/14959011427" target="_blank" rel="nofollow"><strong>was $299 now $229 @ Walmart</strong></a></li><li><strong>Garmin Vivoactive 6: </strong><a href="https://www.bestbuy.com/product/garmin-vivoactive-6-gps-smartwatch-42-mm-fiber-reinforced-polymer-metallic-jasper-green-with-jasper-green-band-2025/JXF9YF5F94/sku/6628690" target="_blank" rel="nofollow"><strong>was $299 now $281 @ Best Buy </strong></a></li><li><strong>Garmin Forerunner 265S: </strong><a href="https://www.bestbuy.com/product/garmin-forerunner-265s-gps-smartwatch-42-mm-fiber-reinforced-polymer-black-whitestone-2023/JXF9YF4J5T/sku/6544444" target="_blank" rel="nofollow"><strong>was $449 now $349 @ Best Buy</strong></a></li><li><strong>Garmin Forerunner 265: </strong><a href="https://www.walmart.com/ip/Garmin-Forerunner-265-Running-Smartwatch-Colorful-AMOLED-Display-Training-Metrics-and-Recovery-Insights-Whitestone-and-Tidal-Blue/3019242561" target="_blank" rel="nofollow"><strong>was $449 now $379 @ Walmart</strong></a></li><li><strong>Garmin Instinct 3: </strong><a href="https://www.walmart.com/ip/Garmin-Instinct-3-45-mm-AMOLED-Black-with-Black-Band/14961710977" target="_blank" rel="nofollow"><strong>was $449 now $399 @ Walmart</strong></a></li></ul><h2 class="article-body__section" id="section-garmin-spring-deals"><span>Garmin spring Deals</span></h2><div class="product"><a data-dimension112="60c6cbe8-d4d7-44c8-b720-8733ac15084a" data-action="Deal Block" data-label="best budget Garmin" data-dimension48="best budget Garmin" data-dimension25="$210" href="https://www.bestbuy.com/product/garmin-forerunner-165-gps-smartwatch-43-mm-fiber-reinforced-polymer-black-slate-gray-2024/JXF9YF456W/sku/6586585" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:675px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="7GxV2AK4CUU5iZBg96GNiF" name="Garmin Forerunner 165 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7GxV2AK4CUU5iZBg96GNiF.jpg" mos="" align="middle" fullscreen="" width="675" height="675" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/best-picks/best-garmin-watch#section-best-budget-garmin-watch" data-dimension112="60c6cbe8-d4d7-44c8-b720-8733ac15084a" data-action="Deal Block" data-label="best budget Garmin" data-dimension48="best budget Garmin" data-dimension25="$210">best budget Garmin</a> watch just got even more appealing. The <a href="https://www.tomsguide.com/reviews/garmin-forerunner-55">Garmin Forerunner 165 </a>is already a great deal at full price, chock full of training tools and metrics, particularly for runners. It also boasts a lightweight case design, a bright AMOLED screen, and 11 days of battery life.<a class="view-deal button" href="https://www.bestbuy.com/product/garmin-forerunner-165-gps-smartwatch-43-mm-fiber-reinforced-polymer-black-slate-gray-2024/JXF9YF456W/sku/6586585" target="_blank" rel="nofollow" data-dimension112="60c6cbe8-d4d7-44c8-b720-8733ac15084a" data-action="Deal Block" data-label="best budget Garmin" data-dimension48="best budget Garmin" data-dimension25="$210">View Deal</a></p></div><div class="product"><a data-dimension112="d8b673d8-16fd-45d2-843f-84909fdea3e2" data-action="Deal Block" data-label="also on sale" data-dimension48="also on sale" data-dimension25="$229" href="https://www.walmart.com/ip/Garmin-Instinct-E-45-mm-Electric-Lime-with-Electric-Lime-Band/14959011427" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1182px;"><p class="vanilla-image-block" style="padding-top:114.38%;"><img id="HLG2RucNCmyKRJQWScMCxS" name="Screenshot 2026-04-21 at 2.38.37 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/HLG2RucNCmyKRJQWScMCxS.png" mos="" align="middle" fullscreen="" width="1182" height="1352" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Instinct E is the more wallet-friendly alternative to the Garmin Instinct 3, which is <a href="https://www.walmart.com/ip/Garmin-Instinct-3-45-mm-AMOLED-Black-with-Black-Band/14961710977" target="_blank" rel="nofollow" data-dimension112="d8b673d8-16fd-45d2-843f-84909fdea3e2" data-action="Deal Block" data-label="also on sale" data-dimension48="also on sale" data-dimension25="$229">also on sale</a>. This rugged, outdoor adventure watch features rock-solid GPS performance, loads of tracking modes, 100 meters of water resistance, and a MIL-STD-810 rating for thermal and shock resistance. It can also last up to 16 days on a single charge. <a class="view-deal button" href="https://www.walmart.com/ip/Garmin-Instinct-E-45-mm-Electric-Lime-with-Electric-Lime-Band/14959011427" target="_blank" rel="nofollow" data-dimension112="d8b673d8-16fd-45d2-843f-84909fdea3e2" data-action="Deal Block" data-label="also on sale" data-dimension48="also on sale" data-dimension25="$229">View Deal</a></p></div><div class="product"><a data-dimension112="838879de-ed70-439d-bb20-d8b062128842" data-action="Deal Block" data-label="Garmin Vivoactive 6 review" data-dimension48="Garmin Vivoactive 6 review" data-dimension25="$281" href="https://www.bestbuy.com/product/garmin-vivoactive-6-gps-smartwatch-42-mm-fiber-reinforced-polymer-metallic-jasper-green-with-jasper-green-band-2025/JXF9YF5F94/sku/6628690" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1300px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="p6zHBfuX8hxr7ANXAbhh8R" name="Garmin Vivoactive 6 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/p6zHBfuX8hxr7ANXAbhh8R.jpg" mos="" align="middle" fullscreen="" width="1300" height="1300" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>In my <a href="https://www.tomsguide.com/wellness/smartwatches/i-wore-the-garmin-vivoactive-6-for-a-month-and-it-has-nearly-everything-i-want-in-a-smartwatch" data-dimension112="838879de-ed70-439d-bb20-d8b062128842" data-action="Deal Block" data-label="Garmin Vivoactive 6 review" data-dimension48="Garmin Vivoactive 6 review" data-dimension25="$281">Garmin Vivoactive 6 review</a>, I noted that the device has "nearly everything I want in a smartwatch," and I stand by that statement. This lightweight, stylish wearable boasts a week of battery life, onboard music storage, NFC payment capabilities, detailed sleep insights, and a comprehensive set of fitness, training, and recovery tools. <a class="view-deal button" href="https://www.bestbuy.com/product/garmin-vivoactive-6-gps-smartwatch-42-mm-fiber-reinforced-polymer-metallic-jasper-green-with-jasper-green-band-2025/JXF9YF5F94/sku/6628690" target="_blank" rel="nofollow" data-dimension112="838879de-ed70-439d-bb20-d8b062128842" data-action="Deal Block" data-label="Garmin Vivoactive 6 review" data-dimension48="Garmin Vivoactive 6 review" data-dimension25="$281">View Deal</a></p></div><div class="product"><a data-dimension112="412e22cc-0029-4616-a165-1e4f21f47ade" data-action="Deal Block" data-label="Garmin Forerunner 265" data-dimension48="Garmin Forerunner 265" data-dimension25="$349" href="https://www.bestbuy.com/product/garmin-forerunner-265s-gps-smartwatch-42-mm-fiber-reinforced-polymer-black-whitestone-2023/JXF9YF4J5T/sku/6544444" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:600px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="jEtqS8qRPRAiGuNUCBntj9" name="garmin-265.jpeg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/jEtqS8qRPRAiGuNUCBntj9.jpg" mos="" align="middle" fullscreen="" width="600" height="600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/reviews/garmin-forerunner-265" data-dimension112="412e22cc-0029-4616-a165-1e4f21f47ade" data-action="Deal Block" data-label="Garmin Forerunner 265" data-dimension48="Garmin Forerunner 265" data-dimension25="$349">Garmin Forerunner 265</a> is one step up from the Forerunner 165 in Garmin's running watch portfolio, with even more training features to help you prep for race day, and better GPS. It also comes in two sizes, both of which are on sale. This deal is on the smaller 42mm model (the "s" stands for small). Here's a closer look at the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-165-vs-forerunner-265-which-running-watch-wins#section-garmin-forerunner-165-vs-forerunner-265">Forerunner 265 vs. the Forerunner 165</a>.<a class="view-deal button" href="https://www.bestbuy.com/product/garmin-forerunner-265s-gps-smartwatch-42-mm-fiber-reinforced-polymer-black-whitestone-2023/JXF9YF4J5T/sku/6544444" target="_blank" rel="nofollow" data-dimension112="412e22cc-0029-4616-a165-1e4f21f47ade" data-action="Deal Block" data-label="Garmin Forerunner 265" data-dimension48="Garmin Forerunner 265" data-dimension25="$349">View Deal</a></p></div><div class="product"><a data-dimension112="09f5425c-c16d-4824-8dfc-2e1a940e711c" data-action="Deal Block" data-label="Another advantage of the Garmin Forerunner 265 over the 165 is its ability to track complex multi-sport workouts, like triathlons. Multi-band GPS, as opposed to single-band, guarantees better location tracking precision. The Forerunner 265 also offers metrics like Training Readiness, Training Status, and Training Load, all of which are absent in the Forerunner 165. " data-dimension48="Another advantage of the Garmin Forerunner 265 over the 165 is its ability to track complex multi-sport workouts, like triathlons. Multi-band GPS, as opposed to single-band, guarantees better location tracking precision. The Forerunner 265 also offers metrics like Training Readiness, Training Status, and Training Load, all of which are absent in the Forerunner 165. " data-dimension25="$379" href="https://www.walmart.com/ip/Garmin-Forerunner-265-Running-Smartwatch-Colorful-AMOLED-Display-Training-Metrics-and-Recovery-Insights-Whitestone-and-Tidal-Blue/3019242561" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="hWk4Tso7U92BXrFNDk8f6W" name="_0001_Garmin Forerunner 265.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/hWk4Tso7U92BXrFNDk8f6W.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Another advantage of the Garmin Forerunner 265 over the 165 is its ability to track complex multi-sport workouts, like triathlons. Multi-band GPS, as opposed to single-band, guarantees better location tracking precision. The Forerunner 265 also offers metrics like Training Readiness, Training Status, and Training Load, all of which are absent in the Forerunner 165.  <a class="view-deal button" href="https://www.walmart.com/ip/Garmin-Forerunner-265-Running-Smartwatch-Colorful-AMOLED-Display-Training-Metrics-and-Recovery-Insights-Whitestone-and-Tidal-Blue/3019242561" target="_blank" rel="nofollow" data-dimension112="09f5425c-c16d-4824-8dfc-2e1a940e711c" data-action="Deal Block" data-label="Another advantage of the Garmin Forerunner 265 over the 165 is its ability to track complex multi-sport workouts, like triathlons. Multi-band GPS, as opposed to single-band, guarantees better location tracking precision. The Forerunner 265 also offers metrics like Training Readiness, Training Status, and Training Load, all of which are absent in the Forerunner 165. " data-dimension48="Another advantage of the Garmin Forerunner 265 over the 165 is its ability to track complex multi-sport workouts, like triathlons. Multi-band GPS, as opposed to single-band, guarantees better location tracking precision. The Forerunner 265 also offers metrics like Training Readiness, Training Status, and Training Load, all of which are absent in the Forerunner 165. " data-dimension25="$379">View Deal</a></p></div><div class="product"><a data-dimension112="f667a167-8b35-427e-94d7-d9269cbbf6f9" data-action="Deal Block" data-label="Instinct 3" data-dimension48="Instinct 3" data-dimension25="$399" href="https://www.walmart.com/ip/Garmin-Instinct-3-45-mm-AMOLED-Black-with-Black-Band/14961710977" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1392px;"><p class="vanilla-image-block" style="padding-top:105.17%;"><img id="ftM9z5bRyFZM4QgKoEHhiZ" name="Screenshot 2025-01-21 at 4.21.06 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ftM9z5bRyFZM4QgKoEHhiZ.png" mos="" align="middle" fullscreen="" width="1392" height="1464" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/Garmin-Instinct-3-review" data-dimension112="f667a167-8b35-427e-94d7-d9269cbbf6f9" data-action="Deal Block" data-label="Instinct 3" data-dimension48="Instinct 3" data-dimension25="$399">Instinct 3</a> is my favorite Garmin in 2026 and my go-to smartwatch for tracking any sort of outdoor activity. With ridiculously long-lasting battery performance (it's literally the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch#section-the-best-garmin-watch-for-battery-life">best Garmin for battery</a>), a seemingly indestructible build quality, and proven location/elevation tracking accuracy, I can't reccomend it enough to outdoor adventurers. There's even a high-power LED flashlight tucked inside the top of the case.<a class="view-deal button" href="https://www.walmart.com/ip/Garmin-Instinct-3-45-mm-AMOLED-Black-with-Black-Band/14961710977" target="_blank" rel="nofollow" data-dimension112="f667a167-8b35-427e-94d7-d9269cbbf6f9" data-action="Deal Block" data-label="Instinct 3" data-dimension48="Instinct 3" data-dimension25="$399">View Deal</a></p></div><h2 id="more-to-consider">More to consider</h2><div class="product"><a data-dimension112="53989659-ceb8-4b86-8e88-3e1aa745f2af" data-action="Deal Block" data-label="The Garmin Venu Sq 2 offers 11-day battery life, 24/7 health tracking, 25+ sports apps, and smart notifications, keeping you connected on both Android and iOS." data-dimension48="The Garmin Venu Sq 2 offers 11-day battery life, 24/7 health tracking, 25+ sports apps, and smart notifications, keeping you connected on both Android and iOS." data-dimension25="$189" href="https://www.amazon.com/Garmin-Smartwatch-All-Day-Monitoring-Long-Lasting/dp/B0B5VVNJBF/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1313px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="SkWCBjJNAw8yZhW8knbzxZ" name="Garmin Venu Sq 2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/SkWCBjJNAw8yZhW8knbzxZ.jpg" mos="" align="middle" fullscreen="" width="1313" height="1313" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Venu Sq 2 offers 11-day battery life, 24/7 health tracking, 25+ sports apps, and smart notifications, keeping you connected on both Android and iOS.<a class="view-deal button" href="https://www.amazon.com/Garmin-Smartwatch-All-Day-Monitoring-Long-Lasting/dp/B0B5VVNJBF/" target="_blank" rel="nofollow" data-dimension112="53989659-ceb8-4b86-8e88-3e1aa745f2af" data-action="Deal Block" data-label="The Garmin Venu Sq 2 offers 11-day battery life, 24/7 health tracking, 25+ sports apps, and smart notifications, keeping you connected on both Android and iOS." data-dimension48="The Garmin Venu Sq 2 offers 11-day battery life, 24/7 health tracking, 25+ sports apps, and smart notifications, keeping you connected on both Android and iOS." data-dimension25="$189">View Deal</a></p></div><div class="product"><a data-dimension112="dabad11a-1d41-423a-9a3b-b21af30722a3" data-action="Deal Block" data-label="Garmin Vivoactive 5 review" data-dimension48="Garmin Vivoactive 5 review" data-dimension25="$227" href="https://www.amazon.com/dp/B0CG6NR413" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1004px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="VkZemqZBaA53K6cSfpqqgX" name="51zyaVCe-5L._AC_SL1000_.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VkZemqZBaA53K6cSfpqqgX.jpg" mos="" align="middle" fullscreen="" width="1004" height="1004" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Vivoactive 5 is a comprehensive fitness tracker that comes in at an affordable price. In our <a href="https://www.tomsguide.com/reviews/garmin-vivoactive-5-review-is-it-ready-to-take-on-the-apple-watch" data-dimension112="dabad11a-1d41-423a-9a3b-b21af30722a3" data-action="Deal Block" data-label="Garmin Vivoactive 5 review" data-dimension48="Garmin Vivoactive 5 review" data-dimension25="$227">Garmin Vivoactive 5 review</a>, we loved this device's gorgeous AMOLED display, access to multitude of sports apps and its advanced health stats like sleep and stress coaching.<a class="view-deal button" href="https://www.amazon.com/dp/B0CG6NR413" target="_blank" rel="nofollow" data-dimension112="dabad11a-1d41-423a-9a3b-b21af30722a3" data-action="Deal Block" data-label="Garmin Vivoactive 5 review" data-dimension48="Garmin Vivoactive 5 review" data-dimension25="$227">View Deal</a></p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin Forerunner 165 vs Apple Watch SE 3: Which entry-level smartwatch wins? ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/apple-watch-se-3-vs-garmin-forerunner-165-which-budget-smartwatch-wins</link>
                                                                            <description>
                            <![CDATA[ Here’s how the Apple Watch SE 3 compares to the Garmin Forerunner 165 across six categories, including price, design, fitness, smarts, safety, and battery life. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tf3UfUmLhDVUCwxRBQxJyT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BHJSczrzUiLT6RvfXmJNmk-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 15 Apr 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 15 Apr 2026 14:26:11 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BHJSczrzUiLT6RvfXmJNmk-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Forerunner 165 next to the Apple Watch SE 3]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Forerunner 165 next to the Apple Watch SE 3]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Forerunner 165 next to the Apple Watch SE 3]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BHJSczrzUiLT6RvfXmJNmk-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Circle or square? <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-vs-apple-watch-which-smartwatch-is-right-for-you">Garmin or Apple Watch</a>? I review smartwatches for a living, and I frequently get asked about the differences between these two smartwatch powerhouses. So, let’s break it down.</p><p>Compared across six categories, here's how the popular, entry-level <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-165">Garmin Forerunner 165</a> compares to the beloved, also entry-level <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-se-3-review">Apple Watch SE 3</a>. Short on time? Skip to my verdict at the end for the TLDR. </p><h3 class="article-body__section" id="section-specs-compared"><span>Specs compared</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Apple Watch SE 3</p></th><th  ><p>Garmin Forerunner 165</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Starting price</strong></p></td><td  ><p>$249</p></td><td  ><p>$249</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>44mm: 44 x 38 x 10.7 mm / 40mm: 40 x 34 x 10.7 mm</p></td><td  ><p>43 x 43 x 11.6 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>40mm: 26 g / 44mm: 33 g</p></td><td  ><p>39 g</p></td></tr><tr><td class="firstcol " ><p><strong>Display type & max brightness</strong></p></td><td  ><p>OLED, 1,000 nits</p></td><td  ><p>AMOLED, 1,000 nits</p></td></tr><tr><td class="firstcol " ><p><strong>Display size</strong></p></td><td  ><p>40mm: 1.57-inches / 44mm: 1.78-inches</p></td><td  ><p>1.2-inch</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>18 hours</p></td><td  ><p>11 days</p></td></tr><tr><td class="firstcol " ><p><strong>Water resistance </strong></p></td><td  ><p>50 meters</p></td><td  ><p>50 meters</p></td></tr><tr><td class="firstcol " ><p><strong>Cellular support</strong></p></td><td  ><p>Optional</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Compatibility </strong></p></td><td  ><p>iOS</p></td><td  ><p>Android, iOS</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-1-price"><span>1. Price</span></h3><p>Both smartwatches start at $249. When it comes to the SE 3, that price reflects the smaller 40mm model without cellular; the 44mm non-cellular SE 3 is $279. Add $50 to the cost of either for 5G connectivity capabilities. </p><p>The Garmin Forerunner 165 additionally comes in a ‘Music’ edition with extra onboard storage to save tunes for offline listening for $299.</p><div class="product"><a data-dimension112="0d948f5f-bf18-4b29-8484-b9db696eb97f" data-action="Deal Block" data-label="best value, full-featured smartwatches" data-dimension48="best value, full-featured smartwatches" data-dimension25="$249" href="https://www.bestbuy.com/product/apple-watch-se-3-gps-40mm-starlight-aluminum-case-with-starlight-sport-band-s-m-starlight-2025/JJGCQGVWYX/sku/6572694" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1453px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="A7T2oeYQdGzs7QwXixz5AF" name="AW SE 3 copy" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/A7T2oeYQdGzs7QwXixz5AF.jpg" mos="" align="middle" fullscreen="" width="1453" height="1453" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Apple Watch SE 3 is one of the <a href="https://www.tomsguide.com/best-picks/best-apple-watch#section-the-best-budget-apple-watch" data-dimension112="0d948f5f-bf18-4b29-8484-b9db696eb97f" data-action="Deal Block" data-label="best value, full-featured smartwatches" data-dimension48="best value, full-featured smartwatches" data-dimension25="$249">best value, full-featured smartwatches</a> on the market today, with loads of smart, fitness, safety, and communication features, but limited battery life holds it back. <a class="view-deal button" href="https://www.bestbuy.com/product/apple-watch-se-3-gps-40mm-starlight-aluminum-case-with-starlight-sport-band-s-m-starlight-2025/JJGCQGVWYX/sku/6572694" target="_blank" rel="nofollow" data-dimension112="0d948f5f-bf18-4b29-8484-b9db696eb97f" data-action="Deal Block" data-label="best value, full-featured smartwatches" data-dimension48="best value, full-featured smartwatches" data-dimension25="$249">View Deal</a></p></div><div class="product"><a data-dimension112="578374ed-96aa-4327-be3c-97f5bf53fa71" data-action="Deal Block" data-label="best Garmin watches for beginners" data-dimension48="best Garmin watches for beginners" data-dimension25="$249" href="https://www.bestbuy.com/product/garmin-forerunner-165-gps-smartwatch-43-mm-fiber-reinforced-polymer-gray-whitestone-2024/JXF9YF45RY/sku/6586589" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1065px;"><p class="vanilla-image-block" style="padding-top:106.10%;"><img id="iKKGrquWeU6cbQCdqoem3j" name="Forerunner165-deal" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/iKKGrquWeU6cbQCdqoem3j.jpg" mos="" align="middle" fullscreen="" width="1065" height="1130" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Forerunner 165 is one of the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch#section-best-garmin-for-beginners" data-dimension112="578374ed-96aa-4327-be3c-97f5bf53fa71" data-action="Deal Block" data-label="best Garmin watches for beginners" data-dimension48="best Garmin watches for beginners" data-dimension25="$249">best Garmin watches for beginners</a> looking to step up their physical fitness. Big on training tools, insights, and battery, the one thing this watch lacks is smart features.<a class="view-deal button" href="https://www.bestbuy.com/product/garmin-forerunner-165-gps-smartwatch-43-mm-fiber-reinforced-polymer-gray-whitestone-2024/JXF9YF45RY/sku/6586589" target="_blank" rel="nofollow" data-dimension112="578374ed-96aa-4327-be3c-97f5bf53fa71" data-action="Deal Block" data-label="best Garmin watches for beginners" data-dimension48="best Garmin watches for beginners" data-dimension25="$249">View Deal</a></p></div><p><em><strong>Winner: </strong></em><em>draw</em></p><h3 class="article-body__section" id="section-2-design-and-durability"><span>2. Design and durability</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4538px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="7APFNpzFT5x8XUqjdkDdLf" name="AWSE3-v-GarminF165-03" alt="Close-up of the Garmin Forerunner 165 next to the Apple Watch SE 3" src="https://cdn.mos.cms.futurecdn.net/7APFNpzFT5x8XUqjdkDdLf.jpg" mos="" align="middle" fullscreen="" width="4538" height="2553" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Both watches boast 50 meters of <a href="https://www.tomsguide.com/wellness/smartwatches/smartwatch-water-resistance-ratings-explained">water resistance</a>, enough for short, surface-level swims. Durability is also pretty similar, though the Garmin has a slightly raised bezel that protects the screen, while the Apple Watch does not.</p><p>Speaking of screens, the Forerunner 165 sports a 1.2-inch AMOLED panel with a max screen brightness of roughly 1,000 nits. The Apple Watch SE 3, meanwhile, sports either a 1.57-inch or 1.78-inch LTPO OLED screen, depending on which size you choose. It also maxes out at 1,000 nits.</p><p>The Forerunner 165 weighs a little more than the SE 3, but both wear quite comfortably on my 6.5-inch wrist. The Garmin offers more physical buttons on the side of the case, five in total, compared to two on the Apple Watch. Both devices are also touch-sensitive and quite responsive in use.</p><p><em><strong>Winner: </strong></em><em>draw</em></p><h3 class="article-body__section" id="section-3-fitness-tracking-and-training"><span>3. Fitness tracking and training </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rhJKvNmQprmMP8eRDnE52C" name="Garmin-F165-rev-08.jpg" alt="The Garmin Forerunner 165 GPS watch on a user's wrist with a blue woven band attached" src="https://cdn.mos.cms.futurecdn.net/rhJKvNmQprmMP8eRDnE52C.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>While the Apple Watch SE 3 offers a decent amount of fitness-tracking and training tools, they aren’t as vast as what you get from the Forerunner 165, especially if you are a runner.</p><p>Apple’s <a href="https://www.tomsguide.com/wellness/fitness/i-ran-15-miles-with-the-apple-watchs-new-workout-buddy-heres-my-verdict">Workout Buddy</a> feature, for example, is designed to provide custom-tailored plans for folks prepping for a race or event. We found it useful from a motivational standpoint, but far less impressive than <a href="https://www.tomsguide.com/wellness/smartwatches/i-wear-a-garmin-watch-for-marathon-training-these-are-the-5-stats-i-care-about-and-the-3-i-ignore">Garmin Coach</a>, which similarly helps you prep for a running event, just way more effectively. </p><p>Overall, whether you’re a runner or not, Garmin’s training tools are a lot more extensive than Apple’s. For example, the Foreunner 165 provides adaptive training tips, completion time predictions (for runners), recovery time recommendations, daily workout suggestions, insights into heart rate variability (HRV), ‘training effect’ insights or how your workouts are impacting your overall performance, fitness age predictions, and more. </p><p>I also prefer the level of detail you get from Garmin’s nightly sleep tracking compared to Apple’s. Garmin’s Morning Reports tell you more than sleep time and how long you spent in each of the sleep cycles. It additionally provides a training outlook based on your quality of rest and recent workouts, along with your HRV status. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Ye56KkdbEFMEK3iLJY3c5J" name="AW-SE3-02" alt="Apple Watch SE 3" src="https://cdn.mos.cms.futurecdn.net/Ye56KkdbEFMEK3iLJY3c5J.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>When it comes to tracking accuracy, both watches have onboard GPS and altimeters for location and elevation data, without a paired smartphone. In my testing, the Apple Watch SE 3 and Garmin Forerunner 165 have each proven reliable fitness trackers, though the former occasionally spits out inflated elevation data after outdoor workouts, like runs, walks, and hikes. You can also expect highly accurate heart rate data from each.</p><p>Both watches track a wide range of workout types from indoor, gym-based exercises to more extreme outdoor activities like mountain climbing and snowboarding. </p><p>Ultimately, for casual athletes wishing to keep tabs on their physical fitness, the Apple Watch SE 3 should serve you fine. However, if fitness and training are your primary focus, the Garmin Forerunner 165 is going to be a better choice.</p><p><em><strong>Winner:</strong></em><em> Garmin Forerunner 165</em></p><h3 class="article-body__section" id="section-4-smarts-and-connectivity"><span>4. Smarts and connectivity </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4508px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="VwoPZ92h572Tt4B9J5EgTG" name="AWSE3-02" alt="Close-up of the Apple Watch SE 3 on a turquoise strap" src="https://cdn.mos.cms.futurecdn.net/VwoPZ92h572Tt4B9J5EgTG.jpg" mos="" align="middle" fullscreen="" width="4508" height="2536" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>While the Forerunner 165 has the SE 3 beat with physical fitness tools, the Apple Watch smokes the Garmin at smart features and connectivity.</p><p>For example, the Forerunner 165’s list of smart features is rather short: NFC for mobile payments, onboard music storage (Forerunner 165 Music only), access to a small selection of apps via the Garmin Connect I.Q. store (watch faces, too), and… not much more.</p><p>While you can view mirror notifications, including texts, from your smartphone on the Forerunner 165, you can’t reply to them. It also doesn’t have a microphone or speaker for taking calls. </p><p>On the flip side, the Apple Watch SE 3 is absolutely brimming with smarts, including access to the world’s largest smartwatch app store, where you’ll find a dizzying array of third-party options. There are also loads of useful smart apps built in, from the <a href="https://www.tomsguide.com/wellness/smartwatches/your-apple-watch-finally-has-the-notes-app-heres-how-to-unlock-it">Notes app</a> and Voice Memo app, to <a href="https://www.tomsguide.com/wellness/smartwatches/ive-hiked-hundreds-of-miles-and-these-are-the-3-apple-watch-apps-i-use-to-keep-from-getting-lost">Apple Maps for navigation</a> and <a href="https://www.tomsguide.com/wellness/smartwatches/how-to-use-apple-watch-walkie-talkie-mode">Walkie-Talkie mode</a> for quick communication.</p><p>The SE 3 also sports an onboard microphone and speaker for taking calls from the wrist. And if you opt for the 5G-capable model, you can even take and receive calls sans smartphone. </p><p><em><strong>Winner: </strong></em><em>Apple Watch SE 3</em></p><h3 class="article-body__section" id="section-5-safety-features"><span>5. Safety features</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4883px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="5Hq7ANDZE8Prsx5Dz7xCRG" name="AWSE3-01" alt="Close-up of the Apple Watch SE 3 on a turquoise strap" src="https://cdn.mos.cms.futurecdn.net/5Hq7ANDZE8Prsx5Dz7xCRG.jpg" mos="" align="middle" fullscreen="" width="4883" height="2747" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Apple and Garmin both take safety seriously. The Forerunner 165, for example, has Garmin’s LiveTrack tool, which lets friends and loved ones track your location from afar while you’re, say, running a marathon or taking on an epic hike. It also has Incident Detection, which can alert rescuers and/or loved ones to your location if a fall or crash is detected.</p><p>The SE 3 similarly has a crash/fall detection feature, as well as Apple’s <a href="https://www.tomsguide.com/wellness/smartwatches/the-best-hidden-apple-watch-feature-can-help-you-stay-safe-heres-how-to-use-it">Check In safety feature</a>, which, like LiveTrack, keeps loved ones informed of your location. One safety tool that’s unique to the SE 3 is emergency SOS, which lets users contact 911 by holding the side button.</p><p>Ultimately, while this one is pretty close, the Apple Watch SE 3 offers slightly more ways to stay safe than the Garmin Forerunner 165. </p><p><em><strong>Winner:</strong></em><em> Apple Watch SE 3</em></p><h3 class="article-body__section" id="section-6-battery-life"><span>6. Battery life</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3447px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="k3jLhwVAs3wUUGEXevBcJ3" name="Garmin-F165-rev-15.jpg" alt="The Garmin Forerunner 165 GPS watch on a user's wrist with a blue woven band attached" src="https://cdn.mos.cms.futurecdn.net/k3jLhwVAs3wUUGEXevBcJ3.jpg" mos="" align="middle" fullscreen="" width="3447" height="1938" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>When it comes to battery life, there’s really no comparison. Even with low-power mode switched on, the Apple Watch SE 3 is only good for roughly 32 hours (18 hours in standard mode). With GPS tracking enabled, you can expect about 7 hours of use.</p><p>On the other hand, the Garmin Forerunner 165 lasts for up to 11 days per charge or 20 days in battery saver mode. When tracking a workout with GPS, battery life is good for between 17 and 19 hours.</p><p><em><strong>Winner: </strong></em><em>Garmin Forerunner 165</em></p><h3 class="article-body__section" id="section-verdict"><span>Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="TWtMURqd3JgLvRAE8FJxGf" name="AWSE3-v-GarminF165-01" alt="Close-up of the Garmin Forerunner 165 next to the Apple Watch SE 3" src="https://cdn.mos.cms.futurecdn.net/TWtMURqd3JgLvRAE8FJxGf.jpg" mos="" align="middle" fullscreen="" width="5712" height="3212" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Which is the better smartwatch, the Apple Watch SE 3 or the Garmin Forerunner 165? If you’re a runner or primarily looking to track your fitness journey, the Garmin is a better choice than the Apple Watch, thanks to its comprehensive set of training and recovery tools. It’s also the superior option for battery life.</p><p>Alternatively, if you’re after a well-rounded smartwatch that can track your workout, plays nicely with a seemingly endless number of third-party apps, keeps you connected to loved ones, and works seamlessly with your smartphone, the Apple Watch SE 3 will likely be a better choice than the Garmin Forerunner 165.</p><p>What do you think, which smartwatch do you prefer, the Garmin Forerunner 165 or the Apple Watch SE 3? Let me know your favorite and why in the comments below. </p><p><em><strong>Overall winner: </strong></em><em>draw</em></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-7-500-steps-with-the-apple-watch-se-3-vs-amazfit-active-max-and-theres-a-clear-winner">I walked 7,500 steps with the Apple Watch SE 3 vs Amazfit Active Max — and there's a clear winner</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/take-off-that-apple-watch-5-reasons-why-its-okay-to-swap-your-smartwatch-for-a-dumb-watch">I review smartwatches for a living, but these are 5 reasons why I sometimes still wear a 'dumb' watch</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/garmins-rumored-screen-less-wearable-just-might-be-the-subscription-free-whoop-rival-ive-been-waiting-for">Garmin’s rumored screen-less wearable just might be the subscription-free Whoop rival I’ve been waiting for</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I review smartwatches for a living, but these are 5 reasons why I sometimes still wear a 'dumb' watch ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/take-off-that-apple-watch-5-reasons-why-its-okay-to-swap-your-smartwatch-for-a-dumb-watch</link>
                                                                            <description>
                            <![CDATA[ I review smartwatches for a living, but sometimes, I swap out my Apple Watch for a good-old-fashioned ‘dumb’ watch. And you know what? You should, too. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wUmbrYKruWtSy8eRLZGC7F</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Lc59y8zwu3J9wU3MJo45FW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 05 Apr 2026 05:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 07 Apr 2026 18:31:18 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Lc59y8zwu3J9wU3MJo45FW-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of a Casio G-Shock &#039;dumb&#039; watch on writer, Dan Bracaglia&#039;s wrist]]></media:description>                                                            <media:text><![CDATA[Close-up of a Casio G-Shock &#039;dumb&#039; watch on writer, Dan Bracaglia&#039;s wrist]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of a Casio G-Shock &#039;dumb&#039; watch on writer, Dan Bracaglia&#039;s wrist]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Lc59y8zwu3J9wU3MJo45FW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I review smartwatches and other wearable tech for a living, but sometimes, I swap out my Apple Watch (or Garmin, Samsung, Google, etc.) for a good-old-fashioned ‘dumb’ watch. And you know what? You should, too. </p><p>Beyond telling the time, a traditional watch also allows you to better disconnect from an often overwhelming digital world, while showing off your personal style, and/or accessorizing your outfit. Below are the five biggest reasons why I recommend placing your smartwatch on sabbatical from time to time in favor of something a bit less fussy. </p><h3 class="article-body__section" id="section-1-you-re-in-formal-wear"><span>1. You're in formal wear</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4542px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wyStEiH6TpXiBNrkiFh32W" name="DumbWatch-03" alt="Close-up of a Tissot PRX quartz watch on writer, Dan Bracaglia's, wrist" src="https://cdn.mos.cms.futurecdn.net/wyStEiH6TpXiBNrkiFh32W.jpg" mos="" align="middle" fullscreen="" width="4542" height="2555" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Say it with me now, “No smartwatches with formal wear.” And one more time for the folks in the back, “NO SMARTWATCHES WITH FORMAL WEAR.”</p><p>Just imagine if James Bond wore an <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-ultra-3-review">Apple Watch Ultra 3</a> instead of his classic <a href="https://www.omegawatches.com/en-us/watch-omega-seamaster-diver-300m-co-axial-master-chronometer-42-mm-21090422001001" target="_blank" rel="nofollow">Omega Seamaster</a> or <a href="https://www.chrono24.com/rolex/submariner-james-bond--imod2839.htm" target="_blank" rel="nofollow">Rolex Submariner</a> (depending on the era of 007). Rather than being the smooth-talking, immaculately-dressed spy we’ve all come to know and love, suddenly, he’s more finance bro than action hero. </p><p>Smartwatches are incredibly amazing devices, with serious benefits from health and fitness tracking tools to safety and communication features. However, nothing makes a finely tailored suit or an elegant evening dress look tackier than a glowing mini-computer on the wrist. </p><p>So, next time you’re dressing up, whether for a wedding, a fancy date night, the opera, a funeral, etc., skip the Apple Watch and opt for a dressy dumb watch instead. </p><h3 class="article-body__section" id="section-2-to-take-a-break-from-the-health-stats"><span>2. To take a break from the health stats</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3262px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uBLQSayvo4gFBgngHhux7b" name="Rings-3" alt="Apple Watch SE sitting on a red table with the owner's Activity Rings shown nearly closed" src="https://cdn.mos.cms.futurecdn.net/uBLQSayvo4gFBgngHhux7b.jpg" mos="" align="middle" fullscreen="" width="3262" height="1835" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch">best smartwatches</a> are brimming with features to encourage a healthy, active lifestyle. Moreover, attempting to keep a healthy streak going, whether it's hitting a certain daily step count or getting eight hours of sleep every night, is a great way to develop and maintain new habits. </p><p>Sometimes, though, you just need a break, and that’s okay! After all, all those metrics and physical health tracking insights can at times be a detriment to one’s mental health. I certainly feel this way occasionally, which is why I make a point of going for walks and workouts sans smartwatch every so often. </p><p>Thankfully, most smartwatches make it easy to skip a day or two without affecting your physical fitness achievements. Apple, for example, lets users <a href="https://www.tomsguide.com/wellness/smartwatches/how-to-pause-activity-rings-on-your-apple-watch">pause their Activity Rings</a> at any time without penalty, i.e., you won’t ruin a hard-earned Ring-closing streak.</p><h3 class="article-body__section" id="section-3-you-appreciate-vintage-charm"><span>3. You appreciate vintage charm</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6ChkPqtHLDs7uHuPQgJiTV" name="DumbWatch-04" alt="Close-up of a mechanical 'dumb' watch on writer, Dan Bracaglia's, wrist" src="https://cdn.mos.cms.futurecdn.net/6ChkPqtHLDs7uHuPQgJiTV.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>There’s no such thing as a vintage smartwatch, unless you want to count some of Garmin’s earliest Forerunner models, which look more like digital kitchen timers on a strap than actual smartwatches. </p><p>On the flip side, you can spend the rest of your life combing through the seemingly endless and complex back catalogue that is 100+ years of mechanical and battery-powered quartz watches. </p><p>Whether we’re talking the fun, color-splashed plastic Swatches and retro-futuristic Casios of the 1980s and 90s, or older all-metal mechanical wonders from legendary brands like Cartier, Longines, and IWC, vintage watches offer infinitely more personality than any modern smartwatch. </p><p>And while the aforementioned big-name mechanical brands are often quite spendy, wallet-friendly, vintage-inspired alternatives from companies like <a href="https://timex.com/collections/mens-vintage-inspired-watches" target="_blank" rel="nofollow">Timex</a>, <a href="https://www.amazon.com/Orient-Classic-Automatic-Silver-RA-AC0J04S10B/dp/B08F7YYDKM/" target="_blank" rel="nofollow">Orient</a>, and <a href="https://www.amazon.com/Seiko-Automatic-Black-Watch-SNKP21J1/dp/B07NQLSVXF/" target="_blank" rel="nofollow">Seiko</a> offer all the fun of an actual heirloom timepiece, without breaking the bank.</p><h3 class="article-body__section" id="section-4-durability-and-water-resistance-are-paramount"><span>4. Durability and water resistance are paramount</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="edmUXCtZEewQmTbytgVBoV" name="DumbWatch-06" alt="Close-up of a mechanical 'dumb' watch on writer, Dan Bracaglia's, wrist" src="https://cdn.mos.cms.futurecdn.net/edmUXCtZEewQmTbytgVBoV.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Most smartwatches offer just <a href="https://www.tomsguide.com/wellness/smartwatches/smartwatch-water-resistance-ratings-explained#section-50-meters-water-resistance">50 meters of water resistance</a>, which is enough to keep your watch protected for short periods of surface-level swimming, but not snorkeling, diving, or high-impact water sports.</p><p>Smartwatches also don’t mix well with salt water, unless you thoroughly rinse the device after every swim with fresh water. Similarly, you should never wear your smartwatch in a hot tub, sauna, or similar environments.</p><p>So, what’s a guy to do when he’s looking to take the soak of the century, but still wants to know the time? I grab my trusty <a href="https://www.casio.com/us/watches/gshock/product.DW-5600E-1V/" target="_blank" rel="nofollow">$99 G-Shock</a> and a towel, without a second thought. </p><p>Offering a whopping 200 meters of water resistance, a shockproof case, and an overall design that's basically indestructible, it just might be the toughest bang-for-your-buck dumb watch in existence; mine has survived years of hot tub soaks and still works like a charm. </p><h3 class="article-body__section" id="section-5-you-need-a-digital-detox"><span>5. You need a digital detox</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3574px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="VFSFKF5pSSoc92MZTN6BdV" name="DumbWatch-07" alt="Close-up of a mechanical 'dumb' watch on writer, Dan Bracaglia's, wrist" src="https://cdn.mos.cms.futurecdn.net/VFSFKF5pSSoc92MZTN6BdV.jpg" mos="" align="middle" fullscreen="" width="3574" height="2010" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Last but not least, occasionally, a digital detox is in order. And frankly, I highly recommend taking at least one day off a month from all your tech gadgets. That’s right, leave your smartphone, earbuds, and smartwatch at home. </p><p>Need to tell the time? Look at a dumb watch. Want to look up somewhere to eat? Ask an actual human for advice! Bored without music or podcasts trumpeting in your ears? Try enjoying the sounds of the city or nature instead. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/forget-the-apple-watch-5-reasons-ill-be-wearing-the-latest-casio-g-shock-this-summer-instead">Forget the Apple Watch — 5 reasons I’ll be wearing the new Casio G-Shock this summer instead</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/garmins-rumored-screen-less-wearable-just-might-be-the-subscription-free-whoop-rival-ive-been-waiting-for">Garmin’s rumored screen-less wearable just might be the subscription-free Whoop rival I’ve been waiting for</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/from-fall-detection-to-hypertension-10-apple-watch-innovations-that-changed-the-game">10 Apple Watch innovations that changed the game — from Fall Detection to Hypertension Alerts</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin’s rumored screen-less wearable just might be the subscription-free Whoop rival I’ve been waiting for  ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness-trackers/garmins-rumored-screen-less-wearable-just-might-be-the-subscription-free-whoop-rival-ive-been-waiting-for</link>
                                                                            <description>
                            <![CDATA[ Leaks and rumors suggest a new Garmin fitness tracker could be imminent. Here’s what you need to know about this potential Whoop killer. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TkSg6BppHN2wA7fzkUgx2U</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sD3RENyeioa4hXC5AS62n5-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 02 Apr 2026 10:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 07 Apr 2026 18:29:18 +0000</updated>
                                                                                                                                            <category><![CDATA[Fitness Trackers]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Smartwatches]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/sD3RENyeioa4hXC5AS62n5-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The sensors on the Garmin Vivosmart 4 fitness tracker]]></media:description>                                                            <media:text><![CDATA[The sensors on the Garmin Vivosmart 4 fitness tracker]]></media:text>
                                <media:title type="plain"><![CDATA[The sensors on the Garmin Vivosmart 4 fitness tracker]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sD3RENyeioa4hXC5AS62n5-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Garmin hasn’t launched a new fitness tracking band since 2022, but that could change soon if recent rumors and leaks pan out. In fact, the Garmin ‘Cirqa’ could prove to be a Whoop killer for one major reason. </p><p>It’s also worth noting that Garmin has yet to launch any new wearables in 2026, so a Garmin Cirqa, or even a replacement for the beloved entry-level <a href="https://www.tomsguide.com/reviews/garmin-forerunner-55">Forerunner 55 running watch</a> (also launched in 2022), could also be right around the corner. </p><h3 class="article-body__section" id="section-garmin-and-google-want-a-piece-of-the-whoop-pie"><span>Garmin and Google want a piece of the Whoop pie</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2243px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="mhCxvbV9KM4P9KqNcjtWaR" name="IMG_3573" alt="doing an ECG reading on the Whoop MG" src="https://cdn.mos.cms.futurecdn.net/mhCxvbV9KM4P9KqNcjtWaR.jpg" mos="" align="middle" fullscreen="" width="2243" height="1262" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Garmin’s new, rumored screen-less fitness tracker first showed up on one of the brand's own regional websites earlier this year, initially spotted by <a href="https://the5krunner.com/2026/03/18/garmin-cirqa-launch-next-week/" target="_blank">the5Krunner</a>. While details are limited, the listing for the Cirqa said it will be available in ‘four to five months,’ making an April launch date entirely possible. </p><p>A separate filing by Garmin for a product called ‘CIRQA’ with the U.S. The Federal Communications Commission (FCC), also initially uncovered by <a href="https://the5krunner.com/2026/02/10/garmin-cirqa-fcc-analysis/" target="_blank">the5Krunner</a>, only adds fuel to the fire for a spring/summer 2026 launch.</p><p>Of course, Garmin isn’t the only wearables giant hungry for a piece of the Whoop pie. Google is also rumored to be launching a <a href="https://www.tomsguide.com/wellness/fitness-trackers/google-just-gave-us-a-sneak-peek-of-its-screenless-fitbit-band-and-whoop-should-be-worried">screen-less Fitbit-branded wearable</a> to take on the latest <a href="https://www.tomsguide.com/wellness/fitness-trackers/whoop-5-0-review-should-you-give-a-whoop-about-this-new-tracker">Whoop 5.0</a>. </p><h3 class="article-body__section" id="section-garmin-cirqa-rumored-features-and-specs"><span>Garmin Cirqa rumored features and specs</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:60.00%;"><img id="abavLE8wUsUF3VN3k8bZXU" name="Garmin-vivosmart-HR-G03.jpg" alt="Back sensors on the Garmin Vivosmart HR from 2015" src="https://cdn.mos.cms.futurecdn.net/abavLE8wUsUF3VN3k8bZXU.jpg" mos="" align="middle" fullscreen="" width="1500" height="900" attribution="" endorsement="" class="inline"></p></div></div></figure><p>According to details gleaned from the <a href="https://apps.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm?mode=Exhibits&RequestTimeout=500&calledFromFrame=N&application_id=e2mJu8m2erwYXafnUqZubg%3D%3D&fcc_id=IPH-04378" target="_blank">FFC filing</a>, the new Garmin Cirqa fitness tracker might come in two sizes and feature at least an optical heart rate sensor. However, it could also sport body temperature, sweat, and SpO2 sensors, and track everything from heart rate variability to sleep quality.</p><p>It also seems possible that the Cirqa won’t have an onboard GPS, likely to keep costs down. This would mean that users will need to carry a paired phone for location data while working out. </p><p>Beyond that, we know little about what the rumored wearable will look like, cost, or how long it will last.</p><h3 class="article-body__section" id="section-garmin-is-overdue-for-a-new-fitness-band"><span>Garmin is overdue for a new fitness band</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PuCA6W5PeFxGLVmY3TeEUE" name="IMG_3010.jpg" alt="a photo of the Garmin Vivosmart 5 in walk mode" src="https://cdn.mos.cms.futurecdn.net/PuCA6W5PeFxGLVmY3TeEUE.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future/Tom's Guide)</span></figcaption></figure><p>The <a href="https://www.tomsguide.com/reviews/garmin-vivosmart-5">Garmin Vivosmart 5</a> — the last Garmin fitness band to debut — might as well be a vampire; it’s so long in the tooth. Launched all the way back in 2022, the model is still technically current (Garmin lists it on the U.S. site), but retirement seems likely soon.</p><p>Garmin isn’t alone in neglecting its most entry-level wearables, and there’s no denying the fact that traditional fitness trackers have somewhat fallen out of style over the past four years. Google has similarly largely <a href="https://www.tomsguide.com/wellness/fitness-trackers/google-just-killed-another-fitbit-feature-and-now-im-certain-the-brand-is-as-good-as-dead">neglected its Fitbit portfolio</a>, choosing to instead focus on the flagship <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-went-hands-on-with-google-pixel-watch-4-and-it-could-be-my-new-favorite-smartwatch-for-android">Pixel Watch series</a>.</p><p>Might screen-less fitness trackers be the next wave for both of these wearable tech powerhouses? It sure seems that way.  </p><h3 class="article-body__section" id="section-a-subscription-free-approach-could-whoop-the-competition"><span>A subscription-free approach could whoop the competition</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3168px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="h2QLktxNvVQzGSL2svH8HC" name="Image from iOS (45).jpg" alt="A photo of the sensors on the back of the Whoop 4.0 tracker" src="https://cdn.mos.cms.futurecdn.net/h2QLktxNvVQzGSL2svH8HC.jpg" mos="" align="middle" fullscreen="" width="3168" height="1782" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While Whoop may be the market leader in screen-less wrist-based fitness trackers, the brand suffers from the same complaints as Oura, maker of the <a href="https://www.tomsguide.com/wellness/fitness-trackers/best-smart-rings">best smart rings</a> in 2026. Simply put, lots of folks aren’t keen on choosing a device that comes with recurring subscription costs.</p><p>The <a href="https://www.tomsguide.com/wellness/fitness-trackers/oura-ring-4-review">Oura Ring 4</a> subscription is $69.99 a year, and a Whoop subscription ranges from $199 to $349 annually. This could prove a liability for Whoop if Garmin or Google launch competing products without subscription costs. </p><p>Garmin presently offers the vast majority of fitness and wellness tracking metrics and insight for free. That said, the brand also has a paid subscription tier, Garmin Connect+, for $6.99 a month. The plan unlocks premium features like nutrition tracking and a personalized AI training coach. </p><p>Ultimately, if/when the Garmin Cirqa debuts, I’m guessing that most of the features will be free of charge, just like they are on the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a> of 2026. </p><p>Of course, even if Garmin and Google drop subscription-free Whoop alternatives, they'll still have to compete with the likes of the wallet-friendly <a href="https://www.tomsguide.com/wellness/fitness-trackers/amazfit-helio-strap-review">Amazfit Helio Strap</a> and the<a href="https://www.tomsguide.com/wellness/fitness-trackers/polars-screenless-fitness-tracker-has-arrived-heres-everything-you-need-to-know-about-the-whoop-rival"> Polar Loop</a> band, both of which also lack recurring costs.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/from-fall-detection-to-hypertension-10-apple-watch-innovations-that-changed-the-game">10 Apple Watch innovations that changed the game — from Fall Detection to Hypertension Alerts</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/your-google-pixel-watch-now-has-earthquake-alerts-heres-why-they-could-be-an-actual-lifesaver">Your Google Pixel Watch now has earthquake alerts — here’s why that's a big deal</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/exclusive-ultrahuman-ceo-says-smart-rings-will-become-a-computer-on-the-body-with-the-ability-to-at-least-micro-think">Exclusive: Ultrahuman CEO says smart rings will 'become a computer on the body' with the ability 'to at least micro-think'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 7 spring Garmin smartwatch deals I recommend right now — including Epix Pro at its lowest price ever ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/7-spring-garmin-smartwatch-deals-i-recommend-right-now-including-epix-pro-at-its-lowest-price-ever</link>
                                                                            <description>
                            <![CDATA[ Garmin spring smartwatch deals are here, and they're hot! Take up to 45% off the Epix Pro. Plus: All our top-pick running watches are discounted. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NbkHUMJuWPFebby5t3DaNe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/4TVfbFfj89wUCwiH4kFmSR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 29 Mar 2026 11:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/4TVfbFfj89wUCwiH4kFmSR-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Forerunner 165 on a user&#039;s wrist next to an &quot;act fast!&quot; deals badge]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Forerunner 165 on a user&#039;s wrist next to an &quot;act fast!&quot; deals badge]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Forerunner 165 on a user&#039;s wrist next to an &quot;act fast!&quot; deals badge]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/4TVfbFfj89wUCwiH4kFmSR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Garmin makes the <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch">best smartwatches</a> for tracking indoor or outdoor workouts, in my opinion, whether you're a runner, hardcore outdoors enthusiast, or casual exerciser. Just in time for spring's nice weather, a huge selection of the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a> is seriously discounted. </p><p>For example, nearly every current Garmin running watch, from the entry-level Forerunner 55 to the pro-level Forerunner 965, is reduced. The best bargain, though, is on the Garmin Epix Pro: <a href="https://www.garmin.com/en-US/p/894067/" target="_blank" rel="nofollow">save $450 off the sticker price via Garmin</a> right now.</p><p>Find my seven favorite spring 2026 Garmin smartwatch deals on the best models I've personally tested and recommend, below</p><h2 class="article-body__section" id="section-quick-links"><span>Quick Links</span></h2><ul><li><strong>Garmin Forerunner 55: </strong><a href="https://www.amazon.com/Garmin-Forerunner-Running-Suggested-Workouts/dp/B092RCLKHN?th=1" target="_blank" rel="nofollow"><strong>was $199 now $169 @ Amazon</strong></a></li><li><strong>Garmin Vivoactive 5:</strong><a href="https://www.garmin.com/en-US/p/1057989/" target="_blank" rel="nofollow"><strong> was $269 now $189 @ Garmin</strong></a></li><li><strong>Garmin Forerunner 165: </strong><a href="https://www.rei.com/product/239365/garmin-forerunner-165" target="_blank" rel="nofollow"><strong>was $249 now $199 @ REI</strong></a></li><li><strong>Garmin Forerunner 265: </strong><a href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0BS1T9J4Y/?th=1" target="_blank" rel="nofollow"><strong>was $449 now $349 @ Amazon</strong></a><strong></strong></li><li><strong>Garmin Forerunner 965: </strong><a href="https://www.bestbuy.com/product/garmin-forerunner-965-gps-smartwatch-47-mm-fiber-reinforced-polymer-carbon-gray-tlc-titanium-2023/JXF9YF4C26/sku/6544443" target="_blank" rel="nofollow"><strong>was $599 now $499 @ Best Buy</strong></a></li><li><strong>Garmin Epix Pro: </strong><a href="https://www.garmin.com/en-US/p/894067/" target="_blank" rel="nofollow"><strong>was $999 now $549 @ Garmin</strong></a></li><li><strong>Garmin Venu X1: </strong><a href="https://www.amazon.com/Lightweight-Smartwatch-Advanced-Features-ComfortFit/dp/B0FCYHNL3C?th=1" target="_blank" rel="nofollow"><strong>was $799 now $699 @ Amazon</strong></a><strong></strong></li></ul><h2 class="article-body__section" id="section-garmin-deals"><span>Garmin Deals</span></h2><div class="product"><a data-dimension112="ec9d8584-66da-4aa5-b14d-f673c964d6d0" data-action="Deal Block" data-label="Forerunner 55" data-dimension48="Forerunner 55" data-dimension25="$169" href="https://www.amazon.com/Garmin-Forerunner-Running-Suggested-Workouts/dp/B092RCLKHN?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1015px;"><p class="vanilla-image-block" style="padding-top:100.99%;"><img id="DXyUPYXb7KBxZYvWKaTu2j" name="Foerunner55-deal" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DXyUPYXb7KBxZYvWKaTu2j.jpg" mos="" align="middle" fullscreen="" width="1015" height="1025" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The<a href="https://www.tomsguide.com/reviews/garmin-forerunner-55" data-dimension112="ec9d8584-66da-4aa5-b14d-f673c964d6d0" data-action="Deal Block" data-label="Forerunner 55" data-dimension48="Forerunner 55" data-dimension25="$169"> Forerunner 55</a> is Garmin's entry-level running watch and the <a href="https://www.tomsguide.com/best-picks/best-running-watches#section-best-running-watch-for-beginners">best running watch for beginners</a>, with plenty of training and recovery tools, a rock-solid build quality, a long-lasting battery, and highly accurate performance. Looking to dip your toes into the world of running? This is the smartwatch for you. <a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner-Running-Suggested-Workouts/dp/B092RCLKHN?th=1" target="_blank" rel="nofollow" data-dimension112="ec9d8584-66da-4aa5-b14d-f673c964d6d0" data-action="Deal Block" data-label="Forerunner 55" data-dimension48="Forerunner 55" data-dimension25="$169">View Deal</a></p></div><div class="product"><a data-dimension112="838879de-ed70-439d-bb20-d8b062128842" data-action="Deal Block" data-label="Garmin Vivoactive 5" data-dimension48="Garmin Vivoactive 5" data-dimension25="$189" href="https://www.garmin.com/en-US/p/1057989/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1152px;"><p class="vanilla-image-block" style="padding-top:120.49%;"><img id="758dw7myhVrAAADTCdsjiG" name="Garmin-Vivoactive-5b.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/758dw7myhVrAAADTCdsjiG.jpg" mos="" align="middle" fullscreen="" width="1152" height="1388" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/reviews/garmin-vivoactive-5-review-is-it-ready-to-take-on-the-apple-watch" data-dimension112="838879de-ed70-439d-bb20-d8b062128842" data-action="Deal Block" data-label="Garmin Vivoactive 5" data-dimension48="Garmin Vivoactive 5" data-dimension25="$189">Garmin Vivoactive 5</a> was recently replaced by the newer <a href="https://www.tomsguide.com/wellness/smartwatches/i-wore-the-garmin-vivoactive-6-for-a-month-and-it-has-nearly-everything-i-want-in-a-smartwatch">Vivoactive 6</a>, but the upgrades are minimal, making this a great bargain on one of Garmin's most well-rounded models for fitness and smarts. Key features include a bright AMOLED screen, onboard storage for music, NFC for mobile payments, and up to five days of battery in always-on display mode.<a class="view-deal button" href="https://www.garmin.com/en-US/p/1057989/" target="_blank" rel="nofollow" data-dimension112="838879de-ed70-439d-bb20-d8b062128842" data-action="Deal Block" data-label="Garmin Vivoactive 5" data-dimension48="Garmin Vivoactive 5" data-dimension25="$189">View Deal</a></p></div><div class="product"><a data-dimension112="60c6cbe8-d4d7-44c8-b720-8733ac15084a" data-action="Deal Block" data-label="Garmin Forerunner 165" data-dimension48="Garmin Forerunner 165" data-dimension25="$199" href="https://www.rei.com/product/239365/garmin-forerunner-165" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:675px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="7GxV2AK4CUU5iZBg96GNiF" name="Garmin Forerunner 165 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7GxV2AK4CUU5iZBg96GNiF.jpg" mos="" align="middle" fullscreen="" width="675" height="675" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/reviews/garmin-forerunner-55" data-dimension112="60c6cbe8-d4d7-44c8-b720-8733ac15084a" data-action="Deal Block" data-label="Garmin Forerunner 165" data-dimension48="Garmin Forerunner 165" data-dimension25="$199">Garmin Forerunner 165 </a>is a step up from the more entry-level Forerunner 55, offering a brighter AMOLED screen, more advanced health metrics, including heart rate variability (HRV) status, better GPS, and a deeper level of training/recovery insights.<a class="view-deal button" href="https://www.rei.com/product/239365/garmin-forerunner-165" target="_blank" rel="nofollow" data-dimension112="60c6cbe8-d4d7-44c8-b720-8733ac15084a" data-action="Deal Block" data-label="Garmin Forerunner 165" data-dimension48="Garmin Forerunner 165" data-dimension25="$199">View Deal</a></p></div><div class="product"><a data-dimension112="09f5425c-c16d-4824-8dfc-2e1a940e711c" data-action="Deal Block" data-label="Forerunner 265 vs. the Forerunner 165" data-dimension48="Forerunner 265 vs. the Forerunner 165" data-dimension25="$349" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0BS1T9J4Y/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="hWk4Tso7U92BXrFNDk8f6W" name="_0001_Garmin Forerunner 265.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/hWk4Tso7U92BXrFNDk8f6W.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 265 is Garmin's mid-level running model, and one step up from the Forerunner 165, boasting even more training tools, insights, and advice, better battery life, more advanced GPS tracking, and support for multi-sport tracking. Here's a closer look at the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-165-vs-forerunner-265-which-running-watch-wins#section-garmin-forerunner-165-vs-forerunner-265" data-dimension112="09f5425c-c16d-4824-8dfc-2e1a940e711c" data-action="Deal Block" data-label="Forerunner 265 vs. the Forerunner 165" data-dimension48="Forerunner 265 vs. the Forerunner 165" data-dimension25="$349">Forerunner 265 vs. the Forerunner 165</a>.<a class="view-deal button" href="https://www.amazon.com/Garmin-Forerunner-Smartwatch-Colorful-Training/dp/B0BS1T9J4Y/?th=1" target="_blank" rel="nofollow" data-dimension112="09f5425c-c16d-4824-8dfc-2e1a940e711c" data-action="Deal Block" data-label="Forerunner 265 vs. the Forerunner 165" data-dimension48="Forerunner 265 vs. the Forerunner 165" data-dimension25="$349">View Deal</a></p></div><div class="product"><a data-dimension112="84676721-eb29-4988-ba61-bcfb5eb5d26b" data-action="Deal Block" data-label="Forerunner 965" data-dimension48="Forerunner 965" data-dimension25="$499" href="https://www.bestbuy.com/product/garmin-forerunner-965-gps-smartwatch-47-mm-fiber-reinforced-polymer-carbon-gray-tlc-titanium-2023/JXF9YF4C26/sku/6544443" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:550px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="nPKQkXYFp7F57HHTm6DHEL" name="Garmin - Forerunner 965.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/nPKQkXYFp7F57HHTm6DHEL.jpg" mos="" align="middle" fullscreen="" width="550" height="550" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Looking for Garmin's top-of-the-line, pro-ready running watch? Look no further than the <a href="https://www.tomsguide.com/reviews/garmin-forerunner-965" data-dimension112="84676721-eb29-4988-ba61-bcfb5eb5d26b" data-action="Deal Block" data-label="Forerunner 965" data-dimension48="Forerunner 965" data-dimension25="$499">Forerunner 965</a>. Designed with marathon runners and triathletes in mind, the 965 offers a super-bright screen, all of Garmin's most advanced training insights and tools, epic battery life, and a rugged, sporty design.<a class="view-deal button" href="https://www.bestbuy.com/product/garmin-forerunner-965-gps-smartwatch-47-mm-fiber-reinforced-polymer-carbon-gray-tlc-titanium-2023/JXF9YF4C26/sku/6544443" target="_blank" rel="nofollow" data-dimension112="84676721-eb29-4988-ba61-bcfb5eb5d26b" data-action="Deal Block" data-label="Forerunner 965" data-dimension48="Forerunner 965" data-dimension25="$499">View Deal</a></p></div><div class="product"><a data-dimension112="7fd97426-d352-41bb-9969-cc040d0d8e29" data-action="Deal Block" data-label="Garmin Venu X1" data-dimension48="Garmin Venu X1" data-dimension25="$699" href="https://www.amazon.com/Lightweight-Smartwatch-Advanced-Features-ComfortFit/dp/B0FCYHNL3C?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1300px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="bF9NQx9xqgZWJZ3vavVnCo" name="Garmin Venu X1 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bF9NQx9xqgZWJZ3vavVnCo.jpg" mos="" align="middle" fullscreen="" width="1300" height="1300" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-venu-x1-review" data-dimension112="7fd97426-d352-41bb-9969-cc040d0d8e29" data-action="Deal Block" data-label="Garmin Venu X1" data-dimension48="Garmin Venu X1" data-dimension25="$699">Garmin Venu X1</a> is the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch#section-the-best-garmin-smartwatch">best Garmin smartwatch</a> and the brand's closest model to an <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-series-11-review">Apple Watch Series 11.</a> Not only does it have many of Garmin's headiest tracking features and training tools, but it also boasts NFC mobile payments, offline music storage, and an ultra-light AMOLED display, all packed into the brand's thinnest-ever model.<a class="view-deal button" href="https://www.amazon.com/Lightweight-Smartwatch-Advanced-Features-ComfortFit/dp/B0FCYHNL3C?th=1" target="_blank" rel="nofollow" data-dimension112="7fd97426-d352-41bb-9969-cc040d0d8e29" data-action="Deal Block" data-label="Garmin Venu X1" data-dimension48="Garmin Venu X1" data-dimension25="$699">View Deal</a></p></div><div class="product"><a data-dimension112="f667a167-8b35-427e-94d7-d9269cbbf6f9" data-action="Deal Block" data-label="Garmin Epix Pro" data-dimension48="Garmin Epix Pro" data-dimension25="$549" href="https://www.garmin.com/en-US/p/894067/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1427px;"><p class="vanilla-image-block" style="padding-top:90.82%;"><img id="4N3zb2p7ZreGZScLcKPtRF" name="61aiNaRQW1L._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/4N3zb2p7ZreGZScLcKPtRF.jpg" mos="" align="middle" fullscreen="" width="1427" height="1296" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The flagship-level <a href="https://www.tomsguide.com/reviews/garmin-epix-pro" data-dimension112="f667a167-8b35-427e-94d7-d9269cbbf6f9" data-action="Deal Block" data-label="Garmin Epix Pro" data-dimension48="Garmin Epix Pro" data-dimension25="$549">Garmin Epix Pro</a> may have been recently replaced by the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-pro-review-the-greatest-fenix-yet">Garmin Fenix 8 Pro</a>, but a savings of $450 off this still-modern, high-end smartwatch is too hard to ignore. Perhaps, most importantly, the Epix Pro is incredibly precise and reliable when it comes to tracking data. It also features a gorgeous AMOLED screen, a rugged, metal design, and Garmin's most impressive training and recovery tools.<a class="view-deal button" href="https://www.garmin.com/en-US/p/894067/" target="_blank" rel="nofollow" data-dimension112="f667a167-8b35-427e-94d7-d9269cbbf6f9" data-action="Deal Block" data-label="Garmin Epix Pro" data-dimension48="Garmin Epix Pro" data-dimension25="$549">View Deal</a></p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How many of these Garmin Connect badges can you name? Number 4 may fool you ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness-trackers/garmin-connect-badges-quiz</link>
                                                                            <description>
                            <![CDATA[ Our fitness team didn’t get full marks on this Garmin Connect badge quiz – can you? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">5mBvgUiiZ3pEkSHWXBSV7U</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DeBWna5NYMdr4azQM6wHWm-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 26 Mar 2026 12:21:32 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Mar 2026 18:00:01 +0000</updated>
                                                                                                                                            <category><![CDATA[Fitness Trackers]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Smartwatches]]></category>
                                                                                                <author><![CDATA[ ella.taylor@futurenet.com (Ella Taylor) ]]></author>                    <dc:creator><![CDATA[ Ella Taylor ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/W2nC7HFA6avQHdFNFbFPNa.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DeBWna5NYMdr4azQM6wHWm-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Connect Badges displayed on phone screen]]></media:description>                                                            <media:text><![CDATA[Garmin Connect Badges displayed on phone screen]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Connect Badges displayed on phone screen]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DeBWna5NYMdr4azQM6wHWm-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you're the proud owner of one of the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a> and you've mastered <a href="https://www.tomsguide.com/how-to/how-to-use-garmin-connect">how to use Garmin Connect</a>, then you may have started clocking up some points and earning badges – perhaps even some of the <a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-a-garmin-for-10-years-and-these-are-the-5-hardest-garmin-badges-to-earn-how-many-do-you-have">more challenging Garmin Connect badges</a>. But there's a vast library of badges available to win, and some that you may or may not be familiar with.</p><p>We've compiled the below fun multiple choice Garmin Connect badges quiz, where you'll be asked to guess the names of each of the 10 badges that are pictured. There's no time limit, so have fun with it (but no cheating!) and hopefully you'll even discover some new badges to lust after. You're welcome!</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORKwnX"></div>                            </div>                            <script src="https://kwizly.com/embed/ORKwnX.js" async></script><p>How did you do? Let us know what you think in the comments below. Too hard? Too easy? I love to hear from you and welcome all constructive feedback. I'll admit that I may have made this one a little challenging, as even our fitness writers (some of whom have worn Garmin watches for years) didn't score 10/10. 😬</p><p>Find out about more lesser-known Garmin Connect badges on <a href="https://www.garmin.com/en-US/blog/fitness/the-25-garmin-connect-badges-you-never-knew-you-needed/" target="_blank" rel="nofollow">this Garmin blog post</a>.</p><p>If you enjoyed this quiz, then check out our other <a href="https://www.tomsguide.com/play">puzzles and quizzes</a>. And don't forget to register to save your score, reveal hints for any clues you're not sure of (though I'm sure you won't need that) and secure your spot on the competitive Tom's Guide leaderboard.</p><a class="card card--standard card--rows-2 card--align-inline" href="https://www.tomsguide.com/play"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/9dC8Z7BNysm3pR3EzeBqnX.jpg" alt="Screenshot of Tom's Guide puzzles and quizzes page"></p></div><div class="card__content"><h3 class="card__title">Tom's Guide games</h3><div class="card__description-wrapper"><div class="card__description"><p>Play multiple choice, lystery, word searches, crosswords and guess the number – can you reach the top of the leaderboard?</p></div></div></div></a><a class="card card--standard card--rows-2 card--align-inline" href="https://www.tomsguide.com/membership"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/CtyBASsPQAuEKTsTEJu6YL.jpg" alt="A screenshot from the Tom's Guide website reading 'Everything you get as a member'"></p></div><div class="card__content"><h3 class="card__title">Tom's Guide Club</h3><div class="card__description-wrapper"><div class="card__description"><p>Join Tom’s Guide Club for free, to earn badges, talk to other members and Tom’s writers, get exclusive deals and more.</p></div></div></div></a><p>And if you're thinking of upgrading your Garmin smartwatch, there are currently some discounts on our top-rated models in the <a href="https://www.amazon.com/events/bigspringsale" target="_blank" rel="nofollow">Amazon Big Spring Sale</a>.</p><h3 class="article-body__section" id="section-shop-garmin-watches"><span>Shop Garmin watches</span></h3>        <div class="featured_product_block featured_block_hero" data-id="46e4fbff-4b45-4f0f-b8f6-3a8a20237d61">            <a href="https://www.amazon.com/dp/B0CT3VBDTV/" data-model-name="Forerunner 165" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/w2X3q9XCgSWqEntNSmvqPC.jpg" alt="Garmin Forerunner 165, Running Smartwatch, Colorful Amoled Display, Training Metrics and Recovery Insights, Whitestone"><span class='featured__label hero__label'>Best for beginners</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Garmin</div>                                        <div class="featured__title">Forerunner 165</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="ec9b116c-a9f0-4708-8dd2-490eaf6c088d">            <a href="https://www.amazon.com/dp/B0DGVV6T6H" data-model-name="Lily 2 Active" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/vxKZMqJ6RkkMoKvxFAfVQC.jpg" alt="Garmin Lily® 2 Active, Small and Stylish Smartwatch, Built-In Gps, Hidden Display, Patterned Lens, Up to 9 Days Battery Life, Jasper Green With Jasper Green Silicone Band"><span class='featured__label hero__label'>Best for fitness</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Garmin</div>                                        <div class="featured__title">Lily 2 Active</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fe2f4986-ebc4-40d2-b568-dc0d0a31f0fa">            <a href="https://www.amazon.com/dp/B0953X73TP" data-model-name="Garmin Forerunner 55" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/7XwKaK7uhwZsZGPFYH7MMC.jpg" alt="Garmin Forerunner 55 Gps Running Smartwatch, Black"><span class='featured__label hero__label'>Best budget Garmin</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Garmin</div>                                        <div class="featured__title">Garmin Forerunner 55</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="47b4261a-4b5a-4d78-8041-bc8b007a8d1c">            <a href="https://www.amazon.com/dp/B0F8R2BSKK" data-model-name="Forerunner 570" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/FpvXXPhomzcAzJS5NiHpCh.jpg" alt="Garmin® Forerunner® 570, 42mm, Advanced Gps Running and Triathlon Smartwatch, Amoled Display, Training and Recovery Features, Slate Gray Aluminum With Translucent Black/black Band"><span class='featured__label hero__label'>Best for runners</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Garmin</div>                                        <div class="featured__title">Forerunner 570</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-a-garmin-for-10-years-and-these-are-the-5-hardest-garmin-badges-to-earn-how-many-do-you-have">I’ve been wearing a Garmin for 10 years, and these are the 5 hardest Garmin badges to earn — how many do you have?</a></li><li><a href="https://www.tomsguide.com/gaming/toms-guide-jigsaw-puzzles-hardest-difficulty-has-me-stumped">Can you beat us at our own game? New Tom’s Guide jigsaw puzzles are a great way to kill time between Wordles</a></li><li><a href="https://www.tomsguide.com/gaming/forget-wordle-you-need-to-play-toms-guide-games-right-now">Forget Wordle, you need to play Tom's Guide games right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I ran a half marathon with the Apple Watch Ultra 3 vs Garmin Forerunner 970 to test the GPS and heart rate accuracy — here’s the winner ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-ran-a-half-marathon-with-the-apple-watch-ultra-3-vs-garmin-forerunner-970-to-test-the-gps-and-heart-rate-accuracy-heres-the-winner</link>
                                                                            <description>
                            <![CDATA[ I raced a half marathon while wearing the Garmin Forerunner 970 and Apple Watch Ultra 3 to test their accuracy, and there was a clear winner. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Ahx6EAoXkTYphAV4hAnoec</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hT8nGA3ur56cychVZVrwjC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 25 Mar 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/hT8nGA3ur56cychVZVrwjC-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Apple Watch Ultra 3 vs Garmin Forerunner 970]]></media:description>                                                            <media:text><![CDATA[Apple Watch Ultra 3 vs Garmin Forerunner 970]]></media:text>
                                <media:title type="plain"><![CDATA[Apple Watch Ultra 3 vs Garmin Forerunner 970]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hT8nGA3ur56cychVZVrwjC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-ultra-3-review">Apple Watch Ultra 3 </a>and <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Garmin Forerunner 970</a> are two of the <a href="https://www.tomsguide.com/us/best-gps-watches,review-2638.html">best sports watches </a>available, and two of my favorites to wear as a marathoner. I rate the Forerunner 970 as the <a href="https://www.tomsguide.com/best-picks/best-running-watches">best running watch </a>money can buy, while the Apple Watch Ultra 3 is the best sporty smartwatch.</p><p>I wore both watches to run the Surrey Half Marathon at the weekend, testing their GPS against each other and their heart rate tracking against a chest strap, which I paired to a <a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-review">Coros Pace 4</a> watch in my pocket.</p><p>I had a good day myself, running 1:09:06 for a PR, and both watches were strong on GPS accuracy, but one had a bit of a meltdown with heart rate tracking.</p><div class="product"><a data-dimension112="ca12a84a-96dc-4dab-84a0-d3e42814fa75" data-action="Deal Block" data-label="The Garmin Forerunner 970 is my favorite running watch, with a lightweight, sturdy design and all the features you could ever need. It's rarely on sale, but right now, one color of the watch is." data-dimension48="The Garmin Forerunner 970 is my favorite running watch, with a lightweight, sturdy design and all the features you could ever need. It's rarely on sale, but right now, one color of the watch is." data-dimension25="$749" href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QWPVNK?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1268px;"><p class="vanilla-image-block" style="padding-top:94.95%;"><img id="3GKnEu7CdhtxPMfnPCMCiA" name="Garmin Forerunner 970" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png" mos="" align="middle" fullscreen="" width="1268" height="1204" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Forerunner 970 is my favorite running watch, with a lightweight, sturdy design and all the features you could ever need. It's rarely on sale, but right now, one color of the watch is.<a class="view-deal button" href="https://www.amazon.com/Forerunner%C2%AE-Smartwatch-Flashlight-Translucent-Whitestone/dp/B0F8QWPVNK?th=1" target="_blank" rel="nofollow" data-dimension112="ca12a84a-96dc-4dab-84a0-d3e42814fa75" data-action="Deal Block" data-label="The Garmin Forerunner 970 is my favorite running watch, with a lightweight, sturdy design and all the features you could ever need. It's rarely on sale, but right now, one color of the watch is." data-dimension48="The Garmin Forerunner 970 is my favorite running watch, with a lightweight, sturdy design and all the features you could ever need. It's rarely on sale, but right now, one color of the watch is." data-dimension25="$749">View Deal</a></p></div><div class="product"><a data-dimension112="284a83f6-f5d2-4ab2-a92c-421db2ec1083" data-action="Deal Block" data-label="The Apple Watch Ultra 3 is available in black or natural titanium colors and offers longer battery life, a larger display, and satellite connectivity as key upgrades on the Ultra 2. It's the best sporty smartwatch you can get, in my opinion." data-dimension48="The Apple Watch Ultra 3 is available in black or natural titanium colors and offers longer battery life, a larger display, and satellite connectivity as key upgrades on the Ultra 2. It's the best sporty smartwatch you can get, in my opinion." data-dimension25="$779" href="https://www.amazon.com/Apple-Cellular-Multisport-Smartwatch-Titanium/dp/B0FQFPSGLT" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="jZmNn7NgmEcxvn6y45BBZX" name="Apple Watch Ultra 3 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/jZmNn7NgmEcxvn6y45BBZX.jpg" mos="" align="middle" fullscreen="" width="1600" height="1600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Apple Watch Ultra 3 is available in black or natural titanium colors and offers longer battery life, a larger display, and satellite connectivity as key upgrades on the Ultra 2. It's the best sporty smartwatch you can get, in my opinion.<a class="view-deal button" href="https://www.amazon.com/Apple-Cellular-Multisport-Smartwatch-Titanium/dp/B0FQFPSGLT" target="_blank" rel="nofollow" data-dimension112="284a83f6-f5d2-4ab2-a92c-421db2ec1083" data-action="Deal Block" data-label="The Apple Watch Ultra 3 is available in black or natural titanium colors and offers longer battery life, a larger display, and satellite connectivity as key upgrades on the Ultra 2. It's the best sporty smartwatch you can get, in my opinion." data-dimension48="The Apple Watch Ultra 3 is available in black or natural titanium colors and offers longer battery life, a larger display, and satellite connectivity as key upgrades on the Ultra 2. It's the best sporty smartwatch you can get, in my opinion." data-dimension25="$779">View Deal</a></p></div><h3 class="article-body__section" id="section-gps-accuracy"><span>GPS Accuracy</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4985px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8UPDQLejzKzbf4vQpqeuhC" name="Apple Watch Ultra 3 vs Garmin Forerunner 970" alt="Apple Watch Ultra 3 vs Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:128,l:439,cw:4985,ch:2804,q:80/8UPDQLejzKzbf4vQpqeuhC.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Surrey Half Marathon mostly takes place on country roads, with the start and finish in the town of Woking. It’s a pretty easy course for GPS accuracy as a result, with no tall buildings and minimal tree cover to stymie satellite signals.</p><p>Both watches were close to the official half marathon distance of 13.1 miles, with the Garmin clocking 13.15 miles and the Apple Watch 13.22 miles, so the Forerunner 970 was a little closer to the right distance.</p><p>During the race, I was rarely in a big crowd of runners, so I was able to take the most direct racing line throughout and probably only ran a little over the official distance. I think both watches were in the right ballpark.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1332px;"><p class="vanilla-image-block" style="padding-top:46.25%;"><img id="GSLJumWNpszYqUFh4td5e3" name="GPS Track Surrey Half" alt="GPS Track Surrey Half" src="https://cdn.mos.cms.futurecdn.net/GSLJumWNpszYqUFh4td5e3.jpg" mos="" align="middle" fullscreen="" width="1332" height="616" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DCR Analzyer)</span></figcaption></figure><p>I also looked at the GPS tracks from the race afterward, and they matched very closely throughout, to the point where I’m not sure how they ended up with even a 0.07-mile disparity. Both are reliable GPS watches for sure.</p><h3 class="article-body__section" id="section-hr-accuracy"><span>HR Accuracy</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="po2r8K5mmVDpSwhqKdePiC" name="Apple Watch Ultra 3 vs Garmin Forerunner 970" alt="Apple Watch Ultra 3 vs Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/po2r8K5mmVDpSwhqKdePiC.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The optical sensors on watches aren't as reliable as a chest strap sensor, which measures electrical signals directly from the heart. I compared the Garmin and Apple readings with the Garmin HRM 600 chest strap for average and maximum heart rate.</p><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p>Garmin HRM 600</p></td><td  ><p>Garmin Forerunner 970</p></td><td  ><p>Apple Watch Ultra 3</p></td></tr><tr><td class="firstcol " ><p>Average Heart Rate</p></td><td  ><p>158</p></td><td  ><p>156</p></td><td  ><p>172</p></td></tr><tr><td class="firstcol " ><p>Max Heart Rate</p></td><td  ><p>174</p></td><td  ><p>172</p></td><td  ><p>203</p></td></tr></tbody></table></div><p>Unlike with the GPS accuracy, there was a big difference in the accuracy here, with the Apple Watch Ultra 3 often reading far too high a heart rate, as well as frequently being unable to read my heart rate at all. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:30.26%;"><img id="Dau4vScsboCnvNnuie6Veh" name="HR Graph" alt="HR Graph" src="https://cdn.mos.cms.futurecdn.net/Dau4vScsboCnvNnuie6Veh.jpg" mos="" align="middle" fullscreen="" width="1920" height="581" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DC Rainmaker Analyzer)</span></figcaption></figure><p>Meanwhile, the Forerunner 970 was very close to the reading from the chest strap throughout. It took longer to reach the correct heart rate at the start of the race and had a couple of erroneous dips, but overall, its accuracy was impressive.</p><h3 class="article-body__section" id="section-design"><span>Design</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="t4NrKhKyjN4CaMkndcBBCG" name="Garmin Forerunner 970 vs Apple Watch Ultra 3" alt="Garmin Forerunner 970 vs Apple Watch Ultra 3" src="https://cdn.mos.cms.futurecdn.net/t4NrKhKyjN4CaMkndcBBCG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This is a small point, but I did notice the extra size and weight of the Apple Watch Ultra 3 compared with the lightweight, slim Forerunner 970. As someone with thin wrists, I prefer the feel of the Garmin on my wrist.</p><p>That said, the Apple Watch Ultra 3 has a more premium design and should be more durable thanks to the titanium case.</p><h3 class="article-body__section" id="section-verdict"><span>Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4528px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9NFseMQPrEdBNoLHtF3oiC" name="Apple Watch Ultra 3 vs Garmin Forerunner 970" alt="Apple Watch Ultra 3 vs Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:320,l:649,cw:4528,ch:2547,q:80/9NFseMQPrEdBNoLHtF3oiC.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On this occasion, the Garmin Forerunner 970 proved to be the more reliable running watch, with slightly better GPS accuracy and considerably better heart rate accuracy than the Apple Watch Ultra 3. The Forerunner 970 is my go-to watch, so it’s great to see it prove so reliable on race day.</p><p>However, I have run many races with both watches and each has proved very reliable for the most part — the <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-ran-a-marathon-with-the-apple-watch-ultra-3-vs-garmin-fenix-8-pro-heres-the-winner">Apple Watch Ultra 3 was very good for a marathon test </a>last year, for example — so you can shop either watch with confidence you’re getting a strong option for running.</p><h3 class="article-body__section" id="section-running-essentials-we-love"><span>Running essentials we love</span></h3>        <div class="featured_product_block featured_block_hero" data-id="1292ca20-8aaf-4dbc-bc16-64973aac6346">            <a href="https://www.amazon.com/SPIbelt-Pocket-Adults-Expandable-Adjustable/dp/B005OVQQBM" data-model-name="SPIbelt Running Belt " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/hAVmeJKGVsgkDg3AF5mcrn.jpg" alt=", SPIbelt Running Belt "></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'></div>                                        <div class="featured__title">SPIbelt Running Belt </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="eb31f8a8-55d1-4039-99c5-e93f0d1c9ef6">            <a href="https://www.hoka.com/en/us/all-gender-apparel/hoka-run-hat/1164330.html?" data-model-name="Hoka Run Hat" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/9HKoG9AnVXQje2wGAch9CQ.jpg" alt=", Hoka Run Hat"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'></div>                                        <div class="featured__title">Hoka Run Hat</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="29741333-d327-4457-a404-92bd36af4681">            <a href="https://www.amazon.com/Stance-Light-Performance-3-Pack-Multicolor/dp/B0BFFWCY27/" data-model-name="Stance Performance Crew Socks 3-Pack" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DDSJzxSyUjiy4sJDVVWkjF.jpg" alt=", Stance Performance Crew Socks 3-Pack"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'></div>                                        <div class="featured__title">Stance Performance Crew Socks 3-Pack</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XbjNYX"></div>                            </div>                            <script src="https://kwizly.com/embed/XbjNYX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/not-the-fenix-9-this-is-the-new-garmin-watch-i-want-to-see-in-2026?hasComeFromProof=true">Not the Fenix 9 — this is the new Garmin watch I want to see in 2026</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I walked 5,000 steps with the Garmin Forerunner 570 vs Apple Watch Ultra 3 — and the winner was nearly too close to call ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3-and-the-winner-was-nearly-too-close-to-call</link>
                                                                            <description>
                            <![CDATA[ I pitted Garmin's mid-range running watch against the pricier Apple Watch Ultra 3 to determine which is the more competent fitness tracker. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3hL2eQhF6rM2Nc9HWbmQqk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/q4dGERuHEvckRFSKGFm5zh-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 23 Mar 2026 06:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/q4dGERuHEvckRFSKGFm5zh-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Apple Watch Ultra 3 and Garmin Forerunner 570 in a user&#039;s hand with blooming flowers in the background]]></media:description>                                                            <media:text><![CDATA[Close-up of the Apple Watch Ultra 3 and Garmin Forerunner 570 in a user&#039;s hand with blooming flowers in the background]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Apple Watch Ultra 3 and Garmin Forerunner 570 in a user&#039;s hand with blooming flowers in the background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/q4dGERuHEvckRFSKGFm5zh-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I walked exactly 5,000 steps with the <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-ultra-3-review">Apple Watch Ultra 3</a> on my left wrist and the <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Garmin Forerunner 570</a> on my right wrist to find out which is the more accurate step-counter when tracking a walking workout.</p><p>As a control for pace, elevation gain, and distance data, I ran ol'reliable, <a href="https://www.tomsguide.com/wellness/fitness/ive-just-tried-strava-premium-and-this-is-the-feature-id-pay-for-twice">Strava</a>, on an <a href="https://www.tomsguide.com/phones/iphones/apple-iphone-16-plus-review-not-as-big-as-the-max-not-as-pricey-either">iPhone 16 Plus</a>. Which of these popular, premium smartwatches, the Apple Watch Ultra 3 or Garmin Forerunner 570, came out on top? Read on.</p><h3 class="article-body__section" id="section-garmin-forerunner-570-vs-apple-watch-ultra-3"><span>Garmin Forerunner 570 vs Apple Watch Ultra 3</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Garmin Forerunner 570</p></th><th  ><p>Apple Watch Ultra 3</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Price</p></td><td  ><p>$549</p></td><td  ><p>$799</p></td></tr><tr><td class="firstcol " ><p>OS compatibility </p></td><td  ><p>Android, iOS</p></td><td  ><p>iOS</p></td></tr><tr><td class="firstcol " ><p>GPS battery life</p></td><td  ><p>18 hours</p></td><td  ><p>14 hours</p></td></tr><tr><td class="firstcol " ><p>Smartwatch battery life</p></td><td  ><p>10 days</p></td><td  ><p>40 hours</p></td></tr><tr><td class="firstcol " ><p>Water resistance </p></td><td  ><p>50 meters</p></td><td  ><p>100 meters</p></td></tr><tr><td class="firstcol " ><p>Speaker/mic</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p>Cellular </p></td><td  ><p>No</p></td><td  ><p>Yes</p></td></tr></tbody></table></div><p>While the Garmin Forerunner 570 is one of the <a href="https://www.tomsguide.com/best-picks/best-running-watches">best running watches </a>on the market today, the Apple Watch Ultra 3 is the brand's highest-end, toughest-built model and the <a href="https://www.tomsguide.com/best-picks/best-apple-watch">best Apple Watch for battery life</a>.</p><p>We already tested the <a href="https://www.tomsguide.com/wellness/fitness-trackers/apple-watch-ultra-3-vs-garmin-forerunner-970-i-walked-10-000-steps-with-both-watches-and-the-results-surprised-me">Apple Watch Ultra 3 versus the Garmin Forerunner 970</a>, the latter of which is nearly the same price as the former. Cupertino won that showdown (by a very small margin). Will Tim Cook and Co. pull off a repeat win? Find out below.</p><div class="product"><a data-dimension112="0a4c9c1f-06ab-41fe-80d2-5f94a377d416" data-action="Deal Block" data-label="The Ultra 3 is Apple's longest-lasting, toughest-built, most-premium smartwatch, boasting a massive screen, 100 meters of water resistance, loads of safety tools, and access to a huge library of smart apps." data-dimension48="The Ultra 3 is Apple's longest-lasting, toughest-built, most-premium smartwatch, boasting a massive screen, 100 meters of water resistance, loads of safety tools, and access to a huge library of smart apps." data-dimension25="$799" href="https://www.target.com/p/apple-watch-ultra-3-160-gps-cellular-160-49mm-160-black-titanium-case-with-black-ocean-band/-/A-94482718" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="jZmNn7NgmEcxvn6y45BBZX" name="Apple Watch Ultra 3 sq" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/jZmNn7NgmEcxvn6y45BBZX.jpg" mos="" align="middle" fullscreen="" width="1600" height="1600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Ultra 3 is Apple's longest-lasting, toughest-built, most-premium smartwatch, boasting a massive screen, 100 meters of water resistance, loads of safety tools, and access to a huge library of smart apps. <a class="view-deal button" href="https://www.target.com/p/apple-watch-ultra-3-160-gps-cellular-160-49mm-160-black-titanium-case-with-black-ocean-band/-/A-94482718" target="_blank" rel="nofollow" data-dimension112="0a4c9c1f-06ab-41fe-80d2-5f94a377d416" data-action="Deal Block" data-label="The Ultra 3 is Apple's longest-lasting, toughest-built, most-premium smartwatch, boasting a massive screen, 100 meters of water resistance, loads of safety tools, and access to a huge library of smart apps." data-dimension48="The Ultra 3 is Apple's longest-lasting, toughest-built, most-premium smartwatch, boasting a massive screen, 100 meters of water resistance, loads of safety tools, and access to a huge library of smart apps." data-dimension25="$799">View Deal</a></p></div><div class="product"><a data-dimension112="b33cc508-8969-4429-9090-1c9ccfaa045d" data-action="Deal Block" data-label="The Forerunner 570 is Garmin's upper-mid-tier smartwatch for hardcore runners, promising heady training and recovery tools, a sporty design that combines touch functionality with physical buttons, a bright screen, and a solid battery." data-dimension48="The Forerunner 570 is Garmin's upper-mid-tier smartwatch for hardcore runners, promising heady training and recovery tools, a sporty design that combines touch functionality with physical buttons, a bright screen, and a solid battery." data-dimension25="$549" href="https://www.bestbuy.com/product/garmin-forerunner-570-gps-smartwatch-42-mm-aluminum-cloud-blue-aluminum-2025/JXF9YFFYT6/sku/6633089" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1271px;"><p class="vanilla-image-block" style="padding-top:97.88%;"><img id="bG4vPzQ6L2ZmYCf274jVDF" name="Garmin Forerunner 570" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bG4vPzQ6L2ZmYCf274jVDF.png" mos="" align="middle" fullscreen="" width="1271" height="1244" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Forerunner 570 is Garmin's upper-mid-tier smartwatch for hardcore runners, promising heady training and recovery tools, a sporty design that combines touch functionality with physical buttons, a bright screen, and a solid battery.<a class="view-deal button" href="https://www.bestbuy.com/product/garmin-forerunner-570-gps-smartwatch-42-mm-aluminum-cloud-blue-aluminum-2025/JXF9YFFYT6/sku/6633089" target="_blank" rel="nofollow" data-dimension112="b33cc508-8969-4429-9090-1c9ccfaa045d" data-action="Deal Block" data-label="The Forerunner 570 is Garmin's upper-mid-tier smartwatch for hardcore runners, promising heady training and recovery tools, a sporty design that combines touch functionality with physical buttons, a bright screen, and a solid battery." data-dimension48="The Forerunner 570 is Garmin's upper-mid-tier smartwatch for hardcore runners, promising heady training and recovery tools, a sporty design that combines touch functionality with physical buttons, a bright screen, and a solid battery." data-dimension25="$549">View Deal</a></p></div><h3 class="article-body__section" id="section-i-walked-5-000-steps-with-the-garmin-forerunner-570-vs-apple-watch-ultra-3"><span>I walked 5,000 steps with the Garmin Forerunner 570 vs Apple Watch Ultra 3</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="i2Gwdf4eT4aTDqSSuYiV4i" name="AWU3-GarminF570-02" alt="Close-up of the Apple Watch Ultra 3 and Garmin Forerunner 570 in a user's hand with blooming flowers in the background" src="https://cdn.mos.cms.futurecdn.net/i2Gwdf4eT4aTDqSSuYiV4i.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Despite the emo Seattle skies, today's walk test coincided with the Spring Equinox, and the flowers were out in full bloom, adding a cheerful splash of color and perfume to an otherwise gloomy day. </p><p>As noted above, the Apple Watch Ultra 3 adorned my left wrist and the Garmin Forerunner 570 accesorized my right wrist. Note: Both the Garmin and Apple Watch apps allow you to toggle wrist preference. For this test, preferences were correctly set.</p><p>To keep an accurate manual count of my steps, I mentally assigned my left foot even steps and my right foot odds. As always, for every hundred steps counted, I clicked my trusty <a href="https://www.amazon.com/KTRIO-Counter-Handheld-Clicker-Mechanical/dp/B075QFK6DG/ref=sr_1_1_sspa">manual tally counter</a> before beginning the count over at one.</p><p>It might sound involved, but after a few hundred steps, the process of counting feels like second nature. A high-quality pair of noise-canceling headphones also helps to limit distractions. </p><h3 class="article-body__section" id="section-garmin-forerunner-570-vs-apple-watch-ultra-3-walk-test-results"><span>Garmin Forerunner 570 vs Apple Watch Ultra 3: Walk test results</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Garmin Forerunner 570</p></th><th  ><p>Apple Watch Ultra 3</p></th><th  ><p>Control</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Step count</strong></p></td><td  ><p>  5,052 steps</p></td><td  ><p> 5,011 steps</p></td><td  ><p>5,000 steps (manual count)</p></td></tr><tr><td class="firstcol " ><p><strong>Distance</strong></p></td><td  ><p>2.67 miles </p></td><td  ><p>2.64 miles</p></td><td  ><p>2.71 miles (Strava)</p></td></tr><tr><td class="firstcol " ><p><strong>Elevation gain</strong></p></td><td  ><p>305 feet</p></td><td  ><p>347 feet</p></td><td  ><p>292 feet (Strava)</p></td></tr><tr><td class="firstcol " ><p><strong>Average pace</strong></p></td><td  ><p>18 mins 41 secs per mile</p></td><td  ><p>18 mins 14 secs per mile</p></td><td  ><p>17 mins 39 secs per mile (Strava)</p></td></tr><tr><td class="firstcol " ><p><strong>Average heart rate</strong></p></td><td  ><p>124 bpm</p></td><td  ><p>121 bpm</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Max heart rate</strong></p></td><td  ><p>155 bpm</p></td><td  ><p>157 bpm</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Total calories burned</strong></p></td><td  ><p>331 calories</p></td><td  ><p>350 calories</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Device battery usage</strong></p></td><td  ><p>2%</p></td><td  ><p>2%</p></td><td  ><p>n/a</p></td></tr></tbody></table></div><p>The last half dozen smartwatch step count tests I've performed have all been absolute nail-biters when it comes to declaring a winner. The same can be said for this one. It's also worth repeating that being within 100 steps of the actual manual count is considered an excellent result and well within a reasonable margin for error. </p><p>While the Apple Watch Ultra 3 ultimately edged out the Garmin Forerunner 570 with a total just 11 steps greater than my actual count, Strava was somehow even closer with a step count total of 5,004.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="w9ZVBojNpXhRMYs4thsM8Y" name="Garmin Forerunner 570" alt="Garmin Forerunner 570" src="https://cdn.mos.cms.futurecdn.net/w9ZVBojNpXhRMYs4thsM8Y.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>All three tracking methods measured roughly the same amount of distance covered. Meanwhile, Garmin and Strava pretty much agree on how much elevation gain the walk entailed, while Apple seems to think I climbed 40+ feet more than the competition.</p><p>This isn't the first time an Apple Watch has apparently inflated elevation data. I had similar results when I recently tested the <a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-7-500-steps-with-the-apple-watch-ultra-3-vs-garmin-venu-4-and-the-winning-margin-is-razor-thin">Apple Watch Ultra 3 vs. the Garmin Venu 4</a>.</p><p>Strava noted a quicker pace than Garmin and Apple, which is par for the course based on numerous previous walk test results. Meanwhile, Apple's average pace proved slowest.</p><p>It's always reassuring to see two popular smartwatch models record similar heart rate data for a workout, as is the case here. The same goes for calories burned. Lastly, each device drained about 2% battery during this ~46-minute walk.</p><h3 class="article-body__section" id="section-garmin-forerunner-570-vs-apple-watch-ultra-3-and-the-winner-is"><span>Garmin Forerunner 570 vs Apple Watch Ultra 3: And the winner is...</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3846px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="JFjTPRLhXgxRU3iot5Tx7i" name="AWU3-GarminF570-03" alt="Close-up of the Apple Watch Ultra 3 and Garmin Forerunner 570 in a user's hand with blooming flowers in the background" src="https://cdn.mos.cms.futurecdn.net/JFjTPRLhXgxRU3iot5Tx7i.jpg" mos="" align="middle" fullscreen="" width="3846" height="2163" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>By a margin oh-so-slim, the Apple Watch Ultra 3 proved ever so slightly more accurate at tracking my steps than the Garmin Forerunner 570. So, does this mean you should definitely buy the Apple Watch over the Garmin? Certainly not. </p><p>Both devices proved more than accurate enough in this challenge. Ultimately, the Apple Watch Ultra 3 and Garmin Forerunner 570 are designed with different customers in mind. The former is a full-featured, rugged smartwatch packed with not just health and fitness tools, but loads of smart functions too.</p><p>The Forerunner, on the other hand, is all about helping you train and improve your running. It has far fewer smart features than the Ultra 3, but much better battery life and personalized workout tools.</p><p>Which wearables should I test head-to-head next? Let me know in the comments below.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-prefer-the-apple-watch-se-3-to-apples-other-models-heres-5-reasons-why">5 reasons why the Apple Watch SE 3 is the smartwatch I recommend most</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/7-hidden-apple-watch-features-i-swear-by">7 hidden Apple Watch features I swear by</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-500-steps-with-the-garmin-forerunner-570-vs-amazfit-active-max-and-its-not-even-close">I walked 5,500 steps with the Garmin Forerunner 570 vs Amazfit Active Max — and it's not even close</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Your running watch can remind you when to take energy gels during long workouts — here’s how to do it with Garmin, Apple, Coros, and Polar ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/your-running-watch-can-remind-you-when-to-take-energy-gels-during-long-workouts-heres-how-to-do-it-with-garmin-apple-coros-and-polar</link>
                                                                            <description>
                            <![CDATA[ Getting your fueling right is vital during long runs, especially when marathon training, and having your watch remind you to take energy gels and drinks can be invaluable. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wC67jTZTeF3kDHUvnKFLZi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2aJ3dc2BhTZP52iJqg2tFX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 20 Mar 2026 04:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2aJ3dc2BhTZP52iJqg2tFX-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 970 Fueling Reminder]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 970 Fueling Reminder]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 970 Fueling Reminder]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2aJ3dc2BhTZP52iJqg2tFX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.tomsguide.com/best-picks/best-running-watches">best running watches</a> go beyond simply tracking your training; they provide active guidance to help you get fitter and perform at your best. Fueling reminders are a great example of this — your watch can help you stay on top of your nutrition so you don’t run out of energy during long workouts and races.</p><p>It’s a feature that I think is especially useful for marathoners, because you need to take on carbs throughout your longest training runs and the race itself to avoid hitting the wall and even with a strict nutrition plan in place it’s easy to forget when you’re 15-20 miles into a run.</p><p>All of the<a href="https://www.tomsguide.com/us/best-gps-watches,review-2638.html"> best sports watches </a>now offer fueling reminders as a standard feature you can set up, but it’s sometimes buried deep within the menus on the watch, while with some smartwatches you need to download a separate app to get fueling alerts.</p><p>I’ve explained how to set up fueling alerts on Apple, Garmin, Coros, and Polar watches below, so if you have one of those strapped to your wrist use this guide to plan your nutrition for your longest runs.</p><h3 class="article-body__section" id="section-how-to-set-up-fuelling-alerts-on-a-garmin-watch"><span>How to set up fuelling alerts on a Garmin watch</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4300px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="sY3rHQ9HYJ7bRHm8DmKKHX" name="Garmin Forerunner 970 Fueling Reminder" alt="Garmin Forerunner 970 Fueling Reminder" src="https://cdn.mos.cms.futurecdn.net/v2/t:512,l:731,cw:4300,ch:2419,q:80/sY3rHQ9HYJ7bRHm8DmKKHX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can set alerts based on time or distance in the run activity with the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a>, here’s how.</p><ol start="1"><li>Open up the run activity and scroll down to run settings.</li><li>Select ‘Alerts’ and then ‘Add New’</li><li>Choose ‘Custom’ and then select ‘Eat’</li><li>Choose either ‘Time’ or ‘Distance’ and set how often you want to get an alert</li></ol><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4894px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wn8XUafzDasGGoqNRekMFX" name="Coros Pace 4 Nutrition Reminder" alt="Coros Pace 4 Nutrition Reminder" src="https://cdn.mos.cms.futurecdn.net/v2/t:274,l:384,cw:4894,ch:2753,q:80/wn8XUafzDasGGoqNRekMFX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can then customize the alert to say whether you want it to repeat or not and also the message that appears — you could set up several alerts and name them to the exact gel or drink you should take at that point.</p><h3 class="article-body__section" id="section-how-to-set-up-fuelling-alerts-on-an-apple-watch"><span>How to set up fuelling alerts on an Apple Watch</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3843px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="ryJogGv4QosopqbrTGotHX" name="Apple Watch Ultra 3 Time Alert" alt="Apple Watch Ultra 3 Time Alert" src="https://cdn.mos.cms.futurecdn.net/v2/t:704,l:987,cw:3843,ch:2162,q:80/ryJogGv4QosopqbrTGotHX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While there’s no explicit nutrition alert option available natively on the Apple Watch or <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-ultra-3-review">Apple Watch Ultra</a>, you can set recurring time alerts for an activity in the Workout app, which you can use to remind you to eat.</p><ol start="1"><li>Open the ‘Workout’ app and select the running activity you want to use</li><li>Select the bell icon in the bottom left corner of the screen</li><li>Scroll down to’ Time’, turn the alert on and select the time interval you want to use</li></ol><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4592px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Aehm8kBwi5c5SmS6DXjPEX" name="Apple Watch Ultra 3 Fueling Reminder on WorkOutDoors app" alt="Apple Watch Ultra 3 Fueling Reminder on WorkOutDoors app" src="https://cdn.mos.cms.futurecdn.net/v2/t:466,l:621,cw:4592,ch:2583,q:80/Aehm8kBwi5c5SmS6DXjPEX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can get dedicated nutrition alerts by using third-party apps on the Apple Watch, including <a href="https://www.tomsguide.com/wellness/smartwatches/i-run-marathons-and-this-apple-watch-running-app-is-the-best-usd8-ive-ever-spent">my favorite run tracking app WorkOutDoors</a>, which has an eat reminder option in its settings screen under ‘Alerts’.</p><h3 class="article-body__section" id="section-how-to-set-up-fuelling-alerts-on-a-coros-watch"><span> How to set up fuelling alerts on a Coros watch</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4154px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="czrYTcNFKjR3A2aGcsRpHX" name="Coros Pace 4 Nutrition Reminder" alt="Coros Pace 4 Nutrition Reminder" src="https://cdn.mos.cms.futurecdn.net/v2/t:547,l:749,cw:4154,ch:2336,q:80/czrYTcNFKjR3A2aGcsRpHX.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s quick and easy to set up alerts on a Coros watch, but you can only do them based on time, not distance.</p><ol start="1"><li>Open up the run activity and scroll down to ‘Activity Alerts’</li><li>Scroll down and select ‘Nutrition Alerts’</li><li>Choose how often you want to get the alerts and turn them on</li></ol><h3 class="article-body__section" id="section-how-to-set-up-fuelling-alerts-on-a-polar-watch"><span>How to set up fuelling alerts on a Polar watch</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SFYbjvVbZSXfjHUEaX3yxX" name="Polar Vantage V3 software update" alt="Polar Vantage V3 software update" src="https://cdn.mos.cms.futurecdn.net/SFYbjvVbZSXfjHUEaX3yxX.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Polar’s FuelWise feature is more advanced than the basic alerts you get on other watches, because the smart carbs reminder it offers can suggest when you need more fuel based on the time and intensity of your run. </p><p>You can also set manual alerts based on time if you prefer, as well as setting up a separate drinks reminder.</p><p>For the smart carbs reminders:</p><ol start="1"><li>Open up the run activity and select ‘Fueling’</li><li>Choose ‘Smart Carbs Reminder’ and set how long your activity will be — the minimum is 30 minutes</li><li>Select the expected intensity of your session based on heart rate zones</li><li>Set the carbs per serving of your fuel — you’ll find this in the nutritional info of a gel or drink</li><li>Hit ‘Next’ to see an overview of your fueling then start your run</li><li>Throughout the run you’ll get alerts to take carbs based on the intensity of your workout</li></ol><p>For the manual carbs reminder:</p><ol start="1"><li>Open up the run activity and select ‘Fueling’</li><li>Choose ‘Manual Carbs Reminder’ and set the time interval you want between reminders</li></ol><h3 class="article-body__section" id="section-running-essentials-we-love"><span>Running essentials we love</span></h3>        <div class="featured_product_block featured_block_hero" data-id="c06fd932-9dad-4f9b-b997-b9d2f19c24fa">            <a href="https://www.amazon.com/SPIbelt-Pocket-Adults-Expandable-Adjustable/dp/B005OVQQBM" data-model-name="SPIbelt Running Belt " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/hAVmeJKGVsgkDg3AF5mcrn.jpg" alt=", SPIbelt Running Belt "></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'></div>                                        <div class="featured__title">SPIbelt Running Belt </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4072cf77-2b26-479b-a689-3557109fa7ee">            <a href="https://www.hoka.com/en/us/all-gender-apparel/hoka-run-hat/1164330.html?" data-model-name="Hoka Run Hat" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/9HKoG9AnVXQje2wGAch9CQ.jpg" alt=", Hoka Run Hat"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'></div>                                        <div class="featured__title">Hoka Run Hat</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="91a2b61a-1a33-4c32-a0a4-d0f69d9aeeb2">            <a href="https://www.asics.com/us/en-us/road-packable-jacket/p/ANA_2011D084-403.html" data-model-name="Asics Road Packable Jacket" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.93%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/najqPJGnTp7rGiUrVYBquR.jpg" alt=", Asics Road Packable Jacket"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'></div>                                        <div class="featured__title">Asics Road Packable Jacket</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="8e461ce2-acbf-4478-8a86-51a4b2e9cf17">            <a href="https://www.amazon.com/Stance-Light-Performance-3-Pack-Multicolor/dp/B0BFFWCY27/" data-model-name="Stance Performance Crew Socks 3-Pack" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DDSJzxSyUjiy4sJDVVWkjF.jpg" alt=", Stance Performance Crew Socks 3-Pack"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'></div>                                        <div class="featured__title">Stance Performance Crew Socks 3-Pack</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/not-the-fenix-9-this-is-the-new-garmin-watch-i-want-to-see-in-2026?hasComeFromProof=true">Not the Fenix 9 — this is the new Garmin watch I want to see in 2026</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Finally! The massive Garmin update we’ve all been waiting for is here, but there’s a catch ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/finally-the-massive-garmin-update-weve-all-been-waiting-for-is-here-but-theres-a-catch</link>
                                                                            <description>
                            <![CDATA[ You can now reply to WhatsApp messages from your wrist, but only if you have one of these Garmin watches. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ygrqW2X4fyX8qtKXtwTkpf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XEoVwe6e2ANMzyYocw4AEc-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 17 Mar 2026 13:11:20 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/jRrKwAuJ7QJs8x62DUk2yc.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/XEoVwe6e2ANMzyYocw4AEc-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of the WhatsApp app on Garmin Forerunner 970]]></media:description>                                                            <media:text><![CDATA[a photo of the WhatsApp app on Garmin Forerunner 970]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of the WhatsApp app on Garmin Forerunner 970]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XEoVwe6e2ANMzyYocw4AEc-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Big news, Garmin wearers, you can now read and reply to WhatsApp messages from your wrist, with Garmin’s new <a href="https://apps.garmin.com/apps/be8115a2-a4e0-49b7-9ed5-8851d5f648cc"><u>free WhatsApp app</u></a>. You can download the app now, but there’s a slight catch — it’s only compatible with most of Garmin’s newest watches so if you’re on an older device, you’ll still have to fish your phone out of your pocket to reply to your messages on the move.</p><p>The new app allows you to stay connected from your watch. You can view recent messages from your watch screen, read and reply to messages using the built-in keyboard, send emojis and reactions, and see up to 10 messages from your chat history on your watch screen. According to user feedback, you can’t see images, but this is similar to the Apple Watch WhatsApp app. </p><p>You’ll need to download and install the app from the Garmin Connect IQ app on your connected mobile device, and ensure you’ve updated the WhatsApp and Connect apps on your phone. Your phone should ask you to enable Bluetooth and allow WhatsApp to access it.</p><p>The list of Garmin watches on which the app is available includes:</p><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Forerunner 570</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Forerunner 970</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-review">Fenix 8</a> (including Pro and Solar versions)</li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-venu-4-review">Venu 4</a></li><li>Enduro 3</li><li>Tactix 8</li><li>Vivoactive 6</li><li>Venu X1</li><li>D2 Air X15</li></ul><p>Other devices, including the popular Garmin Epix Pro, seem to have been missed from the list. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3500px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="uotf78ZR78RZww88W4xW4e" name="Garmin Venu 4" alt="the Garmin Venu 4 in lunar gold on the wrist" src="https://cdn.mos.cms.futurecdn.net/uotf78ZR78RZww88W4xW4e.jpg" mos="" align="middle" fullscreen="" width="3500" height="1969" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can set on-device alerts and notifications, ensuring you stay connected on the move, and choose whether you’d rather see these in the foreground or background during an activity. </p><p>This little app is a huge step forward when it comes to positioning Garmin as a smartwatch, not just a sports watch. Some users are bound to be disappointed that it’s not available on older devices. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/your-garmin-watch-just-got-a-massive-free-upgrade-here-are-the-best-new-features-you-need-to-try">Your Garmin watch just got a massive free upgrade — here are the best new features you need to try</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/ive-been-wearing-a-garmin-for-10-years-and-these-are-the-5-hardest-garmin-badges-to-earn-how-many-do-you-have">I’ve been wearing a Garmin for 10 years, and these are the 5 hardest Garmin badges to earn — how many do you have?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/pokemon-sleep-watch-faces-are-now-available-for-free-on-your-garmin-its-my-dream-collab">Pokémon Sleep watch faces are now available for free on your Garmin — it’s my dream collab</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Pokémon Sleep watch faces are now available for free on your Garmin — it’s my dream collab ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/pokemon-sleep-watch-faces-are-now-available-for-free-on-your-garmin-its-my-dream-collab</link>
                                                                            <description>
                            <![CDATA[ You can now use the sleep tracking from Garmin watches for Pokémon Sleep, and there are two new Pokémon watch faces available for free on AMOLED Garmins. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">72TZ3xPk6PFwnQwacSCe8U</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qxBXXZXdnvA5vbg2nf2SSP-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 16 Mar 2026 13:34:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qxBXXZXdnvA5vbg2nf2SSP-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Pokemon Sleep on Garmin Forerunner 970]]></media:description>                                                            <media:text><![CDATA[Pokemon Sleep on Garmin Forerunner 970]]></media:text>
                                <media:title type="plain"><![CDATA[Pokemon Sleep on Garmin Forerunner 970]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qxBXXZXdnvA5vbg2nf2SSP-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As a keen runner who’s loved Pokémon since playing Pokémon Red on my Game Boy, there aren’t many collaborations that could make me more excited than Garmin joining forces with my beloved Pocket Monsters.</p><p>You can now use the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a> with Pokémon Sleep, an app that rewards a good night’s rest with Pokémon to fill out a special Sleep Style Dex, and that’s not the end of the good news for fans of both brands.</p><p>To celebrate the partnership, two free Pokémon watch faces are now available on Garmin watches, though there is a catch: only Garmin watches with AMOLED displays can get the new faces.</p><h2 id="link-your-garmin-with-pokemon-sleep">Link your Garmin with Pokémon Sleep</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JCwDkFf4GgQtCL2hso9NrF" name="Pokemon Sleep on Garmin Forerunner 970" alt="Pokemon Sleep on Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/JCwDkFf4GgQtCL2hso9NrF.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Pokémon Sleep is one of the very few Pokémon apps that I haven’t already tried, and that’s partly because I wear a <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Garmin Forerunner 970,</a> and the sleep tracking didn’t link to the app as it does with an Apple Watch.</p><p>You can track your sleep using your smartphone for Pokémon Sleep by placing it next to you on your mattress, but that seemed both a hassle and likely to be inaccurate.</p><p>Now that Garmin watches are compatible, you can link Pokémon Sleep with Garmin Connect so your sleep stats are synced over, and I can start collecting Pokémon in yet another app.</p><h2 id="two-free-pokemon-watch-faces">Two free Pokémon watch faces</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1480px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="MDmJgwTzTLiYqTGZbj7jQS" name="Pokemon Sleep Garmin" alt="Pokemon Sleep Garmin" src="https://cdn.mos.cms.futurecdn.net/v2/t:33,l:0,cw:1480,ch:833,q:80/MDmJgwTzTLiYqTGZbj7jQS.webp" mos="" align="middle" fullscreen="" width="1480" height="975" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Garmin/Pokemon Sleep)</span></figcaption></figure><p>I’m excited to start using Pokémon Sleep, but probably even more thrilled by the new faces, because I love trying out the <a href="https://www.tomsguide.com/wellness/smartwatches/i-review-garmin-for-a-living-and-these-are-my-5-favorite-watch-faces">best Garmin watch faces </a>in general.</p><p>One of the new faces is called ‘Snorlax & Friends’ face and features the famously sleepy Pokémon along with the Kanto starters and Pikachu.</p><p>My preferred face of the two is the “I Choose You” face, which allows you to select from 48 different Pokémon.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RLTe6bnhZUWeKrMt4sMRsF" name="Pokemon Sleep on Garmin Forerunner 970" alt="Pokemon Sleep on Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/RLTe6bnhZUWeKrMt4sMRsF.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With both faces, the Pokémon shown will adjust their pose throughout the day based on the Body Battery measurement from your Garmin, so they’ll get sleepier as your energy levels drop.</p><p>While regrettably my own favorite Pokémon — Poliwag — is not available, my kids have been cycling through the various Eeveelutions on my watch face.</p><p>You can show several stats alongside your preferred Pokémon, so it’s still a functional watch face as well, and well worth installing if you’re also a Garmin/Pokémon fan.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/tvs/5-samsung-tv-settings-to-change-for-the-best-possible-picture">5 Samsung TV settings to change for the best possible picture</a></li><li><a href="https://www.tomsguide.com/audio/headphones/iclever-auraa-headphones-hands-on">I tried these TikTok-recommended headphones that protect your child's hearing — and so did my kid — here's our verdict</a></li><li><a href="https://www.tomsguide.com/sales-events/amazons-epic-winter-sale-is-still-going-strong-heres-35-deals-im-shopping-this-weekend">Amazon's epic Winter Sale is still going strong — here's 35 deals I'm shopping this weekend</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I logged 37 miles at MWC 2026 on my Garmin Instinct 3 — here are 5 things I learned  ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness/i-logged-37-miles-at-mwc-2026-on-my-garmin-instinct-3-here-are-5-things-i-learned</link>
                                                                            <description>
                            <![CDATA[ I walked 67,000 steps over five days at Europe's biggest tech show and climbed 3.5 times the height of the Sagrada Familia. Here's what it taught me. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tn23fyordpa6ac2xTdDBiA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/yprwHz7T7vUq2YCaw6DTWR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Mar 2026 14:31:41 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Fitness]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/yprwHz7T7vUq2YCaw6DTWR-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Instinct 3 on the writer&#039;s wrist with the Barcelona skyline out of focus in the distance]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Instinct 3 on the writer&#039;s wrist with the Barcelona skyline out of focus in the distance]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Instinct 3 on the writer&#039;s wrist with the Barcelona skyline out of focus in the distance]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/yprwHz7T7vUq2YCaw6DTWR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I just finished covering my first Mobile World Congress (MWC), Europe’s largest tech show held annually in Barcelona, Spain. As has become tradition when covering such events, I logged my daily step count on my trusty <a href="https://www.tomsguide.com/Garmin-Instinct-3-review">Garmin Instinct 3</a> all five days of the show.</p><p>Did I ultimately cover more ground at MWC 2026 than at CES 2026 in Las Vegas? Did I climb the equivalent height of the Sagrada Familia? Do I regret breaking in a new pair of sneakers? How many ham sandwiches did I consume? Find the exciting answers to all these questions, and more, below. </p><h2 id="i-walked-37-miles-at-mwc">I walked 37 miles at MWC</h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Steps taken</p></th><th  ><p>Miles covered</p></th><th  ><p>Elevation gained</p></th><th  ><p>Calories burned </p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Day 1</strong></p></td><td  ><p>9,094 steps</p></td><td  ><p>5.43 miles</p></td><td  ><p>295 feet</p></td><td  ><p>749 calories </p></td></tr><tr><td class="firstcol " ><p><strong>Day 2</strong></p></td><td  ><p>15,640 steps</p></td><td  ><p>8.59 miles</p></td><td  ><p>381 feet</p></td><td  ><p>1,156 calories</p></td></tr><tr><td class="firstcol " ><p><strong>Day 3</strong></p></td><td  ><p>15,164 steps</p></td><td  ><p>8.95 miles</p></td><td  ><p>548 feet</p></td><td  ><p>1,404 calories</p></td></tr><tr><td class="firstcol " ><p><strong>Day 4</strong></p></td><td  ><p>14,554 steps</p></td><td  ><p>7.78 miles</p></td><td  ><p>432 feet</p></td><td  ><p>1,130 calories</p></td></tr><tr><td class="firstcol " ><p><strong>Day 5</strong></p></td><td  ><p>12,946 steps</p></td><td  ><p>6.63 miles</p></td><td  ><p>326 feet</p></td><td  ><p>832 calories</p></td></tr><tr><td class="firstcol " ><p><strong>Total</strong></p></td><td  ><p><strong>67,398 steps</strong></p></td><td  ><p><strong>37.38 miles</strong></p></td><td  ><p><strong>1,982 feet</strong></p></td><td  ><p><strong>5,271 calories </strong></p></td></tr></tbody></table></div><h2 id="1-i-covered-a-similar-amount-of-ground-at-mwc-2026-vs-ces-2026">1. I covered a similar amount of ground at MWC 2026 vs CES 2026</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Hq2NNsTbcdMLGRN8HnDZTS" name="show-floor" alt="Overview of the MWC 2026 tradeshow floor" src="https://cdn.mos.cms.futurecdn.net/Hq2NNsTbcdMLGRN8HnDZTS.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>My Mobile World Coverage step-count logging began on Sunday, a day before the show officially opened, when I journeyed on foot from my hotel in the center of the city to one of the royal palaces (swanky digs for a pre-tech event, I know) about two miles away. </p><p>Ultimately, that jaunt set the stage for the rest of my coverage. For the entirety of my time covering MWC for Tom's Guide, I skipped taxis and public transit in favor of my feet. Of course, this also meant a roughly 2-mile walk each day (in the opposite direction) to and from the convention grounds. </p><p>When all was said and done, I averaged roughly 7.5 miles of walking a day, including the commute and time spent exploring the show floor. That's about twice as far as I tend to walk on a normal day back home. </p><p>Somewhat surprisingly, I covered nearly the same amount of total distance in my five days at MWC compared to my <a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-65-000-steps-with-the-garmin-venu-4-5-things-i-learned">four days covering CES</a> back in early January, 37.38 miles (MWC) vs. 40.42 miles (CES). </p><p>My step count totals were also remarkably similar: 67K steps at MWC and 65K steps at CES. </p><h2 id="2-i-climbed-the-height-of-3-5-sagrada-familias">2. I climbed the height of 3.5 Sagrada Familias </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="4RfBNPQ4UQW6bSLFkJnbZa" name="Sagrada-01" alt="The Sagrada Familia under construction in 2018" src="https://cdn.mos.cms.futurecdn.net/4RfBNPQ4UQW6bSLFkJnbZa.jpg" mos="" align="middle" fullscreen="" width="3000" height="1688" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia)</span></figcaption></figure><p>I never really thought of Barcelona as a hilly city, especially living in Seattle, WA, where the hills are steep, slippery, and unforgiving. Nevertheless, I did quite a bit of uphill climbing over the course of my five days at MWC 2026.</p><p>With a total just shy of 2,000 feet, I ascended the equivalent of 3.5 Sagrada Familia cathedrals (shown in the image above, from 2017) stacked on top of one another. </p><p>No doubt, some of this upward trajectory was the result of climbing stairs and escalators, but it also appears I gained a healthy amount of elevation during my daily walk to and from the show, too.</p><h2 id="3-the-garmin-instinct-3-s-battery-life-continues-to-impress">3. The Garmin Instinct 3’s battery life continues to impress </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3150px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="pXxsrmvExrxUep5AGD5CSn" name="MWC26-apple-v-gamin-03" alt="Close-up of the Garmin Instinct 3 next to the Apple Watch Ultra 3 with the Barcelona skyline in the distance" src="https://cdn.mos.cms.futurecdn.net/pXxsrmvExrxUep5AGD5CSn.jpg" mos="" align="middle" fullscreen="" width="3150" height="1771" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>The Garmin Instinct 3 is a battery life GOAT, there's no doubt about it, and even though I opted for the slightly less-long-lasting AMOLED model rather than the Solar-powered one, I had zero concerns about power consumption, despite long days tracking my efforts with full GPS and heart rate data.</p><p>On average, the Garmin Instinct 3 burned through about 7% battery for every five hours of tracking. That's impressive. On day two of the show, I wore both the <a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-15-000-steps-with-the-garmin-instinct-3-vs-apple-watch-ultra-3-on-day-2-of-europes-biggest-tech-show-5-things-i-learned">Garmin Instinct 3 and the Apple Watch Ultra 3</a>, and found the latter less reliable on several counts, including battery drain; over roughly five hours, the Ultra 3 used 20% of its battery capacity, nearly three times more than the Garmin.</p><h2 id="4-new-balance-fresh-foams-are-fantastic-walking-shoes">4. New Balance Fresh Foams are fantastic walking shoes </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1526px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="3nSEHYyP4HsbaQ68Xr3Tmm" name="NB-fresh-foam" alt="CLose-up of the writer's New Balance Fresh Foam X Hierro V9 sneakers" src="https://cdn.mos.cms.futurecdn.net/3nSEHYyP4HsbaQ68Xr3Tmm.jpg" mos="" align="middle" fullscreen="" width="1526" height="858" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Breaking in a new pair of sneakers on an important business trip that involves lots of walking is far from an ideal scenario, but occasionally, I like to live dangerously. So, I packed my brand-spanking-new, piggy-bank-shattering <a href="https://www.tomsguide.com/wellness/running/new-balance-fresh-foam-x-hierro-v9-review">New Balance Fresh Foam X Hierro V9</a> Gore-Tex kicks, having only tried them on once, and hoped for the best.</p><p>Fortunately, these puppies broke in like a charm, with zero foot discomfort. To be fair, this isn't my first pair of Fresh Foam X Hierro Gore-Tex trail shoes, but these are built slightly differently than prior models I've worn. </p><p>Even a gloomy, rainy day couldn't steal the spring from my step — the Fresh Foam V9 is outrageously bouncy — as the Gore-Tex exterior performed like a champ, keeping my socks and toes dry and cozy. </p><h2 id="5-barcelona-is-a-pleasure-to-explore-on-foot">5. Barcelona is a pleasure to explore on foot...</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6973px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BUFJpedBjtBcAeJ4mNx5KJ" name="Barcelona-beach-01" alt="A couple walks on the beach in Barcelona with palm tress and ocean in the distance" src="https://cdn.mos.cms.futurecdn.net/BUFJpedBjtBcAeJ4mNx5KJ.jpg" mos="" align="middle" fullscreen="" width="6973" height="3922" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia)</span></figcaption></figure><p>...unlike Las Vegas. This is probably a no-brainer for anyone who has visited either city. However, it's worth commenting that while Las Vegas may, in fact, be the least pedestrian-friendly place I've ever stepped foot in, Barcelona is the exact opposite. </p><p>Each day on my return from MWC, I opted for a slightly different route back to my hotel, and was rewarded with glorious architectural gems, endless candid street scenes, unusual and often comical graffiti, non-stop parades of dogs (and their owners), and the ever-present smell of blooming flowers, which in most cases, overpowered any occasional smells of stale urine.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-instinct-3-vs-amazfit-t-rex-ultra-2-and-this-watch-won-by-a-single-step">I walked 5,000 steps with the Garmin Instinct 3 vs Amazfit T-Rex Ultra 2 — and this watch won by a single step</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/my-favorite-garmin-smartwatch-feature-isnt-for-fitness-and-its-only-available-on-one-model-under-usd500">My favorite Garmin watch feature isn’t for fitness — and it’s only available on one model under $500</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-7-500-steps-with-the-apple-watch-ultra-3-vs-garmin-venu-4-and-the-winning-margin-is-razor-thin">I walked 7,500 steps with the Apple Watch Ultra 3 vs Garmin Venu 4 — and the winner surprised me</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I walked 15,000 steps with the Garmin Instinct 3 vs Apple Watch Ultra 3 at Europe's biggest tech show — 5 things I learned ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-walked-15-000-steps-with-the-garmin-instinct-3-vs-apple-watch-ultra-3-on-day-2-of-europes-biggest-tech-show-5-things-i-learned</link>
                                                                            <description>
                            <![CDATA[ I tracked my day at MWC 2026, wearing two popular smartwatches, the Garmin Instinct 3 and Apple Watch Ultra 3, to compare their data. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">c9wa8fS8koLanwMU5emAB5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bX8DyoTQuAjC3awg9EkUGn-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Mar 2026 19:46:46 +0000</pubDate>                                                                                                                                <updated>Tue, 03 Mar 2026 21:05:53 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bX8DyoTQuAjC3awg9EkUGn-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Instinct 3 next to the Apple Watch Ultra 3 with the Barcelona skyline in the distance]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Instinct 3 next to the Apple Watch Ultra 3 with the Barcelona skyline in the distance]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Instinct 3 next to the Apple Watch Ultra 3 with the Barcelona skyline in the distance]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bX8DyoTQuAjC3awg9EkUGn-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’m in Barcelona, Spain, reporting on Mobile World Congress, Europe’s largest consumer technology show. With no shortage of ground to cover, for day two of the show, I logged my walking efforts wearing two of the <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch">best smartwatch</a> models (and personal favorites of mine), the <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-ultra-3-review">Apple Watch Ultra 3</a> and <a href="https://www.tomsguide.com/Garmin-Instinct-3-review">Garmin Instinct 3</a>.</p><p>With the Garmin on my right wrist and the Apple Watch on my left, I made my way to the convention center from my hotel, a roughly two-mile walk. Intent on maximizing my workout for the day, I opted to not only avoid taxis and public transit on my way to and from the show, but also chose the stairs over escalators and solid ground over moving walkways, every chance I got. </p><p>With roughly 15,000 steps in the books on day 2 of MWC, here are the five biggest takeaways I gleaned from the data logged by the Apple Watch Ultra 3 versus the Garmin Instinct 3. </p><h2 id="apple-watch-ultra-3-vs-garmin-instinct-3-mwc-day-2-results">Apple Watch Ultra 3 vs Garmin Instinct 3: MWC day 2 results </h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Apple Watch Ultra 3</p></th><th  ><p>Gamin Instinct 3</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Total distance walked</p></td><td  ><p>7.82 miles</p></td><td  ><p>8.95 miles</p></td></tr><tr><td class="firstcol " ><p>Step count total</p></td><td  ><p>15,058 steps</p></td><td  ><p>15,164 steps</p></td></tr><tr><td class="firstcol " ><p>Elevation gain</p></td><td  ><p>935 feet</p></td><td  ><p>548 feet</p></td></tr><tr><td class="firstcol " ><p>Average heart rate</p></td><td  ><p>114 bpm</p></td><td  ><p>113 bpm</p></td></tr><tr><td class="firstcol " ><p>Maximum heart rate</p></td><td  ><p>142 bpm</p></td><td  ><p>164 bpm</p></td></tr><tr><td class="firstcol " ><p>Total calories burned</p></td><td  ><p>1,271 calories</p></td><td  ><p>1,404 calories </p></td></tr><tr><td class="firstcol " ><p>Battery drain</p></td><td  ><p>20%</p></td><td  ><p>6%</p></td></tr></tbody></table></div><h2 id="1-garmin-logged-far-more-distance-covered">1. Garmin logged far more distance covered </h2><p>After about four hours and 45 minutes out and about, I returned to my hotel room, concluded tracking on both devices, and analyzed the results. Much to my surprise, the Garmin Instinct 3 recorded a substantially greater amount of distance (+1.13 miles) covered compared to the Apple Watch Ultra 3.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="eTixJN7B87yTptsNCCKHmn" name="MWC26-apple-v-gamin-02" alt="Close-up of the Garmin Instinct 3 next to the Apple Watch Ultra 3 with the Barcelona skyline in the distance" src="https://cdn.mos.cms.futurecdn.net/eTixJN7B87yTptsNCCKHmn.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><h2 id="2-apple-and-garmin-recorded-nearly-the-same-step-count-totals">2. Apple and Garmin recorded nearly the same step count totals</h2><p>Despite vastly different distance tallies, the Apple Watch Ultra 3 and Garmin Instinct 3 noted remarkably similar step count totals of roughly 15,000 steps, with just 106 steps separating their calculations. That’s impressive, for sure, but then again, it only adds to my confusion on the distance front. </p><h2 id="3-apple-s-elevation-gain-data-seems-inflated">3. Apple's elevation gain data seems inflated</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3843px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="esiGsMkrTHPZjyM6qc2Si4" name="AW-hike-app-03" alt="Close-up of the Apple Watch Ultra 3 showing the option to track hiking in the Workout app" src="https://cdn.mos.cms.futurecdn.net/esiGsMkrTHPZjyM6qc2Si4.jpg" mos="" align="middle" fullscreen="" width="3843" height="2161" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>The area of Barcelona I’m currently operating in is relatively flat, which is why I was somewhat surprised to see that my Apple Watch logged 935 total feet of elevation gain. The Garmin Instinct 3, meanwhile, noted a much more reasonable climb metric of 548 feet. So, why is Apple’s ascent data so high? I’m guessing that the handful of times I had no choice but to take an escalator upwards were a factor. </p><h2 id="4-apple-and-garmin-measured-similar-average-heart-rates-and-calories-burned">4. Apple and Garmin measured similar average heart rates and calories burned</h2><p>Both the Apple Watch Ultra 3 and Garmin Instinct 3 logged roughly the same average heart rate for my day out and about covering the latest tech. The smartwatches also recorded a similar amount of calories burned; however, Garmin noted a considerably higher maximum heart rate than Apple, something I’m at a loss to account for. </p><h2 id="5-the-instinct-3-used-far-less-battery-than-the-ultra-3">5. The Instinct 3 used far less battery than the Ultra 3</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3701px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="yaL9XTKoBPfLqrd6sDVKdB" name="Garmin-Torch-03" alt="Close-up of the Garmin Instinct 3 showing the 'Torch' LED flashlight illuminated from the top of the watch case" src="https://cdn.mos.cms.futurecdn.net/yaL9XTKoBPfLqrd6sDVKdB.jpg" mos="" align="middle" fullscreen="" width="3701" height="2082" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>I spent just shy of five hours out at MWC on day 2, with both smartwatches running full-steam, logging my location, heart rate, and more. During that period, the Garmin Instinct 3 drained just 6% of its battery compared to 20% for the Apple Watch Ultra 3. </p><p>Ultimately, both smartwatches performed well in tracking my journalistic efforts from a step count standpoint while covering day two of Mobile World Congress. However, with what appears to be more accurate ascent and distance data, and far superior power management, I’m leaning toward sticking with the Garmin to track day 3. </p><p>Which of these two powerhouse smartwatches do you prefer? Let me know below. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eEDArX"></div>                            </div>                            <script src="https://kwizly.com/embed/eEDArX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-instinct-3-vs-amazfit-t-rex-ultra-2-and-this-watch-won-by-a-single-step">I walked 5,000 steps with the Garmin Instinct 3 vs Amazfit T-Rex Ultra 2 — and this watch won by a single step</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/my-favorite-garmin-smartwatch-feature-isnt-for-fitness-and-its-only-available-on-one-model-under-usd500">My favorite Garmin watch feature isn’t for fitness — and it’s only available on one model under $500</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-7-500-steps-with-the-apple-watch-ultra-3-vs-garmin-venu-4-and-the-winning-margin-is-razor-thin">I walked 7,500 steps with the Apple Watch Ultra 3 vs Garmin Venu 4 — and the winner surprised me</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Garmin’s updated gear tracking feature is brilliant for runners — here’s how to use it to log your running shoe use ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/garmins-updated-gear-tracking-feature-is-brilliant-for-runners-heres-how-to-use-it-to-log-your-running-shoe-use</link>
                                                                            <description>
                            <![CDATA[ How long do running shoes last? Garmin’s improved gear tracking feature will help you find out. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3tFZvzpKYug7df5LLiojCW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DqYn5enqGY9grzqSNUFgTD-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Mar 2026 08:01:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DqYn5enqGY9grzqSNUFgTD-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Forerunner 970]]></media:description>                                                            <media:text><![CDATA[Garmin Forerunner 970]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Forerunner 970]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DqYn5enqGY9grzqSNUFgTD-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I review running shoes for a living, and one of the first questions people tend to ask me about them is how long they last. My answer is always the same — it depends — because different factors will determine how long a shoe lasts for you.</p><p>For one, different types of running shoes offer different levels of durability. The <a href="https://www.tomsguide.com/best-picks/best-running-shoes">best running shoes</a> for daily training will be more durable than the <a href="https://www.tomsguide.com/best-picks/best-carbon-fiber-running-shoes">best carbon plate running shoes</a> for racing, for example, because they’re built to handle more mileage rather than just be very fast.</p><p>The other big factor is the runners themselves, because I’ve noticed that people go through shoes at different rates depending on things like their running style, weight, foot size and shape, and the terrain they run on.</p><p>So to work out how long running shoes last for you, the best thing you can do is track it yourself, and the updated gear tracking feature on the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches </a>will help you do just that.</p><h3 class="article-body__section" id="section-how-to-use-garmin-s-gear-tracking-feature"><span>How to use Garmin’s gear tracking feature</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4691px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="tppxWzqNgtvBPZFZvZ7BgD" name="Garmin Forerunner 970" alt="Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:350,l:731,cw:4691,ch:2639,q:80/tppxWzqNgtvBPZFZvZ7BgD.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s been possible to track the use of your gear in the Garmin Connect app for several years, but the feature recently got a big update that adds more types of gear and makes it easier to select the equipment, shoes, or apparel you're using on your watch.</p><p>However, you do still have to initially set up your gear in the Garmin Connect app. Go to <strong>More/Gear</strong> to see the items you have set up and create new ones.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mJvb5zQdc4yXmbwSTiQZQD" name="Garmin Gear Tracking" alt="Garmin Gear Tracking" src="https://cdn.mos.cms.futurecdn.net/mJvb5zQdc4yXmbwSTiQZQD.jpg" mos="" align="middle" fullscreen="" width="1600" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Part of the recent update was adding lots of new categories of gear, including skis, snowboards and rackets, but the most important one for me is shoes.</p><p>You can set these up by selecting from Garmin’s pre-made list of models from popular brands, or enter your own details if you can’t see your model — the pace of running shoe releases means that I suspect Garmin will often be behind, and I had to manually create three models I’m testing right now.</p><p>You also set a target mileage for the shoes, which is automatically set at 650km (just over 400 miles). I bumped this up to 800km / 500 miles for training shoes, and left it for a racing shoe I’m testing.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HC2RHFxL2tnC494FRmM6MD" name="Garmin Gear Tracking" alt="Garmin Gear Tracking" src="https://cdn.mos.cms.futurecdn.net/HC2RHFxL2tnC494FRmM6MD.jpg" mos="" align="middle" fullscreen="" width="1600" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s also worth adjusting which activities the shoes will appear for on your watch by default. So you can select all running activities or, if you use modes like trail run, select the specific ones you’ll use the shoes for.</p><p>Once you’ve set up the shoes, they’ll appear on your watch in the list of settings in the start run screen, where you can choose the shoes you’re using and also see how many miles they have on them already.</p><p>If you forget to do this pre-run, something I do regularly, you can assign the right shoes to the run in the Garmin Connect app after you’ve finished, so you don’t miss out on the mileage.</p><h3 class="article-body__section" id="section-how-to-tell-when-your-running-shoes-need-replacing"><span>How to tell when your running shoes need replacing</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sPum72d4PwYNN7QAuWqjiD" name="Garmin Forerunner 970" alt="Garmin Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/sPum72d4PwYNN7QAuWqjiD.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As mentioned, running shoes last different amounts of time depending on the shoe and the runner, but as a general rule, you can hope for 500 miles of use from a general trainer, though this can rise to over 800 miles in my experience with really tanky shoes.</p><p>There will be visible signs of wear that can indicate a shoe is past its best, such as the outsole wearing away or holes appearing in the upper.</p><p>The harder sign to spot is the midsole foam compressing and losing its bounce, which can happen gradually over time. This is why tracking the mileage of your shoes can be useful, because it indicates when you need to start looking out for this.</p><p>If the midsole feels firmer when poked and squeezed than it used to, or seems flatter and harder when running than it did when new, the foam might well be past its best. </p><p>You might also notice small niggles crop up after using the shoes, indicating they’re not cushioning the body as well as they used to.</p><p>It’s not an exact science, but by tracking the lifespan of the shoes you use over the years, you will start to get a good idea of when they usually begin to break down for you. </p><p>For example, as a fairly light runner with a narrow foot and a high-cadence, low-impact running gait, the same shoe might last me longer than someone with a wide foot and a harder-hitting running style.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/my-favorite-garmin-smartwatch-feature-isnt-for-fitness-and-its-only-available-on-one-model-under-usd500">My favorite Garmin smartwatch feature isn’t for fitness — and it’s only available on one model under $500</a></li><li><a href="https://www.tomsguide.com/best-picks/best-garmin-watch">Best Garmin watch 2026 tested and rated</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-wear-a-garmin-watch-for-marathon-training-these-are-the-5-stats-i-care-about-and-the-3-i-ignore">I wear a Garmin watch for marathon training — these are the 5 stats I care about and the 3 I ignore</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I walked 5,000 steps with the Garmin Instinct 3 vs Amazfit T-Rex Ultra 2 — and this watch won by a single step ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/i-walked-5-000-steps-with-the-garmin-instinct-3-vs-amazfit-t-rex-ultra-2-and-this-watch-won-by-a-single-step</link>
                                                                            <description>
                            <![CDATA[ Garmin vs Amazfit? Which of these modern, tough-built smartwatches is the more accurate fitness tracker? I walked 5,000 steps to find out. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">p8a2QgRVy6XjTRTPKKwsSg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/d4ZY56roXz5FMjJ4WaimS9-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 01 Mar 2026 07:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/d4ZY56roXz5FMjJ4WaimS9-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the Garmin Instinct 3 next to the Amazfit T-Rex 2 Ultra]]></media:description>                                                            <media:text><![CDATA[Close-up of the Garmin Instinct 3 next to the Amazfit T-Rex 2 Ultra]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the Garmin Instinct 3 next to the Amazfit T-Rex 2 Ultra]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/d4ZY56roXz5FMjJ4WaimS9-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Garmin Instinct 3 or Amazfit T-Rex Ultra 2, which is the more accurate fitness tracker? To find out, I slapped one on either wrist and walked 5,000 steps — manually counted, of course — and compared the data from each device.</p><p>Both smartwatches are aimed at outdoor adventurers, with rugged build qualities, onboard GPS, and no shortage of tracking modes. While the <a href="https://www.tomsguide.com/Garmin-Instinct-3-review">Instinct 3</a> debuted in January 2025, it remains one of the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch#section-the-best-garmin-watch-for-battery-life">best Garmin watches</a> in 2026, particularly for battery life, with a starting price of <a href="https://www.bestbuy.com/product/garmin-instinct-3-solar-gps-smartwatch-45-mm-fiber-reinforced-polymer-black-with-black-band-2025/JXF9YF5W37/sku/6614780" target="_blank" rel="nofollow">$399 via Best Buy</a> for the solar edition and $449 for the AMOLED version.</p><p>The <a href="https://www.tomsguide.com/wellness/smartwatches/i-just-went-hands-on-with-the-amazfit-t-rex-2-ultra-and-it-beats-the-apple-watch-ultra-3-in-5-big-ways">Amazfit T-Rex Ultra 2</a>, meanwhile, debuted in February 2026 as Amazfit’s most premium model in a lineup of otherwise affordable smartwatches; it <a href="https://us.amazfit.com/products/t-rex-ultra-2" target="_blank" rel="nofollow">starts at $549 via Amazfit</a> directly. </p><p>Cost and nuances aside, either of these smartwatches should serve you well if recording your efforts in the great outdoors is the aim. But which smartwatch, the Garmin Instinct 3 or the Amazfit T-Rex Ultra 2, does so with better precision? Read on. </p><div class="product"><a data-dimension112="287e9bb4-ac9d-4cee-b8dc-5894891ad1ba" data-action="Deal Block" data-label="The Garmin Instinct 3 is a rugged, long-lasting smartwatch for hardcore outdoor adventurers, with accurate location and holistic tracking, tons of activity modes, an onboard LED flashlight, and 100 meters of water resistance." data-dimension48="The Garmin Instinct 3 is a rugged, long-lasting smartwatch for hardcore outdoor adventurers, with accurate location and holistic tracking, tons of activity modes, an onboard LED flashlight, and 100 meters of water resistance." data-dimension25="$399" href="https://www.bestbuy.com/product/garmin-instinct-3-solar-gps-smartwatch-45-mm-fiber-reinforced-polymer-black-with-black-band-2025/JXF9YF5W37/sku/6614780" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1392px;"><p class="vanilla-image-block" style="padding-top:105.17%;"><img id="ftM9z5bRyFZM4QgKoEHhiZ" name="Screenshot 2025-01-21 at 4.21.06 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ftM9z5bRyFZM4QgKoEHhiZ.png" mos="" align="middle" fullscreen="" width="1392" height="1464" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Garmin Instinct 3 is a rugged, long-lasting smartwatch for hardcore outdoor adventurers, with accurate location and holistic tracking, tons of activity modes, an onboard LED flashlight, and 100 meters of water resistance.<a class="view-deal button" href="https://www.bestbuy.com/product/garmin-instinct-3-solar-gps-smartwatch-45-mm-fiber-reinforced-polymer-black-with-black-band-2025/JXF9YF5W37/sku/6614780" target="_blank" rel="nofollow" data-dimension112="287e9bb4-ac9d-4cee-b8dc-5894891ad1ba" data-action="Deal Block" data-label="The Garmin Instinct 3 is a rugged, long-lasting smartwatch for hardcore outdoor adventurers, with accurate location and holistic tracking, tons of activity modes, an onboard LED flashlight, and 100 meters of water resistance." data-dimension48="The Garmin Instinct 3 is a rugged, long-lasting smartwatch for hardcore outdoor adventurers, with accurate location and holistic tracking, tons of activity modes, an onboard LED flashlight, and 100 meters of water resistance." data-dimension25="$399">View Deal</a></p></div><div class="product"><a data-dimension112="63fb11a3-040e-4ebf-8f0a-46ad5c6f8a55" data-action="Deal Block" data-label="The T-Rex Ultra 2 is a large, tough-built smartwatch aimed at outdoor enthusiasts, boasting a massive and bright touch display, multiple weeks of battery, preloaded navigational maps, and a nifty LED flashlight in the case." data-dimension48="The T-Rex Ultra 2 is a large, tough-built smartwatch aimed at outdoor enthusiasts, boasting a massive and bright touch display, multiple weeks of battery, preloaded navigational maps, and a nifty LED flashlight in the case." data-dimension25="$549" href="https://us.amazfit.com/products/t-rex-ultra-2" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:616px;"><p class="vanilla-image-block" style="padding-top:104.06%;"><img id="tLG2fnesKWAtAyk8apeS4j" name="Screenshot 2026-02-27 at 5.00.04 PM" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tLG2fnesKWAtAyk8apeS4j.png" mos="" align="middle" fullscreen="" width="616" height="641" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The T-Rex Ultra 2 is a large, tough-built smartwatch aimed at outdoor enthusiasts, boasting a massive and bright touch display, multiple weeks of battery, preloaded navigational maps, and a nifty LED flashlight in the case.<a class="view-deal button" href="https://us.amazfit.com/products/t-rex-ultra-2" target="_blank" rel="nofollow" data-dimension112="63fb11a3-040e-4ebf-8f0a-46ad5c6f8a55" data-action="Deal Block" data-label="The T-Rex Ultra 2 is a large, tough-built smartwatch aimed at outdoor enthusiasts, boasting a massive and bright touch display, multiple weeks of battery, preloaded navigational maps, and a nifty LED flashlight in the case." data-dimension48="The T-Rex Ultra 2 is a large, tough-built smartwatch aimed at outdoor enthusiasts, boasting a massive and bright touch display, multiple weeks of battery, preloaded navigational maps, and a nifty LED flashlight in the case." data-dimension25="$549">View Deal</a></p></div><h3 class="article-body__section" id="section-i-walked-5-000-steps-with-the-garmin-instinct-3-vs-amazfit-t-rex-ultra-2"><span>I walked 5,000 steps with the Garmin Instinct 3 vs Amazfit T-Rex Ultra 2</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3495px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="j4SuRW2UBDTmcKnofG8FRm" name="Garmin-Instinct-4" alt="Garmin Instinct 3 close-up in teal on a user's wrist" src="https://cdn.mos.cms.futurecdn.net/j4SuRW2UBDTmcKnofG8FRm.jpg" mos="" align="middle" fullscreen="" width="3495" height="1967" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>I walked 5,000 steps with the Amazfit T-Rex Ultra 2 on my left wrist and the Garmin Instinct 3 on my right wrist. Beyond my manual count, I ran <a href="https://www.tomsguide.com/wellness/smartwatches/ive-hiked-hundreds-of-miles-and-these-are-the-3-apple-watch-apps-i-use-to-keep-from-getting-lost">Strava</a> — my go-to app for walk/hike tracking — on my iPhone 16 Plus as a control for other metrics like distance, climb, and pace. </p><p>Find the results of my walk test between the Garmin Instinct 3 and Amazfit T-Rex 2 Ultra 2 below. </p><h3 class="article-body__section" id="section-garmin-instinct-3-vs-amazfit-t-rex-ultra-2-walk-test-results"><span>Garmin Instinct 3 vs Amazfit T-Rex Ultra 2: Walk test results</span></h3><div ><table><caption>Garmin Instinct 3 vs Amazfit T-Rex Ultra 2: results</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>Garmin Instinct 3</p></th><th  ><p>Amazfit T-Rex Ultra 2</p></th><th  ><p>Control</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Step count</strong></p></td><td  ><p>5,004 steps</p></td><td  ><p>5,005 steps</p></td><td  ><p>5,000 steps (manual count)</p></td></tr><tr><td class="firstcol " ><p><strong>Distance</strong></p></td><td  ><p>2.72 miles</p></td><td  ><p>2.67 miles </p></td><td  ><p>2.71 miles (Strava)</p></td></tr><tr><td class="firstcol " ><p><strong>Elevation gain</strong></p></td><td  ><p>375 feet</p></td><td  ><p>435 feet</p></td><td  ><p>374 feet (Strava)</p></td></tr><tr><td class="firstcol " ><p><strong>Average moving pace</strong></p></td><td  ><p>16 mins 23 secs per mile</p></td><td  ><p>17 mins 19 secs per mile </p></td><td  ><p>16 mins 30 secs per mile (Strava) </p></td></tr><tr><td class="firstcol " ><p><strong>Average heart rate</strong></p></td><td  ><p>124 bpm</p></td><td  ><p>114 bpm</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Max heart rate</strong></p></td><td  ><p>150 bpm</p></td><td  ><p>142 bpm</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Total calories burned</strong></p></td><td  ><p>314 calories</p></td><td  ><p>345 calories</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Device battery usage</strong></p></td><td  ><p>4%</p></td><td  ><p>2%</p></td><td  ><p>n/a</p></td></tr></tbody></table></div><p>With just a single step separating the step count totals between the Instinct 3 and T-Rex Ultra 2, and with both devices within five steps of my actual count, I'm thoroughly impressed by these results. </p><p>Strava, for what it's worth, measured my total at 4,982 steps over the course of my roughly 45-minute walk. </p><p>Distance data is similar enough across the board, with Garmin's results ever-so-slightly more in line with the control (Strava). Garmin's elevation gain data — Seattle is a darn hilly city, and this particular walk had plenty of climb — is also nearly identical to the control. The Amazfit, meanwhile, seemingly overcounted my climb efforts by as much as 60 feet, which is a tad concerning.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3702px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="GWXrXNAyZMJrbP2biu87PU" name="T-Rex2U-06" alt="Close-up of the Amazfit T-Rex 2 Ultra smartwatch" src="https://cdn.mos.cms.futurecdn.net/GWXrXNAyZMJrbP2biu87PU.jpg" mos="" align="middle" fullscreen="" width="3702" height="2083" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Strava and Garmin calculated roughly the same average moving pace for my walk, while Amazfit reported a slower overall average. It's worth noting that the T-Rex Ultra 2 provides just one average pace stat, and we don't know whether it reflects a moving pace or an elapsed one (though my money is on the latter).</p><p>Meanwhile, Garmin noted a higher average and maximum heart rate than Amazfit, but fewer calories burned, which is interesting. Lastly, and much to my surprise, the Garmin Instinct 3 (a class-leader in longevity) consumed twice as much battery power as the T-Rex Ultra 2.</p><h3 class="article-body__section" id="section-garmin-instinct-3-vs-amazfit-t-rex-2-ultra-and-the-winner-is"><span>Garmin Instinct 3 vs Amazfit T-Rex 2 Ultra: And the winner is...</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3888px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KqzzqpkxkXskg8ySJ8ktvN" name="Instinct3-AMOLED-03" alt="Close up of Garmin Instinct 3 GPS smartwatch in Neotropic/Twilight with a grey and orange case and sea foam green strap" src="https://cdn.mos.cms.futurecdn.net/KqzzqpkxkXskg8ySJ8ktvN.jpg" mos="" align="middle" fullscreen="" width="3888" height="2187" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>By a margin of one single step — the closest ever — the Garmin Instinct 3 officially wins this head-to-head fitness tracking accuracy showdown against the Amazfit T-Rex Ultra 2. That said, I'm ultimately splitting hairs here, and both devices performed exceptionally well across the board, except for Amazfit's inflated climb data. </p><p>Was that an anomaly or a sign of a faulty barometric altimeter? I intend to find out through more comparative testing. Stay tuned for those results and a full review of the Amazfit T-Rex Ultra 2. </p><p>In the meantime, which smartwatch models should I test head-to-head next? Let me know in the comments below. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OdokoW"></div>                            </div>                            <script src="https://kwizly.com/embed/OdokoW.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/can-a-budget-a-smartwatch-beat-garmin-i-went-snowboarding-with-both-and-the-results-surprised-me">I pitted a $169 smartwatch against my favorite Garmin — here’s what happened</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/my-favorite-garmin-smartwatch-feature-isnt-for-fitness-and-its-only-available-on-one-model-under-usd500">My favorite Garmin watch feature isn’t for fitness — and it’s only available on one model under $500</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-walked-7-500-steps-with-the-apple-watch-ultra-3-vs-garmin-venu-4-and-the-winning-margin-is-razor-thin">I walked 7,500 steps with the Apple Watch Ultra 3 vs Garmin Venu 4 — and the winner surprised me</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This is the most popular free Garmin watch face — here’s 4 things I like and 3 I dislike ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/this-is-the-most-popular-free-garmin-watch-face-heres-4-things-i-like-and-3-i-dislike</link>
                                                                            <description>
                            <![CDATA[ The Glance watch face has been the most popular free option available in the Garmin Connect IQ app store for years, but I found it a little dated. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DxYD9f2gguGHwPGsJ3Sufi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SGirk4nsp2GGeZ7CvJQ4KD-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 01 Mar 2026 06:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/SGirk4nsp2GGeZ7CvJQ4KD-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Glance Watch Face on Forerunner 970]]></media:description>                                                            <media:text><![CDATA[Garmin Glance Watch Face on Forerunner 970]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Glance Watch Face on Forerunner 970]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SGirk4nsp2GGeZ7CvJQ4KD-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I love freshening up my <a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Garmin Forerunner 970</a> with a new face from time to time, but it’s not always easy to find great faces available for free in the Connect IQ app store. </p><p>I don’t mind paying for watch faces, but it’s certainly more appealing to get them for free, and the popular free option in the Connect IQ rankings right now is the Glance face. </p><p>The <a href="https://apps.garmin.com/apps/07ae0f49-7240-4475-a229-4507e8035fae" target="_blank">Glance watch face</a> was created by developer <a href="https://apps.garmin.com/developer/9969f779-b3b1-4f2b-930b-e3786f8864a9/apps" target="_blank" rel="nofollow">MobileDriveway,</a> who has also made several variations on it that you have to pay for, but the original remains free and has an average rating of 4.9 out of 5 from a massive 53K reviews.</p><p>Given its popularity, I felt like I had to give it a try to see if it could match the <a href="https://www.tomsguide.com/wellness/smartwatches/i-review-garmin-for-a-living-and-these-are-my-5-favorite-watch-faces">best Garmin watch faces</a> I’ve tested. Here’s what I liked and disliked about Glance.</p><h3 class="article-body__section" id="section-like-1-it-s-very-clear-and-easy-to-read"><span>Like #1: It’s very clear and easy to read</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4912px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7iCR5JnQyW6fAmNJvmtiSD" name="Garmin Glance Watch Face" alt="Garmin Glance Watch Face on Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:228,l:579,cw:4912,ch:2763,q:80/7iCR5JnQyW6fAmNJvmtiSD.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Glance face lives up to its name in that you can easily see every stat it shows just by glancing at it.</p><p>However you choose to customize the face, every stat on show is clear and easy to read, including the time when the face is in always-on mode.</p><p>Ultimately, this is the most important thing with any watch face — that it shows what you want to see clearly, and the Glance face certainly ticks this box.</p><h3 class="article-body__section" id="section-like-2-the-move-bar-is-implemented-well"><span>Like #2: The move bar is implemented well</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4288px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VfLHq6mjE5qfvdhnBWA4ED" name="Garmin Glance Watch Face" alt="Garmin Glance Watch Face on Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:404,l:647,cw:4288,ch:2412,q:80/VfLHq6mjE5qfvdhnBWA4ED.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you’re sedentary for too long while wearing a Garmin, you’ll get an alert to move, and to fully clear that alert, you have to move for a while to empty your "move bar," which slowly fills up while you remain still.</p><p>The Glance face shows the move bar at the top or bottom of the screen, turning red over time while you remain still and turning green when you get up and move to clear it.</p><p>I liked the way the move bar is implemented on the watch, as it motivates you to keep tabs on how long you’ve been sitting, and to be active for an extended spell, actually to clear the bar when it’s full.</p><h3 class="article-body__section" id="section-like-3-it-shows-a-lot-of-stats"><span>Like #3: It shows a lot of stats</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4829px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="jDCTGXXccQfhiFi28wEnYD" name="Garmin Glance Watch Face" alt="Garmin Glance Watch Face on Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:251,l:571,cw:4829,ch:2716,q:80/jDCTGXXccQfhiFi28wEnYD.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With bars at the top and bottom of the screen, plus sections for five more stats along with the time, the Glance face shows a whole lot of data in an admirably clear way.</p><p>You can customize the data you want to see in the Connect IQ app, as well as actually make a section show no data at all if you want a less cluttered screen.</p><h3 class="article-body__section" id="section-like-4-it-s-free"><span>Like #4: It’s free</span></h3><p>The Glance face’s popularity is no doubt partly down to the fact that it’s completely free, because this is becoming increasingly rare in the Connect IQ store in my experience.</p><p>Most of the watch faces I’ve tried cost $2-$5, which isn’t a lot of money, but enough to be off-putting when you get a lot of stock faces for free, and might have already spent hundreds of dollars on your watch.</p><h3 class="article-body__section" id="section-dislike-1-it-looks-a-little-dated"><span>Dislike #1: It looks a little dated</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4775px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xZX3Ck3Cec5ARaJbmJqYND" name="Garmin Glance Watch Face" alt="Garmin Glance Watch Face on Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/v2/t:343,l:495,cw:4775,ch:2686,q:80/xZX3Ck3Cec5ARaJbmJqYND.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Glance had the best rating of any Garmin watch face in 2022, but the design and fonts that shone then now look a little dated in my opinion. </p><p>It reminds me of stock faces from older Garmin watches like the Forerunner 245 and doesn’t suit the bright AMOLED displays, which are now standard in the brand’s line-up.</p><p>That’s not to say it looks bad, exactly; it’s just not as elegant as some other options I use regularly, like the <a href="https://www.tomsguide.com/wellness/smartwatches/i-spent-usd5-on-this-garmin-watch-face-and-its-now-my-go-to">Portal Hybrid watch face</a>.</p><h3 class="article-body__section" id="section-dislike-2-it-doesn-t-offer-as-many-stats-as-other-faces"><span>Dislike #2: It doesn’t offer as many stats as other faces</span></h3><p>Most of the Garmin watch faces I’ve tried recently show all kinds of training stats as well as the basics like step or calorie counts, but the Glance face doesn’t let you add things like weekly run distance or recovery time to the face.</p><p>These aren’t essential, and there are a lot of stats to pick from, but I like having certain stats available on all my watch faces, so I did miss them.</p><h3 class="article-body__section" id="section-dislike-3-you-have-to-customize-it-in-the-connectiq-app"><span>Dislike #3: You have to customize it in the ConnectIQ app</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vdFgiBNRGBCpaEPPUzbD6D" name="Garmin Glance Watch Face" alt="Garmin Glance Watch Face on Forerunner 970" src="https://cdn.mos.cms.futurecdn.net/vdFgiBNRGBCpaEPPUzbD6D.jpg" mos="" align="middle" fullscreen="" width="1600" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Some of the watch faces I’ve been testing out lately can be customized on the watch itself, in the same way you make changes to a native Garmin face, which is very handy.</p><p>This isn’t the case with the Glance face, which you have to set up in the Connect IQ app. It’s not a major problem, but it’s quicker and more convenient to adjust your face on the watch itself, in my experience.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/tvs/5-samsung-tv-settings-to-change-for-the-best-possible-picture">5 Samsung TV settings to change for the best possible picture</a></li><li><a href="https://www.tomsguide.com/audio/headphones/iclever-auraa-headphones-hands-on">I tried these TikTok-recommended headphones that protect your child's hearing — and so did my kid — here's our verdict</a></li><li><a href="https://www.tomsguide.com/sales-events/amazons-epic-winter-sale-is-still-going-strong-heres-35-deals-im-shopping-this-weekend">Amazon's epic Winter Sale is still going strong — here's 35 deals I'm shopping this weekend</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Your Garmin watch just got a massive free upgrade — here are the best new features you need to try ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/smartwatches/your-garmin-watch-just-got-a-massive-free-upgrade-here-are-the-best-new-features-you-need-to-try</link>
                                                                            <description>
                            <![CDATA[ Garmin's latest software release adds advanced fitness, health and connected features to several of its top smartwatches. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZVBjXaGLVdaki9mTyqZQSA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dNdmSoyAcuSQfMuJkAojxW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 26 Feb 2026 11:30:22 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Feb 2026 12:15:15 +0000</updated>
                                                                                                                                            <category><![CDATA[Smartwatches]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/dNdmSoyAcuSQfMuJkAojxW-1280-80.jpg">
                                                            <media:credit><![CDATA[Garmin]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garmin Fenix 8 watch]]></media:description>                                                            <media:text><![CDATA[Garmin Fenix 8 watch]]></media:text>
                                <media:title type="plain"><![CDATA[Garmin Fenix 8 watch]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dNdmSoyAcuSQfMuJkAojxW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Some of the <a href="https://www.tomsguide.com/best-picks/best-garmin-watch">best Garmin watches</a> just got even better, thanks to a bunch of new features Garmin has just rolled out with its latest software update. Perhaps the most useful of these is Garmin Fitness Coach, which will be available to Garmin Connect users for the first time.</p><p>Fitness Coach will help create <a href="https://www.tomsguide.com/how-to/download-training-plan-garmin-watch">personalized workout plans</a> based on fitness, activity history, and background information. Runners and cyclists can already create plans in Garmin Coach, but Fitness Coach has been added for those wanting overall fitness improvement that incorporates strength workouts and over 25 different activity types.</p><p>So even if you're not using a <a href="https://www.tomsguide.com/wellness/smartwatches/i-wear-a-garmin-watch-for-marathon-training-these-are-the-5-stats-i-care-about-and-the-3-i-ignore">Garmin watch to train for a marathon</a>, you can now implement a gym or bodyweight-based plan to help achieve progress. As a side note, the new update will also let users track multiple activities in one session rather than saving separate activities</p><p>Before we dive into the rest of the features Garmin has announced, here's a list of all the compatible watches that can take advantage of them:</p><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-venu-x1-review">Garmin Venu X1 </a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-review">Garmin Fenix 8</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-wore-the-garmin-vivoactive-6-for-a-month-and-it-has-nearly-everything-i-want-in-a-smartwatch">Garmin Vivoactive 6</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-570-review">Garmin Forerunner 570</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-forerunner-970-review-my-new-favorite-sports-watch">Garmin Forerunner 970</a></li></ul><h2 id="gear-tracking-updates">Gear tracking updates</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TkExkHC7Qqbukc3oV7SVx6" name="Garmin Fenix 8 Pro" alt="Garmin Fenix 8 Pro" src="https://cdn.mos.cms.futurecdn.net/TkExkHC7Qqbukc3oV7SVx6.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Garmin)</span></figcaption></figure><p>Garmin's oft-forgotten gear tracking is receiving a pretty substantial update that expands the gear types available and allows users to group them into collections. There's a gear database containing specific shoe and bike models as well as the ability to track gear stats and see a progress bar on the wrist, without needing to visit the app.</p><p>Gear tracking rarely gets talked about, but it's a way of showing how close your running shoes or road bike is to the end of its life. Users can put in a brand and a model alongside a maximum distance and then get notified about when the gear needs to be serviced or replaced. As part of this update, you'll now be able to auto-assign gear to specific Garmin Connect activities that will track stats automatically.</p><h2 id="general-health-features">General health features</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PK7xLKxYxJwkuseeDkT97H" name="Garmin Sleep Tracking.jpg" alt="Sleep tracking on a Garmin smartwatch" src="https://cdn.mos.cms.futurecdn.net/PK7xLKxYxJwkuseeDkT97H.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Using a Garmin watch to track your sleep just got a bit simpler, as compatible watches will now show users their sleep consistency and how aligned they are to their circadian rhythm.</p><p>General lifestyle logging has also been included with the ability to add behaviors — like consuming caffeine or alcohol — directly on their watch. You will also be able to view reports on how those choices impact sleep, stress and HRV<sup>2</sup>. </p><h2 id="other-features">Other features</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1480px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="Detrez28gBFUYfNSi2X8wT" name="Garmin feature update" alt="Garmin Feature Update" src="https://cdn.mos.cms.futurecdn.net/Detrez28gBFUYfNSi2X8wT.jpg" mos="" align="middle" fullscreen="" width="1480" height="833" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Garmin)</span></figcaption></figure><p>Here's all the other features Garmin has announced as part of its latest software upgrade.</p><p><strong>Course planner:</strong> This lets wearers prepare for upcoming races by planning out the course with cut-off times, rest plans, checkpoints, aid stations, and more in Garmin Connect, then see the course on their smartwatch.</p><p><strong>Sports scores:</strong> Sports fans can track their favorite teams across 15 different leagues and see live scores, schedules, and standings from their wrist when paired with a smartphone.</p><p><strong>Varia voice alerts: </strong>Cyclists can get audible alerts from their paired Varia radar to their smartwatch, letting them know about approaching vehicles to help them stay more aware of their surroundings.</p><p><strong>Accessibility:</strong> Users can now hear the time of day, health data, and more spoken directly from the watch face, plus hourly alerts for the start of each hour. Color display options are also available – including grayscale, red/green, green/red, or blue/yellow, which help legibility for those with various forms of color blindness.</p><p>These updates are currently rolling out, so if you use one of the above Garmin models as your daily smartwatch, check that your Garmin Connect app is fully updated and make sure your watch is synced to start getting access to these new features.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xmo3PW"></div>                            </div>                            <script src="https://kwizly.com/embed/Xmo3PW.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/smartwatches/my-favorite-garmin-smartwatch-feature-isnt-for-fitness-and-its-only-available-on-one-model-under-usd500">My favorite Garmin smartwatch feature isn’t for fitness — and it’s only available on one model under $500</a></li><li><a href="https://www.tomsguide.com/best-picks/best-garmin-watch">Best Garmin watch 2026 tested and rated</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/i-wear-a-garmin-watch-for-marathon-training-these-are-the-5-stats-i-care-about-and-the-3-i-ignore">I wear a Garmin watch for marathon training — these are the 5 stats I care about and the 3 I ignore</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>