<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://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"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link rel="alternate" hreflang="en-AU"
                       href="https://www.tomsguide.com/au/feeds/tag/internet"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from Tom's Guide AU in Internet ]]></title>
                <link>https://www.tomsguide.com/au/computing/internet</link>
        <description><![CDATA[ All the latest internet content from the Tom's Guide  AU team ]]></description>
                                    <lastBuildDate>Tue, 08 Sep 2026 17:16:27 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ AI is turning ordinary photos of kids into sexual abuse imagery — here's how to protect your family ]]></title>
                                                                                                <dc:content><![CDATA[ <p>A picture of my children at the beach, my son playing soccer or even my entire family, smiling in front of our house are all examples of photos I've posted to social media. I know I'm not alone, considering just how often I've seen similar images highlighting the goings-on of modern lives. <br><br>But AI has created a disturbing new risk that allows the use of ordinary photos of real children like the ones I mentioned above, to be manipulated into sexual abuse imagery without the child — or their parents — ever knowing.<br><br>To be clear, this is not a theoretical threat.</p><h2 id="332-ai-generated-child-sexual-abuse-ads-slipped-through">332 AI-generated child sexual abuse ads slipped through</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:7110px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="bZGXCBzoz5wEX4K8t872MR" name="shutterstock_2652715669" alt="This illustrates digital connectivity with a mobile device, highlighting the Meta platform, signifying modern communication, virtual reality, and engagement in the metaverse." src="https://cdn.mos.cms.futurecdn.net/bZGXCBzoz5wEX4K8t872MR.jpg" mos="" align="middle" fullscreen="" width="7110" height="4000" 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>A new investigation from the Tech Transparency Project (TTP) found hundreds of ads containing AI-generated child sexual abuse material (CSAM) running across Facebook and Instagram. Researchers identified four real children whose ordinary photos had been manipulated, according to <a href="https://www.wired.com/story/meta-failed-to-catch-hundreds-of-ai-child-abuse-ads-some-included-images-of-real-kids/" target="_blank">WIRED</a>, including two teenage influencers, a preteen whose image appeared on a stock-photo site and a young member of a European royal family.</p><p>In total, TTP found 332 ads containing AI-generated child sexual abuse material, or CSAM. Most depicted a child whose photograph had been manipulated using AI to make it appear they were performing a sexual act.</p><p>The findings are an alarming reminder of <a href="https://www.tomsguide.com/ai/ai-image-video/all-she-did-was-change-the-face-i-spoke-to-a-creator-whose-video-was-stolen-and-reskinned-with-ai">how generative AI has changed the risks around sharing photos of children online</a>. Creating convincing fake imagery no longer requires an explicit photograph in the first place. An ordinary picture can provide the raw material.</p><h2 id="how-ordinary-photos-become-ai-generated-abuse">How ordinary photos become AI-generated abuse</h2><p><a href="https://www.tomsguide.com/phones/i-tested-the-ai-photo-editing-tools-for-iphone-vs-google-pixel-vs-samsung-galaxy-and-theres-a-clear-winner">Generative AI image tools can take an existing photograph and modify parts of it</a> while preserving recognizable features of the person in the original.</p><p>That's what researchers say happened to several of the children identified in the <a href="https://www.tomsguide.com/ai/meta-will-start-using-your-ai-chats-to-target-ads-heres-what-that-means-and-why-critics-like-joseph-gordon-levitt-are-pushing-back">Meta ads</a>.</p><p>According to WIRED, researchers were able to trace images of four minors back to their original sources. Two were teenage influencers with public social media accounts. Another was a preteen whose photograph was available through a stock-photo website. The fourth was a young member of a European royal family.</p><p>None of those original photographs needed to contain sexual material for them to be misused.</p><p>"AI apps are making it far too easy to create realistic criminal imagery of child sexual abuse, creating the new risk of everyday photos of children being taken and transformed into sexual content," Emma Hardy, director of communications at the Internet Watch Foundation, told WIRED.</p><p>Once an ordinary image is publicly accessible, someone can potentially download it and feed it into an AI tool designed to alter photographs.</p><h2 id="meta-39-s-ai-didn-39-t-catch-hundreds-of-the-ads">Meta's AI didn't catch hundreds of the ads</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:9375px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="d6qmGSnFFXo6yGiczVTtSb" name="shutterstock_2663776741-2" alt="mark zuckerberg" src="https://cdn.mos.cms.futurecdn.net/d6qmGSnFFXo6yGiczVTtSb.jpg" mos="" align="middle" fullscreen="" width="9375" height="5273" 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>The scale of the latest investigation also shows how difficult the resulting content can be to stop. </p><p>In August, TTP researchers initially uncovered 53 ads containing child sexual abuse material across Meta's platforms. Meta subsequently said many of those ads had appeared before the company introduced new AI technology intended to improve its ability to detect violating ads when they were uploaded.</p><p>However, researchers kept finding them. In fact, TTP says it ultimately identified 332 ads containing AI-generated CSAM, with hundreds appearing after Meta had announced its improved detection technology.</p><p>That is particularly significant because these weren't simply Facebook or Instagram posts that escaped moderation. They were paid advertisements.</p><p>Meta says ads are reviewed before they're allowed to run and that automated systems play a major role in that process.</p><p>Meta spokesperson Tracy Clayton told WIRED that the company does not tolerate nudify apps or child exploitation, whether the imagery involves real children or is generated by AI. Meta said bad actors deliberately attempt to evade its detection systems and that some of the videos were harder to detect because images of children appeared only briefly or were blurred.</p><p>The company said many of the ads researchers identified had already been removed, most received fewer than 200 impressions and it received less than $5,000 in payments from the ads. But researchers documented instances in which exposure increased after an ad was reported.</p><p>TTP says one ad involving a real teenager had reached four European accounts when it was reported to Meta. Several days later, when Meta removed it, the ad had reached more than 330.</p><h2 id="the-investigation-shows-the-tools-are-mainstream">The investigation shows the tools are mainstream</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="nr2x3V7xnj4xZB2RREsezb" name="year in AI 2023.jpg" alt="An AI generated image of Elon Musk on a unicorn, the ChatGPT logo on a phone and a screen shot from a video of a robot from Runway" src="https://cdn.mos.cms.futurecdn.net/nr2x3V7xnj4xZB2RREsezb.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: Midjourney, Shutterstock, Runway )</span></figcaption></figure><p>Researchers found ads directing people toward nearly 50 apps available through Apple's App Store and Google's Play Store. Around 300 of the roughly 350 ads examined in the broader investigation promoted AI image or video generators, according to WIRED.</p><p>Apple told WIRED that some developers initially submitted compliant versions of their apps before subsequently adding prohibited nudification capabilities. Apple said it removed 17 of 20 apps identified by researchers and took action against the remaining three, as well as seven additional apps WIRED identified.</p><p>Google said it removed all apps included in the report and suspended hundreds of other apps for violating its policies. </p><p>Still, these finding reveal a problem that extends beyond any single platform because AI can be used to create the imagery. An app store can distribute the tool used to make it. An advertising platform can then distribute ads promoting it.</p><p>Each layer may have its own safety systems, but abusive material only needs to slip through those systems once to reach users.</p><h2 id="what-to-do-if-you-find-an-ai-generated-image-of-your-child">What to do if you find an AI-generated image of your child</h2><p>If you discover sexualized AI imagery involving your child, don't repost or widely share the image in an attempt to warn others.</p><p>Instead, preserve information that can help identify where the material appeared, such as the account name, page address and other surrounding details, and report the content directly to the platform.</p><p>In the U.S., suspected child sexual exploitation can also be reported to the <a href="https://www.missingkids.org/gethelpnow/cybertipline" target="_blank">National Center for Missing & Exploited Children's CyberTipline.</a></p><p>Parents can also use <a href="https://takeitdown.ncmec.org/" target="_blank">NCMEC's Take It Down service</a>, which is designed to help stop the online sharing of nude, partially nude or sexually explicit images or videos involving someone who was under 18. The system creates a digital fingerprint, or hash, from an image without requiring the image itself to be uploaded.</p><p>Since AI-generated imagery creates newer and more complicated scenarios, parents who aren't sure whether a manipulated image qualifies should still report what they've found rather than trying to determine that themselves.</p><h2 id="the-takeaway">The takeaway</h2><p>Parents have been warned about "sharenting" and children's digital footprints for years. Sharenting is a term that combines "sharing" and "parenting" and is the practice of parents sharing images, videos and personal details about their children on social media. </p><p>Although parents can't entirely eliminate the risk of AI abuse on the images or videos they post, but reducing the number of publicly accessible photos of your children and being more selective about what you share, can reduce the amount of material available to people who might misuse it.</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/ai/chatgpt/chatgpt-6-astra-is-here-this-one-prompt-shows-what-it-can-really-do"><strong>ChatGPT-6 Astra is here — this one prompt shows what it can really do</strong></a></li><li><a href="https://www.tomsguide.com/ai/i-asked-chatgpt-gemini-claude-and-perplexity-to-rank-the-10-jobs-most-likely-to-be-replaced-by-ai-heres-what-they-all-agreed-on"><strong>I asked ChatGPT, Gemini, Claude and Perplexity to rank the 10 jobs most likely to be replaced by AI — here's what they all agreed on</strong></a></li><li><a href="https://www.tomsguide.com/ai/claude/claude-fable-5-1-is-here-this-one-prompt-shows-what-it-can-really-do"><strong>Claude Fable 5.1 is here — this one prompt shows what it can really do</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/ai-is-turning-ordinary-photos-of-kids-into-sexual-abuse-imagery-heres-how-to-protect-your-family</link>
                                                                            <description>
                            <![CDATA[ AI tools can turn ordinary photos of children into sexual abuse imagery. Here's how parents can reduce the risk and what to do if it happens. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SMyC9P7sQtUNikxoA6MWin</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mxDfB2VNSY5Z4wWT6gPDxm-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 08 Sep 2026 17:16:27 +0000</pubDate>                                                                                                                                <updated>Tue, 08 Sep 2026 19:00:32 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/mxDfB2VNSY5Z4wWT6gPDxm-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images/Pavol Svantner]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Silohuette of children]]></media:description>                                                            <media:text><![CDATA[Silohuette of children]]></media:text>
                                <media:title type="plain"><![CDATA[Silohuette of children]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mxDfB2VNSY5Z4wWT6gPDxm-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>A picture of my children at the beach, my son playing soccer or even my entire family, smiling in front of our house are all examples of photos I've posted to social media. I know I'm not alone, considering just how often I've seen similar images highlighting the goings-on of modern lives. <br><br>But AI has created a disturbing new risk that allows the use of ordinary photos of real children like the ones I mentioned above, to be manipulated into sexual abuse imagery without the child — or their parents — ever knowing.<br><br>To be clear, this is not a theoretical threat.</p><h2 id="332-ai-generated-child-sexual-abuse-ads-slipped-through">332 AI-generated child sexual abuse ads slipped through</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:7110px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="bZGXCBzoz5wEX4K8t872MR" name="shutterstock_2652715669" alt="This illustrates digital connectivity with a mobile device, highlighting the Meta platform, signifying modern communication, virtual reality, and engagement in the metaverse." src="https://cdn.mos.cms.futurecdn.net/bZGXCBzoz5wEX4K8t872MR.jpg" mos="" align="middle" fullscreen="" width="7110" height="4000" 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>A new investigation from the Tech Transparency Project (TTP) found hundreds of ads containing AI-generated child sexual abuse material (CSAM) running across Facebook and Instagram. Researchers identified four real children whose ordinary photos had been manipulated, according to <a href="https://www.wired.com/story/meta-failed-to-catch-hundreds-of-ai-child-abuse-ads-some-included-images-of-real-kids/" target="_blank">WIRED</a>, including two teenage influencers, a preteen whose image appeared on a stock-photo site and a young member of a European royal family.</p><p>In total, TTP found 332 ads containing AI-generated child sexual abuse material, or CSAM. Most depicted a child whose photograph had been manipulated using AI to make it appear they were performing a sexual act.</p><p>The findings are an alarming reminder of <a href="https://www.tomsguide.com/ai/ai-image-video/all-she-did-was-change-the-face-i-spoke-to-a-creator-whose-video-was-stolen-and-reskinned-with-ai">how generative AI has changed the risks around sharing photos of children online</a>. Creating convincing fake imagery no longer requires an explicit photograph in the first place. An ordinary picture can provide the raw material.</p><h2 id="how-ordinary-photos-become-ai-generated-abuse">How ordinary photos become AI-generated abuse</h2><p><a href="https://www.tomsguide.com/phones/i-tested-the-ai-photo-editing-tools-for-iphone-vs-google-pixel-vs-samsung-galaxy-and-theres-a-clear-winner">Generative AI image tools can take an existing photograph and modify parts of it</a> while preserving recognizable features of the person in the original.</p><p>That's what researchers say happened to several of the children identified in the <a href="https://www.tomsguide.com/ai/meta-will-start-using-your-ai-chats-to-target-ads-heres-what-that-means-and-why-critics-like-joseph-gordon-levitt-are-pushing-back">Meta ads</a>.</p><p>According to WIRED, researchers were able to trace images of four minors back to their original sources. Two were teenage influencers with public social media accounts. Another was a preteen whose photograph was available through a stock-photo website. The fourth was a young member of a European royal family.</p><p>None of those original photographs needed to contain sexual material for them to be misused.</p><p>"AI apps are making it far too easy to create realistic criminal imagery of child sexual abuse, creating the new risk of everyday photos of children being taken and transformed into sexual content," Emma Hardy, director of communications at the Internet Watch Foundation, told WIRED.</p><p>Once an ordinary image is publicly accessible, someone can potentially download it and feed it into an AI tool designed to alter photographs.</p><h2 id="meta-39-s-ai-didn-39-t-catch-hundreds-of-the-ads">Meta's AI didn't catch hundreds of the ads</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:9375px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="d6qmGSnFFXo6yGiczVTtSb" name="shutterstock_2663776741-2" alt="mark zuckerberg" src="https://cdn.mos.cms.futurecdn.net/d6qmGSnFFXo6yGiczVTtSb.jpg" mos="" align="middle" fullscreen="" width="9375" height="5273" 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>The scale of the latest investigation also shows how difficult the resulting content can be to stop. </p><p>In August, TTP researchers initially uncovered 53 ads containing child sexual abuse material across Meta's platforms. Meta subsequently said many of those ads had appeared before the company introduced new AI technology intended to improve its ability to detect violating ads when they were uploaded.</p><p>However, researchers kept finding them. In fact, TTP says it ultimately identified 332 ads containing AI-generated CSAM, with hundreds appearing after Meta had announced its improved detection technology.</p><p>That is particularly significant because these weren't simply Facebook or Instagram posts that escaped moderation. They were paid advertisements.</p><p>Meta says ads are reviewed before they're allowed to run and that automated systems play a major role in that process.</p><p>Meta spokesperson Tracy Clayton told WIRED that the company does not tolerate nudify apps or child exploitation, whether the imagery involves real children or is generated by AI. Meta said bad actors deliberately attempt to evade its detection systems and that some of the videos were harder to detect because images of children appeared only briefly or were blurred.</p><p>The company said many of the ads researchers identified had already been removed, most received fewer than 200 impressions and it received less than $5,000 in payments from the ads. But researchers documented instances in which exposure increased after an ad was reported.</p><p>TTP says one ad involving a real teenager had reached four European accounts when it was reported to Meta. Several days later, when Meta removed it, the ad had reached more than 330.</p><h2 id="the-investigation-shows-the-tools-are-mainstream">The investigation shows the tools are mainstream</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="nr2x3V7xnj4xZB2RREsezb" name="year in AI 2023.jpg" alt="An AI generated image of Elon Musk on a unicorn, the ChatGPT logo on a phone and a screen shot from a video of a robot from Runway" src="https://cdn.mos.cms.futurecdn.net/nr2x3V7xnj4xZB2RREsezb.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: Midjourney, Shutterstock, Runway )</span></figcaption></figure><p>Researchers found ads directing people toward nearly 50 apps available through Apple's App Store and Google's Play Store. Around 300 of the roughly 350 ads examined in the broader investigation promoted AI image or video generators, according to WIRED.</p><p>Apple told WIRED that some developers initially submitted compliant versions of their apps before subsequently adding prohibited nudification capabilities. Apple said it removed 17 of 20 apps identified by researchers and took action against the remaining three, as well as seven additional apps WIRED identified.</p><p>Google said it removed all apps included in the report and suspended hundreds of other apps for violating its policies. </p><p>Still, these finding reveal a problem that extends beyond any single platform because AI can be used to create the imagery. An app store can distribute the tool used to make it. An advertising platform can then distribute ads promoting it.</p><p>Each layer may have its own safety systems, but abusive material only needs to slip through those systems once to reach users.</p><h2 id="what-to-do-if-you-find-an-ai-generated-image-of-your-child">What to do if you find an AI-generated image of your child</h2><p>If you discover sexualized AI imagery involving your child, don't repost or widely share the image in an attempt to warn others.</p><p>Instead, preserve information that can help identify where the material appeared, such as the account name, page address and other surrounding details, and report the content directly to the platform.</p><p>In the U.S., suspected child sexual exploitation can also be reported to the <a href="https://www.missingkids.org/gethelpnow/cybertipline" target="_blank">National Center for Missing & Exploited Children's CyberTipline.</a></p><p>Parents can also use <a href="https://takeitdown.ncmec.org/" target="_blank">NCMEC's Take It Down service</a>, which is designed to help stop the online sharing of nude, partially nude or sexually explicit images or videos involving someone who was under 18. The system creates a digital fingerprint, or hash, from an image without requiring the image itself to be uploaded.</p><p>Since AI-generated imagery creates newer and more complicated scenarios, parents who aren't sure whether a manipulated image qualifies should still report what they've found rather than trying to determine that themselves.</p><h2 id="the-takeaway">The takeaway</h2><p>Parents have been warned about "sharenting" and children's digital footprints for years. Sharenting is a term that combines "sharing" and "parenting" and is the practice of parents sharing images, videos and personal details about their children on social media. </p><p>Although parents can't entirely eliminate the risk of AI abuse on the images or videos they post, but reducing the number of publicly accessible photos of your children and being more selective about what you share, can reduce the amount of material available to people who might misuse it.</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/ai/chatgpt/chatgpt-6-astra-is-here-this-one-prompt-shows-what-it-can-really-do"><strong>ChatGPT-6 Astra is here — this one prompt shows what it can really do</strong></a></li><li><a href="https://www.tomsguide.com/ai/i-asked-chatgpt-gemini-claude-and-perplexity-to-rank-the-10-jobs-most-likely-to-be-replaced-by-ai-heres-what-they-all-agreed-on"><strong>I asked ChatGPT, Gemini, Claude and Perplexity to rank the 10 jobs most likely to be replaced by AI — here's what they all agreed on</strong></a></li><li><a href="https://www.tomsguide.com/ai/claude/claude-fable-5-1-is-here-this-one-prompt-shows-what-it-can-really-do"><strong>Claude Fable 5.1 is here — this one prompt shows what it can really do</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ NordVPN's Next-Gen Antivirus scores 94% in independent phishing and malware testing ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a>'s <a href="https://www.tomsguide.com/computing/vpns/nordvpn-combines-vpn-and-next-generation-antivirus-into-one-app">next-gen antivirus</a> has achieved a 94% phishing detection rate in AV-Comparatives' latest anti-phishing test, ranking third among security products in the independent evaluation. The result our choice as the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPN</a> behind only Avast One Free Antivirus and Norton Antivirus Plus, both of which scored 96%.</p><p>The <a href="https://www.av-comparatives.org/wp-content/uploads/2026/08/phishing_comp_Q3-2026.pdf" target="_blank" rel="nofollow">test</a>, which ran from August 12–22, 2026, assessed phishing-page detection rates across 250 live phishing URLs, with an additional 250 legitimate URLs used to check for false positives. NordVPN recorded zero false alarms – a result that puts it ahead of Malwarebytes Premium and Webroot SecureAnywhere Internet Security Plus, both of which triggered false positives during the evaluation.</p><p>The findings come as NordVPN continues to reposition itself as an all-in-one digital security app. The company's <a href="https://www.tomsguide.com/computing/vpns/nordvpn-combines-vpn-and-next-generation-antivirus-into-one-app">recent rebrand</a> saw Threat Protection Pro renamed as "next-generation antivirus," placing it alongside its VPN and Dark Web Monitor as one of three core pillars of the product.</p><h2 id="how-does-nordvpn-compare">How does NordVPN compare?</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UtDZFoTmPNBWUcdJsQqvG" name="NordVPN 2026 phishing test results" alt="Graph displaying the test's results" src="https://cdn.mos.cms.futurecdn.net/UtDZFoTmPNBWUcdJsQqvG.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" 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>Finishing third among nine security products is a strong result, but the detail behind NordVPN's score is arguably just as telling as the number itself. Avast One Free Antivirus and Norton Antivirus Plus both edged it out with 96% detection rates, but the gap is narrow – a two-percentage-point difference across 250 live phishing URLs amounts to five URLs.</p><p>The rest of the field tells its own story. At the other end of the table, Dr. Web Security Space managed just 57% and K7 Total Security 70% – results that illustrate how inconsistent phishing protection remains across the security products market, even among established names. </p><p>NordVPN's advantage over the field is clearest on false positives. It was one of seven security products to record zero false alarms – and false positives erode confidence in a security tool just as surely as missed threats do.</p><p>"Phishing is a numbers game for attackers, and they're very good at it," said Domininkas Virbickas, product director at NordVPN. "Anybody might slip up eventually, and when you do click on something you shouldn't, that's where we step in."</p><h2 id="a-strong-track-record-in-independent-testing">A strong track record in independent testing</h2><p>This is not the first time NordVPN's threat protection feature has performed well under independent scrutiny. In November 2024, AV-TEST – a German independent IT security research institute – <a href="https://www.tomsguide.com/computing/online-security/nords-threat-protection-pro-rated-the-best-vpn-malware-protection">previously rated</a> Threat Protection Pro the best VPN tool for malware protection, achieving an 83.42% total detection rate across 3,209 tested links. That result placed it well ahead of the next-best VPN tested, IPVanish, which scored 46.96%.</p><p>NordVPN also has history with AV-Comparatives specifically. In June 2024, it became the first VPN provider to earn the organisation's <a href="https://www.tomsguide.com/computing/vpns/nordvpn-certified-as-the-only-anti-phishing-vpn-for-the-second-year-running">anti-phishing protection badge</a> – a significant distinction given that AV-Comparatives is best known for evaluating dedicated antivirus software, not VPNs. Earning the badge requires a minimum 85% detection rate with zero false alarms on legitimate sites, a bar not all established antivirus products have cleared. The August 2026 result, at 94%, clears it by some distance.</p><p>NordVPN's next-gen antivirus is available on Plus plans and above – the feature was previously known as Threat Protection Pro, and is included across Plus, Complete, and Prime tiers. </p><div data-widget-type="merchantlink" data-model-name="NordVPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/nordvpns-next-gen-antivirus-scores-94-percent-in-independent-phishing-and-malware-testing</link>
                                                                            <description>
                            <![CDATA[ NordVPN's next-gen antivirus scored 94% in AV-Comparatives' August 2026 anti-phishing test, finishing third among security products behind Avast and Norton, with no false positives. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rxV2uExpVnrLzHBWK6JMDe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BK6jKgGh8BGjbBSEnE5VDL-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 04 Sep 2026 10:56:09 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/BK6jKgGh8BGjbBSEnE5VDL-1280-80.png">
                                                            <media:credit><![CDATA[NordVPN]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[NordVPN in action protecting a phone and laptop simultaneously]]></media:description>                                                            <media:text><![CDATA[NordVPN in action protecting a phone and laptop simultaneously]]></media:text>
                                <media:title type="plain"><![CDATA[NordVPN in action protecting a phone and laptop simultaneously]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BK6jKgGh8BGjbBSEnE5VDL-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a>'s <a href="https://www.tomsguide.com/computing/vpns/nordvpn-combines-vpn-and-next-generation-antivirus-into-one-app">next-gen antivirus</a> has achieved a 94% phishing detection rate in AV-Comparatives' latest anti-phishing test, ranking third among security products in the independent evaluation. The result our choice as the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPN</a> behind only Avast One Free Antivirus and Norton Antivirus Plus, both of which scored 96%.</p><p>The <a href="https://www.av-comparatives.org/wp-content/uploads/2026/08/phishing_comp_Q3-2026.pdf" target="_blank" rel="nofollow">test</a>, which ran from August 12–22, 2026, assessed phishing-page detection rates across 250 live phishing URLs, with an additional 250 legitimate URLs used to check for false positives. NordVPN recorded zero false alarms – a result that puts it ahead of Malwarebytes Premium and Webroot SecureAnywhere Internet Security Plus, both of which triggered false positives during the evaluation.</p><p>The findings come as NordVPN continues to reposition itself as an all-in-one digital security app. The company's <a href="https://www.tomsguide.com/computing/vpns/nordvpn-combines-vpn-and-next-generation-antivirus-into-one-app">recent rebrand</a> saw Threat Protection Pro renamed as "next-generation antivirus," placing it alongside its VPN and Dark Web Monitor as one of three core pillars of the product.</p><h2 id="how-does-nordvpn-compare">How does NordVPN compare?</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UtDZFoTmPNBWUcdJsQqvG" name="NordVPN 2026 phishing test results" alt="Graph displaying the test's results" src="https://cdn.mos.cms.futurecdn.net/UtDZFoTmPNBWUcdJsQqvG.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" 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>Finishing third among nine security products is a strong result, but the detail behind NordVPN's score is arguably just as telling as the number itself. Avast One Free Antivirus and Norton Antivirus Plus both edged it out with 96% detection rates, but the gap is narrow – a two-percentage-point difference across 250 live phishing URLs amounts to five URLs.</p><p>The rest of the field tells its own story. At the other end of the table, Dr. Web Security Space managed just 57% and K7 Total Security 70% – results that illustrate how inconsistent phishing protection remains across the security products market, even among established names. </p><p>NordVPN's advantage over the field is clearest on false positives. It was one of seven security products to record zero false alarms – and false positives erode confidence in a security tool just as surely as missed threats do.</p><p>"Phishing is a numbers game for attackers, and they're very good at it," said Domininkas Virbickas, product director at NordVPN. "Anybody might slip up eventually, and when you do click on something you shouldn't, that's where we step in."</p><h2 id="a-strong-track-record-in-independent-testing">A strong track record in independent testing</h2><p>This is not the first time NordVPN's threat protection feature has performed well under independent scrutiny. In November 2024, AV-TEST – a German independent IT security research institute – <a href="https://www.tomsguide.com/computing/online-security/nords-threat-protection-pro-rated-the-best-vpn-malware-protection">previously rated</a> Threat Protection Pro the best VPN tool for malware protection, achieving an 83.42% total detection rate across 3,209 tested links. That result placed it well ahead of the next-best VPN tested, IPVanish, which scored 46.96%.</p><p>NordVPN also has history with AV-Comparatives specifically. In June 2024, it became the first VPN provider to earn the organisation's <a href="https://www.tomsguide.com/computing/vpns/nordvpn-certified-as-the-only-anti-phishing-vpn-for-the-second-year-running">anti-phishing protection badge</a> – a significant distinction given that AV-Comparatives is best known for evaluating dedicated antivirus software, not VPNs. Earning the badge requires a minimum 85% detection rate with zero false alarms on legitimate sites, a bar not all established antivirus products have cleared. The August 2026 result, at 94%, clears it by some distance.</p><p>NordVPN's next-gen antivirus is available on Plus plans and above – the feature was previously known as Threat Protection Pro, and is included across Plus, Complete, and Prime tiers. </p><div data-widget-type="merchantlink" data-model-name="NordVPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Over 150 million driver's licenses stolen in massive data breach after hackers reportedly hit major identity verificationcompany — what to do now ]]></title>
                                                                                                <dc:content><![CDATA[ <p>In what has to be one of the biggest data breaches to date, a security researcher discovered a hacker who appeared to be selling access to a database of over 153 million driver's licenses from the United States and Canada, including IDs for Pete Hegseth, the current U.S. Defense Secretary (the Defense Department is reportedly aware and investigating).</p><p>The breach was spotted by <a href="https://krebsonsecurity.com/2026/09/fbi-probes-service-selling-153m-drivers-licenses/#more-74231" target="_blank">security journalist Brian Krebs</a> in a report claiming that the hacker created a site called Nexus and claimed to have access to digital scans of 153,347,439 identity cards. </p><p>"A quick look around Nexus finds they are likely not exaggerating about that 153 million number: Running a blank search in Nexus (with no search parameters entered) returns approximately 11.5 million pages of results, with roughly 15 results displayed per page," Krebs wrote.</p><p>In a forum post from a Russian cybercrime site, Nexus allegedly sourced the scans from "major identity verification company," suggesting that the hackers had or have basically real-time access to the company's systems. </p><h2 id="how-it-happened">How it happened</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:1000px;"><p class="vanilla-image-block" style="padding-top:57.60%;"><img id="GRAZp3ysKBXB984jp69j54" name="id-fraud-illo-shst.jpg" alt="Words 'ID Fraud" highlighted on dark field of ones and zeros." src="https://cdn.mos.cms.futurecdn.net/GRAZp3ysKBXB984jp69j54.jpg" mos="" align="middle" fullscreen="" width="1000" height="576" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: alexskopje/Shutterstock)</span></figcaption></figure><p>Krebs found his own driver's license was among the searchable records. He also found Hegseth, whose photo was listed on the site. </p><p>Krebs worked with security researcher<a href="https://bsky.app/profile/thezedwards.bsky.social/post/3muikr2wbcs2u" target="_blank"> Zach Edwards</a>, whose ID was also in the breach, and identified the company IDScan as the potential source of the leak. The company, based out of Louisiana, is used by multiple companies to verify millions of IDs from around the globe. </p><p>"Based on all the details in the article and how Brian was literally able to dox me (and the timing of the screenshot of my license being added into the system aligning to my trip), all the signs point to IDscan having a hellacious ongoing real-time breach of their data. This is a massive vendor," Edwards wrote on Bluesky.</p><h2 id="investigations-and-concerns">Investigations and concerns</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:6720px;"><p class="vanilla-image-block" style="padding-top:61.52%;"><img id="gNCNRoAsizedMsrzwHCpMJ" name="FBI .jpg" alt="An FBI agent typing on a computer" src="https://cdn.mos.cms.futurecdn.net/gNCNRoAsizedMsrzwHCpMJ.jpg" mos="" align="middle" fullscreen="" width="6720" height="4134" 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>Per Krebs, the FBI and IDScan are both investigating the breach. Tom's Guide reached out to both organizations but did not receive a reply in time for posting.</p><p>“At this point I’m not able to share any additional information, but the updates you have provided have been welcome and helpful to our team’s investigation,” an IDScan spokesperson told Krebs.</p><p>A commenter on Krebs story claims that his company received a data breach notification from IDscan:</p><p>"Earlier today, September 1, we received information suggesting that certain information may have been exposed and that IDScan.net may be implicated. We are working urgently to validate that information and determine whether any unauthorized access occurred, and the scope of such activity," the note reportedly reads.</p><p>It goes on to say that the company has taken steps to secure its system, notified partner companies, engaged legal counsel, and is conducting a third-party forensic investigation. </p><p>Nexus apparently went down shortly after Krebs' report went live. Though it's possible it could return under a different domain.</p><p>A data breach like this is terrifying at the best of times, but it happens to come at a time just as governments across the globe are attempting to roll out age-verification laws that require adults to upload or scan identity documents in order to prove they can access websites or apps — generally adult content. <a href="https://www.eff.org/deeplinks/2025/12/year-states-chose-surveillance-over-safety-2025-review" target="_blank">Privacy advocates and security researchers have already warned</a> that the laws put people's data at risk.</p><h2 id="how-to-stay-safe">How to stay safe </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="t7MsroJkoSVd32LsYjatBg" name="Level-Lock-Install.jpg" alt="Level Lock smart lock review" src="https://cdn.mos.cms.futurecdn.net/t7MsroJkoSVd32LsYjatBg.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: Level)</span></figcaption></figure><p>Edwards ID was likely scanned when he went to a cannabis dispensary that has a contract with IDScan. Krebs believes his was scanned when he rented a car from Hertz last year. He also found his mom's ID from around the same time. </p><p>There are plenty of places where your ID could get scanned, from car rental agencies to bars and even the TSA. In the meantime, I would suggest requesting that your ID not be scanned by companies that demand it during check out or check in.</p><p>While we don't know if the Nexus database will return, it would be good form to take these <a href="https://www.tomsguide.com/what-is-a-data-breach-notification-letter">seven steps to stay safe after a data breach</a>.</p><p>That includes signing up for one <a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html">best identity theft protection services</a>. As always, you'll want to be on high alert for <a href="https://www.tomsguide.com/reference/what-are-phishing-scams">phishing attacks </a>and <a href="https://www.tomsguide.com/news/this-social-engineering-trick-can-infect-your-pc-with-malware-what-you-need-to-know">social engineering attacks</a>, especially ones that urge you to "act now." Avoid clicking on any links, <a href="https://www.tomsguide.com/computing/online-security/millions-hit-in-quishing-attacks-as-malicious-qr-codes-surge-how-to-stay-safe">QR codes</a>, or attachments from <a href="https://www.tomsguide.com/news/avoid-these-email-attachments-if-you-dont-want-to-get-phished">unknown senders</a>.</p><p>Beyond that, you should consider a password overhaul by creating <a href="https://www.tomsguide.com/opinion/im-a-security-editor-and-this-is-how-i-create-strong-passwords-that-are-also-easy-to-remember">strong, complex passwords</a> for all of your accounts but you can also use one of the <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">best password managers </a>to do so for you instead.</p><p>Even without a massive data breach, these are generally good practices just to keep your side of the street clean since companies are increasingly unable to do so.</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/computing/online-security/more-than-9-5-million-patient-records-affected-by-aesto-health-data-breach-what-you-need-to-know">More than 9.5 million patient records affected by Aesto Health data breach: what you need to know</a></li><li><a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html">We put the best identity theft protection to the test to protect your entire digital life — these are the services I recommend</a></li><li><a href="https://www.tomsguide.com/vehicle-tech/evs/have-you-been-flocked-heres-how-to-look-up-automatic-license-plate-readers-in-your-area">Have you been 'Flocked'? Here's how to look up automatic license plate readers in your area</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/over-150-million-drivers-licenses-stolen-in-massive-data-breach-after-hackers-reportedly-hit-major-identity-verification-company-what-to-do-now</link>
                                                                            <description>
                            <![CDATA[ A potentially massive data breach was discovered by a security researcher who found a database of over 150 million exposed driver's licenses. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wxjaP9TvZgPRxHCoeFTUYk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Kn9pdSSoxQBASCh6CCvEWX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 02 Sep 2026 21:49:44 +0000</pubDate>                                                                                                                                <updated>Wed, 02 Sep 2026 21:54:56 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;br&gt;Send secure tips on Signal: scyo1.55.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Kn9pdSSoxQBASCh6CCvEWX-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[drivers licenses from different states]]></media:description>                                                            <media:text><![CDATA[drivers licenses from different states]]></media:text>
                                <media:title type="plain"><![CDATA[drivers licenses from different states]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Kn9pdSSoxQBASCh6CCvEWX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In what has to be one of the biggest data breaches to date, a security researcher discovered a hacker who appeared to be selling access to a database of over 153 million driver's licenses from the United States and Canada, including IDs for Pete Hegseth, the current U.S. Defense Secretary (the Defense Department is reportedly aware and investigating).</p><p>The breach was spotted by <a href="https://krebsonsecurity.com/2026/09/fbi-probes-service-selling-153m-drivers-licenses/#more-74231" target="_blank">security journalist Brian Krebs</a> in a report claiming that the hacker created a site called Nexus and claimed to have access to digital scans of 153,347,439 identity cards. </p><p>"A quick look around Nexus finds they are likely not exaggerating about that 153 million number: Running a blank search in Nexus (with no search parameters entered) returns approximately 11.5 million pages of results, with roughly 15 results displayed per page," Krebs wrote.</p><p>In a forum post from a Russian cybercrime site, Nexus allegedly sourced the scans from "major identity verification company," suggesting that the hackers had or have basically real-time access to the company's systems. </p><h2 id="how-it-happened">How it happened</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:1000px;"><p class="vanilla-image-block" style="padding-top:57.60%;"><img id="GRAZp3ysKBXB984jp69j54" name="id-fraud-illo-shst.jpg" alt="Words 'ID Fraud" highlighted on dark field of ones and zeros." src="https://cdn.mos.cms.futurecdn.net/GRAZp3ysKBXB984jp69j54.jpg" mos="" align="middle" fullscreen="" width="1000" height="576" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: alexskopje/Shutterstock)</span></figcaption></figure><p>Krebs found his own driver's license was among the searchable records. He also found Hegseth, whose photo was listed on the site. </p><p>Krebs worked with security researcher<a href="https://bsky.app/profile/thezedwards.bsky.social/post/3muikr2wbcs2u" target="_blank"> Zach Edwards</a>, whose ID was also in the breach, and identified the company IDScan as the potential source of the leak. The company, based out of Louisiana, is used by multiple companies to verify millions of IDs from around the globe. </p><p>"Based on all the details in the article and how Brian was literally able to dox me (and the timing of the screenshot of my license being added into the system aligning to my trip), all the signs point to IDscan having a hellacious ongoing real-time breach of their data. This is a massive vendor," Edwards wrote on Bluesky.</p><h2 id="investigations-and-concerns">Investigations and concerns</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:6720px;"><p class="vanilla-image-block" style="padding-top:61.52%;"><img id="gNCNRoAsizedMsrzwHCpMJ" name="FBI .jpg" alt="An FBI agent typing on a computer" src="https://cdn.mos.cms.futurecdn.net/gNCNRoAsizedMsrzwHCpMJ.jpg" mos="" align="middle" fullscreen="" width="6720" height="4134" 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>Per Krebs, the FBI and IDScan are both investigating the breach. Tom's Guide reached out to both organizations but did not receive a reply in time for posting.</p><p>“At this point I’m not able to share any additional information, but the updates you have provided have been welcome and helpful to our team’s investigation,” an IDScan spokesperson told Krebs.</p><p>A commenter on Krebs story claims that his company received a data breach notification from IDscan:</p><p>"Earlier today, September 1, we received information suggesting that certain information may have been exposed and that IDScan.net may be implicated. We are working urgently to validate that information and determine whether any unauthorized access occurred, and the scope of such activity," the note reportedly reads.</p><p>It goes on to say that the company has taken steps to secure its system, notified partner companies, engaged legal counsel, and is conducting a third-party forensic investigation. </p><p>Nexus apparently went down shortly after Krebs' report went live. Though it's possible it could return under a different domain.</p><p>A data breach like this is terrifying at the best of times, but it happens to come at a time just as governments across the globe are attempting to roll out age-verification laws that require adults to upload or scan identity documents in order to prove they can access websites or apps — generally adult content. <a href="https://www.eff.org/deeplinks/2025/12/year-states-chose-surveillance-over-safety-2025-review" target="_blank">Privacy advocates and security researchers have already warned</a> that the laws put people's data at risk.</p><h2 id="how-to-stay-safe">How to stay safe </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="t7MsroJkoSVd32LsYjatBg" name="Level-Lock-Install.jpg" alt="Level Lock smart lock review" src="https://cdn.mos.cms.futurecdn.net/t7MsroJkoSVd32LsYjatBg.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: Level)</span></figcaption></figure><p>Edwards ID was likely scanned when he went to a cannabis dispensary that has a contract with IDScan. Krebs believes his was scanned when he rented a car from Hertz last year. He also found his mom's ID from around the same time. </p><p>There are plenty of places where your ID could get scanned, from car rental agencies to bars and even the TSA. In the meantime, I would suggest requesting that your ID not be scanned by companies that demand it during check out or check in.</p><p>While we don't know if the Nexus database will return, it would be good form to take these <a href="https://www.tomsguide.com/what-is-a-data-breach-notification-letter">seven steps to stay safe after a data breach</a>.</p><p>That includes signing up for one <a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html">best identity theft protection services</a>. As always, you'll want to be on high alert for <a href="https://www.tomsguide.com/reference/what-are-phishing-scams">phishing attacks </a>and <a href="https://www.tomsguide.com/news/this-social-engineering-trick-can-infect-your-pc-with-malware-what-you-need-to-know">social engineering attacks</a>, especially ones that urge you to "act now." Avoid clicking on any links, <a href="https://www.tomsguide.com/computing/online-security/millions-hit-in-quishing-attacks-as-malicious-qr-codes-surge-how-to-stay-safe">QR codes</a>, or attachments from <a href="https://www.tomsguide.com/news/avoid-these-email-attachments-if-you-dont-want-to-get-phished">unknown senders</a>.</p><p>Beyond that, you should consider a password overhaul by creating <a href="https://www.tomsguide.com/opinion/im-a-security-editor-and-this-is-how-i-create-strong-passwords-that-are-also-easy-to-remember">strong, complex passwords</a> for all of your accounts but you can also use one of the <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">best password managers </a>to do so for you instead.</p><p>Even without a massive data breach, these are generally good practices just to keep your side of the street clean since companies are increasingly unable to do so.</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/computing/online-security/more-than-9-5-million-patient-records-affected-by-aesto-health-data-breach-what-you-need-to-know">More than 9.5 million patient records affected by Aesto Health data breach: what you need to know</a></li><li><a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html">We put the best identity theft protection to the test to protect your entire digital life — these are the services I recommend</a></li><li><a href="https://www.tomsguide.com/vehicle-tech/evs/have-you-been-flocked-heres-how-to-look-up-automatic-license-plate-readers-in-your-area">Have you been 'Flocked'? Here's how to look up automatic license plate readers in your area</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ More than 9.5 million patient records affected by Aesto Health data breach: what you need to know ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Aesto Health recently disclosed a data breach affecting more than 9.5 million people. Aesto is a software company for healthcare organizations that produces solutions to help them organize patient data when replacing health records systems.</p><p>Spotted by <a href="https://www.bleepingcomputer.com/news/security/aesto-health-says-data-breach-affects-over-95-million-patients/" target="_blank">Bleeping Computer</a>, the company first posted a notice of the attack on June 24 <a href="https://www.aestohealth.com/notice-of-data-security-incident-12-18-25/" target="_blank">via its website</a>. However, the actual incursion took place over two weeks in December of 2025. It apparently wasn't discovered until May 26 of this year. </p><p>"After an extensive forensic investigation and manual document review, on May 26, 2026, we confirmed that between on or about December 2, 2025, and December 18, 2025, certain protected health information belonging to patients of various Covered Entity clients stored within Aesto’s network may have been accessed and/or acquired by an unauthorized actor," the notice reads.</p><p>Apparently, the breach involved unauthorized access via Aesto's Amazon Web Services infrastructure.</p><h2 id="what-was-taken">What was taken</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:3220px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="3Z3Wti6A7WPFu3GSjmXoDd" name="shutterstock_48106810.jpg" alt="Hacker using a stolen social security card" src="https://cdn.mos.cms.futurecdn.net/3Z3Wti6A7WPFu3GSjmXoDd.jpg" mos="" align="middle" fullscreen="" width="3220" height="1811" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blazej Lyjak/Shutterstock)</span></figcaption></figure><p>In its report, Aesto Health confirmed that the breach affects 9,540,683 people. Unfortunately, that data included full names, dates of birth, medical information, driver's license numbers, financial account numbers, health insurance information, taxpayer ID numbers, Social Security numbers and other government identification numbers.</p><p>According to the <a href="https://www.hipaajournal.com/aesto-health-data-breach/" target="_blank">HIPAA Journal</a>, the breach spans 29 different organizations including Edwards County Medical Center, Marana Health, My Doctor, LLC, the Nebraska Orthopedic Center and Women's Health Associates. </p><p>The company started informing impacted individuals of the breach on August 21, providing details about the incident and providing identity theft protection and credit monitoring via Experian.</p><p>As noted by Bleeping Computer, this incident follows an unfortunate series of breaches that have affected health care companies including CareCloud, Nutex Health, iRhythm and McKesson. The breaches have ranged in size from a couple of hundred thousand to millions of records.</p><p>Per Aesto Health and our own review, no threat groups have publicly claimed the attack, unlike other recent ones claimed by the hacker group ShinyHunters.</p><h2 id="how-to-stay-safe-after-a-data-breach">How to stay safe after a data breach</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:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LMDEozUrCU7N8gtDxeKte3" name="SEXM8ah9EKKpBKB22d7Ak3.jpg" alt="An open lock depicting a data breach" src="https://cdn.mos.cms.futurecdn.net/LMDEozUrCU7N8gtDxeKte3.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: Shutterstock)</span></figcaption></figure><p>Check out the full list of companies from the HIPAA Journal, and if you've used any health care organization, you might receive a <a href="https://www.tomsguide.com/what-is-a-data-breach-notification-letter"><u>data breach notification letter</u></a> from Aesto. If you do, take advantage of the Experian coverage. Keep an eye on your mailbox since notification letters arrive the old-fashioned way.</p><p>Even if Aesto doesn't send you a notification letter, you may want to take advantage of one of the <a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html"><u>best identity theft protection services </u></a>to protect your identity.</p><p>While no one has claimed the attachment, a bad actor could use your information to launch <a href="https://www.tomsguide.com/news/personal-data-of-millions-of-americans-exposed-in-global-cyber-attack-what-you-need-to-know">targeted phishing attacks</a>. Phishing emails could contain <a href="https://www.tomsguide.com/computing/online-security/that-unsubscribe-link-is-actually-a-hidden-security-risk-do-this-instead">malicious links</a> or even malware.</p><p>Health companies appear especially vulnerable as the summer comes to a close, and every company should be taking this threat seriously. Hopefully, companies are bolstering their cybersecurity right now.</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/us/best-identity-theft-protection,review-2083.html">We put the best identity theft protection to the test to protect your entire digital life — these are the services I recommend</a></li><li><a href="https://www.tomsguide.com/vehicle-tech/evs/have-you-been-flocked-heres-how-to-look-up-automatic-license-plate-readers-in-your-area">Have you been 'Flocked'? Here's how to look up automatic license plate readers in your area</a></li><li><a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">We've tested the best antivirus software and these are the 5 I recommend right now</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/more-than-9-5-million-patient-records-affected-by-aesto-health-data-breach-what-you-need-to-know</link>
                                                                            <description>
                            <![CDATA[ Aesto Health has confirmed a data breach that affects more than 9.5 million patients. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">F2ZzEtrQ5fxGZTWrcQ75BD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WhwNyWzQHzVnY49UeT8UsS-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 02 Sep 2026 18:58:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;br&gt;Send secure tips on Signal: scyo1.55.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WhwNyWzQHzVnY49UeT8UsS-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Screen graphic showing data breach warning]]></media:description>                                                            <media:text><![CDATA[Screen graphic showing data breach warning]]></media:text>
                                <media:title type="plain"><![CDATA[Screen graphic showing data breach warning]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WhwNyWzQHzVnY49UeT8UsS-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Aesto Health recently disclosed a data breach affecting more than 9.5 million people. Aesto is a software company for healthcare organizations that produces solutions to help them organize patient data when replacing health records systems.</p><p>Spotted by <a href="https://www.bleepingcomputer.com/news/security/aesto-health-says-data-breach-affects-over-95-million-patients/" target="_blank">Bleeping Computer</a>, the company first posted a notice of the attack on June 24 <a href="https://www.aestohealth.com/notice-of-data-security-incident-12-18-25/" target="_blank">via its website</a>. However, the actual incursion took place over two weeks in December of 2025. It apparently wasn't discovered until May 26 of this year. </p><p>"After an extensive forensic investigation and manual document review, on May 26, 2026, we confirmed that between on or about December 2, 2025, and December 18, 2025, certain protected health information belonging to patients of various Covered Entity clients stored within Aesto’s network may have been accessed and/or acquired by an unauthorized actor," the notice reads.</p><p>Apparently, the breach involved unauthorized access via Aesto's Amazon Web Services infrastructure.</p><h2 id="what-was-taken">What was taken</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:3220px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="3Z3Wti6A7WPFu3GSjmXoDd" name="shutterstock_48106810.jpg" alt="Hacker using a stolen social security card" src="https://cdn.mos.cms.futurecdn.net/3Z3Wti6A7WPFu3GSjmXoDd.jpg" mos="" align="middle" fullscreen="" width="3220" height="1811" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blazej Lyjak/Shutterstock)</span></figcaption></figure><p>In its report, Aesto Health confirmed that the breach affects 9,540,683 people. Unfortunately, that data included full names, dates of birth, medical information, driver's license numbers, financial account numbers, health insurance information, taxpayer ID numbers, Social Security numbers and other government identification numbers.</p><p>According to the <a href="https://www.hipaajournal.com/aesto-health-data-breach/" target="_blank">HIPAA Journal</a>, the breach spans 29 different organizations including Edwards County Medical Center, Marana Health, My Doctor, LLC, the Nebraska Orthopedic Center and Women's Health Associates. </p><p>The company started informing impacted individuals of the breach on August 21, providing details about the incident and providing identity theft protection and credit monitoring via Experian.</p><p>As noted by Bleeping Computer, this incident follows an unfortunate series of breaches that have affected health care companies including CareCloud, Nutex Health, iRhythm and McKesson. The breaches have ranged in size from a couple of hundred thousand to millions of records.</p><p>Per Aesto Health and our own review, no threat groups have publicly claimed the attack, unlike other recent ones claimed by the hacker group ShinyHunters.</p><h2 id="how-to-stay-safe-after-a-data-breach">How to stay safe after a data breach</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:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LMDEozUrCU7N8gtDxeKte3" name="SEXM8ah9EKKpBKB22d7Ak3.jpg" alt="An open lock depicting a data breach" src="https://cdn.mos.cms.futurecdn.net/LMDEozUrCU7N8gtDxeKte3.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: Shutterstock)</span></figcaption></figure><p>Check out the full list of companies from the HIPAA Journal, and if you've used any health care organization, you might receive a <a href="https://www.tomsguide.com/what-is-a-data-breach-notification-letter"><u>data breach notification letter</u></a> from Aesto. If you do, take advantage of the Experian coverage. Keep an eye on your mailbox since notification letters arrive the old-fashioned way.</p><p>Even if Aesto doesn't send you a notification letter, you may want to take advantage of one of the <a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html"><u>best identity theft protection services </u></a>to protect your identity.</p><p>While no one has claimed the attachment, a bad actor could use your information to launch <a href="https://www.tomsguide.com/news/personal-data-of-millions-of-americans-exposed-in-global-cyber-attack-what-you-need-to-know">targeted phishing attacks</a>. Phishing emails could contain <a href="https://www.tomsguide.com/computing/online-security/that-unsubscribe-link-is-actually-a-hidden-security-risk-do-this-instead">malicious links</a> or even malware.</p><p>Health companies appear especially vulnerable as the summer comes to a close, and every company should be taking this threat seriously. Hopefully, companies are bolstering their cybersecurity right now.</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/us/best-identity-theft-protection,review-2083.html">We put the best identity theft protection to the test to protect your entire digital life — these are the services I recommend</a></li><li><a href="https://www.tomsguide.com/vehicle-tech/evs/have-you-been-flocked-heres-how-to-look-up-automatic-license-plate-readers-in-your-area">Have you been 'Flocked'? Here's how to look up automatic license plate readers in your area</a></li><li><a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">We've tested the best antivirus software and these are the 5 I recommend right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I got a sneak peek at TP-Link’s upcoming Wi-Fi 8 routers — and improved range and reliability are their biggest upgrades ]]></title>
                                                                                                <dc:content><![CDATA[ <p>From the start of the wireless networking era – even before it was called Wi-Fi – every new spec and generation of hardware was aimed at delivering faster speeds to do more things online at home. Not anymore, because <a href="https://www.tomsguide.com/computing/internet/i-just-got-my-first-glimpse-at-whats-possible-with-wi-fi-8-and-this-one-new-feature-has-me-really-excited">Wi-Fi 8</a> (aka. 802.11bn) takes a different approach, putting an emphasis on range and reliability to be able to stay online longer with fewer interruptions. </p><p>While it seems like a step sideways with a top speed of 46 Gbps that’s equivalent to <a href="https://www.tomsguide.com/reference/wi-fi-7-explained">Wi-Fi 7</a>, Wi-Fi 8 can do a lot to make home networking easier, more fulfilling and dependable. The new spec’s Ultra High Reliability (UHR) approach promotes better performance at long range, the ability to handle more data traffic and block interference. Spectral efficiency is the name of the game with Wi-Fi turning from squeezing more data into the air waves to making it easier to use and more reliable. </p><p>Buyer beware, as has been the case with every Wi-Fi generation, the router hardware precedes the general availability of client devices. At first, it can seem like a wireless tease, then, all of a sudden, there are new generation devices everywhere. In addition to the first Wi-Fi routers and mesh kits in the coming months, expect Wi-Fi 8, phones, computers and tablets in early-to-mid 2027. This will be followed by range extenders and USB upgrade kits late in the year. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OznRlO"></div>                            </div>                            <script src="https://kwizly.com/embed/OznRlO.js" async></script><h2 id="archer-8-ultra-and-deco-8-ultra">Archer 8 Ultra and Deco 8 Ultra</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="6Jx2Bvoo4BBUJ3Zz3z9mTT" name="Archer 8 Ultra Deco 8 Ultra Hero" alt="The TP-Link Archer 8 Ultra and Deco 8 Ultra next to each other on a colored background" src="https://cdn.mos.cms.futurecdn.net/6Jx2Bvoo4BBUJ3Zz3z9mTT.png" 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: TP-Link)</span></figcaption></figure><p>I got a sneak peek at what will likely be the first commercial Wi-Fi 8 routers from TP-Link, the company’s Archer 8 Ultra high performance router and Deco 8 Ultra mesh set. They each have functional designs, sleek lines and can theoretically move 19- and 22 Gbps, respectively. Powered by either Qualcomm’s Fast Connect 8800 or Broadcom’s BCM6718 chips, this networking gear is top shelf and aimed at high-performance users with two 10 Gbps inputs and USB ports for connecting a storage device across a network. </p><p>The IEEE 802.11bn spec isn’t close to being finalized and I do expect changes before it’s formally approved sometime in 2028. That said, the lack of finality hasn’t stopped the world’s Wi-Fi chip manufacturers and router makers from developing products. </p><p>If the past is any indication, the new routers will need a firmware update or three to add late changing aspects of the final Wi-Fi 8 spec. Plus, many router makers plan to introduce new routers that hit the main features on introduction and add items to them throughout 2027. Unfortunately, none of the current generation of Wi-Fi 7 routers can be upgraded to Wi-Fi 8.</p><p>How the routers will act is coming into focus. The big change that Wi-Fi 8 brings is better use of the 2.4-, 5.0- and 6.0 GHz frequency bands on which the data rides. It goes beyond 4K Quadrature Amplitude Modulation (QAM) and Multi-Link Operations (MLO) with what TP-Link calls its Stability Engine that will debut with the company’s Wi-Fi 8 hardware. </p><p>This can seem like an alphabet soup of engineering acronyms that starts with Unequal Modulation (UEQM) to make sure that each device can get to its full speed regardless of whether lower-speed clients are nearby. The New Modulation and Coding Scheme (MCS) takes this a step further by blocking interference that can lower throughput. Together, the techniques can improve throughput by 24% versus Wi-Fi 7, according to early tests.  </p><h2 id="antennas-by-the-dozen">Antennas by the dozen</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:1916px;"><p class="vanilla-image-block" style="padding-top:56.37%;"><img id="KMeckkoER2XvwZwC3MSfCY" name="Archer 8_1920x1080_02" alt="A close-up shot of the top of the TP-Link Archer 8 Ultra" src="https://cdn.mos.cms.futurecdn.net/KMeckkoER2XvwZwC3MSfCY.png" mos="" align="middle" fullscreen="" width="1916" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TP-Link)</span></figcaption></figure><p>Meanwhile, the routers have internal antennas galore. While the Archer 8 Ultra has no fewer than 18 antennas, the Deco 8 Ultra has a 5 transmit, 5 receive antenna arrangement. This can amount to a 1 to 3 dB increase in signal strength that can translate into greater throughput and range. </p><p>That’s just the start because the new antennas can help prevent frustrating disconnect and reconnect cycles that rob throughput. TP-Link’s engineers are going a step further by looking into pushing its antennas to the limit by making its transmission pattern adjustable. The feature would bias it horizontally (for a ranch house) or vertically (for a multi-story building). </p><p>Meanwhile, Wi-Fi 8’s Distributed Resource Units (DRU) and Enhanced Long Range (ELR) combine to increase coverage so that the signal can enliven <a href="https://www.tomsguide.com/opinion/when-and-when-not-to-use-a-wi-fi-extender-and-what-to-do-instead">Wi-Fi dead zones</a> with data. These techniques allow clients at the periphery to stay online despite a weak signal. If these changes pan out, my Wi-Fi experience could be vastly improved, from not losing my connection when listening to the BBC World Service on my Wi-Fi Internet radio deep in the basement to working out on the patio on a sunny day. </p><h2 id="a-premium-next-gen-upgrade">A premium next-gen upgrade</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="PEpn9fWiVABftaPiqLWWfe" name="Deco 8 Ultra Lifestyle" alt="The TP-Link Deco 8 Ultra on a table" src="https://cdn.mos.cms.futurecdn.net/PEpn9fWiVABftaPiqLWWfe.png" 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: TP-Link)</span></figcaption></figure><p>TP-Link’s Archer 8 Ultra is going on sale in Germany and in the UK in October, where regulators have given the company the green light. This will be followed by U.S. sales in early 2027. </p><p>Premium and high performance in all aspects, look for a sub-$1,000 price tag for the Archer 8 Ultra. Though this will almost certainly drop as the year progresses. TP-Link then plans to introduce Pro and base product lines with lower prices during 2027.  </p><p>Think of Wi-Fi 8 as making the house of cards that wireless networking has become a little sturdier and more permanent so that a sneeze won’t make it all collapse. Just as I got used to Wi-Fi 7, it’s time to turn to Wi-Fi 8 but I can’t wait to get my hands on the two TP-Link networking devices as well as the products of other companies to try them out in my lab and home. </p><p>I must admit to a hidden hope that Wi-Fi 8 enhanced reliability is enough to replace many of the <a href="https://www.tomsguide.com/reference/ethernet-cables-explained">Ethernet cables</a> that run through my house, creating a wireless backbone for my entire home network.</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/computing/i-just-saw-wifi-8-in-action"><strong>I just saw Wi-Fi 8 in action, and it might be the first internet upgrade in years that actually makes sense</strong></a></li><li><strong></strong><a href="https://www.tomsguide.com/best-picks/best-Wi-fi-7-routers"><strong>These are the best Wi-Fi 7 routers to give your home upgrade a major upgrade right now</strong></a></li><li><a href="https://www.tomsguide.com/computing/internet/aluminum-foil-boosts-wi-fi-signal-heres-how-to-position-it-behind-your-router"><strong>I put aluminum foil behind my router to fix my Wi-Fi dead zones — and it actually worked</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/routers/i-got-a-sneak-peek-at-tp-links-upcoming-wi-fi-8-routers-and-improved-range-and-reliability-are-their-biggest-upgrades</link>
                                                                            <description>
                            <![CDATA[ The next generation of Wi-Fi gear is aimed more at dependability than outright speed but for many, it will offer more throughput. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yvrZ7ccqrgeJySv8PdoiJP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7EvQmc6Gnx5o6epdcmL3LG-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 01 Sep 2026 13:51:25 +0000</pubDate>                                                                                                                                <updated>Mon, 07 Sep 2026 09:29:40 +0000</updated>
                                                                                                                                            <category><![CDATA[Routers]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Brian Nadel ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/qLSkrTG95GayrZcQmwLa2N.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7EvQmc6Gnx5o6epdcmL3LG-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A sign showing the Wi-Fi 8 logo]]></media:description>                                                            <media:text><![CDATA[A sign showing the Wi-Fi 8 logo]]></media:text>
                                <media:title type="plain"><![CDATA[A sign showing the Wi-Fi 8 logo]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7EvQmc6Gnx5o6epdcmL3LG-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>From the start of the wireless networking era – even before it was called Wi-Fi – every new spec and generation of hardware was aimed at delivering faster speeds to do more things online at home. Not anymore, because <a href="https://www.tomsguide.com/computing/internet/i-just-got-my-first-glimpse-at-whats-possible-with-wi-fi-8-and-this-one-new-feature-has-me-really-excited">Wi-Fi 8</a> (aka. 802.11bn) takes a different approach, putting an emphasis on range and reliability to be able to stay online longer with fewer interruptions. </p><p>While it seems like a step sideways with a top speed of 46 Gbps that’s equivalent to <a href="https://www.tomsguide.com/reference/wi-fi-7-explained">Wi-Fi 7</a>, Wi-Fi 8 can do a lot to make home networking easier, more fulfilling and dependable. The new spec’s Ultra High Reliability (UHR) approach promotes better performance at long range, the ability to handle more data traffic and block interference. Spectral efficiency is the name of the game with Wi-Fi turning from squeezing more data into the air waves to making it easier to use and more reliable. </p><p>Buyer beware, as has been the case with every Wi-Fi generation, the router hardware precedes the general availability of client devices. At first, it can seem like a wireless tease, then, all of a sudden, there are new generation devices everywhere. In addition to the first Wi-Fi routers and mesh kits in the coming months, expect Wi-Fi 8, phones, computers and tablets in early-to-mid 2027. This will be followed by range extenders and USB upgrade kits late in the year. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OznRlO"></div>                            </div>                            <script src="https://kwizly.com/embed/OznRlO.js" async></script><h2 id="archer-8-ultra-and-deco-8-ultra">Archer 8 Ultra and Deco 8 Ultra</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="6Jx2Bvoo4BBUJ3Zz3z9mTT" name="Archer 8 Ultra Deco 8 Ultra Hero" alt="The TP-Link Archer 8 Ultra and Deco 8 Ultra next to each other on a colored background" src="https://cdn.mos.cms.futurecdn.net/6Jx2Bvoo4BBUJ3Zz3z9mTT.png" 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: TP-Link)</span></figcaption></figure><p>I got a sneak peek at what will likely be the first commercial Wi-Fi 8 routers from TP-Link, the company’s Archer 8 Ultra high performance router and Deco 8 Ultra mesh set. They each have functional designs, sleek lines and can theoretically move 19- and 22 Gbps, respectively. Powered by either Qualcomm’s Fast Connect 8800 or Broadcom’s BCM6718 chips, this networking gear is top shelf and aimed at high-performance users with two 10 Gbps inputs and USB ports for connecting a storage device across a network. </p><p>The IEEE 802.11bn spec isn’t close to being finalized and I do expect changes before it’s formally approved sometime in 2028. That said, the lack of finality hasn’t stopped the world’s Wi-Fi chip manufacturers and router makers from developing products. </p><p>If the past is any indication, the new routers will need a firmware update or three to add late changing aspects of the final Wi-Fi 8 spec. Plus, many router makers plan to introduce new routers that hit the main features on introduction and add items to them throughout 2027. Unfortunately, none of the current generation of Wi-Fi 7 routers can be upgraded to Wi-Fi 8.</p><p>How the routers will act is coming into focus. The big change that Wi-Fi 8 brings is better use of the 2.4-, 5.0- and 6.0 GHz frequency bands on which the data rides. It goes beyond 4K Quadrature Amplitude Modulation (QAM) and Multi-Link Operations (MLO) with what TP-Link calls its Stability Engine that will debut with the company’s Wi-Fi 8 hardware. </p><p>This can seem like an alphabet soup of engineering acronyms that starts with Unequal Modulation (UEQM) to make sure that each device can get to its full speed regardless of whether lower-speed clients are nearby. The New Modulation and Coding Scheme (MCS) takes this a step further by blocking interference that can lower throughput. Together, the techniques can improve throughput by 24% versus Wi-Fi 7, according to early tests.  </p><h2 id="antennas-by-the-dozen">Antennas by the dozen</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:1916px;"><p class="vanilla-image-block" style="padding-top:56.37%;"><img id="KMeckkoER2XvwZwC3MSfCY" name="Archer 8_1920x1080_02" alt="A close-up shot of the top of the TP-Link Archer 8 Ultra" src="https://cdn.mos.cms.futurecdn.net/KMeckkoER2XvwZwC3MSfCY.png" mos="" align="middle" fullscreen="" width="1916" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TP-Link)</span></figcaption></figure><p>Meanwhile, the routers have internal antennas galore. While the Archer 8 Ultra has no fewer than 18 antennas, the Deco 8 Ultra has a 5 transmit, 5 receive antenna arrangement. This can amount to a 1 to 3 dB increase in signal strength that can translate into greater throughput and range. </p><p>That’s just the start because the new antennas can help prevent frustrating disconnect and reconnect cycles that rob throughput. TP-Link’s engineers are going a step further by looking into pushing its antennas to the limit by making its transmission pattern adjustable. The feature would bias it horizontally (for a ranch house) or vertically (for a multi-story building). </p><p>Meanwhile, Wi-Fi 8’s Distributed Resource Units (DRU) and Enhanced Long Range (ELR) combine to increase coverage so that the signal can enliven <a href="https://www.tomsguide.com/opinion/when-and-when-not-to-use-a-wi-fi-extender-and-what-to-do-instead">Wi-Fi dead zones</a> with data. These techniques allow clients at the periphery to stay online despite a weak signal. If these changes pan out, my Wi-Fi experience could be vastly improved, from not losing my connection when listening to the BBC World Service on my Wi-Fi Internet radio deep in the basement to working out on the patio on a sunny day. </p><h2 id="a-premium-next-gen-upgrade">A premium next-gen upgrade</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="PEpn9fWiVABftaPiqLWWfe" name="Deco 8 Ultra Lifestyle" alt="The TP-Link Deco 8 Ultra on a table" src="https://cdn.mos.cms.futurecdn.net/PEpn9fWiVABftaPiqLWWfe.png" 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: TP-Link)</span></figcaption></figure><p>TP-Link’s Archer 8 Ultra is going on sale in Germany and in the UK in October, where regulators have given the company the green light. This will be followed by U.S. sales in early 2027. </p><p>Premium and high performance in all aspects, look for a sub-$1,000 price tag for the Archer 8 Ultra. Though this will almost certainly drop as the year progresses. TP-Link then plans to introduce Pro and base product lines with lower prices during 2027.  </p><p>Think of Wi-Fi 8 as making the house of cards that wireless networking has become a little sturdier and more permanent so that a sneeze won’t make it all collapse. Just as I got used to Wi-Fi 7, it’s time to turn to Wi-Fi 8 but I can’t wait to get my hands on the two TP-Link networking devices as well as the products of other companies to try them out in my lab and home. </p><p>I must admit to a hidden hope that Wi-Fi 8 enhanced reliability is enough to replace many of the <a href="https://www.tomsguide.com/reference/ethernet-cables-explained">Ethernet cables</a> that run through my house, creating a wireless backbone for my entire home network.</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/computing/i-just-saw-wifi-8-in-action"><strong>I just saw Wi-Fi 8 in action, and it might be the first internet upgrade in years that actually makes sense</strong></a></li><li><strong></strong><a href="https://www.tomsguide.com/best-picks/best-Wi-fi-7-routers"><strong>These are the best Wi-Fi 7 routers to give your home upgrade a major upgrade right now</strong></a></li><li><a href="https://www.tomsguide.com/computing/internet/aluminum-foil-boosts-wi-fi-signal-heres-how-to-position-it-behind-your-router"><strong>I put aluminum foil behind my router to fix my Wi-Fi dead zones — and it actually worked</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft Outlook was down? Live tracking multi-hour email outage ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p>Microsoft Outlook may be suffering an outage. Reports about the email platform started popping up on the outage-tracking site <a href="https://downdetector.com/status/outlook/" target="_blank">Down Detector</a> starting around 8:30 am Pacific. </p><p>It peaked around 9:30 am around 6,000 reports. The outage appears to be affecting access to mailboxes, delays in sending emails or failure to send. </p><p>Outlook stayed down for nearly 12 hours, last until about 8:30 pm Pacific. A fix was implemented around 6 pm that seemed to get people back online but it didn't completely work and some functions like search didn't work properly for two more hours.</p><p>According to the Microsoft 365 status page, the outage was caused by "an issue within a core authentication configuration used by multiple Microsoft 365 services is resulting in impact."</p><p>We did not see any more specific information beyond that. </p><p>Here's what we know:</p></div><div class="live-content"><time datetime="2026-08-31T18:26:22+00:00">August 31, 2026 – 2:26 PM</time><h2 id="multi-hour-outage">Multi-hour outage</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:673px;"><p class="vanilla-image-block" style="padding-top:42.79%;"><img id="E8exMaQWWNsgzYsLnRiQnN" name="Screenshot 2026-08-31 112543" alt="Microsoft Outlook outage Aug 31, 2026" src="https://cdn.mos.cms.futurecdn.net/E8exMaQWWNsgzYsLnRiQnN.png" mos="" align="middle" fullscreen="" width="673" height="288" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>Reports starting appearing on Down Detector around 8:30 am Pacific but didn't peak until an hour later. </p><p>As of this posting, there are more than 5,000 reports on the outage tracker and no sign of decline.</p></div><div class="live-content"><time datetime="2026-08-31T18:28:54+00:00">August 31, 2026 – 2:28 PM</time><h2 id="microsoft-says-all-systems-quot-operational-quot">Microsoft says all systems "operational"</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="LFP6P5nzNFP8AkCLiWJSvG" name="Microsoft" alt="Microsoft 365 becomes Microsoft 364" src="https://cdn.mos.cms.futurecdn.net/LFP6P5nzNFP8AkCLiWJSvG.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: Paolo Bona / Shutterstock.com / Microsoft / Future)</span></figcaption></figure><p>I've checked the Microsoft 365 <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">status page</a>, and according to that page every Microsoft product is operational.</p></div><div class="live-content"><time datetime="2026-08-31T18:31:03+00:00">August 31, 2026 – 2:31 PM</time><h2 id="m365-twitter-account-acknowledges-problem">M365 Twitter account acknowledges problem</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2094465993007378744"><p lang="en" dir="ltr">We've confirmed that users may experience degraded functionality with various Exchange Online functionalities. We're reviewing service telemetry and diagnostic data to isolate the source of the issue. For more information, please see EX1464935 in the admin center.<a href="https://twitter.com/cantworkitout/status/2094465993007378744">August 31, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>While the Microsoft 365 status page isn't showing any issues, the official <a href="https://x.com/MSFT365Status/status/2094465993007378744" target="_blank">Microsoft 365 Status X account</a> did acknowledge the issue.</p><p>"We've confirmed that users may experience degraded functionality with various Exchange Online functionalities. We're reviewing service telemetry and diagnostic data to isolate the source of the issue. For more information, please see EX1464935 in the admin center," the post reads. </p></div><div class="live-content"><time datetime="2026-08-31T18:34:28+00:00">August 31, 2026 – 2:34 PM</time><h2 id="what-issues-are-we-seeing">What issues are we seeing?</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:853px;"><p class="vanilla-image-block" style="padding-top:60.96%;"><img id="77h7giWwLQ9NhbRWTtqwSd" name="outlook-iphone-shst.jpg" alt="Microsoft Outlook" src="https://cdn.mos.cms.futurecdn.net/77h7giWwLQ9NhbRWTtqwSd.jpg" mos="" align="middle" fullscreen="" width="853" height="520" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Based on comments from Down Detector and X, the most common issue appears to be a failure to actually send and receive emails for those who can get in.</p><p>I've seen several comments saying that the app won't even open on their computers. </p><p>"Not receiving emails since about 10:45 am, then went downhill, replies stopped coming through, then emails came to a halt, and then, besides Outlook constantly freezing, now my shared work folder is no longer showing me emails and gives an error," one said.</p><p>For those in businesses, it appears they can't even send messages between connected emails.</p></div><div class="live-content"><time datetime="2026-08-31T18:40:54+00:00">August 31, 2026 – 2:40 PM</time><h2 id="users-quot-may-experience-a-variety-of-symptoms-quot">Users "may experience a variety of symptoms"</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:1981px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="QcDNYDHLZWSjpMdgzpVJQG" name="Outlook.shutterstock_2384091865.jpg" alt="Outlook on a laptop" src="https://cdn.mos.cms.futurecdn.net/QcDNYDHLZWSjpMdgzpVJQG.jpg" mos="" align="middle" fullscreen="" width="1981" height="1114" 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>If you can get in the 365 Admin Center, this is the message you should see:</p><p>"Users may be unable to connect to, or experience degraded functionality with Exchange Online</p><p>Users may experience a variety of symptoms related to this event, including but not limited to:<br>- Delays, failures, or incomplete results when searching for content within Exchange Online mailboxes.<br>- Delays or failures when sending or receiving email messages.<br>- Authentication-related errors when accessing Exchange Online services.<br>- Difficulties accessing or performing actions within Exchange administration experiences.<br>- Intermittent failures affecting mailbox operations and message delivery workflows."</p></div><div class="live-content"><time datetime="2026-08-31T18:51:20+00:00">August 31, 2026 – 2:51 PM</time><h2 id="slow-decline">Slow decline</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:675px;"><p class="vanilla-image-block" style="padding-top:45.63%;"><img id="LCj29zbxdQbXSkRrDP5HXk" name="Screenshot 2026-08-31 114803" alt="Microsoft Outlook outage 8/31/26" src="https://cdn.mos.cms.futurecdn.net/LCj29zbxdQbXSkRrDP5HXk.png" mos="" align="middle" fullscreen="" width="675" height="308" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>Over on Down Detector, reports have started to decline. </p><p>The peak around 9:30 a.m. was around 6,000 reports. As of 11:45 a.m. Pacific, reports are closer to 4,500. </p><p>I've seen some people in offices say that portions of their teams are able to access the email platform, but some of the team is still down.</p></div><div class="live-content"><time datetime="2026-08-31T19:09:19+00:00">August 31, 2026 – 3:09 PM</time><h2 id="no-updates-from-microsoft">No updates from Microsoft</h2><p>Other than the couple tweets and the Admin Center update, we haven't seen any other updates from Microsoft. </p><p>It's not clear what work is being done to resolve the outage.</p></div><div class="live-content"><time datetime="2026-08-31T19:26:40+00:00">August 31, 2026 – 3:26 PM</time><h2 id="is-outlook-down-for-you">Is Outlook down for you?</h2><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5E2wW"></div>                            </div>                            <script src="https://kwizly.com/embed/W5E2wW.js" async></script><p>Let us know in the comments what issues you're experiencing. </p></div><div class="live-content"><time datetime="2026-08-31T19:44:03+00:00">August 31, 2026 – 3:44 PM</time><h2 id="outage-has-last-4-hours">Outage has last 4 hours</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="ytx7gsKrfFbWNQV8E7E9NB" name="MicrosoftOutlook.jpg" alt="The Microsoft Outlook app open on a phone" src="https://cdn.mos.cms.futurecdn.net/ytx7gsKrfFbWNQV8E7E9NB.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: Shutterstock)</span></figcaption></figure><p>With no updates from Microsoft, today's Outlook outage has lasted for more than four hours.</p><p>As of this posting, despite declining reports it's not clear when the outage might end.</p></div><div class="live-content"><time datetime="2026-08-31T19:52:00+00:00">August 31, 2026 – 3:52 PM</time><h2 id="update-from-microsoft">Update from Microsoft</h2><p>On the <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">M365 status page</a>, a new update just popped up. </p><p>Here it is: </p><p>OneDrive for Business and SharePoint Online: Users may be unable to load or refresh portions of OneDrive and SharePoint, including account and storage information, search results, Favorites, Followed and Shared With Me content, recent files, lists, and news. Some users may also experience delayed or failed file opening, Office policy-label retrieval, OneDrive synchronization, mobile camera upload, and video playback. Users may see partial page failures, missing or stale content, repeated retries, and operation timeouts rather than a complete platform outage.</p><p>Exchange Online: Users may be unable to connect to, or experience degraded functionality, with Exchange Online. All connection methods are affected. </p><p>Microsoft Teams: Users may experience issues with calendar functionality and search. Users’ presence may be stale and not update automatically or through manual adjustment. User location adjustment may fail. </p><p>Microsoft Purview: Users may face intermittent authorization failures across solutions in Purview. Purview admins can’t access the portal. Additionally, in Microsoft Purview Communication Compliance, users may see errors when loading Communication Compliance policies and Data Loss Prevention (DLP) policies. Communication Compliance policy creation and evaluation may be delayed. </p><p>Microsoft Defender XDR: Users may experience intermittent authorization failures across solutions in Defender. </p><p><strong>Current status: </strong>We're continuing to perform comprehensive tests to ensure our mitigation strategy effectively resolves the issue without introducing additional impact. In parallel, we're exploring alternative remediation avenues to minimize impact in the interim. </p><p><strong>Scope of impact: </strong>Users attempting to perform any of the outlined impact scenarios may be affected by this event. </p><p><strong>Preliminary root cause: </strong>An issue within a core authentication configuration used by multiple Microsoft 365 services is resulting in impact. </p></div><div class="live-content"><time datetime="2026-08-31T20:14:23+00:00">August 31, 2026 – 4:14 PM</time><h2 id="snail-mail">Snail mail</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="gWoW8UhSG7R78YpMZFCbYT" name="GettyImages-78486862edit.jpg" alt="Letter posted through the letterbox" src="https://cdn.mos.cms.futurecdn.net/gWoW8UhSG7R78YpMZFCbYT.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: Getty Images)</span></figcaption></figure><p>Not much new to share with you but this message from a frustrated user on Down Detector gave me a chuckle.</p><p>"Now distributing stamps & envelopes to our team. Printer is working overtime."</p></div><div class="live-content"><time datetime="2026-08-31T20:39:57+00:00">August 31, 2026 – 4:39 PM</time><h2 id="outage-appears-international">Outage appears international</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="SvzWgUkw8ivTUYcraTxj4n" name="TG-worldle-lede-shutterstock.jpg" alt="An image of the globe on a blue background. The globe has a green question mark formed from land." src="https://cdn.mos.cms.futurecdn.net/SvzWgUkw8ivTUYcraTxj4n.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: Shutterstock)</span></figcaption></figure><p>Users reporting in on Down Detector are claiming to be from all over the country including New York, Las Vegas, Kentucky, Indianapolis and more.</p><p>I'm also seeing some reports from other countries including Guatamala City, Montevideo, Uruguay and Argentina.</p></div><div class="live-content"><time datetime="2026-08-31T21:23:00+00:00">August 31, 2026 – 5:23 PM</time><h2 id="where-we-stand-after-6-hours">Where we stand after 6 hours</h2><p>Unfortunately, pretty much the same. </p><p>The M365 status page had a recent update that shows Microsoft's engineers are working on the issue but it doesn't appear relief is coming any time soon.</p><p>"Current status: We're reexamining recent changes made to the service to determine why the authentication components aren't being deployed as expected. Additionally, we are exploring every avenue to safely restore the components, including reverting an update the affected infrastructure recently received. We're performing additional tests to determine whether this will provide relief."</p><p>Reports on Down Detector have declined but I think that's more because people on the East Coast are starting to log off for the day.</p></div><div class="live-content"><time datetime="2026-08-31T22:07:39+00:00">August 31, 2026 – 6:07 PM</time><h2 id="slow-decline-but-still-thousands-of-reports">Slow decline but still thousands of reports</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:675px;"><p class="vanilla-image-block" style="padding-top:45.48%;"><img id="B4chNaKBrbEUxpGwKJcqZn" name="Screenshot 2026-08-31 150353" alt="Microsoft Outlook outage 8/31/26" src="https://cdn.mos.cms.futurecdn.net/B4chNaKBrbEUxpGwKJcqZn.png" mos="" align="middle" fullscreen="" width="675" height="307" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>As mentioned in my last post, the reports on Down Detector have been in a steady decline, but there are still thousands of reports. Currently, it's sitting around 3,100. </p><p>There are certainly people using Outlook for personal reasons, but I think reports will decline as people across the US start to log off from work. </p></div><div class="live-content"><time datetime="2026-08-31T22:41:53+00:00">August 31, 2026 – 6:41 PM</time><h2 id="a-different-update-from-microsoft">A different update from Microsoft</h2><p>A user on Down Detector shared an alleged update from Microsoft.</p><p>Here's what it says: </p><p>We're continuing our targeted review of affected infrastructure and recent changes made to the service to definitively confirm the cause of impact. We're additionally continuing to test and implement various mitigation strategies to apply the necessary authentication component, which have so far yielded positive results. We're monitoring these tests and mitigative actions closely and will provide an estimated time to resolution as soon as one is available.</p><p>We understand the impact that events like these can have for your organization and we appreciate your patience as we work to mitigate this issue with the highest priority.</p></div><div class="live-content"><time datetime="2026-08-31T23:19:32+00:00">August 31, 2026 – 7:19 PM</time><h2 id="fixes-may-be-in-the-works">Fixes may be in the works</h2><p>It finally seems that Microsoft may have mitigations in place. Though the company has not yet provided an estimated time for a return to normal service.</p><p>"<em>We're continuing to implement a targeted mitigation to re-apply core authentication components, and we're expanding this action more widely across the affected environments as we closely track the recovery of affected downstream scenarios. Users may notice gradual recovery to the scenarios identified in the "More info" section as our mitigation action takes effect in their corresponding sections of infrastructure, and we're continuing to review whether any additional actions may be required to achieve withstanding recovery across all affected scenarios. We'll provide an estimated time to resolution as soon as one is available."</em></p></div><div class="live-content"><time datetime="2026-08-31T23:45:49+00:00">August 31, 2026 – 7:45 PM</time><h2 id="reports-continue-to-decline">Reports continue to decline</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:674px;"><p class="vanilla-image-block" style="padding-top:45.99%;"><img id="6pLQZLUvZ6om6asAdqsHWX" name="Screenshot 2026-09-01 084149" alt="Microsoft Outlook outage 8/31/26" src="https://cdn.mos.cms.futurecdn.net/6pLQZLUvZ6om6asAdqsHWX.png" mos="" align="middle" fullscreen="" width="674" height="310" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: New York Times)</span></figcaption></figure><p>Reports on Down Detector continue their steady decline but we are hewing closer to 5 pm on the West Coast, where it's likely people are starting to logoff there and I expect reports will take a nosedive over the next hour. </p><p>Microsoft still hasn't provided an ETA for a return to normal service. </p></div><div class="live-content"><time datetime="2026-09-01T00:23:36+00:00">August 31, 2026 – 8:23 PM</time><h2 id="microsoft-response">Microsoft response</h2><p>I reached out to Microsoft to see if they could provide an ETA or any kind of update. Unfortunately, I received neither. </p><p>Here's what I was told by a Microsoft spokesperson:</p><p><em>"We're aware of an issue affecting access to Exchange Online and some other services. We know this is disruptive for customers and we appreciate their patience while we work to restore services as quickly as possible. Updates are available on the </em><a href="https://uk01.l.antigena.com/l/1UXr5cGKjjp0o2OL9xWNCMQk8F5sezohurKMdWGBF~rOWnnC0ieSs5x3_ixEJl-9fBhzYDp399RfJgJtHCUKNYeHbfKpi8t8l2IxjOeb5OqEtC_rwHfjSOAJQYNdzGxW0U1Crn-~JZJDGQG9bg6ykf_Hni7Ylhx_mcFjEwBA2R" target="_blank"><u><em>Microsoft service health status page</em></u></a><em> and </em><a href="https://x.com/MSFT365Status/status/2094455556454920701" target="_blank"><em>@MSFT365Status</em></a><em>."</em><em><strong> </strong></em></p></div><div class="live-content"><time datetime="2026-09-01T00:37:28+00:00">August 31, 2026 – 8:37 PM</time><h2 id="latest-update-from-status-page">Latest update from status page</h2><p>Here's the latest update from the Microsoft status page: </p><p><em>We're progressively restarting targeted sections of affected infrastructure to ensure the re-applied authentication components are effectively implemented across affected services. We expect this will aid the recovery of affected scenarios. Users should expect delayed delivery of backlogged messages and residual impact across downstream scenarios as these actions are continuing. We'll provide an expected recovery time as soon as one becomes available to us.</em></p><p>Still no ETA, but you might start seeing some recovery. </p></div><div class="live-content"><time datetime="2026-09-01T01:05:15+00:00">August 31, 2026 – 9:05 PM</time><h2 id="taking-a-break">Taking a break </h2><p>This is Scott. Reports on DD have fallen below 1,000 since before 8 am Pacific. However, based on the Microsoft site its not over.</p><p>I'm taking a brief dinner break. I'll be back soon with more updates.</p></div><div class="live-content"><time datetime="2026-09-01T02:08:53+00:00">August 31, 2026 – 10:08 PM</time><h2 id="email-should-be-recovered">Email should be recovered</h2><p>The most recent update from Microsoft indicates that your email should have returned to normal. Though the status says that some parts of the system aren't recovering properly so you may have issues with things ilke search.</p><p><em>"Users can expect to see continued recovery to email delivery, while users may see residual impact to downstream and dependent scenarios, including search, across affected services. "</em></p></div><div class="live-content"><time datetime="2026-09-01T02:40:43+00:00">August 31, 2026 – 10:40 PM</time><h2 id="reports-are-under-500">Reports are under 500</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:674px;"><p class="vanilla-image-block" style="padding-top:45.70%;"><img id="ou88vSP5rovPjXBiyya52Q" name="Screenshot 2026-08-31 193838" alt="Microsoft outlook outage 8-31-26" src="https://cdn.mos.cms.futurecdn.net/ou88vSP5rovPjXBiyya52Q.png" mos="" align="middle" fullscreen="" width="674" height="308" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>With some recovery in effect, reports are under 500 on Down Detector and I'm seeing a several comments from people who have regained access to their accounts. </p><p>However, I am also still seeing some comments from people who can't sign in or aren't getting emails.</p><p>There is still not ETA for a full recovery and as mentioned earlier, some aspects, like search, aren't working properly. </p></div><div class="live-content"><time datetime="2026-09-01T03:55:44+00:00">August 31, 2026 – 11:55 PM</time><h2 id="calling-it">Calling it</h2><p>Well folks, I'm going to call this outage. </p><p>The reports are under 200, and the status page just updated with this notice:</p><p><em>"We're observing widespread recovery to Exchange Online mail connectivity, though the draining of backlogged mail queues may take longer for some organizations due to the volume of previously queued messages. Our recovery efforts are now focused on re-applying our targeted authentication component fix and restarting certain instances of infrastructure correlated with search functionality to ensure the full restoration of the associated scenarios."</em></p><p>With that settled, this outage appears to finally be over.<br></p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/news/live/microsoft-outlook-outage-august-31-2026</link>
                                                                            <description>
                            <![CDATA[ Microsoft Outlook appears to be suffering from an outage. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6jx9qj3S7K2XCpnEnUQyWd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KPG47747aX2DtH8NaaLvK-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 31 Aug 2026 18:24:37 +0000</pubDate>                                                                                                                                <updated>Tue, 01 Sep 2026 03:58:57 +0000</updated>
                                                                                                                                            <category><![CDATA[Email]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;br&gt;Send secure tips on Signal: scyo1.55.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KPG47747aX2DtH8NaaLvK-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Outlook]]></media:description>                                                            <media:text><![CDATA[Outlook]]></media:text>
                                <media:title type="plain"><![CDATA[Outlook]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KPG47747aX2DtH8NaaLvK-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p>Microsoft Outlook may be suffering an outage. Reports about the email platform started popping up on the outage-tracking site <a href="https://downdetector.com/status/outlook/" target="_blank">Down Detector</a> starting around 8:30 am Pacific. </p><p>It peaked around 9:30 am around 6,000 reports. The outage appears to be affecting access to mailboxes, delays in sending emails or failure to send. </p><p>Outlook stayed down for nearly 12 hours, last until about 8:30 pm Pacific. A fix was implemented around 6 pm that seemed to get people back online but it didn't completely work and some functions like search didn't work properly for two more hours.</p><p>According to the Microsoft 365 status page, the outage was caused by "an issue within a core authentication configuration used by multiple Microsoft 365 services is resulting in impact."</p><p>We did not see any more specific information beyond that. </p><p>Here's what we know:</p></div><div class="live-content"><time datetime="2026-08-31T18:26:22+00:00">August 31, 2026 – 2:26 PM</time><h2 id="multi-hour-outage">Multi-hour outage</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:673px;"><p class="vanilla-image-block" style="padding-top:42.79%;"><img id="E8exMaQWWNsgzYsLnRiQnN" name="Screenshot 2026-08-31 112543" alt="Microsoft Outlook outage Aug 31, 2026" src="https://cdn.mos.cms.futurecdn.net/E8exMaQWWNsgzYsLnRiQnN.png" mos="" align="middle" fullscreen="" width="673" height="288" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>Reports starting appearing on Down Detector around 8:30 am Pacific but didn't peak until an hour later. </p><p>As of this posting, there are more than 5,000 reports on the outage tracker and no sign of decline.</p></div><div class="live-content"><time datetime="2026-08-31T18:28:54+00:00">August 31, 2026 – 2:28 PM</time><h2 id="microsoft-says-all-systems-quot-operational-quot">Microsoft says all systems "operational"</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="LFP6P5nzNFP8AkCLiWJSvG" name="Microsoft" alt="Microsoft 365 becomes Microsoft 364" src="https://cdn.mos.cms.futurecdn.net/LFP6P5nzNFP8AkCLiWJSvG.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: Paolo Bona / Shutterstock.com / Microsoft / Future)</span></figcaption></figure><p>I've checked the Microsoft 365 <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">status page</a>, and according to that page every Microsoft product is operational.</p></div><div class="live-content"><time datetime="2026-08-31T18:31:03+00:00">August 31, 2026 – 2:31 PM</time><h2 id="m365-twitter-account-acknowledges-problem">M365 Twitter account acknowledges problem</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2094465993007378744"><p lang="en" dir="ltr">We've confirmed that users may experience degraded functionality with various Exchange Online functionalities. We're reviewing service telemetry and diagnostic data to isolate the source of the issue. For more information, please see EX1464935 in the admin center.<a href="https://twitter.com/cantworkitout/status/2094465993007378744">August 31, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>While the Microsoft 365 status page isn't showing any issues, the official <a href="https://x.com/MSFT365Status/status/2094465993007378744" target="_blank">Microsoft 365 Status X account</a> did acknowledge the issue.</p><p>"We've confirmed that users may experience degraded functionality with various Exchange Online functionalities. We're reviewing service telemetry and diagnostic data to isolate the source of the issue. For more information, please see EX1464935 in the admin center," the post reads. </p></div><div class="live-content"><time datetime="2026-08-31T18:34:28+00:00">August 31, 2026 – 2:34 PM</time><h2 id="what-issues-are-we-seeing">What issues are we seeing?</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:853px;"><p class="vanilla-image-block" style="padding-top:60.96%;"><img id="77h7giWwLQ9NhbRWTtqwSd" name="outlook-iphone-shst.jpg" alt="Microsoft Outlook" src="https://cdn.mos.cms.futurecdn.net/77h7giWwLQ9NhbRWTtqwSd.jpg" mos="" align="middle" fullscreen="" width="853" height="520" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Based on comments from Down Detector and X, the most common issue appears to be a failure to actually send and receive emails for those who can get in.</p><p>I've seen several comments saying that the app won't even open on their computers. </p><p>"Not receiving emails since about 10:45 am, then went downhill, replies stopped coming through, then emails came to a halt, and then, besides Outlook constantly freezing, now my shared work folder is no longer showing me emails and gives an error," one said.</p><p>For those in businesses, it appears they can't even send messages between connected emails.</p></div><div class="live-content"><time datetime="2026-08-31T18:40:54+00:00">August 31, 2026 – 2:40 PM</time><h2 id="users-quot-may-experience-a-variety-of-symptoms-quot">Users "may experience a variety of symptoms"</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:1981px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="QcDNYDHLZWSjpMdgzpVJQG" name="Outlook.shutterstock_2384091865.jpg" alt="Outlook on a laptop" src="https://cdn.mos.cms.futurecdn.net/QcDNYDHLZWSjpMdgzpVJQG.jpg" mos="" align="middle" fullscreen="" width="1981" height="1114" 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>If you can get in the 365 Admin Center, this is the message you should see:</p><p>"Users may be unable to connect to, or experience degraded functionality with Exchange Online</p><p>Users may experience a variety of symptoms related to this event, including but not limited to:<br>- Delays, failures, or incomplete results when searching for content within Exchange Online mailboxes.<br>- Delays or failures when sending or receiving email messages.<br>- Authentication-related errors when accessing Exchange Online services.<br>- Difficulties accessing or performing actions within Exchange administration experiences.<br>- Intermittent failures affecting mailbox operations and message delivery workflows."</p></div><div class="live-content"><time datetime="2026-08-31T18:51:20+00:00">August 31, 2026 – 2:51 PM</time><h2 id="slow-decline">Slow decline</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:675px;"><p class="vanilla-image-block" style="padding-top:45.63%;"><img id="LCj29zbxdQbXSkRrDP5HXk" name="Screenshot 2026-08-31 114803" alt="Microsoft Outlook outage 8/31/26" src="https://cdn.mos.cms.futurecdn.net/LCj29zbxdQbXSkRrDP5HXk.png" mos="" align="middle" fullscreen="" width="675" height="308" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>Over on Down Detector, reports have started to decline. </p><p>The peak around 9:30 a.m. was around 6,000 reports. As of 11:45 a.m. Pacific, reports are closer to 4,500. </p><p>I've seen some people in offices say that portions of their teams are able to access the email platform, but some of the team is still down.</p></div><div class="live-content"><time datetime="2026-08-31T19:09:19+00:00">August 31, 2026 – 3:09 PM</time><h2 id="no-updates-from-microsoft">No updates from Microsoft</h2><p>Other than the couple tweets and the Admin Center update, we haven't seen any other updates from Microsoft. </p><p>It's not clear what work is being done to resolve the outage.</p></div><div class="live-content"><time datetime="2026-08-31T19:26:40+00:00">August 31, 2026 – 3:26 PM</time><h2 id="is-outlook-down-for-you">Is Outlook down for you?</h2><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5E2wW"></div>                            </div>                            <script src="https://kwizly.com/embed/W5E2wW.js" async></script><p>Let us know in the comments what issues you're experiencing. </p></div><div class="live-content"><time datetime="2026-08-31T19:44:03+00:00">August 31, 2026 – 3:44 PM</time><h2 id="outage-has-last-4-hours">Outage has last 4 hours</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="ytx7gsKrfFbWNQV8E7E9NB" name="MicrosoftOutlook.jpg" alt="The Microsoft Outlook app open on a phone" src="https://cdn.mos.cms.futurecdn.net/ytx7gsKrfFbWNQV8E7E9NB.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: Shutterstock)</span></figcaption></figure><p>With no updates from Microsoft, today's Outlook outage has lasted for more than four hours.</p><p>As of this posting, despite declining reports it's not clear when the outage might end.</p></div><div class="live-content"><time datetime="2026-08-31T19:52:00+00:00">August 31, 2026 – 3:52 PM</time><h2 id="update-from-microsoft">Update from Microsoft</h2><p>On the <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">M365 status page</a>, a new update just popped up. </p><p>Here it is: </p><p>OneDrive for Business and SharePoint Online: Users may be unable to load or refresh portions of OneDrive and SharePoint, including account and storage information, search results, Favorites, Followed and Shared With Me content, recent files, lists, and news. Some users may also experience delayed or failed file opening, Office policy-label retrieval, OneDrive synchronization, mobile camera upload, and video playback. Users may see partial page failures, missing or stale content, repeated retries, and operation timeouts rather than a complete platform outage.</p><p>Exchange Online: Users may be unable to connect to, or experience degraded functionality, with Exchange Online. All connection methods are affected. </p><p>Microsoft Teams: Users may experience issues with calendar functionality and search. Users’ presence may be stale and not update automatically or through manual adjustment. User location adjustment may fail. </p><p>Microsoft Purview: Users may face intermittent authorization failures across solutions in Purview. Purview admins can’t access the portal. Additionally, in Microsoft Purview Communication Compliance, users may see errors when loading Communication Compliance policies and Data Loss Prevention (DLP) policies. Communication Compliance policy creation and evaluation may be delayed. </p><p>Microsoft Defender XDR: Users may experience intermittent authorization failures across solutions in Defender. </p><p><strong>Current status: </strong>We're continuing to perform comprehensive tests to ensure our mitigation strategy effectively resolves the issue without introducing additional impact. In parallel, we're exploring alternative remediation avenues to minimize impact in the interim. </p><p><strong>Scope of impact: </strong>Users attempting to perform any of the outlined impact scenarios may be affected by this event. </p><p><strong>Preliminary root cause: </strong>An issue within a core authentication configuration used by multiple Microsoft 365 services is resulting in impact. </p></div><div class="live-content"><time datetime="2026-08-31T20:14:23+00:00">August 31, 2026 – 4:14 PM</time><h2 id="snail-mail">Snail mail</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="gWoW8UhSG7R78YpMZFCbYT" name="GettyImages-78486862edit.jpg" alt="Letter posted through the letterbox" src="https://cdn.mos.cms.futurecdn.net/gWoW8UhSG7R78YpMZFCbYT.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: Getty Images)</span></figcaption></figure><p>Not much new to share with you but this message from a frustrated user on Down Detector gave me a chuckle.</p><p>"Now distributing stamps & envelopes to our team. Printer is working overtime."</p></div><div class="live-content"><time datetime="2026-08-31T20:39:57+00:00">August 31, 2026 – 4:39 PM</time><h2 id="outage-appears-international">Outage appears international</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="SvzWgUkw8ivTUYcraTxj4n" name="TG-worldle-lede-shutterstock.jpg" alt="An image of the globe on a blue background. The globe has a green question mark formed from land." src="https://cdn.mos.cms.futurecdn.net/SvzWgUkw8ivTUYcraTxj4n.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: Shutterstock)</span></figcaption></figure><p>Users reporting in on Down Detector are claiming to be from all over the country including New York, Las Vegas, Kentucky, Indianapolis and more.</p><p>I'm also seeing some reports from other countries including Guatamala City, Montevideo, Uruguay and Argentina.</p></div><div class="live-content"><time datetime="2026-08-31T21:23:00+00:00">August 31, 2026 – 5:23 PM</time><h2 id="where-we-stand-after-6-hours">Where we stand after 6 hours</h2><p>Unfortunately, pretty much the same. </p><p>The M365 status page had a recent update that shows Microsoft's engineers are working on the issue but it doesn't appear relief is coming any time soon.</p><p>"Current status: We're reexamining recent changes made to the service to determine why the authentication components aren't being deployed as expected. Additionally, we are exploring every avenue to safely restore the components, including reverting an update the affected infrastructure recently received. We're performing additional tests to determine whether this will provide relief."</p><p>Reports on Down Detector have declined but I think that's more because people on the East Coast are starting to log off for the day.</p></div><div class="live-content"><time datetime="2026-08-31T22:07:39+00:00">August 31, 2026 – 6:07 PM</time><h2 id="slow-decline-but-still-thousands-of-reports">Slow decline but still thousands of reports</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:675px;"><p class="vanilla-image-block" style="padding-top:45.48%;"><img id="B4chNaKBrbEUxpGwKJcqZn" name="Screenshot 2026-08-31 150353" alt="Microsoft Outlook outage 8/31/26" src="https://cdn.mos.cms.futurecdn.net/B4chNaKBrbEUxpGwKJcqZn.png" mos="" align="middle" fullscreen="" width="675" height="307" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>As mentioned in my last post, the reports on Down Detector have been in a steady decline, but there are still thousands of reports. Currently, it's sitting around 3,100. </p><p>There are certainly people using Outlook for personal reasons, but I think reports will decline as people across the US start to log off from work. </p></div><div class="live-content"><time datetime="2026-08-31T22:41:53+00:00">August 31, 2026 – 6:41 PM</time><h2 id="a-different-update-from-microsoft">A different update from Microsoft</h2><p>A user on Down Detector shared an alleged update from Microsoft.</p><p>Here's what it says: </p><p>We're continuing our targeted review of affected infrastructure and recent changes made to the service to definitively confirm the cause of impact. We're additionally continuing to test and implement various mitigation strategies to apply the necessary authentication component, which have so far yielded positive results. We're monitoring these tests and mitigative actions closely and will provide an estimated time to resolution as soon as one is available.</p><p>We understand the impact that events like these can have for your organization and we appreciate your patience as we work to mitigate this issue with the highest priority.</p></div><div class="live-content"><time datetime="2026-08-31T23:19:32+00:00">August 31, 2026 – 7:19 PM</time><h2 id="fixes-may-be-in-the-works">Fixes may be in the works</h2><p>It finally seems that Microsoft may have mitigations in place. Though the company has not yet provided an estimated time for a return to normal service.</p><p>"<em>We're continuing to implement a targeted mitigation to re-apply core authentication components, and we're expanding this action more widely across the affected environments as we closely track the recovery of affected downstream scenarios. Users may notice gradual recovery to the scenarios identified in the "More info" section as our mitigation action takes effect in their corresponding sections of infrastructure, and we're continuing to review whether any additional actions may be required to achieve withstanding recovery across all affected scenarios. We'll provide an estimated time to resolution as soon as one is available."</em></p></div><div class="live-content"><time datetime="2026-08-31T23:45:49+00:00">August 31, 2026 – 7:45 PM</time><h2 id="reports-continue-to-decline">Reports continue to decline</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:674px;"><p class="vanilla-image-block" style="padding-top:45.99%;"><img id="6pLQZLUvZ6om6asAdqsHWX" name="Screenshot 2026-09-01 084149" alt="Microsoft Outlook outage 8/31/26" src="https://cdn.mos.cms.futurecdn.net/6pLQZLUvZ6om6asAdqsHWX.png" mos="" align="middle" fullscreen="" width="674" height="310" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: New York Times)</span></figcaption></figure><p>Reports on Down Detector continue their steady decline but we are hewing closer to 5 pm on the West Coast, where it's likely people are starting to logoff there and I expect reports will take a nosedive over the next hour. </p><p>Microsoft still hasn't provided an ETA for a return to normal service. </p></div><div class="live-content"><time datetime="2026-09-01T00:23:36+00:00">August 31, 2026 – 8:23 PM</time><h2 id="microsoft-response">Microsoft response</h2><p>I reached out to Microsoft to see if they could provide an ETA or any kind of update. Unfortunately, I received neither. </p><p>Here's what I was told by a Microsoft spokesperson:</p><p><em>"We're aware of an issue affecting access to Exchange Online and some other services. We know this is disruptive for customers and we appreciate their patience while we work to restore services as quickly as possible. Updates are available on the </em><a href="https://uk01.l.antigena.com/l/1UXr5cGKjjp0o2OL9xWNCMQk8F5sezohurKMdWGBF~rOWnnC0ieSs5x3_ixEJl-9fBhzYDp399RfJgJtHCUKNYeHbfKpi8t8l2IxjOeb5OqEtC_rwHfjSOAJQYNdzGxW0U1Crn-~JZJDGQG9bg6ykf_Hni7Ylhx_mcFjEwBA2R" target="_blank"><u><em>Microsoft service health status page</em></u></a><em> and </em><a href="https://x.com/MSFT365Status/status/2094455556454920701" target="_blank"><em>@MSFT365Status</em></a><em>."</em><em><strong> </strong></em></p></div><div class="live-content"><time datetime="2026-09-01T00:37:28+00:00">August 31, 2026 – 8:37 PM</time><h2 id="latest-update-from-status-page">Latest update from status page</h2><p>Here's the latest update from the Microsoft status page: </p><p><em>We're progressively restarting targeted sections of affected infrastructure to ensure the re-applied authentication components are effectively implemented across affected services. We expect this will aid the recovery of affected scenarios. Users should expect delayed delivery of backlogged messages and residual impact across downstream scenarios as these actions are continuing. We'll provide an expected recovery time as soon as one becomes available to us.</em></p><p>Still no ETA, but you might start seeing some recovery. </p></div><div class="live-content"><time datetime="2026-09-01T01:05:15+00:00">August 31, 2026 – 9:05 PM</time><h2 id="taking-a-break">Taking a break </h2><p>This is Scott. Reports on DD have fallen below 1,000 since before 8 am Pacific. However, based on the Microsoft site its not over.</p><p>I'm taking a brief dinner break. I'll be back soon with more updates.</p></div><div class="live-content"><time datetime="2026-09-01T02:08:53+00:00">August 31, 2026 – 10:08 PM</time><h2 id="email-should-be-recovered">Email should be recovered</h2><p>The most recent update from Microsoft indicates that your email should have returned to normal. Though the status says that some parts of the system aren't recovering properly so you may have issues with things ilke search.</p><p><em>"Users can expect to see continued recovery to email delivery, while users may see residual impact to downstream and dependent scenarios, including search, across affected services. "</em></p></div><div class="live-content"><time datetime="2026-09-01T02:40:43+00:00">August 31, 2026 – 10:40 PM</time><h2 id="reports-are-under-500">Reports are under 500</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:674px;"><p class="vanilla-image-block" style="padding-top:45.70%;"><img id="ou88vSP5rovPjXBiyya52Q" name="Screenshot 2026-08-31 193838" alt="Microsoft outlook outage 8-31-26" src="https://cdn.mos.cms.futurecdn.net/ou88vSP5rovPjXBiyya52Q.png" mos="" align="middle" fullscreen="" width="674" height="308" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>With some recovery in effect, reports are under 500 on Down Detector and I'm seeing a several comments from people who have regained access to their accounts. </p><p>However, I am also still seeing some comments from people who can't sign in or aren't getting emails.</p><p>There is still not ETA for a full recovery and as mentioned earlier, some aspects, like search, aren't working properly. </p></div><div class="live-content"><time datetime="2026-09-01T03:55:44+00:00">August 31, 2026 – 11:55 PM</time><h2 id="calling-it">Calling it</h2><p>Well folks, I'm going to call this outage. </p><p>The reports are under 200, and the status page just updated with this notice:</p><p><em>"We're observing widespread recovery to Exchange Online mail connectivity, though the draining of backlogged mail queues may take longer for some organizations due to the volume of previously queued messages. Our recovery efforts are now focused on re-applying our targeted authentication component fix and restarting certain instances of infrastructure correlated with search functionality to ensure the full restoration of the associated scenarios."</em></p><p>With that settled, this outage appears to finally be over.<br></p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Meta agrees to pay $17.1 billion to settle claims Facebook and Instagram harm children — here's what you need to know ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Meta has been in plenty of hot water as of late.</p><p>The company’s smart glasses have <a href="https://www.tomsguide.com/computing/smart-glasses/im-worried-smart-glasses-might-ruin-wearable-displays-and-of-course-its-the-cameras">gotten a ton of ire</a> as people have pointed to privacy concerns over users secretly filming random passersby and whoever else they please (there’s even a <a href="https://futurism.com/artificial-intelligence/teen-boys-meta-glasses-harass-bully-girls-school" target="_blank">report</a> about teenage boys using them to pester girls at middle and high schools).</p><p>Meta then found itself <a href="https://www.tomsguide.com/computing/social-media/i-read-all-233-pages-of-metas-usd1-4-trillion-lawsuit-heres-why-facebook-and-instagram-may-never-be-the-same">in the middle of a lawsuit</a> that saw 29 states, co-led by California Attorney General Rob Bonta and the AGs from Colorado, New Jersey and Kentucky, allege that its social media platforms are addictive to children, mislead consumers about those young users’ safety on said platforms and inappropriately gather children's personal data. </p><p>That lawsuit has now met its end, as Meta has just agreed to pay a settlement of $17.1 billion — according to a statement made by California AG Rob Bonta. The state of California could receive between $1.5 billion and $2.1 billion if the court authorizes the settlement. As for New York, its attorney general <a href="https://ag.ny.gov/press-release/2026/attorney-general-james-secures-171-billion-and-groundbreaking-reforms-meta" target="_blank">announced</a> that the state will get up to $1.15 billion and likely put it toward kids' education and social services meant to assist youngsters struggling with their social media addiction. Head to this <a href="https://www.kcra.com/article/meta-settlement-state-map/73535639" target="_blank">link</a> to see how much each state will receive from this monumental Meta settlement.</p><p>With this settlement in place comes a host of changes Meta has been ordered to make to Facebook and Instagram. Here’s what these changes could mean for parents with children who frequently use both platforms and how they could result in a positive outcome for them.</p><h2 id="less-addictive-and-harmful-social-media-spaces-for-kids-of-all-ages">Less addictive and harmful social media spaces for kids of all ages</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="KNsGDPbr5iYcc6M8azdQRa" name="shutterstock_2696215553-16x9" alt="facebook" src="https://cdn.mos.cms.futurecdn.net/KNsGDPbr5iYcc6M8azdQRa.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: Shutterstock)</span></figcaption></figure><p>There’s a wealth of changes Meta must now make according to the measures detailed in the settlement, such as:</p><ul><li><strong>A default daily time limit of two hours for users under 18 years of age that can only be lifted by a parent</strong></li><li><strong>A default nighttime block between midnight and 06:00 for users under 18 years of age that can only be lifted by a parent</strong></li><li><strong>Default blocks on notifications to users under 18 years of age from 22:00 to 07:00 and during the school day</strong></li><li><strong>An enhanced mechanism for teenagers to report potentially harmful content and a requirement that Meta respond to 90% of those reports within six hours</strong></li><li><strong>A ban on displaying numbers of likes or reactions to users under 18 years of age</strong></li><li><strong>A ban on cosmetic procedure image filters for users under 18 years of age</strong></li><li><strong>An option for users under 18 years of age to have a non-personalised feed</strong></li><li><strong>A commitment to enhance parent supervision tools</strong></li></ul><p>That settlement also notes that Meta has agreed to the following terms and conditions:</p><ul><li><strong>Institute robust age assurance measures to detect users under 18, as well as measures to identify and remove users under 13 years of age</strong></li><li><strong>Use an independent auditor with expansive access to information and resources</strong></li><li><strong>Be subject to an injunction prohibiting it from making "further false, misleading, or deceptive statements around its safety features"</strong></li></ul><p>In a statement that looks to reassure everyone that kids will be more protected across their social media platforms, Meta had this to say: “Ensuring teens have a safe and productive experience on our platforms is an absolute imperative for Meta. We want to get this right for parents and teens.”</p><p>With all these newly instituted measures in place, Facebook and Instagram could become far less of an addictive haven for children who want to do nothing but endless scrolling and discover content that could be extremely harmful to their mental well-being. Strict usage time limits, parents getting more control over the type of content their kids see, fewer distracting notifications popping up on kids’ screens and young users having less exposure to detrimental content could go a long way toward making Meta’s platforms more approachable for younger users. </p><p>While instituting a two-hour limit for kids using Facebook and Instagram is good, kids may still use that time to expose themselves to harmful content. With parents getting more control over their kids’ social media accounts, here’s hoping their stronger involvement will make children less susceptible to coming across said content.</p><h2 id="bottom-line">Bottom line</h2><p>Meta being forced to take responsibility for the harm its social media platforms have done to children is major. While this development doesn’t automatically make Facebook and Instagram 100% safe for kids from this point forward, it’s a good first step toward companies like Meta recognizing the ill effects their products have had on children.</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/ai/perplexitys-new-local-first-ai-runs-on-your-pc-and-asks-before-using-the-cloud" target="_blank">Perplexity’s new local-first AI runs on your PC — and asks before using the cloud</a></li><li><a href="https://www.tomsguide.com/ai/chatgpt/chatgpt-can-learn-your-repetitive-tasks-by-watching-you-here-are-7-prompts-to-try" target="_blank">ChatGPT can learn your repetitive tasks by watching you — here are 7 prompts to try</a></li><li><a href="https://www.tomsguide.com/ai/ai-could-transform-healthcare-for-the-better-but-this-doctor-says-theres-one-thing-it-should-never-do" target="_blank">AI could transform healthcare for the better — but this doctor says there’s one thing it should never do</a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/meta-agrees-to-pay-usd17-1-billion-to-settle-claims-that-facebook-and-instagram-harm-children-heres-what-you-need-to-know</link>
                                                                            <description>
                            <![CDATA[ Meta agrees a massive settlement over alleged transgressions connected to the mental health harm its social media sites inflict on kids; major changes are on the way. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Wktj8WM2G9ekMn4TfqR929</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qJSCzoLLLUzgtPVzqhx8kS-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 26 Aug 2026 15:18:34 +0000</pubDate>                                                                                                                                <updated>Thu, 27 Aug 2026 13:09:38 +0000</updated>
                                                                                                                                            <category><![CDATA[Social Media]]></category>
                                                    <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elton Jones ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/NVtYYXr3tEPUE67jf3HtXM.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qJSCzoLLLUzgtPVzqhx8kS-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[meta]]></media:description>                                                            <media:text><![CDATA[meta]]></media:text>
                                <media:title type="plain"><![CDATA[meta]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qJSCzoLLLUzgtPVzqhx8kS-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Meta has been in plenty of hot water as of late.</p><p>The company’s smart glasses have <a href="https://www.tomsguide.com/computing/smart-glasses/im-worried-smart-glasses-might-ruin-wearable-displays-and-of-course-its-the-cameras">gotten a ton of ire</a> as people have pointed to privacy concerns over users secretly filming random passersby and whoever else they please (there’s even a <a href="https://futurism.com/artificial-intelligence/teen-boys-meta-glasses-harass-bully-girls-school" target="_blank">report</a> about teenage boys using them to pester girls at middle and high schools).</p><p>Meta then found itself <a href="https://www.tomsguide.com/computing/social-media/i-read-all-233-pages-of-metas-usd1-4-trillion-lawsuit-heres-why-facebook-and-instagram-may-never-be-the-same">in the middle of a lawsuit</a> that saw 29 states, co-led by California Attorney General Rob Bonta and the AGs from Colorado, New Jersey and Kentucky, allege that its social media platforms are addictive to children, mislead consumers about those young users’ safety on said platforms and inappropriately gather children's personal data. </p><p>That lawsuit has now met its end, as Meta has just agreed to pay a settlement of $17.1 billion — according to a statement made by California AG Rob Bonta. The state of California could receive between $1.5 billion and $2.1 billion if the court authorizes the settlement. As for New York, its attorney general <a href="https://ag.ny.gov/press-release/2026/attorney-general-james-secures-171-billion-and-groundbreaking-reforms-meta" target="_blank">announced</a> that the state will get up to $1.15 billion and likely put it toward kids' education and social services meant to assist youngsters struggling with their social media addiction. Head to this <a href="https://www.kcra.com/article/meta-settlement-state-map/73535639" target="_blank">link</a> to see how much each state will receive from this monumental Meta settlement.</p><p>With this settlement in place comes a host of changes Meta has been ordered to make to Facebook and Instagram. Here’s what these changes could mean for parents with children who frequently use both platforms and how they could result in a positive outcome for them.</p><h2 id="less-addictive-and-harmful-social-media-spaces-for-kids-of-all-ages">Less addictive and harmful social media spaces for kids of all ages</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="KNsGDPbr5iYcc6M8azdQRa" name="shutterstock_2696215553-16x9" alt="facebook" src="https://cdn.mos.cms.futurecdn.net/KNsGDPbr5iYcc6M8azdQRa.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: Shutterstock)</span></figcaption></figure><p>There’s a wealth of changes Meta must now make according to the measures detailed in the settlement, such as:</p><ul><li><strong>A default daily time limit of two hours for users under 18 years of age that can only be lifted by a parent</strong></li><li><strong>A default nighttime block between midnight and 06:00 for users under 18 years of age that can only be lifted by a parent</strong></li><li><strong>Default blocks on notifications to users under 18 years of age from 22:00 to 07:00 and during the school day</strong></li><li><strong>An enhanced mechanism for teenagers to report potentially harmful content and a requirement that Meta respond to 90% of those reports within six hours</strong></li><li><strong>A ban on displaying numbers of likes or reactions to users under 18 years of age</strong></li><li><strong>A ban on cosmetic procedure image filters for users under 18 years of age</strong></li><li><strong>An option for users under 18 years of age to have a non-personalised feed</strong></li><li><strong>A commitment to enhance parent supervision tools</strong></li></ul><p>That settlement also notes that Meta has agreed to the following terms and conditions:</p><ul><li><strong>Institute robust age assurance measures to detect users under 18, as well as measures to identify and remove users under 13 years of age</strong></li><li><strong>Use an independent auditor with expansive access to information and resources</strong></li><li><strong>Be subject to an injunction prohibiting it from making "further false, misleading, or deceptive statements around its safety features"</strong></li></ul><p>In a statement that looks to reassure everyone that kids will be more protected across their social media platforms, Meta had this to say: “Ensuring teens have a safe and productive experience on our platforms is an absolute imperative for Meta. We want to get this right for parents and teens.”</p><p>With all these newly instituted measures in place, Facebook and Instagram could become far less of an addictive haven for children who want to do nothing but endless scrolling and discover content that could be extremely harmful to their mental well-being. Strict usage time limits, parents getting more control over the type of content their kids see, fewer distracting notifications popping up on kids’ screens and young users having less exposure to detrimental content could go a long way toward making Meta’s platforms more approachable for younger users. </p><p>While instituting a two-hour limit for kids using Facebook and Instagram is good, kids may still use that time to expose themselves to harmful content. With parents getting more control over their kids’ social media accounts, here’s hoping their stronger involvement will make children less susceptible to coming across said content.</p><h2 id="bottom-line">Bottom line</h2><p>Meta being forced to take responsibility for the harm its social media platforms have done to children is major. While this development doesn’t automatically make Facebook and Instagram 100% safe for kids from this point forward, it’s a good first step toward companies like Meta recognizing the ill effects their products have had on children.</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/ai/perplexitys-new-local-first-ai-runs-on-your-pc-and-asks-before-using-the-cloud" target="_blank">Perplexity’s new local-first AI runs on your PC — and asks before using the cloud</a></li><li><a href="https://www.tomsguide.com/ai/chatgpt/chatgpt-can-learn-your-repetitive-tasks-by-watching-you-here-are-7-prompts-to-try" target="_blank">ChatGPT can learn your repetitive tasks by watching you — here are 7 prompts to try</a></li><li><a href="https://www.tomsguide.com/ai/ai-could-transform-healthcare-for-the-better-but-this-doctor-says-theres-one-thing-it-should-never-do" target="_blank">AI could transform healthcare for the better — but this doctor says there’s one thing it should never do</a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Your private Instagram profile may not hide as much as you think — here's what an investigation found ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Privacy concerns around social media have escalated significantly in recent years, with users increasingly cautious about what they share online. </p><p>A new experiment by <a href="https://www.comparethemarket.com/home-insurance/" target="_blank">Compare the Market</a> tested exactly how much information can actually be hidden when you set your Instagram to private. The results are sobering. </p><p>A licensed investigator was tasked with locating the home addresses of nine volunteers using only publicly available information. </p><p>Despite four of them having private Instagram profiles, the investigator identified the addresses of seven out of nine. The fastest was located in just 15 minutes, with the first lead found in 50 seconds.</p><h2 id="what-the-investigation-revealed">What the investigation revealed</h2><p>Colin Crowden, Intelligence Director at <a href="https://globalprotectrisk.com/">Global Protect</a> and an Open-Source Intelligence expert, conducted the investigation. What he discovered challenges the assumption that private accounts provide adequate protection. </p><p>Beyond identifying addresses, the investigation uncovered four complete property plans revealing internal home layouts. In one particularly concerning finding, Crowden established that a volunteer was away on holiday, confirming their property was unoccupied. </p><p>The speed at which information was gathered highlights a critical vulnerability. Information shared by friends and family, location tags from previous posts, property details visible in photos, and data from other online sources all contribute to a broader picture. </p><p>Crowden explains the issue clearly: "Information that appears harmless in isolation can become much more revealing when viewed alongside other publicly available information. This isn't about any one post creating a security risk; it's about how different pieces of information can build up over time."</p><h2 id="why-your-private-account-isn-39-t-enough">Why your private account isn't enough</h2><p>The experiment demonstrates that privacy settings alone offer incomplete protection. Even if your Instagram is private, tagged photos from friends, public check-ins, or incidental details in backgrounds can expose your location and home information. </p><p>The investigation reveals that the combination of data sources, not any single post, creates the vulnerability. Compare the Market's home insurance expert Helen Phipps worked with Crowden to develop concrete recommendations for reducing your digital footprint. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exVnJO"></div>                            </div>                            <script src="https://kwizly.com/embed/exVnJO.js" async></script><h3 class="article-body__section" id="section-practical-steps-to-protect-yourself"><span>Practical steps to protect yourself </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="AotcNKj6nhSo7ryq2Pw9iY" name="shutterstock_2377182091-16x9" alt="A person looking at a phone with a digital warning sign over it" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:2000,ch:1125,q:80/AotcNKj6nhSo7ryq2Pw9iY.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: Shutterstock)</span></figcaption></figure><h2 id="wait-until-you-39-re-home-to-post">Wait until you're home to post</h2><p>If possible, <strong>wait until you're home before posting holiday photos</strong> rather than sharing in real time. This prevents anyone from knowing your property is unoccupied. If you do post while away, <strong>avoid revealing exactly where you are or how long you'll be away for</strong>.</p><h2 id="review-your-privacy-settings-before-you-travel">Review your privacy settings before you travel</h2><p>Check who can see your posts, stories, and tagged content. <strong>Consider setting your accounts to private and reviewing your followers</strong> so that holiday updates are only visible to people you trust. This step takes minutes but significantly limits exposure.</p><h2 id="coordinate-with-friends-and-family">Coordinate with friends and family</h2><p>Your friends and family can inadvertently expose you. <strong>Ask them not to share real-time updates if you're traveling together or post photos of your property if they're housesitting</strong>. </p><p>People often don't realize they're compromising your security by tagging you in posts or sharing location details.</p><h2 id="turn-off-automatic-location-tags">Turn off automatic location tags</h2><p>Disable geotagging in your social media settings entirely. On Instagram, <strong>this requires revoking access directly through your phone’s system settings under Privacy & Security (iOS) or Apps (Android) </strong>rather than within the app itself. </p><p>Location sharing can unintentionally reveal your whereabouts even when you're not posting in real time. This is one of the easiest settings to overlook but also one of the most revealing.</p><h2 id="audit-your-digital-footprint">Audit your digital footprint</h2><p>Search for yourself online periodically to see what personal details are publicly accessible, and remove anything that compromises your privacy. <strong>Pay special attention to old social media posts containing house numbers, street signs, car license plates, or identifiable landmarks</strong>. </p><p>If you want to take action right now, I have a step-by-step walkthrough covering <a href="https://www.tomsguide.com/computing/online-security/your-personal-information-is-everywhere-online-5-ways-to-start-removing-it">5 ways to start removing your personal information from the internet</a>. You should also check out <a href="https://www.tomsguide.com/phones/how-to-stop-google-maps-from-displaying-your-home-to-strangers">how to blur your home in Google Maps Street View</a>.</p><h2 id="combine-digital-caution-with-home-security">Combine digital caution with home security</h2><p>Beyond digital precautions, pair online caution with classic home security measures. <strong>Set light timers to create the appearance someone's home, test all locks, arm your alarm system, and ask a neighbor to collect post and manage bins </strong>so the house looks lived-in. </p><p>Ensure your home insurance policy covers the duration of your trip and review any conditions that apply while your property is unoccupied.</p><p>This investigation raises important questions about privacy in the digital age. Have you changed your social media habits? What's your biggest concern about your digital footprint? Share your thoughts in the comments below.</p><p>For a complete breakdown of Compare the Market's methodology and findings, read the full <a href="https://www.comparethemarket.com/home-insurance/the-online-safety-experiment/" target="_blank">Online Safety Study here.</a></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/social-media/metas-new-ai-tool-uses-your-instagram-photos-by-default-heres-how-to-opt-out"><strong>Meta's new AI tool uses your Instagram photos by default — here’s how to opt out</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/ai/ai-image-video/all-she-did-was-change-the-face-i-spoke-to-a-creator-whose-video-was-stolen-and-reskinned-with-ai"><strong>Inside the dark market stealing real identities online</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/social-media/instagrams-new-instants-feature-is-driving-users-crazy-heres-how-to-disable-it"><strong>Instagram's 'instants' feature is driving users crazy. Here's how to disable it</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/social-media/your-private-instagram-profile-may-not-hide-as-much-as-you-think-heres-what-an-investigation-found</link>
                                                                            <description>
                            <![CDATA[ Even with a private Instagram account, a new investigation demonstrates how easily your personal information can be reconstructed. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XNrepozpdpU95AL7jEYupZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jPZiwUxvsgL5bSjBsCdCvB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 26 Aug 2026 07:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 26 Aug 2026 14:03:03 +0000</updated>
                                                                                                                                            <category><![CDATA[Social Media]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jPZiwUxvsgL5bSjBsCdCvB-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Instagram app logo on a phone display]]></media:description>                                                            <media:text><![CDATA[Instagram app logo on a phone display]]></media:text>
                                <media:title type="plain"><![CDATA[Instagram app logo on a phone display]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jPZiwUxvsgL5bSjBsCdCvB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Privacy concerns around social media have escalated significantly in recent years, with users increasingly cautious about what they share online. </p><p>A new experiment by <a href="https://www.comparethemarket.com/home-insurance/" target="_blank">Compare the Market</a> tested exactly how much information can actually be hidden when you set your Instagram to private. The results are sobering. </p><p>A licensed investigator was tasked with locating the home addresses of nine volunteers using only publicly available information. </p><p>Despite four of them having private Instagram profiles, the investigator identified the addresses of seven out of nine. The fastest was located in just 15 minutes, with the first lead found in 50 seconds.</p><h2 id="what-the-investigation-revealed">What the investigation revealed</h2><p>Colin Crowden, Intelligence Director at <a href="https://globalprotectrisk.com/">Global Protect</a> and an Open-Source Intelligence expert, conducted the investigation. What he discovered challenges the assumption that private accounts provide adequate protection. </p><p>Beyond identifying addresses, the investigation uncovered four complete property plans revealing internal home layouts. In one particularly concerning finding, Crowden established that a volunteer was away on holiday, confirming their property was unoccupied. </p><p>The speed at which information was gathered highlights a critical vulnerability. Information shared by friends and family, location tags from previous posts, property details visible in photos, and data from other online sources all contribute to a broader picture. </p><p>Crowden explains the issue clearly: "Information that appears harmless in isolation can become much more revealing when viewed alongside other publicly available information. This isn't about any one post creating a security risk; it's about how different pieces of information can build up over time."</p><h2 id="why-your-private-account-isn-39-t-enough">Why your private account isn't enough</h2><p>The experiment demonstrates that privacy settings alone offer incomplete protection. Even if your Instagram is private, tagged photos from friends, public check-ins, or incidental details in backgrounds can expose your location and home information. </p><p>The investigation reveals that the combination of data sources, not any single post, creates the vulnerability. Compare the Market's home insurance expert Helen Phipps worked with Crowden to develop concrete recommendations for reducing your digital footprint. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exVnJO"></div>                            </div>                            <script src="https://kwizly.com/embed/exVnJO.js" async></script><h3 class="article-body__section" id="section-practical-steps-to-protect-yourself"><span>Practical steps to protect yourself </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="AotcNKj6nhSo7ryq2Pw9iY" name="shutterstock_2377182091-16x9" alt="A person looking at a phone with a digital warning sign over it" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:2000,ch:1125,q:80/AotcNKj6nhSo7ryq2Pw9iY.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: Shutterstock)</span></figcaption></figure><h2 id="wait-until-you-39-re-home-to-post">Wait until you're home to post</h2><p>If possible, <strong>wait until you're home before posting holiday photos</strong> rather than sharing in real time. This prevents anyone from knowing your property is unoccupied. If you do post while away, <strong>avoid revealing exactly where you are or how long you'll be away for</strong>.</p><h2 id="review-your-privacy-settings-before-you-travel">Review your privacy settings before you travel</h2><p>Check who can see your posts, stories, and tagged content. <strong>Consider setting your accounts to private and reviewing your followers</strong> so that holiday updates are only visible to people you trust. This step takes minutes but significantly limits exposure.</p><h2 id="coordinate-with-friends-and-family">Coordinate with friends and family</h2><p>Your friends and family can inadvertently expose you. <strong>Ask them not to share real-time updates if you're traveling together or post photos of your property if they're housesitting</strong>. </p><p>People often don't realize they're compromising your security by tagging you in posts or sharing location details.</p><h2 id="turn-off-automatic-location-tags">Turn off automatic location tags</h2><p>Disable geotagging in your social media settings entirely. On Instagram, <strong>this requires revoking access directly through your phone’s system settings under Privacy & Security (iOS) or Apps (Android) </strong>rather than within the app itself. </p><p>Location sharing can unintentionally reveal your whereabouts even when you're not posting in real time. This is one of the easiest settings to overlook but also one of the most revealing.</p><h2 id="audit-your-digital-footprint">Audit your digital footprint</h2><p>Search for yourself online periodically to see what personal details are publicly accessible, and remove anything that compromises your privacy. <strong>Pay special attention to old social media posts containing house numbers, street signs, car license plates, or identifiable landmarks</strong>. </p><p>If you want to take action right now, I have a step-by-step walkthrough covering <a href="https://www.tomsguide.com/computing/online-security/your-personal-information-is-everywhere-online-5-ways-to-start-removing-it">5 ways to start removing your personal information from the internet</a>. You should also check out <a href="https://www.tomsguide.com/phones/how-to-stop-google-maps-from-displaying-your-home-to-strangers">how to blur your home in Google Maps Street View</a>.</p><h2 id="combine-digital-caution-with-home-security">Combine digital caution with home security</h2><p>Beyond digital precautions, pair online caution with classic home security measures. <strong>Set light timers to create the appearance someone's home, test all locks, arm your alarm system, and ask a neighbor to collect post and manage bins </strong>so the house looks lived-in. </p><p>Ensure your home insurance policy covers the duration of your trip and review any conditions that apply while your property is unoccupied.</p><p>This investigation raises important questions about privacy in the digital age. Have you changed your social media habits? What's your biggest concern about your digital footprint? Share your thoughts in the comments below.</p><p>For a complete breakdown of Compare the Market's methodology and findings, read the full <a href="https://www.comparethemarket.com/home-insurance/the-online-safety-experiment/" target="_blank">Online Safety Study here.</a></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/social-media/metas-new-ai-tool-uses-your-instagram-photos-by-default-heres-how-to-opt-out"><strong>Meta's new AI tool uses your Instagram photos by default — here’s how to opt out</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/ai/ai-image-video/all-she-did-was-change-the-face-i-spoke-to-a-creator-whose-video-was-stolen-and-reskinned-with-ai"><strong>Inside the dark market stealing real identities online</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/social-media/instagrams-new-instants-feature-is-driving-users-crazy-heres-how-to-disable-it"><strong>Instagram's 'instants' feature is driving users crazy. Here's how to disable it</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Have you been 'Flocked'? Here's how to look up automatic license plate readers in your area ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Automated license plate readers (<a href="https://www.tomsguide.com/computing/online-security/millions-at-risk-due-to-severe-security-flaw-in-license-plate-readers">ALPR</a>) manufactured by <a href="https://www.tomsguide.com/computing/online-security/flock-reportedly-planned-to-co-opt-uber-and-lyft-vehicles-to-expand-its-surveillance-network">Flock Safety</a> operate across tens of thousands of locations in nearly every U.S. state. </p><p>Mounted near intersections, neighborhood entrances, and main highways, these motion-activated systems capture high-resolution snapshots of passing traffic. The software logs license plate numbers, vehicle colors, make, and distinctive visual markers like roof racks or damage. </p><p>While law enforcement agencies cite the technology for helping solve active cases, privacy advocates raise concerns over continuous passive surveillance of everyday drivers. </p><p>Checking whether your daily commute passes through an active camera zone requires using public transparency tools, crowdsourced databases, and visual hardware checks. Here's where to start. </p><h2 id="curious-if-you-are-on-the-police-39-s-radar">Curious if you are on the police's radar?</h2><p>The independent transparency project <a href="https://haveibeenflocked.com/" target="_blank"><strong>Have I Been Flocked</strong></a> offers a rare, though limited, public window into automated surveillance by compiling official audit logs obtained through public records requests. </p><p>Where data is available, <strong>putting your license plate number into the site</strong> lets you check if participating law enforcement agencies have queried your specific vehicle. </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:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="HSSwJGjKXKAvazap6fGTfn" name="How to check your license plate on Have I Been Flocked" alt="How to check your license plate on Have I Been Flocked" src="https://cdn.mos.cms.futurecdn.net/HSSwJGjKXKAvazap6fGTfn.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" 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>Keep in mind that coverage is far from comprehensive. It cannot show a real-time feed, nor does it log every time your car passes a camera. Instead, it exposes the historical paper trail left behind only when an officer manually searches your plate within a jurisdiction that has released its audit logs.</p><p>The platform also overlays crowdsourced camera maps and regional policy trends, helping to highlight local data retention habits and how agencies share access across city lines. </p><h2 id="you-don-39-t-have-to-wait-for-an-audit-log">You don't have to wait for an audit log</h2><p>While lookup sites rely on public records, community-driven maps offer a clearer picture of physical hardware placements. Volunteer-driven projects like <a href="https://deflock.org/" target="_blank"><strong>DeFlock</strong></a> map thousands of confirmed automated plate readers across interactive regional layouts.  </p><p>Inputting your home or work address displays verified device markers, often including field-of-view indicators that reveal which direction a camera faces. </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:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="CzGviz3ZMjCSJA9nUV8Z3m" name="How to use FlockHopper" alt="How to use FlockHopper" src="https://cdn.mos.cms.futurecdn.net/CzGviz3ZMjCSJA9nUV8Z3m.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" 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>Meanwhile, privacy advocates and projects like <a href="https://dontgetflocked.com/" target="_blank"><strong>FlockHopper </strong></a>use this crowdsourced data to highlight heavy surveillance corridors and potential alternative routes, utility varies widely. </p><p>Because these platforms rely strictly on volunteer submissions, map coverage depends entirely on how active the privacy community is in your specific area.   </p><h2 id="see-what-your-town-or-city-39-s-cameras-are-doing">See what your town or city's cameras are doing </h2><p>Many city governments and police departments pull back the digital curtain by hosting dedicated <strong>Flock Safety Transparency Portals</strong> on their municipal websites. </p><p>By <strong>searching your town or city's name alongside "Flock transparency portal," you can unlock a live public dashboard</strong> detailing the exact number of active cameras in your area, and the searches undertaken. </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:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="5jBLPAADTvbEpXBUnhQezf" name="Flock transparency portal" alt="Flock transparency portal" src="https://cdn.mos.cms.futurecdn.net/5jBLPAADTvbEpXBUnhQezf.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" 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>These dashboards reveal the core settings of your local surveillance net. They show exactly whether your police department activates real-time hot-list alerts for missing persons and wanted vehicles, or if they restrict the technology strictly to retroactive evidence gathering after a crime has occurred.</p><p>While not every town chooses to make their dashboard public, a quick search is the fastest way to see how your community balances public safety with digital privacy.</p><h2 id="spotting-a-flock-camera-in-the-wild">Spotting a Flock camera in the wild </h2><p>While you can track placements via public records or crowdsourced maps, keeping your eyes on the road is the best way to spot unlisted or newly installed units. </p><p>Flock devices feature a distinct, minimalist design: <strong>a compact black rectangular box mounted roughly 8 to 12 feet high on light poles or dedicated metal posts</strong>. Each unit typically operates completely off-grid, equipped with a small, angled solar panel positioned directly above the main camera housing. </p><p>To spot them<strong>, look for lenses pointing sharply downward toward active traffic lanes </strong>rather than toward sidewalk pedestrian paths. They are built primarily to hunt for license plates and vehicle characteristics, not foot traffic.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X7Av8W"></div>                            </div>                            <script src="https://kwizly.com/embed/X7Av8W.js" async></script><p>What’s your take on Flock cameras? Do you view them as essential public safety tools or an overreach on driver privacy? Let us 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><strong></strong><a href="https://www.tomsguide.com/home/home-security/hidden-cameras-in-hotels-and-airbnbs-are-more-common-than-you-think-5-ways-to-protect-your-privacy"><strong>Hidden cameras in hotels and Airbnbs are more common than you think — 5 ways to protect your privacy</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/online-security/is-your-personal-information-public-the-simple-step-to-securing-your-privacy-online"><strong>Is your personal information public? The simple step to securing your privacy online</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/home/home-security/your-security-cameras-are-in-the-wrong-spots-heres-how-to-fix-it"><strong>Your security cameras are in the wrong spots — here's how to fix it</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/vehicle-tech/evs/have-you-been-flocked-heres-how-to-look-up-automatic-license-plate-readers-in-your-area</link>
                                                                            <description>
                            <![CDATA[ Flock Safety cameras photograph millions of daily commutes. Here is how to look up camera locations and check if your license plate has been logged. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cfFhXT6KVFSBX2fJRoYgQF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GNf2cBdjuKG4qKZENcaaiX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 25 Aug 2026 07:00:00 +0000</pubDate>                                                                                                                                <updated>Tue, 25 Aug 2026 08:35:30 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/GNf2cBdjuKG4qKZENcaaiX-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Flock camera ]]></media:description>                                                            <media:text><![CDATA[Flock camera ]]></media:text>
                                <media:title type="plain"><![CDATA[Flock camera ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GNf2cBdjuKG4qKZENcaaiX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Automated license plate readers (<a href="https://www.tomsguide.com/computing/online-security/millions-at-risk-due-to-severe-security-flaw-in-license-plate-readers">ALPR</a>) manufactured by <a href="https://www.tomsguide.com/computing/online-security/flock-reportedly-planned-to-co-opt-uber-and-lyft-vehicles-to-expand-its-surveillance-network">Flock Safety</a> operate across tens of thousands of locations in nearly every U.S. state. </p><p>Mounted near intersections, neighborhood entrances, and main highways, these motion-activated systems capture high-resolution snapshots of passing traffic. The software logs license plate numbers, vehicle colors, make, and distinctive visual markers like roof racks or damage. </p><p>While law enforcement agencies cite the technology for helping solve active cases, privacy advocates raise concerns over continuous passive surveillance of everyday drivers. </p><p>Checking whether your daily commute passes through an active camera zone requires using public transparency tools, crowdsourced databases, and visual hardware checks. Here's where to start. </p><h2 id="curious-if-you-are-on-the-police-39-s-radar">Curious if you are on the police's radar?</h2><p>The independent transparency project <a href="https://haveibeenflocked.com/" target="_blank"><strong>Have I Been Flocked</strong></a> offers a rare, though limited, public window into automated surveillance by compiling official audit logs obtained through public records requests. </p><p>Where data is available, <strong>putting your license plate number into the site</strong> lets you check if participating law enforcement agencies have queried your specific vehicle. </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:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="HSSwJGjKXKAvazap6fGTfn" name="How to check your license plate on Have I Been Flocked" alt="How to check your license plate on Have I Been Flocked" src="https://cdn.mos.cms.futurecdn.net/HSSwJGjKXKAvazap6fGTfn.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" 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>Keep in mind that coverage is far from comprehensive. It cannot show a real-time feed, nor does it log every time your car passes a camera. Instead, it exposes the historical paper trail left behind only when an officer manually searches your plate within a jurisdiction that has released its audit logs.</p><p>The platform also overlays crowdsourced camera maps and regional policy trends, helping to highlight local data retention habits and how agencies share access across city lines. </p><h2 id="you-don-39-t-have-to-wait-for-an-audit-log">You don't have to wait for an audit log</h2><p>While lookup sites rely on public records, community-driven maps offer a clearer picture of physical hardware placements. Volunteer-driven projects like <a href="https://deflock.org/" target="_blank"><strong>DeFlock</strong></a> map thousands of confirmed automated plate readers across interactive regional layouts.  </p><p>Inputting your home or work address displays verified device markers, often including field-of-view indicators that reveal which direction a camera faces. </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:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="CzGviz3ZMjCSJA9nUV8Z3m" name="How to use FlockHopper" alt="How to use FlockHopper" src="https://cdn.mos.cms.futurecdn.net/CzGviz3ZMjCSJA9nUV8Z3m.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" 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>Meanwhile, privacy advocates and projects like <a href="https://dontgetflocked.com/" target="_blank"><strong>FlockHopper </strong></a>use this crowdsourced data to highlight heavy surveillance corridors and potential alternative routes, utility varies widely. </p><p>Because these platforms rely strictly on volunteer submissions, map coverage depends entirely on how active the privacy community is in your specific area.   </p><h2 id="see-what-your-town-or-city-39-s-cameras-are-doing">See what your town or city's cameras are doing </h2><p>Many city governments and police departments pull back the digital curtain by hosting dedicated <strong>Flock Safety Transparency Portals</strong> on their municipal websites. </p><p>By <strong>searching your town or city's name alongside "Flock transparency portal," you can unlock a live public dashboard</strong> detailing the exact number of active cameras in your area, and the searches undertaken. </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:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="5jBLPAADTvbEpXBUnhQezf" name="Flock transparency portal" alt="Flock transparency portal" src="https://cdn.mos.cms.futurecdn.net/5jBLPAADTvbEpXBUnhQezf.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" 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>These dashboards reveal the core settings of your local surveillance net. They show exactly whether your police department activates real-time hot-list alerts for missing persons and wanted vehicles, or if they restrict the technology strictly to retroactive evidence gathering after a crime has occurred.</p><p>While not every town chooses to make their dashboard public, a quick search is the fastest way to see how your community balances public safety with digital privacy.</p><h2 id="spotting-a-flock-camera-in-the-wild">Spotting a Flock camera in the wild </h2><p>While you can track placements via public records or crowdsourced maps, keeping your eyes on the road is the best way to spot unlisted or newly installed units. </p><p>Flock devices feature a distinct, minimalist design: <strong>a compact black rectangular box mounted roughly 8 to 12 feet high on light poles or dedicated metal posts</strong>. Each unit typically operates completely off-grid, equipped with a small, angled solar panel positioned directly above the main camera housing. </p><p>To spot them<strong>, look for lenses pointing sharply downward toward active traffic lanes </strong>rather than toward sidewalk pedestrian paths. They are built primarily to hunt for license plates and vehicle characteristics, not foot traffic.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X7Av8W"></div>                            </div>                            <script src="https://kwizly.com/embed/X7Av8W.js" async></script><p>What’s your take on Flock cameras? Do you view them as essential public safety tools or an overreach on driver privacy? Let us 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><strong></strong><a href="https://www.tomsguide.com/home/home-security/hidden-cameras-in-hotels-and-airbnbs-are-more-common-than-you-think-5-ways-to-protect-your-privacy"><strong>Hidden cameras in hotels and Airbnbs are more common than you think — 5 ways to protect your privacy</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/online-security/is-your-personal-information-public-the-simple-step-to-securing-your-privacy-online"><strong>Is your personal information public? The simple step to securing your privacy online</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/home/home-security/your-security-cameras-are-in-the-wrong-spots-heres-how-to-fix-it"><strong>Your security cameras are in the wrong spots — here's how to fix it</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I don’t use AI to write my emails — here’s how I use it to manage my inbox instead ]]></title>
                                                                                                <dc:content><![CDATA[ <p>When my grandfather would write me while I was away at school, he would end each letter with, "It's been fun to visit with you for a few minutes." That's the way I still feel about any correspondance -- it's a way to visit with someone regardless of how quick or meaningless. <br><br>And now that <a href="https://www.tomsguide.com/ai/claude-can-now-send-gmail-emails-heres-why-you-might-want-to-test-it-first">Claude can not only draft an email but send it</a>, I feel like that's just another AI feature I simply don't need.  However, I feel differently about everything surrounding that conversation.</p><p>There’s nothing personal about sorting newsletters, searching for a buried attachment or rereading a 20-message thread to work out what everyone decided. These are the jobs that could easily consume my day, and I’m more than happy to hand some of them to AI.</p><p>Features such as <a href="https://www.tomsguide.com/ai/gmails-biggest-update-in-20-years-5-ai-features-that-could-change-email-forever">Google’s AI Inbox and AI Overviews</a> in Gmail can identify priority messages, summarize conversations and answer questions about information scattered across multiple emails. I still write my own replies, but I spend much less time figuring out which ones I need to send.</p><p>Here are five ways AI can make your inbox easier to manage without writing a single email for you.</p><h2 id="1-show-you-what-needs-your-attention">1. Show you what needs your attention </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="m7hfVGwtaCPDBmXJExuRoN" name="8 (78)" alt="AI Inbox for Gmail" src="https://cdn.mos.cms.futurecdn.net/m7hfVGwtaCPDBmXJExuRoN.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: Google )</span></figcaption></figure><p>Most inboxes present every unread email as one more thing demanding your attention. A message from someone waiting on a decision can sit beside a sale announcement, an automated receipt and a newsletter you might read later.</p><p>Google’s <a href="https://www.tomsguide.com/ai/google-just-launched-a-new-ai-agent-that-runs-your-inbox-heres-what-cc-actually-does">AI Inbox</a> is designed to separate those signals. It surfaces top priorities and groups together topics you may need to catch up on, giving you a more focused starting point than a long chronological list.</p><p>This is particularly helpful when I return to my inbox after being away from it. Instead of opening messages one by one to see what happened, I can begin with the conversations Gmail has identified as important.</p><p>AI won’t always understand your priorities perfectly, so keep that in mind. A routine-looking message may matter because of the person who sent it or something discussed outside email. I still scan the rest of my inbox, but I no longer have to treat every unread message as equally urgent.</p><h2 id="2-summarize-a-long-email-thread">2. Summarize a long email thread </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:800px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="V4mCk94thMGFbvLTKcXjeU" name="Gemini 3" alt="Gemini 3" src="https://cdn.mos.cms.futurecdn.net/V4mCk94thMGFbvLTKcXjeU.gif" mos="" align="middle" fullscreen="" width="800" height="450" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Gemini)</span></figcaption></figure><p>Few things make me want to close Gmail faster than opening a thread with dozens of new replies.</p><p>Some messages repeat information from earlier in the conversation. Others branch into separate discussions, and the detail you need may be buried somewhere in the middle. By the time you reach the bottom, it’s easy to forget what prompted the exchange in the first place.</p><p>Gmail’s AI Overviews can summarize long conversations, pulling together the key points and recent replies. This gives me enough context to understand what the thread is about and where I should start reading.</p><p>I don’t rely on the summary when I need an exact quote, firm deadline or final decision. AI can miss a qualification or flatten a disagreement between two people into a cleaner consensus than the thread supports. For anything consequential, I go back to the original messages.</p><p>The summary still saves time because it directs me to the parts of the conversation that need closer attention.</p><h2 id="3-find-an-email-when-you-can-t-remember-the-keywords">3. Find an email when you can’t remember the keywords </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:1000px;"><p class="vanilla-image-block" style="padding-top:57.10%;"><img id="2UYaa7Q5trwrK9dQWCeHQF" name="gmail-magnify-shst.jpg" alt="The Gmail logo on a computer screen under a magnifying glass." src="https://cdn.mos.cms.futurecdn.net/2UYaa7Q5trwrK9dQWCeHQF.jpg" mos="" align="middle" fullscreen="" width="1000" height="571" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: dennizn/Shutterstock)</span></figcaption></figure><p>This one is a life saver for me. With three kids, there is always a form or permission slip that I need to <em>not </em>miss. And while traditional search works when you know what you're searching for, sometimes all I have is a date or name. Unfortunately, that isn’t usually how I remember email.</p><p>I may remember that someone recommended an app or sent me a meeting date without recalling who said it. Sometimes I know an attachment arrived but have no idea what the file was called. That can lead to several rounds of searching with slightly different keywords.</p><p>AI search allows you to describe the information instead. In Gmail, you can ask a natural-language question, and Gemini can use relevant messages to generate an answer or surface the conversations containing it.</p><p>You might ask, “What date did we agree on for the interview?” or “Who sent me information about the new subscription?” The wording doesn’t have to match the original email.</p><p>As with summaries, I open the source message before using the information. The advantage is reaching it without having to remember how someone phrased the subject line three weeks ago.</p><h2 id="4-pull-out-action-items-and-deadlines">4. Pull out action items and deadlines </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="vDN94fdQ2GNwBAQeWtL8p6" name="8 (77)" alt="AI Overviews in Gmail" src="https://cdn.mos.cms.futurecdn.net/vDN94fdQ2GNwBAQeWtL8p6.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: Google)</span></figcaption></figure><p>An email doesn’t need to contain the words “action item” to give you something else to do.</p><p>A request may appear at the end of a long update. Someone might mention a deadline in passing or ask a question halfway through a message covering several unrelated subjects. Read it too quickly and the request disappears beneath everything that arrived afterward. That drives me crazy! However, AI can scan a conversation for outstanding questions, dates and tasks. You can ask Gemini which messages require a response, what you agreed to send or whether a thread contains an upcoming deadline.</p><p>This is one of the most useful ways to catch up after a busy stretch. I’d never treat that picture as a definitive to-do list. A missed deadline matters far more than a few saved minutes, so I check the original messages before adding anything to my calendar. AI acts as a second pass, catching details that could otherwise remain buried.</p><h2 id="5-bring-related-conversations-together">5. Bring related conversations together </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="ozvtEUJq43CwooQ9MhEPa4" name="Woman typing on iPhone.jpg" alt="A woman holding an iPhone near an iPad" src="https://cdn.mos.cms.futurecdn.net/ozvtEUJq43CwooQ9MhEPa4.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: Shutterstock)</span></figcaption></figure><p>One project rarely stays inside one neat email thread. The initial discussion may have one subject line, the scheduling conversation another and the follow-up a third. Add several participants and forwarded messages, and the information becomes scattered across your inbox.</p><p>AI can identify relationships between those conversations even when they don’t share the same wording. Instead of opening one thread and searching separately for the rest, you can ask for the latest information about a topic or project.</p><p> AI can work with the inbox I actually have, including the conversations I forgot to file correctly.</p><p>It still requires oversight. Two projects may have similar names, or the same person may email you about unrelated subjects. I check which messages informed an answer before assuming AI has assembled the right set.</p><h2 id="bottom-line-i-want-ai-handling-the-clutter-not-the-conversation">Bottom line: I want AI handling the clutter, not the conversation </h2><p>AI-generated replies will probably become harder to avoid as email providers place them directly beneath our messages. For some people, they remove the stress of writing and make communication faster. I understand the appeal.</p><p>They just aren’t the feature I need. Choosing my own words takes a little longer, but it preserves the reason for sending an email in the first place. The administrative work surrounding that exchange is where I’m happy to save time.</p><p>Do you use AI to save time with your inbox? Let me know in the comments. </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/ai/google-gemini/5-gemini-features-chatgpt-still-cant-match"><strong>5 Gemini features ChatGPT still can’t match</strong></a></li><li><a href="https://www.tomsguide.com/ai/meta-files-patent-for-ai-camera-glasses-that-use-facial-recognition-expression-analysis-and-information-about-your-relationships-to-identify-people-around-you-and-create-highlights"><strong>Meta files patent for AI facial recognition glasses that identify people around you and record automatically</strong></a></li><li><a href="https://www.tomsguide.com/ai/claude/5-features-that-give-claude-the-edge-over-chatgpt"><strong>5 features that give Claude the edge over ChatGPT</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/i-dont-use-ai-to-write-my-emails-heres-how-i-use-it-to-manage-my-inbox-instead</link>
                                                                            <description>
                            <![CDATA[ Discover five ways AI can organize your inbox, summarize long threads and find buried messages without writing your emails for you. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">sTvEQhST4cHFA8gTAhjCSY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CUsJfx4ZxhsmotgspP3qqX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 20 Aug 2026 05:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Email]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/CUsJfx4ZxhsmotgspP3qqX-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A smartphone with the Gmail logo on it resting on top of a computer keyboard.]]></media:description>                                                            <media:text><![CDATA[A smartphone with the Gmail logo on it resting on top of a computer keyboard.]]></media:text>
                                <media:title type="plain"><![CDATA[A smartphone with the Gmail logo on it resting on top of a computer keyboard.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CUsJfx4ZxhsmotgspP3qqX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When my grandfather would write me while I was away at school, he would end each letter with, "It's been fun to visit with you for a few minutes." That's the way I still feel about any correspondance -- it's a way to visit with someone regardless of how quick or meaningless. <br><br>And now that <a href="https://www.tomsguide.com/ai/claude-can-now-send-gmail-emails-heres-why-you-might-want-to-test-it-first">Claude can not only draft an email but send it</a>, I feel like that's just another AI feature I simply don't need.  However, I feel differently about everything surrounding that conversation.</p><p>There’s nothing personal about sorting newsletters, searching for a buried attachment or rereading a 20-message thread to work out what everyone decided. These are the jobs that could easily consume my day, and I’m more than happy to hand some of them to AI.</p><p>Features such as <a href="https://www.tomsguide.com/ai/gmails-biggest-update-in-20-years-5-ai-features-that-could-change-email-forever">Google’s AI Inbox and AI Overviews</a> in Gmail can identify priority messages, summarize conversations and answer questions about information scattered across multiple emails. I still write my own replies, but I spend much less time figuring out which ones I need to send.</p><p>Here are five ways AI can make your inbox easier to manage without writing a single email for you.</p><h2 id="1-show-you-what-needs-your-attention">1. Show you what needs your attention </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="m7hfVGwtaCPDBmXJExuRoN" name="8 (78)" alt="AI Inbox for Gmail" src="https://cdn.mos.cms.futurecdn.net/m7hfVGwtaCPDBmXJExuRoN.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: Google )</span></figcaption></figure><p>Most inboxes present every unread email as one more thing demanding your attention. A message from someone waiting on a decision can sit beside a sale announcement, an automated receipt and a newsletter you might read later.</p><p>Google’s <a href="https://www.tomsguide.com/ai/google-just-launched-a-new-ai-agent-that-runs-your-inbox-heres-what-cc-actually-does">AI Inbox</a> is designed to separate those signals. It surfaces top priorities and groups together topics you may need to catch up on, giving you a more focused starting point than a long chronological list.</p><p>This is particularly helpful when I return to my inbox after being away from it. Instead of opening messages one by one to see what happened, I can begin with the conversations Gmail has identified as important.</p><p>AI won’t always understand your priorities perfectly, so keep that in mind. A routine-looking message may matter because of the person who sent it or something discussed outside email. I still scan the rest of my inbox, but I no longer have to treat every unread message as equally urgent.</p><h2 id="2-summarize-a-long-email-thread">2. Summarize a long email thread </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:800px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="V4mCk94thMGFbvLTKcXjeU" name="Gemini 3" alt="Gemini 3" src="https://cdn.mos.cms.futurecdn.net/V4mCk94thMGFbvLTKcXjeU.gif" mos="" align="middle" fullscreen="" width="800" height="450" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Gemini)</span></figcaption></figure><p>Few things make me want to close Gmail faster than opening a thread with dozens of new replies.</p><p>Some messages repeat information from earlier in the conversation. Others branch into separate discussions, and the detail you need may be buried somewhere in the middle. By the time you reach the bottom, it’s easy to forget what prompted the exchange in the first place.</p><p>Gmail’s AI Overviews can summarize long conversations, pulling together the key points and recent replies. This gives me enough context to understand what the thread is about and where I should start reading.</p><p>I don’t rely on the summary when I need an exact quote, firm deadline or final decision. AI can miss a qualification or flatten a disagreement between two people into a cleaner consensus than the thread supports. For anything consequential, I go back to the original messages.</p><p>The summary still saves time because it directs me to the parts of the conversation that need closer attention.</p><h2 id="3-find-an-email-when-you-can-t-remember-the-keywords">3. Find an email when you can’t remember the keywords </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:1000px;"><p class="vanilla-image-block" style="padding-top:57.10%;"><img id="2UYaa7Q5trwrK9dQWCeHQF" name="gmail-magnify-shst.jpg" alt="The Gmail logo on a computer screen under a magnifying glass." src="https://cdn.mos.cms.futurecdn.net/2UYaa7Q5trwrK9dQWCeHQF.jpg" mos="" align="middle" fullscreen="" width="1000" height="571" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: dennizn/Shutterstock)</span></figcaption></figure><p>This one is a life saver for me. With three kids, there is always a form or permission slip that I need to <em>not </em>miss. And while traditional search works when you know what you're searching for, sometimes all I have is a date or name. Unfortunately, that isn’t usually how I remember email.</p><p>I may remember that someone recommended an app or sent me a meeting date without recalling who said it. Sometimes I know an attachment arrived but have no idea what the file was called. That can lead to several rounds of searching with slightly different keywords.</p><p>AI search allows you to describe the information instead. In Gmail, you can ask a natural-language question, and Gemini can use relevant messages to generate an answer or surface the conversations containing it.</p><p>You might ask, “What date did we agree on for the interview?” or “Who sent me information about the new subscription?” The wording doesn’t have to match the original email.</p><p>As with summaries, I open the source message before using the information. The advantage is reaching it without having to remember how someone phrased the subject line three weeks ago.</p><h2 id="4-pull-out-action-items-and-deadlines">4. Pull out action items and deadlines </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="vDN94fdQ2GNwBAQeWtL8p6" name="8 (77)" alt="AI Overviews in Gmail" src="https://cdn.mos.cms.futurecdn.net/vDN94fdQ2GNwBAQeWtL8p6.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: Google)</span></figcaption></figure><p>An email doesn’t need to contain the words “action item” to give you something else to do.</p><p>A request may appear at the end of a long update. Someone might mention a deadline in passing or ask a question halfway through a message covering several unrelated subjects. Read it too quickly and the request disappears beneath everything that arrived afterward. That drives me crazy! However, AI can scan a conversation for outstanding questions, dates and tasks. You can ask Gemini which messages require a response, what you agreed to send or whether a thread contains an upcoming deadline.</p><p>This is one of the most useful ways to catch up after a busy stretch. I’d never treat that picture as a definitive to-do list. A missed deadline matters far more than a few saved minutes, so I check the original messages before adding anything to my calendar. AI acts as a second pass, catching details that could otherwise remain buried.</p><h2 id="5-bring-related-conversations-together">5. Bring related conversations together </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="ozvtEUJq43CwooQ9MhEPa4" name="Woman typing on iPhone.jpg" alt="A woman holding an iPhone near an iPad" src="https://cdn.mos.cms.futurecdn.net/ozvtEUJq43CwooQ9MhEPa4.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: Shutterstock)</span></figcaption></figure><p>One project rarely stays inside one neat email thread. The initial discussion may have one subject line, the scheduling conversation another and the follow-up a third. Add several participants and forwarded messages, and the information becomes scattered across your inbox.</p><p>AI can identify relationships between those conversations even when they don’t share the same wording. Instead of opening one thread and searching separately for the rest, you can ask for the latest information about a topic or project.</p><p> AI can work with the inbox I actually have, including the conversations I forgot to file correctly.</p><p>It still requires oversight. Two projects may have similar names, or the same person may email you about unrelated subjects. I check which messages informed an answer before assuming AI has assembled the right set.</p><h2 id="bottom-line-i-want-ai-handling-the-clutter-not-the-conversation">Bottom line: I want AI handling the clutter, not the conversation </h2><p>AI-generated replies will probably become harder to avoid as email providers place them directly beneath our messages. For some people, they remove the stress of writing and make communication faster. I understand the appeal.</p><p>They just aren’t the feature I need. Choosing my own words takes a little longer, but it preserves the reason for sending an email in the first place. The administrative work surrounding that exchange is where I’m happy to save time.</p><p>Do you use AI to save time with your inbox? Let me know in the comments. </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/ai/google-gemini/5-gemini-features-chatgpt-still-cant-match"><strong>5 Gemini features ChatGPT still can’t match</strong></a></li><li><a href="https://www.tomsguide.com/ai/meta-files-patent-for-ai-camera-glasses-that-use-facial-recognition-expression-analysis-and-information-about-your-relationships-to-identify-people-around-you-and-create-highlights"><strong>Meta files patent for AI facial recognition glasses that identify people around you and record automatically</strong></a></li><li><a href="https://www.tomsguide.com/ai/claude/5-features-that-give-claude-the-edge-over-chatgpt"><strong>5 features that give Claude the edge over ChatGPT</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New iOS 26 and macOS Tahoe updates fix 30 security vulnerabilities: what you need to know ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Apple just dropped security updates for iOS 26.6.1, iPadOS 26.6.1 and macOS Tahoe 26.6.2 that fixe nearly 30 vulnerabilities according to a <a href="https://support.apple.com/en-us/148282" target="_blank">support document</a>. The surprising thing about this update is that it's the third security release in as many weeks. </p><p>Earlier this month, <a href="https://www.ft.com/content/4532122d-90f2-4433-9df6-ca99d8a141d2" target="_blank">The Financial Times reported</a> that AI is surfacing bugs faster than Apple's normal update release schedule can handle.</p><p>Per Apple, this update includes fixes that were already added to the <a href="https://www.tomsguide.com/phones/iphones/ios-27-beta-5-adds-new-app-icons-more-siri-voices-improved-search-and-more-everything-thats-changed">iOS 27 beta</a>, <a href="https://www.tomsguide.com/computing/ipads/ipados-27-public-beta">iPadOS 27</a> beta and <a href="https://www.tomsguide.com/computing/macos/macos-golden-gate-public-beta-hands-on-preview">macOS Golden Gate betas</a> that are currently running.</p><h2 id="close-to-30-vulnerabilities">Close to 30 vulnerabilities</h2><p>A majority of the vulnerabilities are related to <a href="https://www.tomsguide.com/computing/online-security/time-to-update-your-iphone-apple-patches-two-ios-zero-days-used-in-the-wild-by-hackers">WebKit</a> and flaws that affected Safari. Simply accessing "maliciously crafted web content" could cause Safari to crash. These crashes came from memory handling issues, input validation, and processing states. </p><p>The other fixes include an audio vulnerability that could allow an app to leak sensitive information, an image flaw that could allow for random code execution, and a trio of kernel vulnerabilities.</p><p>For iOS specifically, Apple addressed a telephony bug that could allow a bad actor in a privileged network to bypass IPSec authentication and intercept your network traffic.</p><p>Interestingly, of the vulnerabilities outlined, 21 are WebKit-related, and nine are credited to OpenAI's Codex Security. </p><h2 id="stay-safe-and-update">Stay safe and update</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:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="F9ybS7WNwSK95hqxotZgYM" name="apple shutterstock.jpg" alt="A padlock resting next to the Apple logo on the lid of a gold-colored Apple laptop." src="https://cdn.mos.cms.futurecdn.net/F9ybS7WNwSK95hqxotZgYM.jpg" mos="" align="middle" fullscreen="" width="1000" height="563" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: robert coolen/Shutterstock)</span></figcaption></figure><p>According to Apple, none of the vulnerabilities in today's listing are known to have been exploited in the wild yet. Still, you'll want to update to the latest version as soon as possible since bad actors could start targeting those flaws.</p><p>As such, we recommend you update to the newest versions as soon as possible, especially with all of these vulnerabilities being found so quickly.</p><p>For devices that can't run iOS 26 or iPad OS 26, Apple also released iOS 18.7.10 and iPadOS 18.7.10 so older devices can receive the same support and protection.</p><p>You can install the updates via the Settings app by tapping General and selecting Software Update.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/phones/iphones/apple-iphone-18-event-all-the-new-products-expected-to-launch-in-september"><strong>Apple iPhone 18 event — all the new products expected to launch in September</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/sales-events/15-apple-deals-students-should-snap-up-on-amazon-save-on-macbook-air-m5-airpods-ipads-and-accessories"><strong>15 Apple deals students should snap up on Amazon — save on MacBook Air M5, AirPods, iPads and accessories</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-leakers-reveal-new-details-around-release-and-extremely-limited-availability"><strong>iPhone Ultra leakers reveal new details around release and 'extremely limited' availability</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/new-ios-26-and-macos-tahoe-updates-fix-30-security-vulnerabilities-what-you-need-to-know</link>
                                                                            <description>
                            <![CDATA[ The latest Apple security updates fix more than 30 vulnerabilities for iOS  26 and macOS Tahoe. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qfXm7dtFK2pumhziRukbjV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DguAUCVDyTf6UDjiBECbz8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 18 Aug 2026 20:29:55 +0000</pubDate>                                                                                                                                <updated>Tue, 18 Aug 2026 20:36:45 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;br&gt;Send secure tips on Signal: scyo1.55.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DguAUCVDyTf6UDjiBECbz8-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide / John Velasco]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[iPhone 17 Pro review.]]></media:description>                                                            <media:text><![CDATA[iPhone 17 Pro review.]]></media:text>
                                <media:title type="plain"><![CDATA[iPhone 17 Pro review.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DguAUCVDyTf6UDjiBECbz8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Apple just dropped security updates for iOS 26.6.1, iPadOS 26.6.1 and macOS Tahoe 26.6.2 that fixe nearly 30 vulnerabilities according to a <a href="https://support.apple.com/en-us/148282" target="_blank">support document</a>. The surprising thing about this update is that it's the third security release in as many weeks. </p><p>Earlier this month, <a href="https://www.ft.com/content/4532122d-90f2-4433-9df6-ca99d8a141d2" target="_blank">The Financial Times reported</a> that AI is surfacing bugs faster than Apple's normal update release schedule can handle.</p><p>Per Apple, this update includes fixes that were already added to the <a href="https://www.tomsguide.com/phones/iphones/ios-27-beta-5-adds-new-app-icons-more-siri-voices-improved-search-and-more-everything-thats-changed">iOS 27 beta</a>, <a href="https://www.tomsguide.com/computing/ipads/ipados-27-public-beta">iPadOS 27</a> beta and <a href="https://www.tomsguide.com/computing/macos/macos-golden-gate-public-beta-hands-on-preview">macOS Golden Gate betas</a> that are currently running.</p><h2 id="close-to-30-vulnerabilities">Close to 30 vulnerabilities</h2><p>A majority of the vulnerabilities are related to <a href="https://www.tomsguide.com/computing/online-security/time-to-update-your-iphone-apple-patches-two-ios-zero-days-used-in-the-wild-by-hackers">WebKit</a> and flaws that affected Safari. Simply accessing "maliciously crafted web content" could cause Safari to crash. These crashes came from memory handling issues, input validation, and processing states. </p><p>The other fixes include an audio vulnerability that could allow an app to leak sensitive information, an image flaw that could allow for random code execution, and a trio of kernel vulnerabilities.</p><p>For iOS specifically, Apple addressed a telephony bug that could allow a bad actor in a privileged network to bypass IPSec authentication and intercept your network traffic.</p><p>Interestingly, of the vulnerabilities outlined, 21 are WebKit-related, and nine are credited to OpenAI's Codex Security. </p><h2 id="stay-safe-and-update">Stay safe and update</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:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="F9ybS7WNwSK95hqxotZgYM" name="apple shutterstock.jpg" alt="A padlock resting next to the Apple logo on the lid of a gold-colored Apple laptop." src="https://cdn.mos.cms.futurecdn.net/F9ybS7WNwSK95hqxotZgYM.jpg" mos="" align="middle" fullscreen="" width="1000" height="563" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: robert coolen/Shutterstock)</span></figcaption></figure><p>According to Apple, none of the vulnerabilities in today's listing are known to have been exploited in the wild yet. Still, you'll want to update to the latest version as soon as possible since bad actors could start targeting those flaws.</p><p>As such, we recommend you update to the newest versions as soon as possible, especially with all of these vulnerabilities being found so quickly.</p><p>For devices that can't run iOS 26 or iPad OS 26, Apple also released iOS 18.7.10 and iPadOS 18.7.10 so older devices can receive the same support and protection.</p><p>You can install the updates via the Settings app by tapping General and selecting Software Update.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/phones/iphones/apple-iphone-18-event-all-the-new-products-expected-to-launch-in-september"><strong>Apple iPhone 18 event — all the new products expected to launch in September</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/sales-events/15-apple-deals-students-should-snap-up-on-amazon-save-on-macbook-air-m5-airpods-ipads-and-accessories"><strong>15 Apple deals students should snap up on Amazon — save on MacBook Air M5, AirPods, iPads and accessories</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-leakers-reveal-new-details-around-release-and-extremely-limited-availability"><strong>iPhone Ultra leakers reveal new details around release and 'extremely limited' availability</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I read all 233 pages of Meta’s $1.4 trillion lawsuit — here’s why Facebook and Instagram may never be the same ]]></title>
                                                                                                <dc:content><![CDATA[ <p>A massive jury trial against Meta is beginning today that could change the face of social media forever with a potential financial death penalty of $1.4 trillion on the line.</p><p>When a tech giant is put on trial, the public is usually conditioned to expect a lengthy battle that ends in a quiet settlement, written off as just the cost of doing business. But this is entirely different.</p><p>That’s because after the lawsuit was filed by 30 U.S. states in 2023, including California and New York, governments are finally taking action in saying the “attention economy” is a public hazard for children.</p><p>It’s not just an accusation of bad content policy, it is a direct assault on how Meta and social media as a whole works. Beyond that eye-watering figure, the states are demanding fundamental changes to how Instagram and Facebook operate — including killing the like button and infinite scroll.</p><p>Should Meta lose, this would be a massive tectonic shift. I’ve sifted through the entire <a href="https://oag.ca.gov/system/files/attachments/press-docs/FINAL%20Meta%20Multistate%20Complaint,%20N.D.%20Cal.%20(REDACTED,%20CONFORMED).pdf" target="_blank">case document</a> to break down the accusations, the demands, the evidence and what this will actually mean for you.</p><h2 class="article-body__section" id="section-the-hit-list-what-is-actually-changing"><span>The hit list (what is actually changing)</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mjMcVn3yy2PbCer4Gv4pAg" name="shutterstock_2066080460.jpg" alt="Meta logo on screen of mobile phone on Facebook word background. Facebook after rebranding and changing name to Meta." src="https://cdn.mos.cms.futurecdn.net/mjMcVn3yy2PbCer4Gv4pAg.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: Viacheslav Lopatin | Shutterstock)</span></figcaption></figure><p>I’ll go into the specifics of the case itself in a little bit, but outside of that gigantic price tag, what would actually vanish from Meta’s apps if the company loses?</p><ul><li><strong>Death of infinite scroll & autoplay: </strong>The states are demanding an end to the endless feed and autoplaying of content. These features are explicitly designed to maximize screen time, and losing them breaks the TikTok-style doomscroll in a fundamental way.</li><li><strong>The end of the like button: </strong>Another key dopamine hit that keeps teens hooked to their screens is the like count. The lawsuit is targeting this too — demanding an end to social validation metrics.</li><li><strong>No more algorithmic manipulation: </strong>The states want to see change to Meta’s “dopamine-manipulating recommendation algorithms.” This could mean a return to your standard chronological timelines by default.</li><li><strong>Notification lockdown: </strong>No more frequent push notifications designed to pull young people back into apps. You’ll see these pop up to stop young people from disengaging with a social platform.</li><li><strong>Killing stories & filters: </strong>The states want an end to disappearing or “ephemeral” posts like Instagram Stories. On top of that, they’re demanding the removal of image filters that alter a user’s physical appearance in pictures.</li></ul><p>However, there is one broader, scarier implication for <em>everyone, </em>not just teenagers.</p><h2 id="the-death-of-the-finsta">The death of the “Finsta”</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:3405px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="J4EEHYGRdoGNKryBLi9JEf" name="GettyImages-1086354750.jpg" alt="Instagram" src="https://cdn.mos.cms.futurecdn.net/J4EEHYGRdoGNKryBLi9JEf.jpg" mos="" align="middle" fullscreen="" width="3405" height="2270" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: aap Arriens/NurPhoto via Getty Images)</span></figcaption></figure><p>The lawsuit isn’t just about tweaking algorithms; it’s demanding structural changes to how accounts are created. The states are demanding strict parental verification for teenagers and limits on multiple account creation.</p><p>For teens, this effectively kills the “Finsta” — a fake or secondary Instagram account used to hide from parents or public scrutiny), and to enforce this, platforms will need to know exactly who is holding the phone. That would spell the end of casual online anonymity.</p><h2 class="article-body__section" id="section-the-smoking-gun-could-meta-lose-this-case"><span>The smoking gun — could Meta lose this case?</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:9375px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="d6qmGSnFFXo6yGiczVTtSb" name="shutterstock_2663776741-2" alt="mark zuckerberg" src="https://cdn.mos.cms.futurecdn.net/d6qmGSnFFXo6yGiczVTtSb.jpg" mos="" align="middle" fullscreen="" width="9375" height="5273" 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>Obviously, I’m not going to claim myself to be some expert legal mind here. But I’ve been a tech journalist for over 15 years and witnessed a bunch of lawsuits, and some of the data points, internal admissions and quotes in this document seem pretty eye-opening.</p><h2 id="the-coppa-scandals">The COPPA Scandals:</h2><p>For over seven years (until December 2019), Instagram had no age gate at all. When Meta finally added one, the drop-down menu defaulted automatically to a date making the user exactly 13 years old — effectively showing kids the exact date to bypass the restriction.</p><p>Internal research cited in the filing revealed that 40% of children aged 9 to 12 use Instagram daily, and 45% use Facebook daily. This leads to the accusation that Meta viewed children aged 10 to 12 as a “valuable but untapped audience” that dedicated internal teams analyzed to target.</p><h2 id="the-founding-confession">The founding confession</h2><p>Sean Parker himself said that the thought process behind building Facebook and Instagram was all about “how do we consume as much of your time and conscious attention as possible?” </p><p>He called it a “social-validation feedback loop” that exploits “a vulnerability in human psychology,” which its creators all understood “consciously.”</p><h2 id="i-don-t-want-to-hear-it-about-underage-users">“I don’t want to hear it” about underage users</h2><p>This is what Head of Instagram Adam Mosseri apparently said when he was confronted with evidence that child star JoJo Siwa had been active on Instagram since age 8. </p><p>On top of that, Meta’s former director of site integrity Arturo Bejar testified that Zuckerberg knew about “harms that teenagers are experiencing in its product,” but are “choosing not to engage about it.”</p><h2 id="meta-s-own-internal-numbers">Meta’s own internal numbers</h2><p>The company ran a “Teen Mental Health Deep Dive” private survey that found:</p><ul><li>1 in 5 teens felt worse about themselves after using Instagram</li><li>24% reported feeling “not good enough because of the app”</li><li>67% felt forced to “create a perfect image online”</li><li>Over half admitted to struggling with severe FOMO (Fear of Missing Out)</li><li>14% of young users admitted to having thoughts of wanting to “hurt [or] kill themselves”</li></ul><h2 id="cynical-product-design-and-internal-teams">Cynical product design and internal teams</h2><p>The lawsuit pulls back the curtain on how Meta internally viewed user engagement — with the company reportedly operating an engineering group called the “Rabbithole team.” Their mission was clear: optimizing “preference amplification,” which is fancy wording for figuring out how to push users deeper down algorithmic rabbit holes.</p><p>Even when Meta rolled out “time management” tools like the Daily Limit to appease public critics, the lawsuit alleges they were designed to fail. Originally, the daily limit was 10 minutes, but once public scrutiny died down after the 2021 whistleblower leaks, Meta quietly raised that minimum to 30 minutes.</p><p>But perhaps most damning of all is that as early as 2017, Facebook’s own former VP for user growth publicly admitted he had banned his own children from using Facebook. Sometime after that, Meta simply disbanded its internal “Responsible Innovation” team.</p><h2 class="article-body__section" id="section-outlook-a-corporate-death-penalty"><span>Outlook: a corporate death penalty?</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kWfKU2NXkqQqgsozLXPWxX" name="Zuckerberg.GettyImages-2173579179" alt="Mark Zuckerberg at Meta AI event" src="https://cdn.mos.cms.futurecdn.net/kWfKU2NXkqQqgsozLXPWxX.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: David Paul Morris/Bloomberg via Getty Images)</span></figcaption></figure><p>The federal trial officially kicks off today in Oakland, California, with California, Colorado, Kentucky and New Jersey leading the charge.</p><p>But this trial isn’t just about the money. Because this is a consumer protection lawsuit rather than a personal injury case, the states are asking the judge to order sweeping changes to the platforms.</p><p>If Meta loses, we aren’t just looking at a massive fine. We are looking at court-mandated age restrictions, the deletion of algorithmic feeds for minors, and the permanent removal of the infinite scroll.</p><p>Win or lose, the curtain has been pulled back. The “attention economy” as we know it is officially on trial.</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/ai/meta-files-patent-for-ai-camera-glasses-that-use-facial-recognition-expression-analysis-and-information-about-your-relationships-to-identify-people-around-you-and-create-highlights">Meta files patent for AI facial recognition glasses that identify people around you and record automatically</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/a-parents-guide-to-the-macbook-neo-is-apples-cheapest-laptop-a-back-to-school-trap">A parent’s guide to the MacBook Neo: is Apple’s cheapest laptop a back-to-school trap?</a></li><li><a href="https://www.tomsguide.com/ai/i-connected-claude-to-my-daily-apps-here-are-the-5-that-actually-made-it-useful">I connected Claude to my daily apps — here are the 5 that actually made it useful</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/social-media/i-read-all-233-pages-of-metas-usd1-4-trillion-lawsuit-heres-why-facebook-and-instagram-may-never-be-the-same</link>
                                                                            <description>
                            <![CDATA[ I read all 233 pages of Meta’s $1.4 trillion youth addiction lawsuit. From ending the like button to killing infinite scroll, here is what could change. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6hPAY7k9jynWsEtDTFMBGf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EerCsNfck6dk6ifJUrQqWF-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 18 Aug 2026 11:46:12 +0000</pubDate>                                                                                                                                <updated>Tue, 18 Aug 2026 14:05:48 +0000</updated>
                                                                                                                                            <category><![CDATA[Social Media]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/EerCsNfck6dk6ifJUrQqWF-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Mark Zuckerberg ]]></media:description>                                                            <media:text><![CDATA[Mark Zuckerberg ]]></media:text>
                                <media:title type="plain"><![CDATA[Mark Zuckerberg ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EerCsNfck6dk6ifJUrQqWF-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>A massive jury trial against Meta is beginning today that could change the face of social media forever with a potential financial death penalty of $1.4 trillion on the line.</p><p>When a tech giant is put on trial, the public is usually conditioned to expect a lengthy battle that ends in a quiet settlement, written off as just the cost of doing business. But this is entirely different.</p><p>That’s because after the lawsuit was filed by 30 U.S. states in 2023, including California and New York, governments are finally taking action in saying the “attention economy” is a public hazard for children.</p><p>It’s not just an accusation of bad content policy, it is a direct assault on how Meta and social media as a whole works. Beyond that eye-watering figure, the states are demanding fundamental changes to how Instagram and Facebook operate — including killing the like button and infinite scroll.</p><p>Should Meta lose, this would be a massive tectonic shift. I’ve sifted through the entire <a href="https://oag.ca.gov/system/files/attachments/press-docs/FINAL%20Meta%20Multistate%20Complaint,%20N.D.%20Cal.%20(REDACTED,%20CONFORMED).pdf" target="_blank">case document</a> to break down the accusations, the demands, the evidence and what this will actually mean for you.</p><h2 class="article-body__section" id="section-the-hit-list-what-is-actually-changing"><span>The hit list (what is actually changing)</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mjMcVn3yy2PbCer4Gv4pAg" name="shutterstock_2066080460.jpg" alt="Meta logo on screen of mobile phone on Facebook word background. Facebook after rebranding and changing name to Meta." src="https://cdn.mos.cms.futurecdn.net/mjMcVn3yy2PbCer4Gv4pAg.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: Viacheslav Lopatin | Shutterstock)</span></figcaption></figure><p>I’ll go into the specifics of the case itself in a little bit, but outside of that gigantic price tag, what would actually vanish from Meta’s apps if the company loses?</p><ul><li><strong>Death of infinite scroll & autoplay: </strong>The states are demanding an end to the endless feed and autoplaying of content. These features are explicitly designed to maximize screen time, and losing them breaks the TikTok-style doomscroll in a fundamental way.</li><li><strong>The end of the like button: </strong>Another key dopamine hit that keeps teens hooked to their screens is the like count. The lawsuit is targeting this too — demanding an end to social validation metrics.</li><li><strong>No more algorithmic manipulation: </strong>The states want to see change to Meta’s “dopamine-manipulating recommendation algorithms.” This could mean a return to your standard chronological timelines by default.</li><li><strong>Notification lockdown: </strong>No more frequent push notifications designed to pull young people back into apps. You’ll see these pop up to stop young people from disengaging with a social platform.</li><li><strong>Killing stories & filters: </strong>The states want an end to disappearing or “ephemeral” posts like Instagram Stories. On top of that, they’re demanding the removal of image filters that alter a user’s physical appearance in pictures.</li></ul><p>However, there is one broader, scarier implication for <em>everyone, </em>not just teenagers.</p><h2 id="the-death-of-the-finsta">The death of the “Finsta”</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:3405px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="J4EEHYGRdoGNKryBLi9JEf" name="GettyImages-1086354750.jpg" alt="Instagram" src="https://cdn.mos.cms.futurecdn.net/J4EEHYGRdoGNKryBLi9JEf.jpg" mos="" align="middle" fullscreen="" width="3405" height="2270" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: aap Arriens/NurPhoto via Getty Images)</span></figcaption></figure><p>The lawsuit isn’t just about tweaking algorithms; it’s demanding structural changes to how accounts are created. The states are demanding strict parental verification for teenagers and limits on multiple account creation.</p><p>For teens, this effectively kills the “Finsta” — a fake or secondary Instagram account used to hide from parents or public scrutiny), and to enforce this, platforms will need to know exactly who is holding the phone. That would spell the end of casual online anonymity.</p><h2 class="article-body__section" id="section-the-smoking-gun-could-meta-lose-this-case"><span>The smoking gun — could Meta lose this case?</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:9375px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="d6qmGSnFFXo6yGiczVTtSb" name="shutterstock_2663776741-2" alt="mark zuckerberg" src="https://cdn.mos.cms.futurecdn.net/d6qmGSnFFXo6yGiczVTtSb.jpg" mos="" align="middle" fullscreen="" width="9375" height="5273" 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>Obviously, I’m not going to claim myself to be some expert legal mind here. But I’ve been a tech journalist for over 15 years and witnessed a bunch of lawsuits, and some of the data points, internal admissions and quotes in this document seem pretty eye-opening.</p><h2 id="the-coppa-scandals">The COPPA Scandals:</h2><p>For over seven years (until December 2019), Instagram had no age gate at all. When Meta finally added one, the drop-down menu defaulted automatically to a date making the user exactly 13 years old — effectively showing kids the exact date to bypass the restriction.</p><p>Internal research cited in the filing revealed that 40% of children aged 9 to 12 use Instagram daily, and 45% use Facebook daily. This leads to the accusation that Meta viewed children aged 10 to 12 as a “valuable but untapped audience” that dedicated internal teams analyzed to target.</p><h2 id="the-founding-confession">The founding confession</h2><p>Sean Parker himself said that the thought process behind building Facebook and Instagram was all about “how do we consume as much of your time and conscious attention as possible?” </p><p>He called it a “social-validation feedback loop” that exploits “a vulnerability in human psychology,” which its creators all understood “consciously.”</p><h2 id="i-don-t-want-to-hear-it-about-underage-users">“I don’t want to hear it” about underage users</h2><p>This is what Head of Instagram Adam Mosseri apparently said when he was confronted with evidence that child star JoJo Siwa had been active on Instagram since age 8. </p><p>On top of that, Meta’s former director of site integrity Arturo Bejar testified that Zuckerberg knew about “harms that teenagers are experiencing in its product,” but are “choosing not to engage about it.”</p><h2 id="meta-s-own-internal-numbers">Meta’s own internal numbers</h2><p>The company ran a “Teen Mental Health Deep Dive” private survey that found:</p><ul><li>1 in 5 teens felt worse about themselves after using Instagram</li><li>24% reported feeling “not good enough because of the app”</li><li>67% felt forced to “create a perfect image online”</li><li>Over half admitted to struggling with severe FOMO (Fear of Missing Out)</li><li>14% of young users admitted to having thoughts of wanting to “hurt [or] kill themselves”</li></ul><h2 id="cynical-product-design-and-internal-teams">Cynical product design and internal teams</h2><p>The lawsuit pulls back the curtain on how Meta internally viewed user engagement — with the company reportedly operating an engineering group called the “Rabbithole team.” Their mission was clear: optimizing “preference amplification,” which is fancy wording for figuring out how to push users deeper down algorithmic rabbit holes.</p><p>Even when Meta rolled out “time management” tools like the Daily Limit to appease public critics, the lawsuit alleges they were designed to fail. Originally, the daily limit was 10 minutes, but once public scrutiny died down after the 2021 whistleblower leaks, Meta quietly raised that minimum to 30 minutes.</p><p>But perhaps most damning of all is that as early as 2017, Facebook’s own former VP for user growth publicly admitted he had banned his own children from using Facebook. Sometime after that, Meta simply disbanded its internal “Responsible Innovation” team.</p><h2 class="article-body__section" id="section-outlook-a-corporate-death-penalty"><span>Outlook: a corporate death penalty?</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kWfKU2NXkqQqgsozLXPWxX" name="Zuckerberg.GettyImages-2173579179" alt="Mark Zuckerberg at Meta AI event" src="https://cdn.mos.cms.futurecdn.net/kWfKU2NXkqQqgsozLXPWxX.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: David Paul Morris/Bloomberg via Getty Images)</span></figcaption></figure><p>The federal trial officially kicks off today in Oakland, California, with California, Colorado, Kentucky and New Jersey leading the charge.</p><p>But this trial isn’t just about the money. Because this is a consumer protection lawsuit rather than a personal injury case, the states are asking the judge to order sweeping changes to the platforms.</p><p>If Meta loses, we aren’t just looking at a massive fine. We are looking at court-mandated age restrictions, the deletion of algorithmic feeds for minors, and the permanent removal of the infinite scroll.</p><p>Win or lose, the curtain has been pulled back. The “attention economy” as we know it is officially on trial.</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/ai/meta-files-patent-for-ai-camera-glasses-that-use-facial-recognition-expression-analysis-and-information-about-your-relationships-to-identify-people-around-you-and-create-highlights">Meta files patent for AI facial recognition glasses that identify people around you and record automatically</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/a-parents-guide-to-the-macbook-neo-is-apples-cheapest-laptop-a-back-to-school-trap">A parent’s guide to the MacBook Neo: is Apple’s cheapest laptop a back-to-school trap?</a></li><li><a href="https://www.tomsguide.com/ai/i-connected-claude-to-my-daily-apps-here-are-the-5-that-actually-made-it-useful">I connected Claude to my daily apps — here are the 5 that actually made it useful</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ McAfee+ Premium review: Comprehensive online and offline protection at a low starting price ]]></title>
                                                                                                <dc:content><![CDATA[ <p>McAfee has been around for decades, and it has come a long way from the antivirus software I remember slowing down my PC as a teenager. Having tested McAfee+ Premium extensively, I can confirm that it’s one of the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a> suites available today. It packs plenty of useful tools, such as Identity Monitoring, Secure VPN with no limits, File Shredder, and Tracker Remover.</p><p>The software sports a user-friendly interface that makes it a delight to use, and 24/7 customer support over chat and phone ensures all your problems are quickly resolved. Low impact on system resources is another highlight. Even though the Full Scan takes a while and renewal price makes your eye twitch, neither of those are dealbreakers.</p><p>For the complete breakdown, read my full McAfee+ Premium review.</p><h2 class="article-body__section" id="section-mcafee-premium-review-specs"><span>McAfee+ Premium review: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>Starting price</strong></p></td><td  ><p><a href="https://www.mcafee.com/en-gb/antivirus.html" target="_blank" rel="nofollow">$49 / £49</a> (yearly, Consumer) | <a href="https://www.dell.com/en-us/shop/mcafee-total-protection-antivirus-internet-security-software-for-1-device-1-year-subscription-download/apd/ac180675/software" target="_blank" rel="nofollow">$24</a> / <a href="https://business.currys.co.uk/catalogue/computing/software/internet-security-software/mcafee-total-protection-1-year-automatic-renewal-for-3-devices/N659993W" target="_blank" rel="nofollow">£11</a> (yearly, Business)</p></td></tr><tr><td class="firstcol " ><p><strong>Operating system</strong></p></td><td  ><p>Windows, macOS, Android, iOS</p></td></tr><tr><td class="firstcol " ><p><strong>Supported devices</strong></p></td><td  ><p>Unlimited</p></td></tr><tr><td class="firstcol " ><p><strong>Malware protection</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Ransomware protection</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Identity theft protection</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Webcam protection</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Parental controls</strong></p></td><td  ><p>Yes (Family plans only)</p></td></tr><tr><td class="firstcol " ><p><strong>VPN</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Password manager</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Cloud backup</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Firewall</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Secure browser</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Support</strong></p></td><td  ><p>24/7 phone and chat</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-mcafee-premium-review-costs-what-s-covered"><span>McAfee+ Premium review: Costs & what’s covered</span></h2><p>Similar to other antivirus software suites, McAfee offers different plans for consumers and businesses alike. Let’s talk about McAfee’s consumer plans first. The most basic plan, Essential, covers up to five devices and is available for <a href="https://www.mcafee.com/en-gb/antivirus.html" target="_blank" rel="nofollow">$39 / £33</a> for the first year.</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:56.25%;"><img id="K5WxUZVVhzGMwJ5rPi9XqN" name="McAfee_" alt="McAfee+ Premium antivirus software" src="https://cdn.mos.cms.futurecdn.net/K5WxUZVVhzGMwJ5rPi9XqN.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: Tom's Guide)</span></figcaption></figure><p>The McAfee+ Premium Individual plan is a step up from Essential, and costs $49 / £49 for the first year. It naturally includes everything Essential offers, plus a Social Privacy Manager as well as scanning the web for your personal information. McAfee+ Advanced Individual is the most expensive plan, offering the most comprehensive protection. It’ll cost you $89 / £74 for the first year. Alongside everything else included in Essential and Premium, Advanced includes up to $1 million identity theft coverage, bank and credit card transaction monitoring, credit lock and security freeze, and more.</p><p>It’s important to note that after your first year is up, McAfee’s renewal prices go up by <em>a lot. </em>For instance, the Premium plan I tested costs $149 after the first year — a steep $100 price hike. <a href="https://www.tomsguide.com/computing/antivirus/norton-360-review">Norton 360</a> Deluxe, in comparison, costs $124 per renewal, making it slightly cheaper than McAfee.</p><p>There are many family plans available, too, such as Premium Family ($69 starting price) and Ultimate Family ($249 starting price). If you own a business and want a competent antivirus software suite, a number of plans are available exclusively through Dell in the U.S. and Currys in the U.K., starting at just <a href="https://www.dell.com/en-us/shop/mcafee-total-protection-antivirus-internet-security-software-for-1-device-1-year-subscription-download/apd/ac180675/software" target="_blank" rel="nofollow">$24</a> / <a href="https://business.currys.co.uk/catalogue/computing/software/internet-security-software/mcafee-total-protection-1-year-automatic-renewal-for-3-devices/N659993W" target="_blank" rel="nofollow">£11</a> and going all the way up to <a href="https://www.dell.com/en-us/shop/mcafee-premium-family-antivirus-and-internet-security-software-for-unlimited-devices-subscription-1-year/apd/ac180678/software" target="_blank" rel="nofollow">$169</a> — depending on the number of devices and features, of course.</p><p>It’s important to read the fine print to understand what you’re signing up for, but in case you aren’t happy with your purchase, McAfee offers a 30-day money-back guarantee. Also, if McAfee fails to catch a virus and your device gets infected, the company’s Virus Protection Pledge states that it’ll refund you the amount you paid for your subscription.</p><h2 class="article-body__section" id="section-mcafee-premium-review-protection"><span>McAfee+ Premium review: Protection</span></h2><p>The more you pay for your McAfee subscription, the more protection you’ll get. For instance, the Essential plan protects up to five devices from scams and monitors the dark web for any personal detail leaks. The Premium plan (that I tested), on the other hand, covers unlimited macOS, Windows, iOS and Android devices, and offers extra features like Social Privacy Manager, Personal Data Cleanup and Online Account Cleanup (scans only). I’ll discuss these in detail shortly.</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:56.25%;"><img id="SxMdD6NqD8VwDrEvsn25nN" name="McAfee_" alt="McAfee+ Premium antivirus software" src="https://cdn.mos.cms.futurecdn.net/SxMdD6NqD8VwDrEvsn25nN.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: Tom's Guide)</span></figcaption></figure><p>Regardless of the subscription you sign up for, McAfee offers a secure VPN, password manager and identity monitoring across all. But it’s important to note that it doesn’t offer cloud backup or ransomware protection, which is surprising. Competitors, like <a href="https://www.tomsguide.com/computing/antivirus/bitdefender-review">Bitdefender</a>, <a href="https://www.tomsguide.com/computing/antivirus/avast-one-review">Avast One</a> and Norton 360 offer these to a degree, so it’s worth considering them instead if these features are important to you.</p><p>Before diving into my experience with McAfee, let’s take a look at how three independent labs that test antivirus software twice a year (for the most part) rate it. <a href="https://www.av-test.org/en/antivirus/home-windows/" target="_blank" rel="nofollow">AV Test’s June 2026 report</a> rated McAfee as a “Top Product,” with 6/6 scores across Protection, Performance and Usability. Bitdefender, Avast and Norton 360 all received 100% scores, too, which goes to show that McAfee is just as good as its rivals, if not better.</p><p><a href="https://av-comparatives.org/tests/performance-test-april-2026/" target="_blank" rel="nofollow">AV Comparatives’ April 2026 test report</a> rated McAfee 1st out of the 19 antivirus software suites it tested — which is outstanding, as McAfee upstaged <a href="https://www.tomsguide.com/computing/antivirus/malwarebytes-review">Malwarebytes</a>, Avast, Norton 360 and Bitdefender. McAfee scored 90/100 in AVC, 96.7/100 in Procyon, and 3.3 in Impact. The low Impact rating means that the software doesn’t have a negative impact on your system’s resources. It blows the likes of Malwarebytes (17.6 Impact score) out of the water.</p><p>Lastly, I looked at <a href="https://selabs.uk/vendor/mcafee/" target="_blank" rel="nofollow">SE Labs’ (U.K.) June 2026 report</a>, which awarded McAfee an AAA rating with 98% protection accuracy and an overall 99% score. McAfee is edged out by Norton 360 and Bitdefender — but only just — as both of them achieved a 100% protection accuracy score.</p><h2 class="article-body__section" id="section-mcafee-premium-review-performance"><span>McAfee+ Premium review: Performance</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wJTXLWzqRb5fJXRuuMLyw7.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wBf39aYqXp8BRhpjMFUNF8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zHgnooFUh4U79U5vgdWDP8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Tom's Guide reviews gaming platform</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Supplied by: </strong><a data-analytics-id="inline-link" href="https://www.msi.com/" target="_blank" rel="nofollow"><strong>MSI</strong></a><strong> | Tom's Guide</strong><br><strong></strong><br><strong>CPU:</strong> <a data-analytics-id="inline-link" href="https://www.amazon.com/AMD-7700X-16-Thread-Unlocked-Processor/dp/B0BBHHT8LY/" target="_blank" rel="nofollow">AMD Ryzen 7 7700X</a><strong> </strong>|<strong> Graphics card:</strong> <a data-analytics-id="inline-link" href="https://www.msi.com/Graphics-Card/GeForce-RTX-5070-Ti-16G-VANGUARD-SOC" target="_blank" rel="nofollow">MSI RTX 5070 Ti 16GB Vanguard SOC</a><strong> </strong>|<strong> Motherboard: </strong><a data-analytics-id="inline-link" href="https://www.msi.com/Motherboard/B850-GAMING-PLUS-WIFI" target="_blank" rel="nofollow">MSI B850E Gaming Plus WiFi</a><strong> </strong>|<strong> RAM: </strong><a data-analytics-id="inline-link" href="https://www.newegg.com/kingston-technology-corp-fury-renegade-32gb-ddr5-8000-cas-latency-cl38-desktop-memory-silver-black/p/N82E16820242829" target="_blank" rel="nofollow">Kingston Fury Renegade DDR5 32GB</a><strong> </strong>|<strong> Cooler:</strong> <a data-analytics-id="inline-link" href="https://www.amazon.com/Noctua-NH-U12S-chromax-Black-Single-Tower-Cooler/dp/B07Y88BNYZ" target="_blank">Noctua NH-U12S</a><strong> </strong>|<strong> PSU:</strong> <a data-analytics-id="inline-link" href="https://www.msi.com/Power-Supply/MEG-Ai1300P-PCIE5" target="_blank" rel="nofollow">MSI MEG Ai1300P PCIE5</a><strong> </strong>|<strong> Case: </strong><a data-analytics-id="inline-link" href="https://www.msi.com/PC-Case/MPG-GUNGNIR-110R" target="_blank" rel="nofollow">MSI MPG GUNGNIR 110R</a></p></div></div><p>Once you’ve bought your subscription, it’s time to download and install McAfee on your device and activate it. Doing so is extremely straightforward. Simply enter your product key, email address and billing information into <a href="https://www.mcafee.com/en-us/ipz/redeem/activate.html" target="_blank" rel="nofollow">McAfee’s dedicated activation page</a>. You’ll then be prompted to download the software onto your machine. On our testing rig, it took just under five minutes to get up and running.</p><p>On Android and iOS smartphones, you’ll need to download the free app from the respective app store, and punch in your registered email address to activate your subscription on your phone. Doing so on my <a href="https://www.tomsguide.com/phones/google-pixel-phones/google-pixel-10-pro-xl-review">Google Pixel 10 Pro XL</a> barely took any time — perhaps two minutes or so.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/TV5risiGr2tMMewkQFjoW8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ockGAY98piiJYM8La6j3g9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iuNNScu8hFxGuBruTnz5g9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HzxggQY68cTp3CaJ2wN3g9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pPcmysgA6qtmZkpPXPmDg9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Dy5YszmotFzc3StyM6Kpv8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>After installing McAfee and activating my Premium plan on our MSI testing rig, I ran a Quick Scan and a Full Scan, both of which are easily accessible from the app’s main page. As its name suggests, McAfee’s Quick Scan quickly scans your computer, and it isn’t as in-depth as the Full Scan. It took 29 seconds for McAfee to quickly scan 38,846 files. No threats were detected. It’s handy that McAfee offers a Quick Scan option, unlike Bitdefender.</p><p>A Full Scan took much longer, in comparison. While software suites like Bitedefender and Malwarebytes scanned hundreds of thousands of files in under 26 minutes or so, McAfee took 34 minutes and 40 seconds to scan 351,968 files. It’s quite slow, really! I had enough time to do some stretches, make myself a cup of coffee, and have a chat with my coworkers, and McAfee was <em>still </em>scanning. But as I expected, it didn’t catch any anomalies or threats to the PC.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>FPS with McAfee running</strong></p></th><th  ><p><strong>FPS with Quick Scan running</strong></p></th><th  ><p><strong>FPS with Full Scan running</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (Ultra graphics)</strong></p></td><td  ><p>99</p></td><td  ><p>93</p></td><td  ><p>87</p></td></tr><tr><td class="firstcol " ><p><strong>Forza Horizon 5 (High graphics)</strong></p></td><td  ><p>113</p></td><td  ><p>110</p></td><td  ><p>95</p></td></tr></tbody></table></div><p>The aforementioned scans were conducted with no other heavy-duty apps running in the background, so to get a clearer picture of how McAfee impacts system resources, I ran in-game benchmark tests in <a href="https://www.tomsguide.com/reviews/cyberpunk-2077-phantom-liberty">Cyberpunk 2077</a> and <a href="https://www.tomsguide.com/reviews/forza-horizon-5">Forza Horizon 5</a>. As you can see from the table above, Cyberpunk 2077’s frame rate dipped from 99fps to 87fps, while Forza Horizon 5’s went from 113fps to 95fps. I didn’t notice any lag while gaming, which is great. It’s worth pointing out that I achieved 97fps in Cyberpunk 2077 and 123fps in Forza Horizon 5 with Bitdefender running a Full Scan, though. Still, McAfee’s impact on system performance isn’t <em>that </em>noticeable.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Download (Mbps)</strong></p></th><th  ><p><strong>Upload (Mbps)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Without McAfee</strong></p></td><td  ><p>901.2</p></td><td  ><p>922.4</p></td></tr><tr><td class="firstcol " ><p><strong>With McAfee running</strong></p></td><td  ><p>821.8</p></td><td  ><p>933.2</p></td></tr><tr><td class="firstcol " ><p><strong>Quick Scan running</strong></p></td><td  ><p>810.4</p></td><td  ><p>967.2</p></td></tr><tr><td class="firstcol " ><p><strong>Full Scan running</strong></p></td><td  ><p>807.1</p></td><td  ><p>948.7</p></td></tr></tbody></table></div><p>After finishing my in-game benchmarking, I ran a few internet speed tests at <a href="http://speedtest.net" target="_blank" rel="nofollow">speedtest.net</a> to see how McAfee impacted upload and download speeds. You can see the results in the table above. Surprisingly, neither the Quick Scan nor the Full Scan impacted the speeds by <em>that </em>much. Malwarebytes, in comparison, impacted upload speeds by a lot, as I was able to achieve only 592.4Mbps upload speeds with its Deep Scan running.</p><p>My testing goes to show that McAfee doesn’t have a detrimental effect on system resources — whether you’re browsing the internet or playing system-intensive games. Perhaps McAfee has finally gotten rid of the stereotype that it’s a drain on system resources.</p><h2 class="article-body__section" id="section-mcafee-premium-review-features"><span>McAfee+ Premium review: Features</span></h2><p>Alongside the two different types of scans, McAfee includes a bunch of extras to protect you against online and offline threats. I tested a few of the goodies included in the McAfee+ Premium Individual plan, starting with Identity Monitoring.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/WnkNiqSPGqa2YgYusMfnB9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9Lqj64owY3Yoeb3Yhiowy8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zN6zJv7Xjjih5NPkLybAs8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dQXHQcDKpuvEQR68J6pp39.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>This service constantly monitors the internet, including the dark web, for any identity theft, fraud or breaches. You can add credit cards, passports, national IDs, email addresses, and even different usernames. McAfee will then send you timely security alerts and provide guidance as to how to protect yourself. I put in a few different email addresses and usernames (such as the one I use on Instagram) and McAfee didn’t find any active breaches.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nJmWkNpnxkReXJL9XKGFW9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uJNRHXKbrLeup6g44kpAX9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fHv3DFDv9on8o56xXBKjd8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>Next, I tried File Shredder, and it’s similar to the one you get with Malwarebytes. It enables you to permanently delete files to varying degrees, and it essentially overwrites data several times so there’s no trace left. Think of it like shredding a physical paper document to ensure no one else can read it. It worked well in my testing, as I used it to permanently delete files in the PC’s recycle bin.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/X866ffB5ajCGEZ95Bn38X9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QspPRAakcsZVkG79WtKr69.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JxwP7BcxHoJJazvwCSuZg8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ASWdQuRLh4vDf2FsrGkmk8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>There’s also a handy Tracker Remover tool which, as its name suggests, removes unwanted items, like temporary files and cookies that sites could potentially use to track you online. The Tracker Remover reviews temporary files, recycle bin items, browser cookies and trackers, and browser history, and then deletes them if they aren’t needed. In my testing, it took just under two minutes to free up 1.14 GB and remove 3,000 items.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/8PHUQ5N2sympePokGMTrV9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/W6nTfBzSXBRZutzwHsMyo8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XGntnUj9W3QgAXyifocfX9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>Last but not least, I tried McAfee’s unlimited Secure VPN which is included in every subscription plan. It masks your IP address using bank-grade AES 256-bit encryption and connecting to servers located in almost 50 countries. The VPN takes less than a minute to connect to your chosen country and once that’s done, your online identity and location are protected. You can customize it to connect automatically when joining a network with weak security, for instance, and even add trusted networks where the VPN shouldn’t be activated.</p><h2 class="article-body__section" id="section-mcafee-premium-review-interface"><span>McAfee+ Premium review: Interface</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NTGR99dgp4dZdRcEMVcAA8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JZLU8M99ji7HgVtStnAD78.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JexoX4DFjZDy6JBGq5b3g9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>McAfee sports a clean and user-friendly interface, and I’ve had no issues using it whatsoever. The online dashboard, <a href="https://myaccount.mcafee.com/v2/" target="_blank" rel="nofollow">McAfee My Account</a>, gives you quick access to your subscription details and it lets you edit billing and renewal details. The downloaded software is straightforward to use and understand, too, thanks to plenty of signposting and explanations.</p><p>But unlike Malwarebytes, the McAfee app’s window can’t be maximized or made full-size, which means you have to scroll through the various settings one by one. This isn’t uncommon, though, as neither Bitdefender’s nor Avast One’s windows can be made to take up the full screen.</p><p>The McAfee mobile app is just as user-friendly if not more. The initial download took just 130MB of space on my Google Pixel 10 Pro XL — though this will naturally grow with use.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/uAGcnj3D4PJRhEhbt6Tzf9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QEtuXhHfL23fKiXbFL5Vb9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>I’ve seen many online users complaining about the uninstallation process on desktop. However, I didn’t experience any issues uninstalling McAfee from our testing rig. I wasn’t prompted again and again to keep the software, and it took just under 10 minutes to remove the software and restart my machine.</p><h2 class="article-body__section" id="section-mcafee-premium-review-support"><span>McAfee+ Premium review: Support</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/sNT5zeMosnvZ2M2GEBsuL8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ptrfa3aKXLDEXbzCSBGEP8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fxmteuzhdAuPaFYHJGGTS8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>If you find yourself in a pickle or have any questions about McAfee and your subscription, you can get in touch with customer support either via <a href="https://www.mcafee.com/support/s/?language=en_US" target="_blank" rel="nofollow">online chat</a> or over the phone. This is a similar level of support to what’s offered by Bitdefender and Norton 360.</p><p>I tested out the online chat function and I found it super easy to use. I asked the AI assistant a question and it answered promptly (and accurately). I then asked to speak to a human and within a couple of minutes, I was connected to a human agent. I like that I didn’t have to keep explaining <em>why </em>I needed to speak to a person.</p><p>If you need immediate assistance and can’t be bothered by typing, you can always ring <a href="https://www.mcafee.com/support/s/contactsupport" target="_blank" rel="nofollow">McAfee’s customer service team</a> which is available 24/7. It’s nice that McAfee offers phone support, unlike Malwarebytes. It makes getting help easier.</p><h2 class="article-body__section" id="section-mcafee-premium-review-verdict"><span>McAfee+ Premium review: 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SovGxRexYjntV4ze63sirN" name="McAfee_" alt="McAfee+ Premium antivirus software" src="https://cdn.mos.cms.futurecdn.net/SovGxRexYjntV4ze63sirN.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: Tom's Guide)</span></figcaption></figure><p>McAfee+ Premium is a strong all-round antivirus package that doesn’t skimp on features and tools that keep you safe online and offline. Protection is excellent, independent lab results are consistent (and impressive), and the software doesn’t get in the way when you’re gaming or browsing the internet. The user experience is sublime, too, as the software sports a clean, user-friendly interface.</p><p>There are a couple of catches, though, such as the Full Scan taking over 35 minutes to complete in our testing. While the cost for the first year isn’t much more than its competitors, renewal price can feel quite steep. Are either of those dealbreakers? Not necessarily, as they’re overshadowed by everything else on offer.</p><p>At the end of the day, McAfee delivers a polished, capable antivirus suite that goes toe-to-toe with the likes of Norton 360 and Bitdefender.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/antivirus/mcafee-plus-premium-review-2026</link>
                                                                            <description>
                            <![CDATA[ McAfee+ Premium offers comprehensive online and offline protection against viruses and scams. It's user-friendly, and the starting price is reasonable, too. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">R7CPiEW7syzMcqnd5ZytCJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SovGxRexYjntV4ze63sirN-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 18 Aug 2026 08:53:58 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Antivirus]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                                                                <author><![CDATA[ nikita.achanta@futurenet.com (Nikita Achanta) ]]></author>                    <dc:creator><![CDATA[ Nikita Achanta ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oXuvixDz99SbZp9z8Uoor3.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nikita is a Senior Writer on the Reviews team at Tom&#039;s Guide. She is a lifelong gaming and photography enthusiast, especially interested in wildlife photography. Having worked as a Sub Editor and Writer for Canon EMEA, she’s a bit of a grammar nerd (and a supporter of the Oxford comma), and has also interviewed photographers from all over the world and working in different genres.&lt;/p&gt;&lt;p&gt;A holder of two master’s degrees, the most recent one being in Magazine Journalism from Cardiff University, Nikita’s work has appeared in several publications such as Motor Sport Magazine, NME, Marriott Bonvoy, The Independent, and Metro. Her favorite tech includes the PS5, the DJI Air 3S, and the Fujifilm X-T50. She&#039;s also a licensed drone pilot and cameras expert so you&#039;ll find her testing those nearly every week.&lt;/p&gt;&lt;p&gt;In her downtime, Nikita can usually be found sinking hours into RPGs on her PS5, flying a drone, out on a walk with a camera in hand, at a concert, watching F1, or planning her next tattoo. You can follow her photography account on Instagram&lt;a href=&quot;https://www.instagram.com/photos.bynikita/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt; here&lt;/a&gt;.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/SovGxRexYjntV4ze63sirN-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[McAfee+ Premium antivirus software]]></media:description>                                                            <media:text><![CDATA[McAfee+ Premium antivirus software]]></media:text>
                                <media:title type="plain"><![CDATA[McAfee+ Premium antivirus software]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SovGxRexYjntV4ze63sirN-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>McAfee has been around for decades, and it has come a long way from the antivirus software I remember slowing down my PC as a teenager. Having tested McAfee+ Premium extensively, I can confirm that it’s one of the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a> suites available today. It packs plenty of useful tools, such as Identity Monitoring, Secure VPN with no limits, File Shredder, and Tracker Remover.</p><p>The software sports a user-friendly interface that makes it a delight to use, and 24/7 customer support over chat and phone ensures all your problems are quickly resolved. Low impact on system resources is another highlight. Even though the Full Scan takes a while and renewal price makes your eye twitch, neither of those are dealbreakers.</p><p>For the complete breakdown, read my full McAfee+ Premium review.</p><h2 class="article-body__section" id="section-mcafee-premium-review-specs"><span>McAfee+ Premium review: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>Starting price</strong></p></td><td  ><p><a href="https://www.mcafee.com/en-gb/antivirus.html" target="_blank" rel="nofollow">$49 / £49</a> (yearly, Consumer) | <a href="https://www.dell.com/en-us/shop/mcafee-total-protection-antivirus-internet-security-software-for-1-device-1-year-subscription-download/apd/ac180675/software" target="_blank" rel="nofollow">$24</a> / <a href="https://business.currys.co.uk/catalogue/computing/software/internet-security-software/mcafee-total-protection-1-year-automatic-renewal-for-3-devices/N659993W" target="_blank" rel="nofollow">£11</a> (yearly, Business)</p></td></tr><tr><td class="firstcol " ><p><strong>Operating system</strong></p></td><td  ><p>Windows, macOS, Android, iOS</p></td></tr><tr><td class="firstcol " ><p><strong>Supported devices</strong></p></td><td  ><p>Unlimited</p></td></tr><tr><td class="firstcol " ><p><strong>Malware protection</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Ransomware protection</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Identity theft protection</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Webcam protection</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Parental controls</strong></p></td><td  ><p>Yes (Family plans only)</p></td></tr><tr><td class="firstcol " ><p><strong>VPN</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Password manager</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Cloud backup</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Firewall</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Secure browser</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Support</strong></p></td><td  ><p>24/7 phone and chat</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-mcafee-premium-review-costs-what-s-covered"><span>McAfee+ Premium review: Costs & what’s covered</span></h2><p>Similar to other antivirus software suites, McAfee offers different plans for consumers and businesses alike. Let’s talk about McAfee’s consumer plans first. The most basic plan, Essential, covers up to five devices and is available for <a href="https://www.mcafee.com/en-gb/antivirus.html" target="_blank" rel="nofollow">$39 / £33</a> for the first year.</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:56.25%;"><img id="K5WxUZVVhzGMwJ5rPi9XqN" name="McAfee_" alt="McAfee+ Premium antivirus software" src="https://cdn.mos.cms.futurecdn.net/K5WxUZVVhzGMwJ5rPi9XqN.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: Tom's Guide)</span></figcaption></figure><p>The McAfee+ Premium Individual plan is a step up from Essential, and costs $49 / £49 for the first year. It naturally includes everything Essential offers, plus a Social Privacy Manager as well as scanning the web for your personal information. McAfee+ Advanced Individual is the most expensive plan, offering the most comprehensive protection. It’ll cost you $89 / £74 for the first year. Alongside everything else included in Essential and Premium, Advanced includes up to $1 million identity theft coverage, bank and credit card transaction monitoring, credit lock and security freeze, and more.</p><p>It’s important to note that after your first year is up, McAfee’s renewal prices go up by <em>a lot. </em>For instance, the Premium plan I tested costs $149 after the first year — a steep $100 price hike. <a href="https://www.tomsguide.com/computing/antivirus/norton-360-review">Norton 360</a> Deluxe, in comparison, costs $124 per renewal, making it slightly cheaper than McAfee.</p><p>There are many family plans available, too, such as Premium Family ($69 starting price) and Ultimate Family ($249 starting price). If you own a business and want a competent antivirus software suite, a number of plans are available exclusively through Dell in the U.S. and Currys in the U.K., starting at just <a href="https://www.dell.com/en-us/shop/mcafee-total-protection-antivirus-internet-security-software-for-1-device-1-year-subscription-download/apd/ac180675/software" target="_blank" rel="nofollow">$24</a> / <a href="https://business.currys.co.uk/catalogue/computing/software/internet-security-software/mcafee-total-protection-1-year-automatic-renewal-for-3-devices/N659993W" target="_blank" rel="nofollow">£11</a> and going all the way up to <a href="https://www.dell.com/en-us/shop/mcafee-premium-family-antivirus-and-internet-security-software-for-unlimited-devices-subscription-1-year/apd/ac180678/software" target="_blank" rel="nofollow">$169</a> — depending on the number of devices and features, of course.</p><p>It’s important to read the fine print to understand what you’re signing up for, but in case you aren’t happy with your purchase, McAfee offers a 30-day money-back guarantee. Also, if McAfee fails to catch a virus and your device gets infected, the company’s Virus Protection Pledge states that it’ll refund you the amount you paid for your subscription.</p><h2 class="article-body__section" id="section-mcafee-premium-review-protection"><span>McAfee+ Premium review: Protection</span></h2><p>The more you pay for your McAfee subscription, the more protection you’ll get. For instance, the Essential plan protects up to five devices from scams and monitors the dark web for any personal detail leaks. The Premium plan (that I tested), on the other hand, covers unlimited macOS, Windows, iOS and Android devices, and offers extra features like Social Privacy Manager, Personal Data Cleanup and Online Account Cleanup (scans only). I’ll discuss these in detail shortly.</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:56.25%;"><img id="SxMdD6NqD8VwDrEvsn25nN" name="McAfee_" alt="McAfee+ Premium antivirus software" src="https://cdn.mos.cms.futurecdn.net/SxMdD6NqD8VwDrEvsn25nN.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: Tom's Guide)</span></figcaption></figure><p>Regardless of the subscription you sign up for, McAfee offers a secure VPN, password manager and identity monitoring across all. But it’s important to note that it doesn’t offer cloud backup or ransomware protection, which is surprising. Competitors, like <a href="https://www.tomsguide.com/computing/antivirus/bitdefender-review">Bitdefender</a>, <a href="https://www.tomsguide.com/computing/antivirus/avast-one-review">Avast One</a> and Norton 360 offer these to a degree, so it’s worth considering them instead if these features are important to you.</p><p>Before diving into my experience with McAfee, let’s take a look at how three independent labs that test antivirus software twice a year (for the most part) rate it. <a href="https://www.av-test.org/en/antivirus/home-windows/" target="_blank" rel="nofollow">AV Test’s June 2026 report</a> rated McAfee as a “Top Product,” with 6/6 scores across Protection, Performance and Usability. Bitdefender, Avast and Norton 360 all received 100% scores, too, which goes to show that McAfee is just as good as its rivals, if not better.</p><p><a href="https://av-comparatives.org/tests/performance-test-april-2026/" target="_blank" rel="nofollow">AV Comparatives’ April 2026 test report</a> rated McAfee 1st out of the 19 antivirus software suites it tested — which is outstanding, as McAfee upstaged <a href="https://www.tomsguide.com/computing/antivirus/malwarebytes-review">Malwarebytes</a>, Avast, Norton 360 and Bitdefender. McAfee scored 90/100 in AVC, 96.7/100 in Procyon, and 3.3 in Impact. The low Impact rating means that the software doesn’t have a negative impact on your system’s resources. It blows the likes of Malwarebytes (17.6 Impact score) out of the water.</p><p>Lastly, I looked at <a href="https://selabs.uk/vendor/mcafee/" target="_blank" rel="nofollow">SE Labs’ (U.K.) June 2026 report</a>, which awarded McAfee an AAA rating with 98% protection accuracy and an overall 99% score. McAfee is edged out by Norton 360 and Bitdefender — but only just — as both of them achieved a 100% protection accuracy score.</p><h2 class="article-body__section" id="section-mcafee-premium-review-performance"><span>McAfee+ Premium review: Performance</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wJTXLWzqRb5fJXRuuMLyw7.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wBf39aYqXp8BRhpjMFUNF8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zHgnooFUh4U79U5vgdWDP8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Tom's Guide reviews gaming platform</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Supplied by: </strong><a data-analytics-id="inline-link" href="https://www.msi.com/" target="_blank" rel="nofollow"><strong>MSI</strong></a><strong> | Tom's Guide</strong><br><strong></strong><br><strong>CPU:</strong> <a data-analytics-id="inline-link" href="https://www.amazon.com/AMD-7700X-16-Thread-Unlocked-Processor/dp/B0BBHHT8LY/" target="_blank" rel="nofollow">AMD Ryzen 7 7700X</a><strong> </strong>|<strong> Graphics card:</strong> <a data-analytics-id="inline-link" href="https://www.msi.com/Graphics-Card/GeForce-RTX-5070-Ti-16G-VANGUARD-SOC" target="_blank" rel="nofollow">MSI RTX 5070 Ti 16GB Vanguard SOC</a><strong> </strong>|<strong> Motherboard: </strong><a data-analytics-id="inline-link" href="https://www.msi.com/Motherboard/B850-GAMING-PLUS-WIFI" target="_blank" rel="nofollow">MSI B850E Gaming Plus WiFi</a><strong> </strong>|<strong> RAM: </strong><a data-analytics-id="inline-link" href="https://www.newegg.com/kingston-technology-corp-fury-renegade-32gb-ddr5-8000-cas-latency-cl38-desktop-memory-silver-black/p/N82E16820242829" target="_blank" rel="nofollow">Kingston Fury Renegade DDR5 32GB</a><strong> </strong>|<strong> Cooler:</strong> <a data-analytics-id="inline-link" href="https://www.amazon.com/Noctua-NH-U12S-chromax-Black-Single-Tower-Cooler/dp/B07Y88BNYZ" target="_blank">Noctua NH-U12S</a><strong> </strong>|<strong> PSU:</strong> <a data-analytics-id="inline-link" href="https://www.msi.com/Power-Supply/MEG-Ai1300P-PCIE5" target="_blank" rel="nofollow">MSI MEG Ai1300P PCIE5</a><strong> </strong>|<strong> Case: </strong><a data-analytics-id="inline-link" href="https://www.msi.com/PC-Case/MPG-GUNGNIR-110R" target="_blank" rel="nofollow">MSI MPG GUNGNIR 110R</a></p></div></div><p>Once you’ve bought your subscription, it’s time to download and install McAfee on your device and activate it. Doing so is extremely straightforward. Simply enter your product key, email address and billing information into <a href="https://www.mcafee.com/en-us/ipz/redeem/activate.html" target="_blank" rel="nofollow">McAfee’s dedicated activation page</a>. You’ll then be prompted to download the software onto your machine. On our testing rig, it took just under five minutes to get up and running.</p><p>On Android and iOS smartphones, you’ll need to download the free app from the respective app store, and punch in your registered email address to activate your subscription on your phone. Doing so on my <a href="https://www.tomsguide.com/phones/google-pixel-phones/google-pixel-10-pro-xl-review">Google Pixel 10 Pro XL</a> barely took any time — perhaps two minutes or so.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/TV5risiGr2tMMewkQFjoW8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ockGAY98piiJYM8La6j3g9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iuNNScu8hFxGuBruTnz5g9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HzxggQY68cTp3CaJ2wN3g9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pPcmysgA6qtmZkpPXPmDg9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Dy5YszmotFzc3StyM6Kpv8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>After installing McAfee and activating my Premium plan on our MSI testing rig, I ran a Quick Scan and a Full Scan, both of which are easily accessible from the app’s main page. As its name suggests, McAfee’s Quick Scan quickly scans your computer, and it isn’t as in-depth as the Full Scan. It took 29 seconds for McAfee to quickly scan 38,846 files. No threats were detected. It’s handy that McAfee offers a Quick Scan option, unlike Bitdefender.</p><p>A Full Scan took much longer, in comparison. While software suites like Bitedefender and Malwarebytes scanned hundreds of thousands of files in under 26 minutes or so, McAfee took 34 minutes and 40 seconds to scan 351,968 files. It’s quite slow, really! I had enough time to do some stretches, make myself a cup of coffee, and have a chat with my coworkers, and McAfee was <em>still </em>scanning. But as I expected, it didn’t catch any anomalies or threats to the PC.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>FPS with McAfee running</strong></p></th><th  ><p><strong>FPS with Quick Scan running</strong></p></th><th  ><p><strong>FPS with Full Scan running</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (Ultra graphics)</strong></p></td><td  ><p>99</p></td><td  ><p>93</p></td><td  ><p>87</p></td></tr><tr><td class="firstcol " ><p><strong>Forza Horizon 5 (High graphics)</strong></p></td><td  ><p>113</p></td><td  ><p>110</p></td><td  ><p>95</p></td></tr></tbody></table></div><p>The aforementioned scans were conducted with no other heavy-duty apps running in the background, so to get a clearer picture of how McAfee impacts system resources, I ran in-game benchmark tests in <a href="https://www.tomsguide.com/reviews/cyberpunk-2077-phantom-liberty">Cyberpunk 2077</a> and <a href="https://www.tomsguide.com/reviews/forza-horizon-5">Forza Horizon 5</a>. As you can see from the table above, Cyberpunk 2077’s frame rate dipped from 99fps to 87fps, while Forza Horizon 5’s went from 113fps to 95fps. I didn’t notice any lag while gaming, which is great. It’s worth pointing out that I achieved 97fps in Cyberpunk 2077 and 123fps in Forza Horizon 5 with Bitdefender running a Full Scan, though. Still, McAfee’s impact on system performance isn’t <em>that </em>noticeable.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Download (Mbps)</strong></p></th><th  ><p><strong>Upload (Mbps)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Without McAfee</strong></p></td><td  ><p>901.2</p></td><td  ><p>922.4</p></td></tr><tr><td class="firstcol " ><p><strong>With McAfee running</strong></p></td><td  ><p>821.8</p></td><td  ><p>933.2</p></td></tr><tr><td class="firstcol " ><p><strong>Quick Scan running</strong></p></td><td  ><p>810.4</p></td><td  ><p>967.2</p></td></tr><tr><td class="firstcol " ><p><strong>Full Scan running</strong></p></td><td  ><p>807.1</p></td><td  ><p>948.7</p></td></tr></tbody></table></div><p>After finishing my in-game benchmarking, I ran a few internet speed tests at <a href="http://speedtest.net" target="_blank" rel="nofollow">speedtest.net</a> to see how McAfee impacted upload and download speeds. You can see the results in the table above. Surprisingly, neither the Quick Scan nor the Full Scan impacted the speeds by <em>that </em>much. Malwarebytes, in comparison, impacted upload speeds by a lot, as I was able to achieve only 592.4Mbps upload speeds with its Deep Scan running.</p><p>My testing goes to show that McAfee doesn’t have a detrimental effect on system resources — whether you’re browsing the internet or playing system-intensive games. Perhaps McAfee has finally gotten rid of the stereotype that it’s a drain on system resources.</p><h2 class="article-body__section" id="section-mcafee-premium-review-features"><span>McAfee+ Premium review: Features</span></h2><p>Alongside the two different types of scans, McAfee includes a bunch of extras to protect you against online and offline threats. I tested a few of the goodies included in the McAfee+ Premium Individual plan, starting with Identity Monitoring.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/WnkNiqSPGqa2YgYusMfnB9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9Lqj64owY3Yoeb3Yhiowy8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zN6zJv7Xjjih5NPkLybAs8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dQXHQcDKpuvEQR68J6pp39.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>This service constantly monitors the internet, including the dark web, for any identity theft, fraud or breaches. You can add credit cards, passports, national IDs, email addresses, and even different usernames. McAfee will then send you timely security alerts and provide guidance as to how to protect yourself. I put in a few different email addresses and usernames (such as the one I use on Instagram) and McAfee didn’t find any active breaches.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nJmWkNpnxkReXJL9XKGFW9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uJNRHXKbrLeup6g44kpAX9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fHv3DFDv9on8o56xXBKjd8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>Next, I tried File Shredder, and it’s similar to the one you get with Malwarebytes. It enables you to permanently delete files to varying degrees, and it essentially overwrites data several times so there’s no trace left. Think of it like shredding a physical paper document to ensure no one else can read it. It worked well in my testing, as I used it to permanently delete files in the PC’s recycle bin.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/X866ffB5ajCGEZ95Bn38X9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QspPRAakcsZVkG79WtKr69.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JxwP7BcxHoJJazvwCSuZg8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ASWdQuRLh4vDf2FsrGkmk8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>There’s also a handy Tracker Remover tool which, as its name suggests, removes unwanted items, like temporary files and cookies that sites could potentially use to track you online. The Tracker Remover reviews temporary files, recycle bin items, browser cookies and trackers, and browser history, and then deletes them if they aren’t needed. In my testing, it took just under two minutes to free up 1.14 GB and remove 3,000 items.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/8PHUQ5N2sympePokGMTrV9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/W6nTfBzSXBRZutzwHsMyo8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XGntnUj9W3QgAXyifocfX9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>Last but not least, I tried McAfee’s unlimited Secure VPN which is included in every subscription plan. It masks your IP address using bank-grade AES 256-bit encryption and connecting to servers located in almost 50 countries. The VPN takes less than a minute to connect to your chosen country and once that’s done, your online identity and location are protected. You can customize it to connect automatically when joining a network with weak security, for instance, and even add trusted networks where the VPN shouldn’t be activated.</p><h2 class="article-body__section" id="section-mcafee-premium-review-interface"><span>McAfee+ Premium review: Interface</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NTGR99dgp4dZdRcEMVcAA8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JZLU8M99ji7HgVtStnAD78.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JexoX4DFjZDy6JBGq5b3g9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>McAfee sports a clean and user-friendly interface, and I’ve had no issues using it whatsoever. The online dashboard, <a href="https://myaccount.mcafee.com/v2/" target="_blank" rel="nofollow">McAfee My Account</a>, gives you quick access to your subscription details and it lets you edit billing and renewal details. The downloaded software is straightforward to use and understand, too, thanks to plenty of signposting and explanations.</p><p>But unlike Malwarebytes, the McAfee app’s window can’t be maximized or made full-size, which means you have to scroll through the various settings one by one. This isn’t uncommon, though, as neither Bitdefender’s nor Avast One’s windows can be made to take up the full screen.</p><p>The McAfee mobile app is just as user-friendly if not more. The initial download took just 130MB of space on my Google Pixel 10 Pro XL — though this will naturally grow with use.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/uAGcnj3D4PJRhEhbt6Tzf9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QEtuXhHfL23fKiXbFL5Vb9.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>I’ve seen many online users complaining about the uninstallation process on desktop. However, I didn’t experience any issues uninstalling McAfee from our testing rig. I wasn’t prompted again and again to keep the software, and it took just under 10 minutes to remove the software and restart my machine.</p><h2 class="article-body__section" id="section-mcafee-premium-review-support"><span>McAfee+ Premium review: Support</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/sNT5zeMosnvZ2M2GEBsuL8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ptrfa3aKXLDEXbzCSBGEP8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fxmteuzhdAuPaFYHJGGTS8.jpg" alt="McAfee+ Premium screenshots on PC" /><figcaption><small role="credit">McAfee / Tom's Guide</small></figcaption></figure></figure><p>If you find yourself in a pickle or have any questions about McAfee and your subscription, you can get in touch with customer support either via <a href="https://www.mcafee.com/support/s/?language=en_US" target="_blank" rel="nofollow">online chat</a> or over the phone. This is a similar level of support to what’s offered by Bitdefender and Norton 360.</p><p>I tested out the online chat function and I found it super easy to use. I asked the AI assistant a question and it answered promptly (and accurately). I then asked to speak to a human and within a couple of minutes, I was connected to a human agent. I like that I didn’t have to keep explaining <em>why </em>I needed to speak to a person.</p><p>If you need immediate assistance and can’t be bothered by typing, you can always ring <a href="https://www.mcafee.com/support/s/contactsupport" target="_blank" rel="nofollow">McAfee’s customer service team</a> which is available 24/7. It’s nice that McAfee offers phone support, unlike Malwarebytes. It makes getting help easier.</p><h2 class="article-body__section" id="section-mcafee-premium-review-verdict"><span>McAfee+ Premium review: 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SovGxRexYjntV4ze63sirN" name="McAfee_" alt="McAfee+ Premium antivirus software" src="https://cdn.mos.cms.futurecdn.net/SovGxRexYjntV4ze63sirN.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: Tom's Guide)</span></figcaption></figure><p>McAfee+ Premium is a strong all-round antivirus package that doesn’t skimp on features and tools that keep you safe online and offline. Protection is excellent, independent lab results are consistent (and impressive), and the software doesn’t get in the way when you’re gaming or browsing the internet. The user experience is sublime, too, as the software sports a clean, user-friendly interface.</p><p>There are a couple of catches, though, such as the Full Scan taking over 35 minutes to complete in our testing. While the cost for the first year isn’t much more than its competitors, renewal price can feel quite steep. Are either of those dealbreakers? Not necessarily, as they’re overshadowed by everything else on offer.</p><p>At the end of the day, McAfee delivers a polished, capable antivirus suite that goes toe-to-toe with the likes of Norton 360 and Bitdefender.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The 256GB laptop is the new 32GB phone — and it’s quietly pushing you into cloud subscriptions ]]></title>
                                                                                                <dc:content><![CDATA[ <p>There was a time not too long ago when a 32GB smartphone felt perfectly workable — potentially even spacious. Fast forward to today and apps have gotten bigger, cameras have become larger, and routine software updates now eat entire gigabytes on their own. </p><p>32GB has gone from seeming totally normal (even luxurious) to looking absurdly stingy. I think 256GB laptops are heading in the same direction. </p><p>In 2026, plenty of otherwise <a href="https://www.tomsguide.com/best-picks/best-budget-laptops">excellent laptops</a> start with 256GB of storage, despite many of the <a href="https://www.tomsguide.com/best-picks/best-phones">best smartphones</a> offering the same amount. At first, 256GB might be enough, but after months or years of apps, photos, downloads, and updates, that breathing room is just... gone.</p><p>And when it does go, <a href="https://www.tomsguide.com/reviews/windows-11">Windows 11</a> and <a href="https://www.tomsguide.com/computing/macos/apple-macos-tahoe-review">macOS</a> have a very convenient answer waiting in the wings: move more of your stuff into the cloud — and, sooner or later, start paying for it.</p><div class="product"><a data-dimension112="bdce9650-972a-11f1-bf3c-f145984e235b" data-action="Deal Block" data-label="13" MacBook Air (M5)" data-dimension48="13" MacBook Air (M5)" data-dimension25="$1297" href="https://www.amazon.com/Apple-2026-MacBook-13-inch-Laptop/dp/B0GR1JTFP8?th=1" 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:100.00%;"><img id="2S3mMDzKcdQKAxWc4wGxDQ" name="MacBook Air M5 deal" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/2S3mMDzKcdQKAxWc4wGxDQ.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Apple-2026-MacBook-13-inch-Laptop/dp/B0GR1JTFP8?th=1" target="_blank" rel="nofollow" data-dimension112="bdce9650-972a-11f1-bf3c-f145984e235b" data-action="Deal Block" data-label='13" MacBook Air (M5)' data-dimension48='13" MacBook Air (M5)' data-dimension25="$1297">13" MacBook Air (M5): $1297</a></strong><br>The MacBook Air has been upgraded with more power. The new laptop features a 13.6-inch (2560 x 1664) display, the new Apple M5 chip, 16GB of RAM, a 512GB SSD, and support for Wi-Fi 7 and Bluetooth 6. Although it now costs $100 more, the base model comes with a 512GB SSD instead of 256GB.<a class="view-deal button" href="https://www.amazon.com/Apple-2026-MacBook-13-inch-Laptop/dp/B0GR1JTFP8?th=1" target="_blank" rel="nofollow" data-dimension112="bdce9650-972a-11f1-bf3c-f145984e235b" data-action="Deal Block" data-label="13" MacBook Air (M5)" data-dimension48="13" MacBook Air (M5)" data-dimension25="$1297">View Deal</a></p></div><h2 id="256gb-isn-t-tiny-and-that-s-exactly-the-problem">256GB isn’t tiny — and that’s exactly the problem</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:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="iQBUvBQeStovV4YftmSdMZ" name="Lenovo Chromebook Plus 14" alt="Lenovo Chromebook Plus 14" src="https://cdn.mos.cms.futurecdn.net/iQBUvBQeStovV4YftmSdMZ.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" 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 funny part, if we can call it that, is that 256GB can feel perfectly comfortable for those who live inside a browser. But there's a difference between having enough storage and having enough room to <em>grow</em>.</p><p>We’ve previously said that <a href="https://www.tomsguide.com/computing/laptops/5-things-to-look-for-when-buying-a-laptop-from-someone-who-reviews-them-for-a-living">256GB is the bare minimum</a> you should look for in a general-purpose laptop, and that increasingly feels spot on in 2026.  </p><p>It’s definitely enough to get by, but it doesn’t leave you with a huge amount of headroom for the future. In a world where a single <a href="https://www.tomsguide.com/entertainment/music-streaming/spotifys-latest-update-makes-organizing-your-music-easier-plus-improved-offline-downloads">Spotify</a> playlist with 1,000 songs can take up nearly 10GB of space, bigger is better.  </p><p>You can actually see the shift happening elsewhere in the market: Apple’s latest <a href="https://www.tomsguide.com/computing/macbooks/macbook-air-m5-review">MacBook Air</a> now starts with 512GB, an upgrade we welcomed, while many <a href="https://www.tomsguide.com/best-picks/best-budget-laptops">budget laptops</a> continue to stick with 256GB to keep their prices down.</p><p>There is, of course, some nuance to this picture. A <a href="https://www.tomsguide.com/news/best-chromebook-deals-prices">cheap Chromebook</a> or secondary laptop definitely doesn’t need a huge SSD, and with memory prices soaring, buying decisions are becoming harder than ever.</p><p>But for a laptop you expect to use as your main computer for the next five-plus years, 256GB looks less like a specification and more like a compromise.</p><h2 id="your-laptop-can-last-years-but-its-storage-can-t-grow-with-it">Your laptop can last years, but its storage can’t grow with it</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ywqirqeDaWNqKZgmGgbrqF" name="macbook air m4" alt="macbook air m4" src="https://cdn.mos.cms.futurecdn.net/ywqirqeDaWNqKZgmGgbrqF.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: Apple)</span></figcaption></figure><p>At a basic level, storage is one of the few parts of a laptop that can become more restrictive simply through normal use.</p><p>Photos, downloads, apps, offline media, assorted files, and everything else you acquire from day to day gradually pile up, while the SSD you bought on day one stays the same size. This situation is less of a problem if you can simply replace the SSD later. </p><p>Some Windows laptops, like the excellent <a href="https://www.tomsguide.com/computing/laptops/framework-laptop-13-pro-revealed-and-its-a-ground-up-redesign-of-our-favorite-modular-laptop">Framework models</a>, still make that relatively straightforward, but plenty of thin-and-light notebooks — including <a href="https://www.tomsguide.com/computing/macbooks/i-review-macbooks-for-a-living-and-these-are-the-biggest-developments-i-expect-in-2026">MacBooks</a> — effectively lock you into whatever capacity you choose at checkout.</p><div class="product"><a data-dimension112="bdce9718-972a-11f1-b4e8-7590d6ebcb98" data-action="Deal Block" data-label="Laptop 16 (2025)" data-dimension48="Laptop 16 (2025)" data-dimension25="$1599" href="https://frame.work/laptop16" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1305px;"><p class="vanilla-image-block" style="padding-top:69.04%;"><img id="fnhfRVzYGyhBCo8Ng2wFJn" name="Framework Laptop 16.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fnhfRVzYGyhBCo8Ng2wFJn.jpg" mos="" align="middle" fullscreen="" width="1305" height="901" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://frame.work/laptop16" target="_blank" rel="nofollow" data-dimension112="bdce9718-972a-11f1-b4e8-7590d6ebcb98" data-action="Deal Block" data-label="Laptop 16 (2025)" data-dimension48="Laptop 16 (2025)" data-dimension25="$1599">Laptop 16 (2025): $1599</a></strong><br>The Framework Laptop 16 is a fully customizable, repairable, and upgradable laptop. It now includes the option to outfit it with an Nvidia GeForce RTX 5070 graphics card. In our <a href="https://www.tomsguide.com/computing/laptops/framework-laptop-16-2025-review">Framework Laptop 16 review,</a> we called the Editor's Choice machine our favorite laptop of the year and a must-buy for DIYers and folks who value their right to repair.<a class="view-deal button" href="https://frame.work/laptop16" target="_blank" rel="nofollow" data-dimension112="bdce9718-972a-11f1-b4e8-7590d6ebcb98" data-action="Deal Block" data-label="Laptop 16 (2025)" data-dimension48="Laptop 16 (2025)" data-dimension25="$1599">View Deal</a></p></div><h2 id="conveniently-there-s-a-subscription-for-that">Conveniently, there’s a subscription for that</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:2112px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6vEt8qRjSJA8ncGGUriukH" name="Framework Laptop 13 upgradeable" alt="Framework Laptop 13 being upgraded with new memory" src="https://cdn.mos.cms.futurecdn.net/6vEt8qRjSJA8ncGGUriukH.jpg" mos="" align="middle" fullscreen="" width="2112" height="1188" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Framework)</span></figcaption></figure><p>Running low on storage is less painful than it used to be, mainly because Windows and macOS are extremely good at pushing files to the cloud.</p><p>OneDrive’s <a href="https://www.tomsguide.com/reviews/microsoft-onedrive-review">Files On-Demand feature</a>, for example, lets files remain visible in File Explorer without actually taking up space, while macOS can automatically move less frequently used files into <a href="https://www.tomsguide.com/phones/iphones/i-pay-for-icloud-not-for-storage-but-for-this-perk-instead">iCloud</a> when space starts running low.</p><p>There's no denying that these are genuinely useful features that save people a lot of hassle; having to actively choose what to delete is tough, and decision paralysis is real. </p><p>The problem comes when cloud storage starts compensating for your laptop's limited built-in storage.</p><p>Both OSes make that transition remarkably easy: You fill the SSD, move more into the cloud, and eventually find yourself paying for extra capacity. Almost without noticing, an understandable hardware compromise becomes yet another subscription.</p><p><a href="https://www.tomsguide.com/buying-guide/best-cloud-storage">Cloud storage</a> also isn’t a like-for-like replacement for local storage. Apps, games, caches, and plenty of other files still need SSD space, while online-only files naturally depend on an internet connection.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eBz6Ke"></div>                            </div>                            <script src="https://kwizly.com/embed/eBz6Ke.js" async></script><h2 id="ai-is-making-the-obvious-solution-harder">AI is making the obvious solution harder</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xvJgTcuknLbUZo9QawcVzi" name="macbook neo" alt="macbook neo" src="https://cdn.mos.cms.futurecdn.net/xvJgTcuknLbUZo9QawcVzi.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 obvious answer would be for 512GB to become the new baseline. Unfortunately, 2026 is turning out to be a pretty terrible year for that transition.</p><p>As you might have read, the <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMageddon</a> is also putting pressure on the storage inside our laptops, as well as <a href="https://www.tomsguide.com/gaming/best-games-consoles">consoles</a>, <a href="https://www.tomsguide.com/best-picks/best-cheap-tablets">tablets</a>, <a href="https://www.tomsguide.com/best-picks/best-phones">smartphones</a>, and, well, pretty much every consumer device.</p><p>Data centres need vast amounts of memory and storage to keep AI services running, and that extra demand is making the components used in consumer SSDs more expensive too.</p><p>We’ve already seen how the wider memory crunch is <a href="https://www.tomsguide.com/computing/laptops/buying-a-laptop-in-2026-is-complicated-heres-a-survival-guide-to-help-you-make-the-best-choice">affecting the laptop market</a>, with manufacturers facing higher component costs and difficult decisions over where to make compromises. Even usually unflappable giants like Apple are <a href="https://www.tomsguide.com/computing/macbooks/apple-price-hikes-are-official-heres-how-much-more-youll-pay-for-macbooks-and-ipads-now">raising prices</a> across the board. </p><p>All of this makes sticking with 256GB easier to understand, even if it doesn’t make it any more appealing. The 256GB laptop isn’t obsolete yet. But, like the 32GB phone before it, its days as an acceptable default should be numbered.</p><div data-widget-type="multimodelreview" data-model-name="Apple MacBook Neo,Dell XPS 13"></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/ai/claude/claude-is-watermarking-every-response-heres-what-that-means-if-you-use-ai-for-writing">Claude is now watermarking every response — here's what that means if you use AI for writing</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/hyperx-omen-15-review">I tested the HyperX Omen 15, and it almost made me forget my PS5</a></li><li><a href="https://www.tomsguide.com/phones/google-pixel-phones/i-checked-out-the-pixel-11-pixel-11-pro-and-pixel-11-pro-xl-heres-the-one-i-recommend">I checked out the Pixel 11, Pixel 11 Pro, and Pixel 11 Pro XL — here’s the one I recommend</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&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.&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-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      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-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      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-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .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">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').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="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \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.parentElement.querySelector('.tg-df-carousel-roundels').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-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').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="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \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>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').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>    \x3C/div>    \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">      \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').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="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>      \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').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>        \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';             }          }          const website = params.get('website') || 'tomsguide';          this.website = website;          if (website === 'techradar') {            const squadHeader = this.root.querySelector('.tg-df-savings-squad-header');            if (squadHeader) {               const pic = squadHeader.querySelector('picture');               if (pic) pic.style.display = 'none';            }            const style = document.createElement('style');            style.innerHTML = `              .tg-df-container .hawk-affiliate-link-deal-button, .tg-df-container .tg-df-card-cta { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button:hover, .tg-df-container .tg-df-card-cta:hover { background-color: #4a8c06 !important; }            `;            this.root.appendChild(style);          }                    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')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        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';          }        }        getRowsLimit() {          if (this.rowsSelect && this.rowsSelect.value) return parseInt(this.rowsSelect.value, 10);          let configSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {             configSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {             configSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(configSource);          if (params.has('rows')) return parseInt(params.get('rows'), 10) || 12;          return 12;        }        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("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/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.getRowsLimit();          } else {             this.displayLimit += this.getRowsLimit();          }                    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 cleanTag = this.activeDealTag.toLowerCase().replace(/&/g, '').replace(/[^a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');             const encodedTag = encodeURIComponent(cleanTag);             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');                    url.searchParams.append('rows', this.getRowsLimit().toString());          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 = this.getRowsLimit();          // 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, idx) => {              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}`;                }              }              const revenueIdVal = generateRevenueId(linkUrl, offerName, merchantName, null);              const rewrittenLinkUrl = rewriteAffiliateLink(linkUrl, area, revenueIdVal);              return `                \x3Ca href="${this.escapeHTML(rewrittenLinkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item"                  data-action="voucher-click"                  data-product-name="${this.escapeHTML(offerName)}"                  data-merchant-name="${this.escapeHTML(merchantName)}"                  data-analytics-id="${this.escapeHTML(offerObj.offer_id || offerObj.id || v.id || '')}"                  data-price=""                  data-previous-price=""                  data-original-link="${this.escapeHTML(linkUrl)}"                  data-revenue-id="${revenueIdVal}"                  data-index="${idx}"                  data-total="${offers.length}"                  data-in-stock="true"                  data-currency="USD"                  data-model-id="${this.escapeHTML(offerObj.model_id || v.model_id || offerObj.id || v.id || '')}"                  data-merchant-id="${this.escapeHTML(offerObj.merchant_id || offerObj.merchant?.id || '')}"                >                  ${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);                }              });            });            // Attach voucher click tracking            const voucherBtns = content.querySelectorAll('[data-action="voucher-click"]');            voucherBtns.forEach(btn => {              btn.addEventListener('click', (e) => {                if (e.target.closest('[data-action="copy-code"]')) return;                                const productName = btn.getAttribute('data-product-name');                const merchantNameAttr = btn.getAttribute('data-merchant-name');                const productId = btn.getAttribute('data-analytics-id');                const price = parseFloat(btn.getAttribute('data-price')) || null;                const prevPriceStr = btn.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = btn.getAttribute('data-original-link');                const rewrittenLink = btn.getAttribute('href');                const revenueId = btn.getAttribute('data-revenue-id');                const index = parseInt(btn.getAttribute('data-index'), 10) || 0;                const inStock = btn.getAttribute('data-in-stock') === 'true';                const totalText = btn.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: btn.getAttribute('data-model-id') || null,                    matchId: btn.getAttribute('data-match-id') || null,                    brand: btn.getAttribute('data-model-brand') || null,                    parent: btn.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: btn.getAttribute('data-merchant-id') || null,                    network: btn.getAttribute('data-merchant-network') || null,                    url: btn.getAttribute('data-merchant-url') || null,                    name: merchantNameAttr                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: btn.getAttribute('data-currency') || 'USD'                };                if (typeof trackDealClick === 'function') {                  trackDealClick(trackingParams);                }              });            });                                  } 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 = deal.merchant && deal.merchant.toLowerCase().includes('amazon') ? '' : `              \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;          // Inject JSON-LD          try {            let targetNode = this.hostContainer || document.head;            let jsonLdScript = targetNode.querySelector('#tg-df-json-ld-' + this.widgetId);            if (!jsonLdScript) {                jsonLdScript = document.createElement('script');                jsonLdScript.type = 'application/ld+json';                jsonLdScript.id = 'tg-df-json-ld-' + this.widgetId;                targetNode.appendChild(jsonLdScript);            }            const jsonLdData = {              "@context": "https://schema.org",              "@type": "ItemList",              "itemListElement": displayDeals.slice(0, this.displayLimit).map((deal, index) => {                 let isoCurrency = "USD";                 if (deal.currency === '£') isoCurrency = "GBP";                 else if (deal.currency === '€') isoCurrency = "EUR";                 else if (deal.currency === 'A$') isoCurrency = "AUD";                 else if (deal.currency === 'CA$') isoCurrency = "CAD";                 const areaCode = typeof this.getAreaCode === 'function' ? this.getAreaCode() : 'US';                 const revenueId = typeof generateRevenueId === 'function' ? generateRevenueId(deal.url, deal.title, deal.merchant, null) : '';                 const rewrittenLink = typeof rewriteAffiliateLink === 'function' ? rewriteAffiliateLink(deal.url, areaCode, revenueId) : deal.url;                 return {                   "@type": "ListItem",                   "position": index + 1,                   "item": {                     "@type": "Product",                     "name": deal.title,                     "image": deal.image || "",                     "description": deal.description || "",                     "brand": {                       "@type": "Brand",                       "name": deal.brand || ""                     },                     "offers": {                       "@type": "Offer",                       "priceCurrency": isoCurrency,                       "price": deal.rawPrice || 0,                       "url": rewrittenLink,                       "seller": {                         "@type": "Organization",                         "name": deal.merchant || ""                       }                     }                   }                 };              }).filter(item => item.item.name)            };            jsonLdScript.textContent = JSON.stringify(jsonLdData);          } catch(e) { console.warn("JSON-LD generation failed", e); }                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let rightChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             let leftChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-left');             if (this.getViewMode() === 'carousel') {                 // The observer set up in setupScrollListeners handles visibility.                 if (rightChevron) rightChevron.style.display = 'flex';                 if (leftChevron) leftChevron.style.display = 'none'; // reset correctly             } else {                 if (rightChevron) rightChevron.style.display = 'none';                 if (leftChevron) leftChevron.style.display = 'none';             }          }                    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.getRowsLimit();                 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');               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> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/cloud-storage/the-256gb-laptop-is-the-new-32gb-phone-and-its-quietly-pushing-you-into-cloud-subscriptions</link>
                                                                            <description>
                            <![CDATA[ Many laptops start with 256GB of storage. Unfortunately, that doesn't tend to last long, which could inevitably force you into cloud subscriptions. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2dDayHGrQtJTU2i7pfpWjg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9h2ktgVmyY3wffQ56vrvuD-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sat, 15 Aug 2026 06:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Cloud Storage]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Max Slater-Robins ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/9h2ktgVmyY3wffQ56vrvuD-1280-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[MacBook Neo]]></media:description>                                                            <media:text><![CDATA[MacBook Neo]]></media:text>
                                <media:title type="plain"><![CDATA[MacBook Neo]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9h2ktgVmyY3wffQ56vrvuD-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There was a time not too long ago when a 32GB smartphone felt perfectly workable — potentially even spacious. Fast forward to today and apps have gotten bigger, cameras have become larger, and routine software updates now eat entire gigabytes on their own. </p><p>32GB has gone from seeming totally normal (even luxurious) to looking absurdly stingy. I think 256GB laptops are heading in the same direction. </p><p>In 2026, plenty of otherwise <a href="https://www.tomsguide.com/best-picks/best-budget-laptops">excellent laptops</a> start with 256GB of storage, despite many of the <a href="https://www.tomsguide.com/best-picks/best-phones">best smartphones</a> offering the same amount. At first, 256GB might be enough, but after months or years of apps, photos, downloads, and updates, that breathing room is just... gone.</p><p>And when it does go, <a href="https://www.tomsguide.com/reviews/windows-11">Windows 11</a> and <a href="https://www.tomsguide.com/computing/macos/apple-macos-tahoe-review">macOS</a> have a very convenient answer waiting in the wings: move more of your stuff into the cloud — and, sooner or later, start paying for it.</p><div class="product"><a data-dimension112="bdce9650-972a-11f1-bf3c-f145984e235b" data-action="Deal Block" data-label="13" MacBook Air (M5)" data-dimension48="13" MacBook Air (M5)" data-dimension25="$1297" href="https://www.amazon.com/Apple-2026-MacBook-13-inch-Laptop/dp/B0GR1JTFP8?th=1" 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:100.00%;"><img id="2S3mMDzKcdQKAxWc4wGxDQ" name="MacBook Air M5 deal" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/2S3mMDzKcdQKAxWc4wGxDQ.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Apple-2026-MacBook-13-inch-Laptop/dp/B0GR1JTFP8?th=1" target="_blank" rel="nofollow" data-dimension112="bdce9650-972a-11f1-bf3c-f145984e235b" data-action="Deal Block" data-label='13" MacBook Air (M5)' data-dimension48='13" MacBook Air (M5)' data-dimension25="$1297">13" MacBook Air (M5): $1297</a></strong><br>The MacBook Air has been upgraded with more power. The new laptop features a 13.6-inch (2560 x 1664) display, the new Apple M5 chip, 16GB of RAM, a 512GB SSD, and support for Wi-Fi 7 and Bluetooth 6. Although it now costs $100 more, the base model comes with a 512GB SSD instead of 256GB.<a class="view-deal button" href="https://www.amazon.com/Apple-2026-MacBook-13-inch-Laptop/dp/B0GR1JTFP8?th=1" target="_blank" rel="nofollow" data-dimension112="bdce9650-972a-11f1-bf3c-f145984e235b" data-action="Deal Block" data-label="13" MacBook Air (M5)" data-dimension48="13" MacBook Air (M5)" data-dimension25="$1297">View Deal</a></p></div><h2 id="256gb-isn-t-tiny-and-that-s-exactly-the-problem">256GB isn’t tiny — and that’s exactly the problem</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:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="iQBUvBQeStovV4YftmSdMZ" name="Lenovo Chromebook Plus 14" alt="Lenovo Chromebook Plus 14" src="https://cdn.mos.cms.futurecdn.net/iQBUvBQeStovV4YftmSdMZ.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" 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 funny part, if we can call it that, is that 256GB can feel perfectly comfortable for those who live inside a browser. But there's a difference between having enough storage and having enough room to <em>grow</em>.</p><p>We’ve previously said that <a href="https://www.tomsguide.com/computing/laptops/5-things-to-look-for-when-buying-a-laptop-from-someone-who-reviews-them-for-a-living">256GB is the bare minimum</a> you should look for in a general-purpose laptop, and that increasingly feels spot on in 2026.  </p><p>It’s definitely enough to get by, but it doesn’t leave you with a huge amount of headroom for the future. In a world where a single <a href="https://www.tomsguide.com/entertainment/music-streaming/spotifys-latest-update-makes-organizing-your-music-easier-plus-improved-offline-downloads">Spotify</a> playlist with 1,000 songs can take up nearly 10GB of space, bigger is better.  </p><p>You can actually see the shift happening elsewhere in the market: Apple’s latest <a href="https://www.tomsguide.com/computing/macbooks/macbook-air-m5-review">MacBook Air</a> now starts with 512GB, an upgrade we welcomed, while many <a href="https://www.tomsguide.com/best-picks/best-budget-laptops">budget laptops</a> continue to stick with 256GB to keep their prices down.</p><p>There is, of course, some nuance to this picture. A <a href="https://www.tomsguide.com/news/best-chromebook-deals-prices">cheap Chromebook</a> or secondary laptop definitely doesn’t need a huge SSD, and with memory prices soaring, buying decisions are becoming harder than ever.</p><p>But for a laptop you expect to use as your main computer for the next five-plus years, 256GB looks less like a specification and more like a compromise.</p><h2 id="your-laptop-can-last-years-but-its-storage-can-t-grow-with-it">Your laptop can last years, but its storage can’t grow with it</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ywqirqeDaWNqKZgmGgbrqF" name="macbook air m4" alt="macbook air m4" src="https://cdn.mos.cms.futurecdn.net/ywqirqeDaWNqKZgmGgbrqF.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: Apple)</span></figcaption></figure><p>At a basic level, storage is one of the few parts of a laptop that can become more restrictive simply through normal use.</p><p>Photos, downloads, apps, offline media, assorted files, and everything else you acquire from day to day gradually pile up, while the SSD you bought on day one stays the same size. This situation is less of a problem if you can simply replace the SSD later. </p><p>Some Windows laptops, like the excellent <a href="https://www.tomsguide.com/computing/laptops/framework-laptop-13-pro-revealed-and-its-a-ground-up-redesign-of-our-favorite-modular-laptop">Framework models</a>, still make that relatively straightforward, but plenty of thin-and-light notebooks — including <a href="https://www.tomsguide.com/computing/macbooks/i-review-macbooks-for-a-living-and-these-are-the-biggest-developments-i-expect-in-2026">MacBooks</a> — effectively lock you into whatever capacity you choose at checkout.</p><div class="product"><a data-dimension112="bdce9718-972a-11f1-b4e8-7590d6ebcb98" data-action="Deal Block" data-label="Laptop 16 (2025)" data-dimension48="Laptop 16 (2025)" data-dimension25="$1599" href="https://frame.work/laptop16" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1305px;"><p class="vanilla-image-block" style="padding-top:69.04%;"><img id="fnhfRVzYGyhBCo8Ng2wFJn" name="Framework Laptop 16.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fnhfRVzYGyhBCo8Ng2wFJn.jpg" mos="" align="middle" fullscreen="" width="1305" height="901" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://frame.work/laptop16" target="_blank" rel="nofollow" data-dimension112="bdce9718-972a-11f1-b4e8-7590d6ebcb98" data-action="Deal Block" data-label="Laptop 16 (2025)" data-dimension48="Laptop 16 (2025)" data-dimension25="$1599">Laptop 16 (2025): $1599</a></strong><br>The Framework Laptop 16 is a fully customizable, repairable, and upgradable laptop. It now includes the option to outfit it with an Nvidia GeForce RTX 5070 graphics card. In our <a href="https://www.tomsguide.com/computing/laptops/framework-laptop-16-2025-review">Framework Laptop 16 review,</a> we called the Editor's Choice machine our favorite laptop of the year and a must-buy for DIYers and folks who value their right to repair.<a class="view-deal button" href="https://frame.work/laptop16" target="_blank" rel="nofollow" data-dimension112="bdce9718-972a-11f1-b4e8-7590d6ebcb98" data-action="Deal Block" data-label="Laptop 16 (2025)" data-dimension48="Laptop 16 (2025)" data-dimension25="$1599">View Deal</a></p></div><h2 id="conveniently-there-s-a-subscription-for-that">Conveniently, there’s a subscription for that</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:2112px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6vEt8qRjSJA8ncGGUriukH" name="Framework Laptop 13 upgradeable" alt="Framework Laptop 13 being upgraded with new memory" src="https://cdn.mos.cms.futurecdn.net/6vEt8qRjSJA8ncGGUriukH.jpg" mos="" align="middle" fullscreen="" width="2112" height="1188" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Framework)</span></figcaption></figure><p>Running low on storage is less painful than it used to be, mainly because Windows and macOS are extremely good at pushing files to the cloud.</p><p>OneDrive’s <a href="https://www.tomsguide.com/reviews/microsoft-onedrive-review">Files On-Demand feature</a>, for example, lets files remain visible in File Explorer without actually taking up space, while macOS can automatically move less frequently used files into <a href="https://www.tomsguide.com/phones/iphones/i-pay-for-icloud-not-for-storage-but-for-this-perk-instead">iCloud</a> when space starts running low.</p><p>There's no denying that these are genuinely useful features that save people a lot of hassle; having to actively choose what to delete is tough, and decision paralysis is real. </p><p>The problem comes when cloud storage starts compensating for your laptop's limited built-in storage.</p><p>Both OSes make that transition remarkably easy: You fill the SSD, move more into the cloud, and eventually find yourself paying for extra capacity. Almost without noticing, an understandable hardware compromise becomes yet another subscription.</p><p><a href="https://www.tomsguide.com/buying-guide/best-cloud-storage">Cloud storage</a> also isn’t a like-for-like replacement for local storage. Apps, games, caches, and plenty of other files still need SSD space, while online-only files naturally depend on an internet connection.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eBz6Ke"></div>                            </div>                            <script src="https://kwizly.com/embed/eBz6Ke.js" async></script><h2 id="ai-is-making-the-obvious-solution-harder">AI is making the obvious solution harder</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xvJgTcuknLbUZo9QawcVzi" name="macbook neo" alt="macbook neo" src="https://cdn.mos.cms.futurecdn.net/xvJgTcuknLbUZo9QawcVzi.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 obvious answer would be for 512GB to become the new baseline. Unfortunately, 2026 is turning out to be a pretty terrible year for that transition.</p><p>As you might have read, the <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMageddon</a> is also putting pressure on the storage inside our laptops, as well as <a href="https://www.tomsguide.com/gaming/best-games-consoles">consoles</a>, <a href="https://www.tomsguide.com/best-picks/best-cheap-tablets">tablets</a>, <a href="https://www.tomsguide.com/best-picks/best-phones">smartphones</a>, and, well, pretty much every consumer device.</p><p>Data centres need vast amounts of memory and storage to keep AI services running, and that extra demand is making the components used in consumer SSDs more expensive too.</p><p>We’ve already seen how the wider memory crunch is <a href="https://www.tomsguide.com/computing/laptops/buying-a-laptop-in-2026-is-complicated-heres-a-survival-guide-to-help-you-make-the-best-choice">affecting the laptop market</a>, with manufacturers facing higher component costs and difficult decisions over where to make compromises. Even usually unflappable giants like Apple are <a href="https://www.tomsguide.com/computing/macbooks/apple-price-hikes-are-official-heres-how-much-more-youll-pay-for-macbooks-and-ipads-now">raising prices</a> across the board. </p><p>All of this makes sticking with 256GB easier to understand, even if it doesn’t make it any more appealing. The 256GB laptop isn’t obsolete yet. But, like the 32GB phone before it, its days as an acceptable default should be numbered.</p><div data-widget-type="multimodelreview" data-model-name="Apple MacBook Neo,Dell XPS 13"></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/ai/claude/claude-is-watermarking-every-response-heres-what-that-means-if-you-use-ai-for-writing">Claude is now watermarking every response — here's what that means if you use AI for writing</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/hyperx-omen-15-review">I tested the HyperX Omen 15, and it almost made me forget my PS5</a></li><li><a href="https://www.tomsguide.com/phones/google-pixel-phones/i-checked-out-the-pixel-11-pixel-11-pro-and-pixel-11-pro-xl-heres-the-one-i-recommend">I checked out the Pixel 11, Pixel 11 Pro, and Pixel 11 Pro XL — here’s the one I recommend</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&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.&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-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      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-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      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-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .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">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').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="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \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.parentElement.querySelector('.tg-df-carousel-roundels').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-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').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="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \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>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').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>    \x3C/div>    \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">      \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').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="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>      \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').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>        \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';             }          }          const website = params.get('website') || 'tomsguide';          this.website = website;          if (website === 'techradar') {            const squadHeader = this.root.querySelector('.tg-df-savings-squad-header');            if (squadHeader) {               const pic = squadHeader.querySelector('picture');               if (pic) pic.style.display = 'none';            }            const style = document.createElement('style');            style.innerHTML = `              .tg-df-container .hawk-affiliate-link-deal-button, .tg-df-container .tg-df-card-cta { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button:hover, .tg-df-container .tg-df-card-cta:hover { background-color: #4a8c06 !important; }            `;            this.root.appendChild(style);          }                    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')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        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';          }        }        getRowsLimit() {          if (this.rowsSelect && this.rowsSelect.value) return parseInt(this.rowsSelect.value, 10);          let configSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {             configSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {             configSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(configSource);          if (params.has('rows')) return parseInt(params.get('rows'), 10) || 12;          return 12;        }        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("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/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.getRowsLimit();          } else {             this.displayLimit += this.getRowsLimit();          }                    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 cleanTag = this.activeDealTag.toLowerCase().replace(/&/g, '').replace(/[^a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');             const encodedTag = encodeURIComponent(cleanTag);             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');                    url.searchParams.append('rows', this.getRowsLimit().toString());          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 = this.getRowsLimit();          // 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, idx) => {              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}`;                }              }              const revenueIdVal = generateRevenueId(linkUrl, offerName, merchantName, null);              const rewrittenLinkUrl = rewriteAffiliateLink(linkUrl, area, revenueIdVal);              return `                \x3Ca href="${this.escapeHTML(rewrittenLinkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item"                  data-action="voucher-click"                  data-product-name="${this.escapeHTML(offerName)}"                  data-merchant-name="${this.escapeHTML(merchantName)}"                  data-analytics-id="${this.escapeHTML(offerObj.offer_id || offerObj.id || v.id || '')}"                  data-price=""                  data-previous-price=""                  data-original-link="${this.escapeHTML(linkUrl)}"                  data-revenue-id="${revenueIdVal}"                  data-index="${idx}"                  data-total="${offers.length}"                  data-in-stock="true"                  data-currency="USD"                  data-model-id="${this.escapeHTML(offerObj.model_id || v.model_id || offerObj.id || v.id || '')}"                  data-merchant-id="${this.escapeHTML(offerObj.merchant_id || offerObj.merchant?.id || '')}"                >                  ${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);                }              });            });            // Attach voucher click tracking            const voucherBtns = content.querySelectorAll('[data-action="voucher-click"]');            voucherBtns.forEach(btn => {              btn.addEventListener('click', (e) => {                if (e.target.closest('[data-action="copy-code"]')) return;                                const productName = btn.getAttribute('data-product-name');                const merchantNameAttr = btn.getAttribute('data-merchant-name');                const productId = btn.getAttribute('data-analytics-id');                const price = parseFloat(btn.getAttribute('data-price')) || null;                const prevPriceStr = btn.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = btn.getAttribute('data-original-link');                const rewrittenLink = btn.getAttribute('href');                const revenueId = btn.getAttribute('data-revenue-id');                const index = parseInt(btn.getAttribute('data-index'), 10) || 0;                const inStock = btn.getAttribute('data-in-stock') === 'true';                const totalText = btn.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: btn.getAttribute('data-model-id') || null,                    matchId: btn.getAttribute('data-match-id') || null,                    brand: btn.getAttribute('data-model-brand') || null,                    parent: btn.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: btn.getAttribute('data-merchant-id') || null,                    network: btn.getAttribute('data-merchant-network') || null,                    url: btn.getAttribute('data-merchant-url') || null,                    name: merchantNameAttr                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: btn.getAttribute('data-currency') || 'USD'                };                if (typeof trackDealClick === 'function') {                  trackDealClick(trackingParams);                }              });            });                                  } 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 = deal.merchant && deal.merchant.toLowerCase().includes('amazon') ? '' : `              \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;          // Inject JSON-LD          try {            let targetNode = this.hostContainer || document.head;            let jsonLdScript = targetNode.querySelector('#tg-df-json-ld-' + this.widgetId);            if (!jsonLdScript) {                jsonLdScript = document.createElement('script');                jsonLdScript.type = 'application/ld+json';                jsonLdScript.id = 'tg-df-json-ld-' + this.widgetId;                targetNode.appendChild(jsonLdScript);            }            const jsonLdData = {              "@context": "https://schema.org",              "@type": "ItemList",              "itemListElement": displayDeals.slice(0, this.displayLimit).map((deal, index) => {                 let isoCurrency = "USD";                 if (deal.currency === '£') isoCurrency = "GBP";                 else if (deal.currency === '€') isoCurrency = "EUR";                 else if (deal.currency === 'A$') isoCurrency = "AUD";                 else if (deal.currency === 'CA$') isoCurrency = "CAD";                 const areaCode = typeof this.getAreaCode === 'function' ? this.getAreaCode() : 'US';                 const revenueId = typeof generateRevenueId === 'function' ? generateRevenueId(deal.url, deal.title, deal.merchant, null) : '';                 const rewrittenLink = typeof rewriteAffiliateLink === 'function' ? rewriteAffiliateLink(deal.url, areaCode, revenueId) : deal.url;                 return {                   "@type": "ListItem",                   "position": index + 1,                   "item": {                     "@type": "Product",                     "name": deal.title,                     "image": deal.image || "",                     "description": deal.description || "",                     "brand": {                       "@type": "Brand",                       "name": deal.brand || ""                     },                     "offers": {                       "@type": "Offer",                       "priceCurrency": isoCurrency,                       "price": deal.rawPrice || 0,                       "url": rewrittenLink,                       "seller": {                         "@type": "Organization",                         "name": deal.merchant || ""                       }                     }                   }                 };              }).filter(item => item.item.name)            };            jsonLdScript.textContent = JSON.stringify(jsonLdData);          } catch(e) { console.warn("JSON-LD generation failed", e); }                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let rightChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             let leftChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-left');             if (this.getViewMode() === 'carousel') {                 // The observer set up in setupScrollListeners handles visibility.                 if (rightChevron) rightChevron.style.display = 'flex';                 if (leftChevron) leftChevron.style.display = 'none'; // reset correctly             } else {                 if (rightChevron) rightChevron.style.display = 'none';                 if (leftChevron) leftChevron.style.display = 'none';             }          }                    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.getRowsLimit();                 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');               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[ 5 reasons why NordVPN beats a free alternative every time ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/reviews/nordvpn-review" target="_blank"><u>NordVPN</u></a> is one of the <a href="https://www.tomsguide.com/best-picks/best-vpn" target="_blank"><u>best VPNs</u></a> you can use instead of a free one, and for good reason. Founded in 2012, it’s fast become one of the most secure and speedy VPNs you can use in 2026. <strong>Available on all major operating systems</strong>, such as iOS, Windows, macOS, and Linux, it’s a straightforward process to sign up, install the app, sign in, and enable NordVPN on your devices.</p><p>However, you may have previously been tempted to try out a free VPN. Whilst these can give your device a way of browsing streaming sites in another country, there’s a good chance your browsing data is at risk of being used by third-party companies. This is a big factor in funding these VPNs, and you may experience far slower speeds compared to using a paid VPN.</p><p>With this in mind, we’ve listed five reasons below why NordVPN is the far better choice than a free VPN, and we've also delved into details about how the company keeps its users’ data secure.</p><ul><li><strong>NordVPN is one of the best value for money VPN packages you can buy, and is known to be one of the fastest available.</strong></li><li><strong>NordVPN runs on servers with no hard drives, meaning data is never stored, and there’s low-power consumption and fast speeds, benefiting everyone.</strong></li><li><strong>There have been six audits under the ISAE 3000 standard so far, showcasing NordVPN’s focus on privacy.</strong></li><li><strong>There are three subscription tiers that have varying features to suit a single device or 10, depending on your needs; this flexible pricing gives you premium speed and security without the hidden data limits or privacy risks of free VPNs.</strong></li></ul><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="xuhg5HK4CxJJDre6LJVWrB" name="ios-specialty-servers-ca" alt="NordVPN" src="https://cdn.mos.cms.futurecdn.net/xuhg5HK4CxJJDre6LJVWrB.png" 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: NordVPN)</span></figcaption></figure><h2 id="5-reasons-to-use-nordvpn-instead-of-a-free-alternative">5 reasons to use NordVPN instead of a free alternative</h2><h2 class="article-body__section" id="section-nordvpn-s-no-log-policy-has-been-independently-audited-six-times"><span>NordVPN’s no-log policy has been independently audited six times</span></h2><p>When you’re considering a paid VPN, privacy has to be at the top of what one offers. NordVPN’s no-log policy, which means that it doesn’t store your information, has been verified by auditors six times so far under the <a href="https://www.iaasb.org/publications/international-standard-assurance-engagements-isae-3000-revised-assurance-engagements-other-audits-or" target="_blank" rel="nofollow"><u>ISAE 3000 standard</u></a>. This assures that no data, such as user traffic or metadata, is kept by NordVPN when enabled.</p><h3 id="what-does-an-isae-3000-audit-actually-prove">What does an ISAE 3000 audit actually prove?</h3><p>An ISAE 3000 audit examines a company's systems and reports on its findings. It’s a big distinction from free VPNs, as they can be funded by sharing data collected by users. Many assume that these are private, but it’s usually far from the case.</p><h2 class="article-body__section" id="section-nordvpn-s-servers-run-without-hard-drives"><span>NordVPN’s servers run without hard drives</span></h2><p>Because every server in NordVPN’s network runs on <a href="https://nordvpn.com/blog/ram-based-servers/?srsltid=AfmBOop--IQw9kHqqAWvOcDHYsrmpyJMtJZab43qNgdSzcmecNXwT4CL" target="_blank" rel="nofollow"><u>RAM instead of hard drives</u></a>, this means that any data stored is only temporary, as there’s no storage for hackers to steal. There are other benefits to using Nord’s services, such as high-speed and lower power consumption. This means that when you enable NordVPN, you’re less likely to experience lag compared to a free VPN that works on a server with hard drives installed.</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:56.25%;"><img id="qHaNXUAafL4bTGSCSH3LfR" name="macos-fr-6" alt="NordVPN" src="https://cdn.mos.cms.futurecdn.net/qHaNXUAafL4bTGSCSH3LfR.png" 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: NordVPN)</span></figcaption></figure><h2 class="article-body__section" id="section-why-is-nordvpn-faster-than-a-free-vpn"><span>Why is NordVPN faster than a free VPN?</span></h2><p>This is because of NordVPN’s exclusive protocol, <a href="https://nordvpn.com/blog/nordlynx-protocol-wireguard/?srsltid=AfmBOoruZXJXMzDd9EfIznuK9xuCx9vYy2c_SyFIRlQBtZB6N4qAGwcr" target="_blank" rel="nofollow"><u>NordLynx</u></a>. Built on the light WireGuard framework, NordLynx runs on only 4,000 lines of code, compared to legacy protocols like OpenVPN, which can bloat up to 400,000 lines.</p><p>Because it's made with far less code than others, it means that you get quick server connections, reduced battery drain on mobile devices, and fast, unthrottled speeds with almost no lag when streaming on top platforms, whereas that can be a common occurrence when using free VPNs.</p><p>In <a href="https://www.tomsguide.com/reviews/nordvpn-review#section-nordvpn-connection-speeds" target="_blank">speed testing by Tom’s Guide</a>, NordLynx reached local speeds averaging 1,249 Mbps (peaking at 1,284 Mbps), nearly doubling the speed of NordVPN's own OpenVPN implementation (688 Mbps) and being "fast enough for almost any conceivable use-case".</p><p>NordLynx is also available on all major devices, such as the <a href="https://www.tomsguide.com/us/best-apple-iphone,review-6348.html" target="_blank"><u>best iPhones</u></a> and <a href="https://www.tomsguide.com/us/best-android-phones,review-6051.html" target="_blank"><u>Android handsets</u></a>, so you’ll be able to experience fast speeds on the devices you use daily.</p><h2 class="article-body__section" id="section-connecting-to-a-server-and-using-the-kill-switch-work-without-being-asked"><span>Connecting to a server and using the kill switch work without being asked</span></h2><p>One of the biggest benefits of using a paid VPN is being protected without even realizing it. NordVPN auto-connect creates an encrypted connection once your device joins an insecure network without you doing anything.</p><p>In addition, the kill switch kicks in if your device fails to connect to a VPN, protecting it from your data being shared on an unsecure network. Free VPNs usually work on unprotected connections, which can expose your data at any moment.</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:56.25%;"><img id="M8D4iZLyTqK694JGqz4N6Y" name="android-tv-br-2" alt="NordVPN" src="https://cdn.mos.cms.futurecdn.net/M8D4iZLyTqK694JGqz4N6Y.png" 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: NordVPN)</span></figcaption></figure><h2 class="article-body__section" id="section-one-subscription-covers-the-whole-vpn-experience"><span>One subscription covers the whole VPN experience</span></h2><p>NordVPN offers <a href="https://nordvpn.com/pricing/" target="_blank" rel="nofollow"><u>three subscription tiers</u></a> that can easily suit anyone who’s looking for a VPN to use, consisting of  Basic, Complete, and Ultimate Max, which can cover up to 10 devices:</p><p>• Basic ($3.49 / £2.59 per month): NordVPN</p><p>• Complete ($4.49 / £3.39 per month): Email, phone, credit card, and national ID/SSN monitoring, scam call protection, ad & tracker blocker, and more</p><p>• Ultimate Max ($7.49 / £6.29 per month): Unique IP address to help improve security and avoid CAPTCHAs. For UK users, coverage for Scam and ID loss of up to £5,000.</p><p>These can all be a monthly, yearly, or two-year plan.</p><p>There’s also a helpful <a href="https://nordvpn.com/customer-service/?srsltid=AfmBOopcufe5weTxzrnHwfGjd4ZNnHzG4mYJgtnwKZcz-XCE4BxBdyWZ" target="_blank" rel="nofollow"><u>24/7 support line</u></a> included as standard - this can be used if you need some help or if you need to change your account info. Free VPNs don’t offer this, and if you’re managing ten devices, it’s good to have support when you need it.</p><h2 id="nordvpn-proves-why-it-s-the-best-alternative-to-a-free-vpn">NordVPN proves why it’s the best alternative to a free VPN</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review" target="_blank"><u>NordVPN</u></a> is the best alternative to a free VPN. When you consider that the company has been <a href="https://nordvpn.com/blog/nordvpn-no-logs-assurance-engagement-2025/" target="_blank" rel="nofollow"><u>publicly audited six times so far</u></a>, as well as having its own protocol to ensure fast and secure connection speeds, the benefits outweigh the ability to use a free VPN. To find out more, <a href="https://go.nordvpn.net/aff_c?offer_id=346&aff_id=3013&url_id=8737" target="_blank" rel="nofollow">visit the NordVPN website</a>.</p><h2 id="faqs">FAQs</h2><h3 id="why-is-nordvpn-considered-one-of-the-fastest-vpns">Why is NordVPN considered one of the fastest VPNs?</h3><p>This is due to several reasons, like NordLynx, an exclusive protocol that NordVPN runs on to ensure a fast and secure VPN connection. There’s also SmartPlay, which helps you securely watch movies and TV shows, as well as Meshnet, which can let you share files and more with other devices worldwide.</p><h3 id="is-nordvpn-a-good-long-term-vpn-subscription">Is NordVPN a good long-term VPN subscription?</h3><p>Absolutely. NordVPN is designed to offer more than just basic VPN protection, making it a strong choice if you’re looking for a service you can rely on long term. Its 2-year Ultimate Max plan includes a broad range of features, including NordLynx, designed to deliver fast, secure connections without making everyday browsing feel complicated. You also get tools such as a kill switch and threat protection features, giving you additional peace of mind when you’re online. For anyone who wants a VPN that’s easy to use, feature-rich and built for regular use across multiple devices, NordVPN is a compelling long-term option.</p><h3 id="why-do-people-choose-nordvpn-over-cheaper-vpns">Why do people choose NordVPN over cheaper VPNs?</h3><p>The appeal of NordVPN is often its balance of simplicity, security and features. Setting it up across your devices is straightforward, so you don’t need to be particularly tech-savvy to start using it. Once you’re connected, features such as the kill switch can help protect your connection if your VPN drops unexpectedly. NordVPN also offers its NordLynx protocol, which is designed to provide fast connections while maintaining strong security. While cheaper VPNs can offer basic privacy tools, NordVPN’s combination of ease of use, additional features and a polished experience can make it worth considering if you plan to use a VPN regularly.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/5-reasons-why-nordvpn-beats-a-free-alternative-every-time</link>
                                                                            <description>
                            <![CDATA[ Paying for a VPN can work out in more ways than you think ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CNXMPm39jzQ5HHXeZxnadP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/z7c7SKDV32SHpQtUdeUv9L-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 13 Aug 2026 16:15:40 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Sponsored ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/z7c7SKDV32SHpQtUdeUv9L-1280-80.png">
                                                            <media:credit><![CDATA[NordVPN]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[NordVPN]]></media:description>                                                            <media:text><![CDATA[NordVPN]]></media:text>
                                <media:title type="plain"><![CDATA[NordVPN]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/z7c7SKDV32SHpQtUdeUv9L-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/reviews/nordvpn-review" target="_blank"><u>NordVPN</u></a> is one of the <a href="https://www.tomsguide.com/best-picks/best-vpn" target="_blank"><u>best VPNs</u></a> you can use instead of a free one, and for good reason. Founded in 2012, it’s fast become one of the most secure and speedy VPNs you can use in 2026. <strong>Available on all major operating systems</strong>, such as iOS, Windows, macOS, and Linux, it’s a straightforward process to sign up, install the app, sign in, and enable NordVPN on your devices.</p><p>However, you may have previously been tempted to try out a free VPN. Whilst these can give your device a way of browsing streaming sites in another country, there’s a good chance your browsing data is at risk of being used by third-party companies. This is a big factor in funding these VPNs, and you may experience far slower speeds compared to using a paid VPN.</p><p>With this in mind, we’ve listed five reasons below why NordVPN is the far better choice than a free VPN, and we've also delved into details about how the company keeps its users’ data secure.</p><ul><li><strong>NordVPN is one of the best value for money VPN packages you can buy, and is known to be one of the fastest available.</strong></li><li><strong>NordVPN runs on servers with no hard drives, meaning data is never stored, and there’s low-power consumption and fast speeds, benefiting everyone.</strong></li><li><strong>There have been six audits under the ISAE 3000 standard so far, showcasing NordVPN’s focus on privacy.</strong></li><li><strong>There are three subscription tiers that have varying features to suit a single device or 10, depending on your needs; this flexible pricing gives you premium speed and security without the hidden data limits or privacy risks of free VPNs.</strong></li></ul><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="xuhg5HK4CxJJDre6LJVWrB" name="ios-specialty-servers-ca" alt="NordVPN" src="https://cdn.mos.cms.futurecdn.net/xuhg5HK4CxJJDre6LJVWrB.png" 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: NordVPN)</span></figcaption></figure><h2 id="5-reasons-to-use-nordvpn-instead-of-a-free-alternative">5 reasons to use NordVPN instead of a free alternative</h2><h2 class="article-body__section" id="section-nordvpn-s-no-log-policy-has-been-independently-audited-six-times"><span>NordVPN’s no-log policy has been independently audited six times</span></h2><p>When you’re considering a paid VPN, privacy has to be at the top of what one offers. NordVPN’s no-log policy, which means that it doesn’t store your information, has been verified by auditors six times so far under the <a href="https://www.iaasb.org/publications/international-standard-assurance-engagements-isae-3000-revised-assurance-engagements-other-audits-or" target="_blank" rel="nofollow"><u>ISAE 3000 standard</u></a>. This assures that no data, such as user traffic or metadata, is kept by NordVPN when enabled.</p><h3 id="what-does-an-isae-3000-audit-actually-prove">What does an ISAE 3000 audit actually prove?</h3><p>An ISAE 3000 audit examines a company's systems and reports on its findings. It’s a big distinction from free VPNs, as they can be funded by sharing data collected by users. Many assume that these are private, but it’s usually far from the case.</p><h2 class="article-body__section" id="section-nordvpn-s-servers-run-without-hard-drives"><span>NordVPN’s servers run without hard drives</span></h2><p>Because every server in NordVPN’s network runs on <a href="https://nordvpn.com/blog/ram-based-servers/?srsltid=AfmBOop--IQw9kHqqAWvOcDHYsrmpyJMtJZab43qNgdSzcmecNXwT4CL" target="_blank" rel="nofollow"><u>RAM instead of hard drives</u></a>, this means that any data stored is only temporary, as there’s no storage for hackers to steal. There are other benefits to using Nord’s services, such as high-speed and lower power consumption. This means that when you enable NordVPN, you’re less likely to experience lag compared to a free VPN that works on a server with hard drives installed.</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:56.25%;"><img id="qHaNXUAafL4bTGSCSH3LfR" name="macos-fr-6" alt="NordVPN" src="https://cdn.mos.cms.futurecdn.net/qHaNXUAafL4bTGSCSH3LfR.png" 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: NordVPN)</span></figcaption></figure><h2 class="article-body__section" id="section-why-is-nordvpn-faster-than-a-free-vpn"><span>Why is NordVPN faster than a free VPN?</span></h2><p>This is because of NordVPN’s exclusive protocol, <a href="https://nordvpn.com/blog/nordlynx-protocol-wireguard/?srsltid=AfmBOoruZXJXMzDd9EfIznuK9xuCx9vYy2c_SyFIRlQBtZB6N4qAGwcr" target="_blank" rel="nofollow"><u>NordLynx</u></a>. Built on the light WireGuard framework, NordLynx runs on only 4,000 lines of code, compared to legacy protocols like OpenVPN, which can bloat up to 400,000 lines.</p><p>Because it's made with far less code than others, it means that you get quick server connections, reduced battery drain on mobile devices, and fast, unthrottled speeds with almost no lag when streaming on top platforms, whereas that can be a common occurrence when using free VPNs.</p><p>In <a href="https://www.tomsguide.com/reviews/nordvpn-review#section-nordvpn-connection-speeds" target="_blank">speed testing by Tom’s Guide</a>, NordLynx reached local speeds averaging 1,249 Mbps (peaking at 1,284 Mbps), nearly doubling the speed of NordVPN's own OpenVPN implementation (688 Mbps) and being "fast enough for almost any conceivable use-case".</p><p>NordLynx is also available on all major devices, such as the <a href="https://www.tomsguide.com/us/best-apple-iphone,review-6348.html" target="_blank"><u>best iPhones</u></a> and <a href="https://www.tomsguide.com/us/best-android-phones,review-6051.html" target="_blank"><u>Android handsets</u></a>, so you’ll be able to experience fast speeds on the devices you use daily.</p><h2 class="article-body__section" id="section-connecting-to-a-server-and-using-the-kill-switch-work-without-being-asked"><span>Connecting to a server and using the kill switch work without being asked</span></h2><p>One of the biggest benefits of using a paid VPN is being protected without even realizing it. NordVPN auto-connect creates an encrypted connection once your device joins an insecure network without you doing anything.</p><p>In addition, the kill switch kicks in if your device fails to connect to a VPN, protecting it from your data being shared on an unsecure network. Free VPNs usually work on unprotected connections, which can expose your data at any moment.</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:56.25%;"><img id="M8D4iZLyTqK694JGqz4N6Y" name="android-tv-br-2" alt="NordVPN" src="https://cdn.mos.cms.futurecdn.net/M8D4iZLyTqK694JGqz4N6Y.png" 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: NordVPN)</span></figcaption></figure><h2 class="article-body__section" id="section-one-subscription-covers-the-whole-vpn-experience"><span>One subscription covers the whole VPN experience</span></h2><p>NordVPN offers <a href="https://nordvpn.com/pricing/" target="_blank" rel="nofollow"><u>three subscription tiers</u></a> that can easily suit anyone who’s looking for a VPN to use, consisting of  Basic, Complete, and Ultimate Max, which can cover up to 10 devices:</p><p>• Basic ($3.49 / £2.59 per month): NordVPN</p><p>• Complete ($4.49 / £3.39 per month): Email, phone, credit card, and national ID/SSN monitoring, scam call protection, ad & tracker blocker, and more</p><p>• Ultimate Max ($7.49 / £6.29 per month): Unique IP address to help improve security and avoid CAPTCHAs. For UK users, coverage for Scam and ID loss of up to £5,000.</p><p>These can all be a monthly, yearly, or two-year plan.</p><p>There’s also a helpful <a href="https://nordvpn.com/customer-service/?srsltid=AfmBOopcufe5weTxzrnHwfGjd4ZNnHzG4mYJgtnwKZcz-XCE4BxBdyWZ" target="_blank" rel="nofollow"><u>24/7 support line</u></a> included as standard - this can be used if you need some help or if you need to change your account info. Free VPNs don’t offer this, and if you’re managing ten devices, it’s good to have support when you need it.</p><h2 id="nordvpn-proves-why-it-s-the-best-alternative-to-a-free-vpn">NordVPN proves why it’s the best alternative to a free VPN</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review" target="_blank"><u>NordVPN</u></a> is the best alternative to a free VPN. When you consider that the company has been <a href="https://nordvpn.com/blog/nordvpn-no-logs-assurance-engagement-2025/" target="_blank" rel="nofollow"><u>publicly audited six times so far</u></a>, as well as having its own protocol to ensure fast and secure connection speeds, the benefits outweigh the ability to use a free VPN. To find out more, <a href="https://go.nordvpn.net/aff_c?offer_id=346&aff_id=3013&url_id=8737" target="_blank" rel="nofollow">visit the NordVPN website</a>.</p><h2 id="faqs">FAQs</h2><h3 id="why-is-nordvpn-considered-one-of-the-fastest-vpns">Why is NordVPN considered one of the fastest VPNs?</h3><p>This is due to several reasons, like NordLynx, an exclusive protocol that NordVPN runs on to ensure a fast and secure VPN connection. There’s also SmartPlay, which helps you securely watch movies and TV shows, as well as Meshnet, which can let you share files and more with other devices worldwide.</p><h3 id="is-nordvpn-a-good-long-term-vpn-subscription">Is NordVPN a good long-term VPN subscription?</h3><p>Absolutely. NordVPN is designed to offer more than just basic VPN protection, making it a strong choice if you’re looking for a service you can rely on long term. Its 2-year Ultimate Max plan includes a broad range of features, including NordLynx, designed to deliver fast, secure connections without making everyday browsing feel complicated. You also get tools such as a kill switch and threat protection features, giving you additional peace of mind when you’re online. For anyone who wants a VPN that’s easy to use, feature-rich and built for regular use across multiple devices, NordVPN is a compelling long-term option.</p><h3 id="why-do-people-choose-nordvpn-over-cheaper-vpns">Why do people choose NordVPN over cheaper VPNs?</h3><p>The appeal of NordVPN is often its balance of simplicity, security and features. Setting it up across your devices is straightforward, so you don’t need to be particularly tech-savvy to start using it. Once you’re connected, features such as the kill switch can help protect your connection if your VPN drops unexpectedly. NordVPN also offers its NordLynx protocol, which is designed to provide fast connections while maintaining strong security. While cheaper VPNs can offer basic privacy tools, NordVPN’s combination of ease of use, additional features and a polished experience can make it worth considering if you plan to use a VPN regularly.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New Windows zero-day flaw could give hackers deep access to your PC — how to stay safe ]]></title>
                                                                                                <dc:content><![CDATA[ <p>This week two different <a href="https://www.tomsguide.com/computing/online-security/over-1-billion-windows-users-at-risk-after-disgruntled-security-researcher-leaks-defender-zero-days">Windows vulnerabilities</a> were revealed that attack your PC from different angles. However, there is one unfortunate thread that connects them; both are capable of allowing a malicious actor to gain system privileges on your Windows device, and neither has been patched yet.</p><p>The flaws are a <a href="https://www.tomsguide.com/computing/online-security/do-you-use-microsoft-exchange-hackers-are-actively-exploiting-a-new-zero-day-flaw">zero-day vulnerability</a> that can circumnavigate a previous RoguePlanet and a new "Plug and Pwn" attack that emulates USB devices.</p><p>Read on to find out what each attack can do and how to potentially stay safe until they get patched. </p><h2 id="shieldbreak-zero-day">Shieldbreak Zero-Day</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="JU27PbrhCr9X35AbQFzAdR" name="virtual vpn" alt="Hands typing on a laptop with a digital shield and lock icon, symbolizing cybersecurity. Surrounded by binary code and glowing elements." src="https://cdn.mos.cms.futurecdn.net/JU27PbrhCr9X35AbQFzAdR.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: TU IS (via Getty Images))</span></figcaption></figure><p>The zero-day vulnerability was found by Nightmare Eclipse, a bug hunter who reportedly has major beef with Microsoft and no qualms sharing the latest vulnerabilities they've discovered before a patch has released.</p><p>The latest, dubbed <a href="https://github.com/MSNightmare/ShieldBreak" target="_blank">ShieldBreak</a>, can apparently get around the RoguePlanet patch and allows attackers to gain system privileges on patched Windows 10, Windows 11 and Windows Server system.</p><p>Per <a href="https://www.theregister.com/cyber-crime/2026/08/12/microsoft-vendetta-hacker-has-a-new-zero-day-that-gives-system-privileges-on-fully-patched-windows/5286889" target="_blank">The Register</a>, the exploit has been tested by other security researchers and confirmed.</p><p>ShieldBreak apparently uses a "user-mode callback hook" to change file contents during a Defender cloud-hydration scan via cfapi (Cloud Filter API)," according to security researcher <a href="https://cyberplace.social/@GossiTheDog/117082629057300721" target="_blank">Kevin Beaumont</a>.</p><p>Basically, it uses <a href="https://www.tomsguide.com/computing/antivirus/microsoft-defender-review">Microsoft Defender</a>, if enabled, when it runs a scan. Then the flaw can be exploited to gain System privileges. Another researcher, <a href="https://infosec.exchange/@wdormann/117079587486018149" target="_blank">Will Dormann</a>, says that Defender has to be active for the exploit to work.</p><h2 id="how-to-stay-safe-from-shieldbreak">How to stay safe from Shieldbreak</h2><p>Until Microsoft patches this vulnerability, one way to stay safe is to disable Microsoft Defender. </p><p>If you think your system might be vulnerable, Kevin Beaumont did <a href="https://cyberplace.social/@GossiTheDog/117082629057300721" target="_blank">publish three detections </a>that are supposed to be able to catch Shieldbreak in action. If you have the knowledge, you could try running them.</p><h2 id="plug-and-pwn">Plug and Pwn</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="jDguSN4dyAxkcNZQD5iamP" name="USB-A.jpg" alt="USB-A" src="https://cdn.mos.cms.futurecdn.net/jDguSN4dyAxkcNZQD5iamP.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: Shutterstock)</span></figcaption></figure><p>The other flaw is a new "plug and pwn" disclosed by security researchers <a href="https://x.com/0xedh" target="_blank">Alejandro Hernando</a> and <a href="https://x.com/Qm9yamFN" target="_blank">Borja Martinez </a>(via <a href="https://www.bleepingcomputer.com/news/security/plug-and-pwn-attack-uses-fake-usb-devices-for-windows-system-access/" target="_blank">Bleeping Computer</a>) during the recent DEF CON 34 hacking conference. This vulnerability exploits how Windows identifies and automatically connects USB hardware, finds matching driver packages and then installs software as the Authority/System account.</p><p>Simply, the flaw emulates USB devices and can be used to force Windows to install vendor packages with exploitable components that can be used to gain system privileges on a Windows device.</p><p>Apparently, in some attacks, they didn't even require user interaction or physical USB hardware to gain access. This is enabled because Windows uses something called a co-installer, which automatically downloads and installs software and drivers when a new USB device is inserted in the computer.</p><p>This specific version is different from previous ones because it follows the Windows installation path and not something from a specific vendor. Notably, the remote attacks only seem to work on systems where USB redirection is enabled, which Alejandro Hernando said is common with virtual desktop environments.</p><p>Bleeping Computer gets far more granular if you're interested in how Hernando and Martinez discovered the flaw and the tools they used to instigate it.</p><h2 id="how-to-stay-safe-from-this-usb-attack">How to stay safe from this USB attack</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="CSFXsX24TGg5qRaKfGEjC6" name="USB-A vs USB-C.jpg" alt="USB-A vs USB-C" src="https://cdn.mos.cms.futurecdn.net/CSFXsX24TGg5qRaKfGEjC6.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: Shutterstock)</span></figcaption></figure><p>If you are concerned about this kind of attack and willing, you could enable a 'DisableCoInstallers' registry value. This prevents driver packages from utilizing co-installers during device installtion. </p><p>You can do this by searching for it in the Start menu or using the keyboard short cut of the Windows key +R. Then navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Installer Registry key. Then add DWORD-32 value named DisableCoInstallers and set it to 1.</p><p>It doesn't totally eliminate plug and pwn attacks, but it could break some of them.</p><p>"In anything sensitive I'd pair it with device installation restrictions or hardware-ID allow-lists, and turn off PnP device redirection on RDP and VDI hosts that don't need it (`fDisablePNPRedir`)," Hernando told BleepingComputer.</p><p>It's a good reminder either way to make sure you're only plugging in trusted devices to your system or downloading software from official sources when you can to ensure the safety of what you're putting into your computer.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/windows-11-is-broken-and-microsoft-is-fixing-the-wrong-things#viafoura-comments"><strong>Windows 11 is broken — and Microsoft is fixing the wrong things</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/browsers/microsoft-is-still-using-deceptive-tactics-and-design-to-force-you-to-use-edge"><strong>Microsoft is still using ‘deceptive tactics and design’ to force you to use Edge</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-extends-windows-10-support-for-another-year-what-you-need-to-know"><strong>Microsoft extends Windows 10 support for another year: what you need to know</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/new-windows-zero-day-flaw-could-give-hackers-deep-access-to-your-pc-how-to-stay-safe</link>
                                                                            <description>
                            <![CDATA[ Two different Windows flaws popped up this week. What connects them is that both could give bad actors system privileges. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pn79hVmH7mpAKpDpKoxV3Z</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pjRoZBt6XiSUTK6dUoB8Jh-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 13 Aug 2026 01:09:52 +0000</pubDate>                                                                                                                                <updated>Thu, 13 Aug 2026 16:02:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;br&gt;Send secure tips on Signal: scyo1.55.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/pjRoZBt6XiSUTK6dUoB8Jh-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock / Edited by Gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Windows 11 laptop displaying a large warning sign]]></media:description>                                                            <media:text><![CDATA[A Windows 11 laptop displaying a large warning sign]]></media:text>
                                <media:title type="plain"><![CDATA[A Windows 11 laptop displaying a large warning sign]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pjRoZBt6XiSUTK6dUoB8Jh-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>This week two different <a href="https://www.tomsguide.com/computing/online-security/over-1-billion-windows-users-at-risk-after-disgruntled-security-researcher-leaks-defender-zero-days">Windows vulnerabilities</a> were revealed that attack your PC from different angles. However, there is one unfortunate thread that connects them; both are capable of allowing a malicious actor to gain system privileges on your Windows device, and neither has been patched yet.</p><p>The flaws are a <a href="https://www.tomsguide.com/computing/online-security/do-you-use-microsoft-exchange-hackers-are-actively-exploiting-a-new-zero-day-flaw">zero-day vulnerability</a> that can circumnavigate a previous RoguePlanet and a new "Plug and Pwn" attack that emulates USB devices.</p><p>Read on to find out what each attack can do and how to potentially stay safe until they get patched. </p><h2 id="shieldbreak-zero-day">Shieldbreak Zero-Day</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="JU27PbrhCr9X35AbQFzAdR" name="virtual vpn" alt="Hands typing on a laptop with a digital shield and lock icon, symbolizing cybersecurity. Surrounded by binary code and glowing elements." src="https://cdn.mos.cms.futurecdn.net/JU27PbrhCr9X35AbQFzAdR.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: TU IS (via Getty Images))</span></figcaption></figure><p>The zero-day vulnerability was found by Nightmare Eclipse, a bug hunter who reportedly has major beef with Microsoft and no qualms sharing the latest vulnerabilities they've discovered before a patch has released.</p><p>The latest, dubbed <a href="https://github.com/MSNightmare/ShieldBreak" target="_blank">ShieldBreak</a>, can apparently get around the RoguePlanet patch and allows attackers to gain system privileges on patched Windows 10, Windows 11 and Windows Server system.</p><p>Per <a href="https://www.theregister.com/cyber-crime/2026/08/12/microsoft-vendetta-hacker-has-a-new-zero-day-that-gives-system-privileges-on-fully-patched-windows/5286889" target="_blank">The Register</a>, the exploit has been tested by other security researchers and confirmed.</p><p>ShieldBreak apparently uses a "user-mode callback hook" to change file contents during a Defender cloud-hydration scan via cfapi (Cloud Filter API)," according to security researcher <a href="https://cyberplace.social/@GossiTheDog/117082629057300721" target="_blank">Kevin Beaumont</a>.</p><p>Basically, it uses <a href="https://www.tomsguide.com/computing/antivirus/microsoft-defender-review">Microsoft Defender</a>, if enabled, when it runs a scan. Then the flaw can be exploited to gain System privileges. Another researcher, <a href="https://infosec.exchange/@wdormann/117079587486018149" target="_blank">Will Dormann</a>, says that Defender has to be active for the exploit to work.</p><h2 id="how-to-stay-safe-from-shieldbreak">How to stay safe from Shieldbreak</h2><p>Until Microsoft patches this vulnerability, one way to stay safe is to disable Microsoft Defender. </p><p>If you think your system might be vulnerable, Kevin Beaumont did <a href="https://cyberplace.social/@GossiTheDog/117082629057300721" target="_blank">publish three detections </a>that are supposed to be able to catch Shieldbreak in action. If you have the knowledge, you could try running them.</p><h2 id="plug-and-pwn">Plug and Pwn</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="jDguSN4dyAxkcNZQD5iamP" name="USB-A.jpg" alt="USB-A" src="https://cdn.mos.cms.futurecdn.net/jDguSN4dyAxkcNZQD5iamP.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: Shutterstock)</span></figcaption></figure><p>The other flaw is a new "plug and pwn" disclosed by security researchers <a href="https://x.com/0xedh" target="_blank">Alejandro Hernando</a> and <a href="https://x.com/Qm9yamFN" target="_blank">Borja Martinez </a>(via <a href="https://www.bleepingcomputer.com/news/security/plug-and-pwn-attack-uses-fake-usb-devices-for-windows-system-access/" target="_blank">Bleeping Computer</a>) during the recent DEF CON 34 hacking conference. This vulnerability exploits how Windows identifies and automatically connects USB hardware, finds matching driver packages and then installs software as the Authority/System account.</p><p>Simply, the flaw emulates USB devices and can be used to force Windows to install vendor packages with exploitable components that can be used to gain system privileges on a Windows device.</p><p>Apparently, in some attacks, they didn't even require user interaction or physical USB hardware to gain access. This is enabled because Windows uses something called a co-installer, which automatically downloads and installs software and drivers when a new USB device is inserted in the computer.</p><p>This specific version is different from previous ones because it follows the Windows installation path and not something from a specific vendor. Notably, the remote attacks only seem to work on systems where USB redirection is enabled, which Alejandro Hernando said is common with virtual desktop environments.</p><p>Bleeping Computer gets far more granular if you're interested in how Hernando and Martinez discovered the flaw and the tools they used to instigate it.</p><h2 id="how-to-stay-safe-from-this-usb-attack">How to stay safe from this USB attack</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="CSFXsX24TGg5qRaKfGEjC6" name="USB-A vs USB-C.jpg" alt="USB-A vs USB-C" src="https://cdn.mos.cms.futurecdn.net/CSFXsX24TGg5qRaKfGEjC6.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: Shutterstock)</span></figcaption></figure><p>If you are concerned about this kind of attack and willing, you could enable a 'DisableCoInstallers' registry value. This prevents driver packages from utilizing co-installers during device installtion. </p><p>You can do this by searching for it in the Start menu or using the keyboard short cut of the Windows key +R. Then navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Installer Registry key. Then add DWORD-32 value named DisableCoInstallers and set it to 1.</p><p>It doesn't totally eliminate plug and pwn attacks, but it could break some of them.</p><p>"In anything sensitive I'd pair it with device installation restrictions or hardware-ID allow-lists, and turn off PnP device redirection on RDP and VDI hosts that don't need it (`fDisablePNPRedir`)," Hernando told BleepingComputer.</p><p>It's a good reminder either way to make sure you're only plugging in trusted devices to your system or downloading software from official sources when you can to ensure the safety of what you're putting into your computer.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/windows-11-is-broken-and-microsoft-is-fixing-the-wrong-things#viafoura-comments"><strong>Windows 11 is broken — and Microsoft is fixing the wrong things</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/browsers/microsoft-is-still-using-deceptive-tactics-and-design-to-force-you-to-use-edge"><strong>Microsoft is still using ‘deceptive tactics and design’ to force you to use Edge</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-extends-windows-10-support-for-another-year-what-you-need-to-know"><strong>Microsoft extends Windows 10 support for another year: what you need to know</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ After 25 years, Google's iconic Search button is disappearing for some users — and this is the replacement ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you tried to Google something recently and felt as if things looked a little different, it's not just your imagination. </p><p>Some users are seeing a redesigned Google homepage that removes the familiar Google Search button and replaces it with shortcuts for AI Mode, Create images, Ask about files and Brainstorm.</p><p>It’s only a test for now, but it’s hard to ignore what Google is putting in the Search button’s place. I've been writing about <a href="https://www.tomsguide.com/ai/ai-is-making-the-internet-invisible-and-no-one-is-talking-about-it">AI replacing the internet</a> as we know it for the past several months.</p><p>For more than 25 years, Google’s homepage has barely changed. You type something into the search box, hit Google Search, and get a page of results. Now, Google appears to be experimenting with turning that same box into a chatbot window. </p><h2 id="google-search-is-starting-to-look-a-lot-more-like-chatgpt-or-gemini">Google Search is starting to look a lot more like ChatGPT or Gemini</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="K3MiPch6StxcH4kaKBaUcT" name="Google" alt="AI Mode of google search" src="https://cdn.mos.cms.futurecdn.net/K3MiPch6StxcH4kaKBaUcT.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>In the experimental layout, Google’s traditional search field is surrounded by tools that encourage you to do something<a href="https://www.tomsguide.com/ai/ai-image-video/googles-nano-banana-2-fixes-blurry-text-and-boosts-speed-heres-everything-included-in-this-massive-upgrade"> </a>other than type a keyword and look through links.</p><p>There’s <a href="https://www.tomsguide.com/ai/google-search-just-got-a-big-gemini-3-upgrade-heres-how-to-try-it-right-now">AI Mode</a>, which lets you ask longer questions and continue the conversation with follow-ups, you can ask about files or even create an image with <a href="https://www.tomsguide.com/ai/ai-image-video/googles-nano-banana-2-fixes-blurry-text-and-boosts-speed-heres-everything-included-in-this-massive-upgrade">Nano Banana</a>. Interestingly, I’m Feeling Lucky is still there, but the old Google Search button is not. </p><p>Sure, you can still type a query, but the experience will be much different as Google is replacing classic search with<a href="https://www.tomsguide.com/ai/can-you-trust-ai-overviews-recent-studies-suggest-they-may-not-be-as-accurate-as-you-think"> AI Overviews</a> and <a href="https://www.tomsguide.com/news/google-search-is-getting-3-big-ai-upgrades-heres-whats-coming">Summaries</a>. </p><p><a href="https://www.linkedin.com/posts/robbystein_googleio-activity-7462653370508689408-RzqU">Google Search VP Robby Stein responded</a> to people spotting the change and said the company isn't getting rid of traditional search.</p><p>"This is a small test on desktop to help people find new things they can do with Search. No impact to how the core search box works – just add your question and hit enter as usual," Stein said.</p><p>So, no, the Google Search button has not officially been killed off, but all signs seem to point that direction. If anything, the test still tells us quite a bit about where Google wants Search to go.</p><h2 id="the-end-of-google-search-as-we-know-it">The end of Google Search as we know it</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="tryrdaJxvL8sgVF3dQXonn" name="Google AI.shutterstock_2322278753" alt="Google AI on phone with laptop in background" src="https://cdn.mos.cms.futurecdn.net/tryrdaJxvL8sgVF3dQXonn.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: Shutterstock)</span></figcaption></figure><p>AI Mode has already<a href="https://www.tomsguide.com/ai/what-is-google-zero-and-why-your-favorite-websites-are-panicking-about-ai"> pushed Google beyond the traditional search-results page</a> by letting users ask complicated questions, follow up on answers and get information synthesized across multiple sources. Google has also been building more image, file and multimodal capabilities directly into Search.</p><p>Putting shortcuts to those tools on Google.com takes that strategy one step further. Google isn't just adding AI to Search anymore. <a href="https://www.tomsguide.com/ai/i-use-ai-but-i-dont-want-ai-making-my-choices-toms-guide-readers-sound-off-on-google-ai-search">It's experimenting with making AI the starting point.</a></p><p>We're being taught a new way to Google, which is ironic considering Google trained us how to search in the first place. But generative AI has changed everything, which is why Google's experimental homepage appears to be designed around the same behavior. </p><p>Keywords don't matter anymore, especially when you can search with an image or an uploaded file. The direction we are headed is a fundamentally different relationship with a search engine than we've ever seen. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WQw8YX"></div>                            </div>                            <script src="https://kwizly.com/embed/WQw8YX.js" async></script><h2 id="big-consequences-for-the-web">Big consequences for the web </h2><p>There is an obvious downside to all of this, particularly for websites that depend on Google traffic. The more Google answers a question inside its own interface, the less reason there is for someone to click through to another website.</p><p>That tension already exists with AI Overviews and AI Mode. A homepage that actively steers people toward AI responses rather than traditional search results could accelerate it.</p><p>It also puts Google into even more direct competition with ChatGPT and other AI assistants.</p><p>The Google homepage remains some of the most valuable real estate on the internet. If Google starts using it to promote image generation, document analysis, brainstorming and conversational AI, it is effectively turning google.com into a general-purpose AI interface.</p><p>And Google has one enormous advantage: billions of people already know exactly where to find it.</p><h2 id="the-takeaway-2">The takeaway </h2><p>Google is very clear that removing the Search button is currently just a test, so I wouldn't declare the death of the Search button yet. But even if the Search button disappears tomorrow, the damage to the internet has already been done. The button was just a symbol at best. </p><p>The takeaway is what Google has decided is important enough to replace the Search button with: AI Mode. Image generation. File analysis. Brainstorming. </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/ai/i-put-chatgpt-on-my-ray-ban-meta-glasses-and-it-completely-changed-how-i-used-them"><strong>I put ChatGPT on my Ray-Ban Meta glasses — and it completely changed how I used them</strong></a></li><li><a href="https://www.tomsguide.com/ai/chatgpt-can-do-more-for-you-than-ever-and-i-use-these-5-prompts-to-take-everyday-tasks-off-my-plate"><strong>ChatGPT can do more for you than ever — and I use these 5 prompts to take everyday tasks off my plate</strong></a></li><li><a href="https://www.tomsguide.com/ai/openais-head-of-ethics-just-quit-heres-why-chatgpt-users-should-pay-attention"><strong>OpenAI’s head of ethics just quit — here’s why ChatGPT users should pay attention</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/after-25-years-googles-iconic-search-button-is-disappearing-at-least-for-some-users</link>
                                                                            <description>
                            <![CDATA[ Google is testing a redesigned homepage that replaces its iconic Search button with AI tools like AI Mode, Brainstorm and Create Images. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ww9Hwj9Sj4NdaFT3ii3PZT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PJtDQppL8GQ3ok63MAJnmm-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 11 Aug 2026 19:13:26 +0000</pubDate>                                                                                                                                <updated>Tue, 11 Aug 2026 19:16:21 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PJtDQppL8GQ3ok63MAJnmm-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A phone in hand in front of a Google logo]]></media:description>                                                            <media:text><![CDATA[A phone in hand in front of a Google logo]]></media:text>
                                <media:title type="plain"><![CDATA[A phone in hand in front of a Google logo]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PJtDQppL8GQ3ok63MAJnmm-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you tried to Google something recently and felt as if things looked a little different, it's not just your imagination. </p><p>Some users are seeing a redesigned Google homepage that removes the familiar Google Search button and replaces it with shortcuts for AI Mode, Create images, Ask about files and Brainstorm.</p><p>It’s only a test for now, but it’s hard to ignore what Google is putting in the Search button’s place. I've been writing about <a href="https://www.tomsguide.com/ai/ai-is-making-the-internet-invisible-and-no-one-is-talking-about-it">AI replacing the internet</a> as we know it for the past several months.</p><p>For more than 25 years, Google’s homepage has barely changed. You type something into the search box, hit Google Search, and get a page of results. Now, Google appears to be experimenting with turning that same box into a chatbot window. </p><h2 id="google-search-is-starting-to-look-a-lot-more-like-chatgpt-or-gemini">Google Search is starting to look a lot more like ChatGPT or Gemini</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="K3MiPch6StxcH4kaKBaUcT" name="Google" alt="AI Mode of google search" src="https://cdn.mos.cms.futurecdn.net/K3MiPch6StxcH4kaKBaUcT.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>In the experimental layout, Google’s traditional search field is surrounded by tools that encourage you to do something<a href="https://www.tomsguide.com/ai/ai-image-video/googles-nano-banana-2-fixes-blurry-text-and-boosts-speed-heres-everything-included-in-this-massive-upgrade"> </a>other than type a keyword and look through links.</p><p>There’s <a href="https://www.tomsguide.com/ai/google-search-just-got-a-big-gemini-3-upgrade-heres-how-to-try-it-right-now">AI Mode</a>, which lets you ask longer questions and continue the conversation with follow-ups, you can ask about files or even create an image with <a href="https://www.tomsguide.com/ai/ai-image-video/googles-nano-banana-2-fixes-blurry-text-and-boosts-speed-heres-everything-included-in-this-massive-upgrade">Nano Banana</a>. Interestingly, I’m Feeling Lucky is still there, but the old Google Search button is not. </p><p>Sure, you can still type a query, but the experience will be much different as Google is replacing classic search with<a href="https://www.tomsguide.com/ai/can-you-trust-ai-overviews-recent-studies-suggest-they-may-not-be-as-accurate-as-you-think"> AI Overviews</a> and <a href="https://www.tomsguide.com/news/google-search-is-getting-3-big-ai-upgrades-heres-whats-coming">Summaries</a>. </p><p><a href="https://www.linkedin.com/posts/robbystein_googleio-activity-7462653370508689408-RzqU">Google Search VP Robby Stein responded</a> to people spotting the change and said the company isn't getting rid of traditional search.</p><p>"This is a small test on desktop to help people find new things they can do with Search. No impact to how the core search box works – just add your question and hit enter as usual," Stein said.</p><p>So, no, the Google Search button has not officially been killed off, but all signs seem to point that direction. If anything, the test still tells us quite a bit about where Google wants Search to go.</p><h2 id="the-end-of-google-search-as-we-know-it">The end of Google Search as we know it</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="tryrdaJxvL8sgVF3dQXonn" name="Google AI.shutterstock_2322278753" alt="Google AI on phone with laptop in background" src="https://cdn.mos.cms.futurecdn.net/tryrdaJxvL8sgVF3dQXonn.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: Shutterstock)</span></figcaption></figure><p>AI Mode has already<a href="https://www.tomsguide.com/ai/what-is-google-zero-and-why-your-favorite-websites-are-panicking-about-ai"> pushed Google beyond the traditional search-results page</a> by letting users ask complicated questions, follow up on answers and get information synthesized across multiple sources. Google has also been building more image, file and multimodal capabilities directly into Search.</p><p>Putting shortcuts to those tools on Google.com takes that strategy one step further. Google isn't just adding AI to Search anymore. <a href="https://www.tomsguide.com/ai/i-use-ai-but-i-dont-want-ai-making-my-choices-toms-guide-readers-sound-off-on-google-ai-search">It's experimenting with making AI the starting point.</a></p><p>We're being taught a new way to Google, which is ironic considering Google trained us how to search in the first place. But generative AI has changed everything, which is why Google's experimental homepage appears to be designed around the same behavior. </p><p>Keywords don't matter anymore, especially when you can search with an image or an uploaded file. The direction we are headed is a fundamentally different relationship with a search engine than we've ever seen. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WQw8YX"></div>                            </div>                            <script src="https://kwizly.com/embed/WQw8YX.js" async></script><h2 id="big-consequences-for-the-web">Big consequences for the web </h2><p>There is an obvious downside to all of this, particularly for websites that depend on Google traffic. The more Google answers a question inside its own interface, the less reason there is for someone to click through to another website.</p><p>That tension already exists with AI Overviews and AI Mode. A homepage that actively steers people toward AI responses rather than traditional search results could accelerate it.</p><p>It also puts Google into even more direct competition with ChatGPT and other AI assistants.</p><p>The Google homepage remains some of the most valuable real estate on the internet. If Google starts using it to promote image generation, document analysis, brainstorming and conversational AI, it is effectively turning google.com into a general-purpose AI interface.</p><p>And Google has one enormous advantage: billions of people already know exactly where to find it.</p><h2 id="the-takeaway-2">The takeaway </h2><p>Google is very clear that removing the Search button is currently just a test, so I wouldn't declare the death of the Search button yet. But even if the Search button disappears tomorrow, the damage to the internet has already been done. The button was just a symbol at best. </p><p>The takeaway is what Google has decided is important enough to replace the Search button with: AI Mode. Image generation. File analysis. Brainstorming. </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/ai/i-put-chatgpt-on-my-ray-ban-meta-glasses-and-it-completely-changed-how-i-used-them"><strong>I put ChatGPT on my Ray-Ban Meta glasses — and it completely changed how I used them</strong></a></li><li><a href="https://www.tomsguide.com/ai/chatgpt-can-do-more-for-you-than-ever-and-i-use-these-5-prompts-to-take-everyday-tasks-off-my-plate"><strong>ChatGPT can do more for you than ever — and I use these 5 prompts to take everyday tasks off my plate</strong></a></li><li><a href="https://www.tomsguide.com/ai/openais-head-of-ethics-just-quit-heres-why-chatgpt-users-should-pay-attention"><strong>OpenAI’s head of ethics just quit — here’s why ChatGPT users should pay attention</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Flock reportedly planned to co-opt Uber and Lyft vehicles to expand its surveillance network ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you thought Flock Safety’s massive network of pole-mounted cameras couldn’t reach any further, think again. The company reportedly planned to use dash cams installed in Uber and Lyft vehicles to significantly expand its footprint.</p><p>As reported by <a href="https://www.404media.co/flock-pitched-a-plan-to-turn-uber-and-lyft-drivers-into-roaming-surveillance-vehicles/">404 Media</a>, an internal Flock presentation sheds new light on a potential partnership with dash cam maker Nexar. While the deal never materialized, it paints a concerning picture of how Flock envisions expanding beyond stationary poles.</p><p>The proposed partnership would have allowed Flock to leverage hundreds of thousands of Nexar dash cams installed in rideshare and delivery vehicles, scanning and capturing license plate data from surrounding traffic. While 404 Media <a href="https://www.404media.co/flock-wants-to-partner-with-consumer-dashcam-company-that-takes-trillions-of-images-a-month/">first revealed</a> the potential deal last summer, new details have emerged from a presentation Flock used to pitch the concept to potential customers.</p><p>Obtained through a public records request by a Georgia resident and shared with 404 Media, the pitch deck reveals an ambitious push toward mobile tracking. Crucially, the documents leave it unclear whether Uber or Lyft drivers would have even been informed that their dash cams were feeding data into a surveillance network.</p><p>Had the deal gone through, Flock’s coverage would have exploded — adding an estimated "350k Uber/Lyft and other delivery service devices" to its grid.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WVoxmO"></div>                            </div>                            <script src="https://kwizly.com/embed/WVoxmO.js" async></script><h2 id="from-fixed-poles-to-mobile-surveillance">From fixed poles to mobile surveillance</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="NUeNzBTcrz6q8ZDUJv8f4R" name="Cars in traffic in a city" alt="An image of cars in heavy traffic in a city." src="https://cdn.mos.cms.futurecdn.net/NUeNzBTcrz6q8ZDUJv8f4R.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: Getty Images)</span></figcaption></figure><p>Flock Safety’s pole-mounted automated license plate readers (ALPRs) have drawn widespread privacy concerns, and for good reason. Engineered to log the license plate, color, make, and model of every passing car, these devices now operate in nearly every U.S. state.</p><p>When Flock founder Garrett Langley launched the company in 2017 to combat property crime in his Atlanta neighborhood, the scope was localized. However, the system evolved into FlockOS, an interconnected nationwide network that allows law enforcement to trace a vehicle's movements across state lines. </p><p>What began as a neighborhood safety initiative has morphed into a mass surveillance apparatus ripe for abuse. Numerous law enforcement officers throughout the country have been suspended or fired for using the Flock network to track vehicles without a legitimate reason — in some cases, <a href="https://www.washingtonpost.com/technology/2026/08/02/how-police-officers-used-vast-network-cameras-spy-their-exes/" target="_blank">to spy on former spouses and partners</a>.</p><p><a href="https://www.nytimes.com/2026/08/10/us/flock-cameras-can-track-every-car-in-america-police-love-them-citizens-dont.html">Public backlash against Flock’s rapid expansion is mounting</a>. Organizers have built tools like DeFlock to map camera locations, while others have taken a more direct approach by cutting down the poles and physically dismantling the hardware.</p><p>If that physical pushback continues, Flock may well double down on the strategy outlined in its Nexar pitch. By shifting from static poles to roving, unmapped mobile sensors, the company could expand its reach while insulating its hardware from public interference.</p><p>Have you seen Flock cameras pop up in your neighborhood? Or have you been wrongly served a ticket as a result of its license plate-reading tech? 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><strong></strong><a href="https://www.tomsguide.com/computing/online-security/how-to-remove-your-home-address-from-the-internet-7-ways-to-protect-your-privacy"><strong>How to remove your home address from the internet — 6 ways to protect your privacy</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/online-security/privacy-apathy-is-real-and-you-probably-have-it"><strong>Privacy apathy is real – and you probably have it</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/online-security/blatantly-unlawful-and-horrifically-intrusive-data-collection-is-everywhere-how-to-fight-back"><strong>"Blatantly unlawful and horrifically intrusive" data collection is everywhere – how to fight back</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/flock-reportedly-planned-to-co-opt-uber-and-lyft-vehicles-to-expand-its-surveillance-network</link>
                                                                            <description>
                            <![CDATA[ Flock planned to partner with Nexar to turn dash cams in Uber and Lyft vehicles into mobile license plate readers, leaked documents show. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cPLAqX9TwTZNTbcD9wVwBk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KEkDWZqbSDGKHBY6oSNdZW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 10 Aug 2026 19:28:31 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KEkDWZqbSDGKHBY6oSNdZW-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A side by side shot showing a pole-mounted Flock camera on the left and an Uber car on the right]]></media:description>                                                            <media:text><![CDATA[A side by side shot showing a pole-mounted Flock camera on the left and an Uber car on the right]]></media:text>
                                <media:title type="plain"><![CDATA[A side by side shot showing a pole-mounted Flock camera on the left and an Uber car on the right]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KEkDWZqbSDGKHBY6oSNdZW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you thought Flock Safety’s massive network of pole-mounted cameras couldn’t reach any further, think again. The company reportedly planned to use dash cams installed in Uber and Lyft vehicles to significantly expand its footprint.</p><p>As reported by <a href="https://www.404media.co/flock-pitched-a-plan-to-turn-uber-and-lyft-drivers-into-roaming-surveillance-vehicles/">404 Media</a>, an internal Flock presentation sheds new light on a potential partnership with dash cam maker Nexar. While the deal never materialized, it paints a concerning picture of how Flock envisions expanding beyond stationary poles.</p><p>The proposed partnership would have allowed Flock to leverage hundreds of thousands of Nexar dash cams installed in rideshare and delivery vehicles, scanning and capturing license plate data from surrounding traffic. While 404 Media <a href="https://www.404media.co/flock-wants-to-partner-with-consumer-dashcam-company-that-takes-trillions-of-images-a-month/">first revealed</a> the potential deal last summer, new details have emerged from a presentation Flock used to pitch the concept to potential customers.</p><p>Obtained through a public records request by a Georgia resident and shared with 404 Media, the pitch deck reveals an ambitious push toward mobile tracking. Crucially, the documents leave it unclear whether Uber or Lyft drivers would have even been informed that their dash cams were feeding data into a surveillance network.</p><p>Had the deal gone through, Flock’s coverage would have exploded — adding an estimated "350k Uber/Lyft and other delivery service devices" to its grid.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WVoxmO"></div>                            </div>                            <script src="https://kwizly.com/embed/WVoxmO.js" async></script><h2 id="from-fixed-poles-to-mobile-surveillance">From fixed poles to mobile surveillance</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="NUeNzBTcrz6q8ZDUJv8f4R" name="Cars in traffic in a city" alt="An image of cars in heavy traffic in a city." src="https://cdn.mos.cms.futurecdn.net/NUeNzBTcrz6q8ZDUJv8f4R.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: Getty Images)</span></figcaption></figure><p>Flock Safety’s pole-mounted automated license plate readers (ALPRs) have drawn widespread privacy concerns, and for good reason. Engineered to log the license plate, color, make, and model of every passing car, these devices now operate in nearly every U.S. state.</p><p>When Flock founder Garrett Langley launched the company in 2017 to combat property crime in his Atlanta neighborhood, the scope was localized. However, the system evolved into FlockOS, an interconnected nationwide network that allows law enforcement to trace a vehicle's movements across state lines. </p><p>What began as a neighborhood safety initiative has morphed into a mass surveillance apparatus ripe for abuse. Numerous law enforcement officers throughout the country have been suspended or fired for using the Flock network to track vehicles without a legitimate reason — in some cases, <a href="https://www.washingtonpost.com/technology/2026/08/02/how-police-officers-used-vast-network-cameras-spy-their-exes/" target="_blank">to spy on former spouses and partners</a>.</p><p><a href="https://www.nytimes.com/2026/08/10/us/flock-cameras-can-track-every-car-in-america-police-love-them-citizens-dont.html">Public backlash against Flock’s rapid expansion is mounting</a>. Organizers have built tools like DeFlock to map camera locations, while others have taken a more direct approach by cutting down the poles and physically dismantling the hardware.</p><p>If that physical pushback continues, Flock may well double down on the strategy outlined in its Nexar pitch. By shifting from static poles to roving, unmapped mobile sensors, the company could expand its reach while insulating its hardware from public interference.</p><p>Have you seen Flock cameras pop up in your neighborhood? Or have you been wrongly served a ticket as a result of its license plate-reading tech? 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><strong></strong><a href="https://www.tomsguide.com/computing/online-security/how-to-remove-your-home-address-from-the-internet-7-ways-to-protect-your-privacy"><strong>How to remove your home address from the internet — 6 ways to protect your privacy</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/online-security/privacy-apathy-is-real-and-you-probably-have-it"><strong>Privacy apathy is real – and you probably have it</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/online-security/blatantly-unlawful-and-horrifically-intrusive-data-collection-is-everywhere-how-to-fight-back"><strong>"Blatantly unlawful and horrifically intrusive" data collection is everywhere – how to fight back</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ DId you buy a cheap GPS tracker for your kid? Here’s why you should throw it out immediately. ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Did you buy a cheap GPS tracker for your kid? There’s a good chance that you’re not the only one who’s watching your kid. </p><p>Last week, a <a href="https://www.wired.com/story/hackers-stalked-me-by-hijacking-a-smartwatch-for-kids/" target="_blank">story in Wired</a> revealed that security researchers were able to hack into a platform used by dozens, if not hundreds, of GPS kids watches, which allowed them to not only track a child’s location, but also remotely control a camera on the watch, and leaving them vulnerable to changing things like the emergency contact, or being able to silently eavesdrop on the child.</p><p>The researchers’ findings, which they presented at the Black Hat cybersecurity conference, looked at more than 70 GPS watches and car accessories, and found a sizable number used the same backend software and servers. </p><div  class="fancy-box"><div class="fancy_box-title">The Gadget Dad</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NTV2LD9mcUFrzpJd6R5YUU" name="Mike holding chainsaw" caption="" alt="Person holding chainsaw" src="https://cdn.mos.cms.futurecdn.net/NTV2LD9mcUFrzpJd6R5YUU.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Not only am I an editor at Tom's Guide, but I'm also a homeowner and a parent. I've been testing smart home devices in and around my house for years. I'm the guy with the <a data-analytics-id="inline-link" href="https://www.tomsguide.com/home/outdoors/i-put-home-depots-12-foot-skelly-and-lowes-20-foot-inflatable-skeleton-in-my-yard-and-this-one-wins-halloween">20-foot inflatable skeleton at Halloween</a>, the guy with the <a data-analytics-id="inline-link" href="https://www.tomsguide.com/home/lawn-care/ive-been-using-this-usd1-000-robot-lawnmower-for-a-month-3-things-i-like-and-2-i-dont">robot lawnmower prowling his yard</a>, and the guy who <a data-analytics-id="inline-link" href="https://www.tomsguide.com/home/i-made-my-own-lightsaber-for-usd50-in-hardware-store-parts-and-now-i-feel-like-a-lowe-key-jedi" target="_blank">made a lightsaber out of hardware store parts</a>.</p><p class="fancy-box__body-text">This column is going to take a look at tech, tools and tips for your kids, your pets, and anything else that could make your house more fun and functional.</p></div></div><p>“The two researchers found that tens of millions of GPS tracker gadgets came from just three supply chains,” the Wired article reads. “All three, the researchers found in their analysis, had significant security flaws.”</p><p>If you go on Amazon and search for “GPS tracker for kids,” you’ll be presented with page after page of watches, dongles and chips, all for less than $50, purporting to make it easy to keep tabs on your kid. </p><p>Some even have screens and video calling — that seems like a real bargain compared to the <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch">best smartwatches</a>, like the $249 <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-se-3-review">Apple Watch SE 3</a>, which cost a lot more. And, there’s a good chance that they have a lot of positive reviews, too.</p><p>Click through to the product listing for that cheap watch, and you’ll most likely see that the company’s name — one you’ve probably never heard of — is a seemingly random group of letters. </p><p>Don’t buy 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:1263px;"><p class="vanilla-image-block" style="padding-top:48.77%;"><img id="6xd8TH8v2xRkMuqrivDcbP" name="GPS watches for kids" alt="A listing of GPS watches for kids on Walmart" src="https://cdn.mos.cms.futurecdn.net/6xd8TH8v2xRkMuqrivDcbP.png" mos="" align="middle" fullscreen="" width="1263" height="616" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Every heard of these brands? Me neither. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Walmart)</span></figcaption></figure><p>It’s not just limited to GPS trackers. There are thousands of cheap security cameras, video doorbells, and baby monitors produced by no-name companies that are equally vulnerable to being hacked. A <a href="https://www.consumerreports.org/home-garden/home-security-cameras/video-doorbells-sold-by-major-retailers-have-security-flaws-a2579288796/" target="_blank">Consumer Reports study</a> two years ago revealed that they could easily hack into several video doorbells, all of which were sold by different companies, but had the same underlying technology.</p><p>Earlier this year, <a href="https://www.theverge.com/tech/926487/meari-technology-hack-baby-monitor-security-camera" target="_blank">The Verge wrote about a company that made the tech behind millions of baby monitors</a> whose security was so lax that a hacker was able to see into people’s homes and even view images saved on the company’s servers.</p><p>Even some of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best security cameras</a> aren’t immune to this — <a href="https://www.tomsguide.com/home/home-security/wyze-security-breach-3-ways-to-protect-your-smart-home-now">Wyze, for example, has suffered several security breaches over the years</a> — but at least they, and other larger companies, have better systems in place for you (or security experts) to report any issues and to fix the problem in a timely manner. </p><p>With all that in mind, I’ve put together a list of a few dos and don’ts when shopping for any kind of device that can track your kid or take photos or videos of them or your house.</p><p><strong>DO:</strong></p><ul><li>Make sure your home Wi-Fi network is secured with a <a href="https://www.tomsguide.com/opinion/im-a-security-editor-and-this-is-how-i-create-strong-passwords-that-are-also-easy-to-remember">strong password</a> and is always updated with the latest firmware</li><li>Look for reviews of products on reputable sites</li></ul><p><strong>Don't:</strong></p><ul><li>Rely solely on reviews posted on Amazon, Walmart, or other retail sites</li><li>Buy a product that’s not from a brand you’ve never heard of</li></ul><p>While these rules can’t completely insulate you from any sort of hacking, they can go a long way into making it harder for someone to break into your devices and see what they shouldn’t.</p><p>If you need to keep tabs on your kid, devices like the <a href="https://www.amazon.com/Apple-AirTag-2nd-Generation-Precision/dp/B0GJTFXNRX" target="_blank">$29 Apple AirTag</a>, the <a href="https://www.amazon.com/Fitbit-Google-Ace-LTE-Activity-Based/dp/B0CV5T2YG6" target="_blank">$149 Fitbit Ace</a>, and the <a href="https://www.garmin.com/en-US/p/714945/" target="_blank">$149 Garmin Bounce</a> are a little more expensive, but they’re made by companies with established reputations. What’s worth more: saving a few bucks, or the security of knowing some weirdo can’t spy on your kid?</p><h3 class="article-body__section" id="section-more-from-the-gadget-dad"><span>More from The Gadget Dad</span></h3><ul><li><a href="https://www.tomsguide.com/phones/i-gave-my-7-year-old-the-viral-tin-can-phone-because-all-her-friends-had-it-shes-already-over-it"><strong>I gave my 7-year-old the viral Tin Can phone because all her friends had it — here's the verdict after a month</strong></a></li><li><a href="https://www.tomsguide.com/vehicle-tech/electric-bikes/dont-get-burned-i-talked-to-an-expert-on-how-to-safely-buy-charge-and-store-batteries-for-e-bikes-and-electric-scooters"><strong>Don’t get burned: I talked to an expert on how to safely buy, charge, and store batteries for e-bikes and electric scooters</strong></a></li><li><a href="https://www.tomsguide.com/home/its-friggin-hot-the-5-devices-im-using-to-keep-my-home-and-my-pets-cool-this-summer"><strong>It's friggin' hot! The 5 devices I'm using to keep my home (and my pets) cool this summer</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/did-you-buy-a-cheap-gps-tracker-for-your-kid-heres-why-you-should-throw-it-out-immediately</link>
                                                                            <description>
                            <![CDATA[ Cheap GPS watches for kids and no-name security camera and video doorbell brands may seem like a bargain, but are a real threat to your privacy. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SQLEQ2P665EErq24h5S4Aa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AQdLWFnqNmYRR9C2Gpi3nJ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 09 Aug 2026 08:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Parental Controls]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xeJFBrJwXQzCqXLZXBFBKQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide.  In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/AQdLWFnqNmYRR9C2Gpi3nJ-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Girl looking at smartwatch on her wrist]]></media:description>                                                            <media:text><![CDATA[Girl looking at smartwatch on her wrist]]></media:text>
                                <media:title type="plain"><![CDATA[Girl looking at smartwatch on her wrist]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AQdLWFnqNmYRR9C2Gpi3nJ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Did you buy a cheap GPS tracker for your kid? There’s a good chance that you’re not the only one who’s watching your kid. </p><p>Last week, a <a href="https://www.wired.com/story/hackers-stalked-me-by-hijacking-a-smartwatch-for-kids/" target="_blank">story in Wired</a> revealed that security researchers were able to hack into a platform used by dozens, if not hundreds, of GPS kids watches, which allowed them to not only track a child’s location, but also remotely control a camera on the watch, and leaving them vulnerable to changing things like the emergency contact, or being able to silently eavesdrop on the child.</p><p>The researchers’ findings, which they presented at the Black Hat cybersecurity conference, looked at more than 70 GPS watches and car accessories, and found a sizable number used the same backend software and servers. </p><div  class="fancy-box"><div class="fancy_box-title">The Gadget Dad</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NTV2LD9mcUFrzpJd6R5YUU" name="Mike holding chainsaw" caption="" alt="Person holding chainsaw" src="https://cdn.mos.cms.futurecdn.net/NTV2LD9mcUFrzpJd6R5YUU.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Not only am I an editor at Tom's Guide, but I'm also a homeowner and a parent. I've been testing smart home devices in and around my house for years. I'm the guy with the <a data-analytics-id="inline-link" href="https://www.tomsguide.com/home/outdoors/i-put-home-depots-12-foot-skelly-and-lowes-20-foot-inflatable-skeleton-in-my-yard-and-this-one-wins-halloween">20-foot inflatable skeleton at Halloween</a>, the guy with the <a data-analytics-id="inline-link" href="https://www.tomsguide.com/home/lawn-care/ive-been-using-this-usd1-000-robot-lawnmower-for-a-month-3-things-i-like-and-2-i-dont">robot lawnmower prowling his yard</a>, and the guy who <a data-analytics-id="inline-link" href="https://www.tomsguide.com/home/i-made-my-own-lightsaber-for-usd50-in-hardware-store-parts-and-now-i-feel-like-a-lowe-key-jedi" target="_blank">made a lightsaber out of hardware store parts</a>.</p><p class="fancy-box__body-text">This column is going to take a look at tech, tools and tips for your kids, your pets, and anything else that could make your house more fun and functional.</p></div></div><p>“The two researchers found that tens of millions of GPS tracker gadgets came from just three supply chains,” the Wired article reads. “All three, the researchers found in their analysis, had significant security flaws.”</p><p>If you go on Amazon and search for “GPS tracker for kids,” you’ll be presented with page after page of watches, dongles and chips, all for less than $50, purporting to make it easy to keep tabs on your kid. </p><p>Some even have screens and video calling — that seems like a real bargain compared to the <a href="https://www.tomsguide.com/wellness/smartwatches/best-smartwatch">best smartwatches</a>, like the $249 <a href="https://www.tomsguide.com/wellness/smartwatches/apple-watch-se-3-review">Apple Watch SE 3</a>, which cost a lot more. And, there’s a good chance that they have a lot of positive reviews, too.</p><p>Click through to the product listing for that cheap watch, and you’ll most likely see that the company’s name — one you’ve probably never heard of — is a seemingly random group of letters. </p><p>Don’t buy 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:1263px;"><p class="vanilla-image-block" style="padding-top:48.77%;"><img id="6xd8TH8v2xRkMuqrivDcbP" name="GPS watches for kids" alt="A listing of GPS watches for kids on Walmart" src="https://cdn.mos.cms.futurecdn.net/6xd8TH8v2xRkMuqrivDcbP.png" mos="" align="middle" fullscreen="" width="1263" height="616" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Every heard of these brands? Me neither. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Walmart)</span></figcaption></figure><p>It’s not just limited to GPS trackers. There are thousands of cheap security cameras, video doorbells, and baby monitors produced by no-name companies that are equally vulnerable to being hacked. A <a href="https://www.consumerreports.org/home-garden/home-security-cameras/video-doorbells-sold-by-major-retailers-have-security-flaws-a2579288796/" target="_blank">Consumer Reports study</a> two years ago revealed that they could easily hack into several video doorbells, all of which were sold by different companies, but had the same underlying technology.</p><p>Earlier this year, <a href="https://www.theverge.com/tech/926487/meari-technology-hack-baby-monitor-security-camera" target="_blank">The Verge wrote about a company that made the tech behind millions of baby monitors</a> whose security was so lax that a hacker was able to see into people’s homes and even view images saved on the company’s servers.</p><p>Even some of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best security cameras</a> aren’t immune to this — <a href="https://www.tomsguide.com/home/home-security/wyze-security-breach-3-ways-to-protect-your-smart-home-now">Wyze, for example, has suffered several security breaches over the years</a> — but at least they, and other larger companies, have better systems in place for you (or security experts) to report any issues and to fix the problem in a timely manner. </p><p>With all that in mind, I’ve put together a list of a few dos and don’ts when shopping for any kind of device that can track your kid or take photos or videos of them or your house.</p><p><strong>DO:</strong></p><ul><li>Make sure your home Wi-Fi network is secured with a <a href="https://www.tomsguide.com/opinion/im-a-security-editor-and-this-is-how-i-create-strong-passwords-that-are-also-easy-to-remember">strong password</a> and is always updated with the latest firmware</li><li>Look for reviews of products on reputable sites</li></ul><p><strong>Don't:</strong></p><ul><li>Rely solely on reviews posted on Amazon, Walmart, or other retail sites</li><li>Buy a product that’s not from a brand you’ve never heard of</li></ul><p>While these rules can’t completely insulate you from any sort of hacking, they can go a long way into making it harder for someone to break into your devices and see what they shouldn’t.</p><p>If you need to keep tabs on your kid, devices like the <a href="https://www.amazon.com/Apple-AirTag-2nd-Generation-Precision/dp/B0GJTFXNRX" target="_blank">$29 Apple AirTag</a>, the <a href="https://www.amazon.com/Fitbit-Google-Ace-LTE-Activity-Based/dp/B0CV5T2YG6" target="_blank">$149 Fitbit Ace</a>, and the <a href="https://www.garmin.com/en-US/p/714945/" target="_blank">$149 Garmin Bounce</a> are a little more expensive, but they’re made by companies with established reputations. What’s worth more: saving a few bucks, or the security of knowing some weirdo can’t spy on your kid?</p><h3 class="article-body__section" id="section-more-from-the-gadget-dad"><span>More from The Gadget Dad</span></h3><ul><li><a href="https://www.tomsguide.com/phones/i-gave-my-7-year-old-the-viral-tin-can-phone-because-all-her-friends-had-it-shes-already-over-it"><strong>I gave my 7-year-old the viral Tin Can phone because all her friends had it — here's the verdict after a month</strong></a></li><li><a href="https://www.tomsguide.com/vehicle-tech/electric-bikes/dont-get-burned-i-talked-to-an-expert-on-how-to-safely-buy-charge-and-store-batteries-for-e-bikes-and-electric-scooters"><strong>Don’t get burned: I talked to an expert on how to safely buy, charge, and store batteries for e-bikes and electric scooters</strong></a></li><li><a href="https://www.tomsguide.com/home/its-friggin-hot-the-5-devices-im-using-to-keep-my-home-and-my-pets-cool-this-summer"><strong>It's friggin' hot! The 5 devices I'm using to keep my home (and my pets) cool this summer</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Update your Mac right now to block this major screen sharing flaw ]]></title>
                                                                                                <dc:content><![CDATA[ <p>You're going to want to update your Mac to address a serious Screen Sharing vulnerability that could letter a malicious actor initiate screen sharing without authentic credentials.</p><p>This week <a href="https://support.apple.com/en-us/100100" target="_blank">Apple released</a> macOS Sonoma 14.8.9, macOS Sequoia 15.7.9, and macOS Tahoe 26.6.1 with release notes. Notably, all three releases claim that Apple made "important security fixes" and recommended the updates for everyone. </p><p><strong>"Impact: An attacker on the network may be able to authenticate to Screen Sharing without valid credentials</strong></p><p><strong>Description: An authentication issue was addressed with improved state management."</strong></p><p>That message is the same across all three versions of macOS. </p><p>It doesn't appear that the bug has been exploited in the wild, but if you haven't updated your Mac recently, now is the time to do so. Based on Apple's description, it appears that a bad actor could bypass Screen Sharing authentication checks, which would give them remote access to your computer.</p><p>Potentially, this would allow them to view the screen, open apps or files or perform other actions on the computer.</p><p>You may not use screen sharing, but it's still a good idea to install this update. Apple clearly deemed the flaw serious enough to patch three different versions of macOS before the next round of major OS updates.</p><h2 id="keep-your-mac-safe">Keep your Mac safe</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:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="F9ybS7WNwSK95hqxotZgYM" name="apple shutterstock.jpg" alt="A padlock resting next to the Apple logo on the lid of a gold-colored Apple laptop." src="https://cdn.mos.cms.futurecdn.net/F9ybS7WNwSK95hqxotZgYM.jpg" mos="" align="middle" fullscreen="" width="1000" height="563" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: robert coolen/Shutterstock)</span></figcaption></figure><p>To keep your Mac safe you may want to ensure that updates are automatically applied. Understandably if you're cautious about updates before they're settled you may wait. So you'll want to track updates and make sure you get the security-focused ones to protect your computer.</p><p>For screen sharing specifically, this vulnerability may have been able to sneak around you. But if you do any screen sharing, make sure it's with a trusted partner that you know to protect your computer. Additionally, keep any sensitive information closed before passing permissions just as a way to introduce a little bit of a block.</p><p>At the end of your session, double-check that screen sharing is turned off.</p><p>Beyond that, Apple does have Gatekeeper built-in which can block or warn you before you install unverified apps from the web. Still, you might want to consider using one of the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software </a>along side Apple's built-in ones.</p><p>Again, these macOS updates are available right now, so make sure you've installed them.</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/phones/iphones/how-to-turn-off-ios-27s-automatic-subtitles-that-no-one-asked-for">How to disable iOS 27’s annoying auto-subtitles for good</a></li><li><a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-rumors-everything-you-need-to-know-about-the-foldable-iphone">iPhone Ultra rumors: Everything you need to know about the foldable iPhone</a></li><li><a href="https://www.tomsguide.com/phones/i-asked-siri-ai-and-gemini-a-series-of-increasingly-bizarre-questions-to-see-how-they-responded-heres-what-happened">I asked Siri AI and Gemini a series of increasingly bizarre questions to see how they responded —here's what happened</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/update-your-mac-right-now-to-block-this-major-screen-sharing-flaw</link>
                                                                            <description>
                            <![CDATA[ Apple has just released new macOS updates that fix a major Screen Sharing flaw. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UfniTUGWvQ9LcgZBT8hYna</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/znDgFDFV46cYDQFRnVHdR7-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 07 Aug 2026 20:37:22 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;br&gt;Send secure tips on Signal: scyo1.55.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/znDgFDFV46cYDQFRnVHdR7-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock/Apple]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[macOS Tahoe 26 desktop screen on an MacBook]]></media:description>                                                            <media:text><![CDATA[macOS Tahoe 26 desktop screen on an MacBook]]></media:text>
                                <media:title type="plain"><![CDATA[macOS Tahoe 26 desktop screen on an MacBook]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/znDgFDFV46cYDQFRnVHdR7-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>You're going to want to update your Mac to address a serious Screen Sharing vulnerability that could letter a malicious actor initiate screen sharing without authentic credentials.</p><p>This week <a href="https://support.apple.com/en-us/100100" target="_blank">Apple released</a> macOS Sonoma 14.8.9, macOS Sequoia 15.7.9, and macOS Tahoe 26.6.1 with release notes. Notably, all three releases claim that Apple made "important security fixes" and recommended the updates for everyone. </p><p><strong>"Impact: An attacker on the network may be able to authenticate to Screen Sharing without valid credentials</strong></p><p><strong>Description: An authentication issue was addressed with improved state management."</strong></p><p>That message is the same across all three versions of macOS. </p><p>It doesn't appear that the bug has been exploited in the wild, but if you haven't updated your Mac recently, now is the time to do so. Based on Apple's description, it appears that a bad actor could bypass Screen Sharing authentication checks, which would give them remote access to your computer.</p><p>Potentially, this would allow them to view the screen, open apps or files or perform other actions on the computer.</p><p>You may not use screen sharing, but it's still a good idea to install this update. Apple clearly deemed the flaw serious enough to patch three different versions of macOS before the next round of major OS updates.</p><h2 id="keep-your-mac-safe">Keep your Mac safe</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:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="F9ybS7WNwSK95hqxotZgYM" name="apple shutterstock.jpg" alt="A padlock resting next to the Apple logo on the lid of a gold-colored Apple laptop." src="https://cdn.mos.cms.futurecdn.net/F9ybS7WNwSK95hqxotZgYM.jpg" mos="" align="middle" fullscreen="" width="1000" height="563" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: robert coolen/Shutterstock)</span></figcaption></figure><p>To keep your Mac safe you may want to ensure that updates are automatically applied. Understandably if you're cautious about updates before they're settled you may wait. So you'll want to track updates and make sure you get the security-focused ones to protect your computer.</p><p>For screen sharing specifically, this vulnerability may have been able to sneak around you. But if you do any screen sharing, make sure it's with a trusted partner that you know to protect your computer. Additionally, keep any sensitive information closed before passing permissions just as a way to introduce a little bit of a block.</p><p>At the end of your session, double-check that screen sharing is turned off.</p><p>Beyond that, Apple does have Gatekeeper built-in which can block or warn you before you install unverified apps from the web. Still, you might want to consider using one of the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software </a>along side Apple's built-in ones.</p><p>Again, these macOS updates are available right now, so make sure you've installed them.</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/phones/iphones/how-to-turn-off-ios-27s-automatic-subtitles-that-no-one-asked-for">How to disable iOS 27’s annoying auto-subtitles for good</a></li><li><a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-rumors-everything-you-need-to-know-about-the-foldable-iphone">iPhone Ultra rumors: Everything you need to know about the foldable iPhone</a></li><li><a href="https://www.tomsguide.com/phones/i-asked-siri-ai-and-gemini-a-series-of-increasingly-bizarre-questions-to-see-how-they-responded-heres-what-happened">I asked Siri AI and Gemini a series of increasingly bizarre questions to see how they responded —here's what happened</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ NBN 500 is the new broadband sweet spot — here's why I recommend a 500Mbps plan for most Aussie households ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Are you looking for your next NBN plan? Let me help you!</p><p>By way of introduction, I'm Tom's Guide's resident broadband expert, and every month I collate and analyse NBN plans from over 30 providers to find the <a href="https://www.tomsguide.com/best-picks/best-nbn-deals">best NBN deals</a>. IHMO, there's a lot to consider when shopping for a suitable NBN plan, but one common factor that gets overlooked is speed. </p><p>The conversation around what NBN speed tier you have at home can be a difficult one to navigate. Finding a suitable plan means being realistic about what speeds you'll <em>actually </em>use, over what you’d ideally like to pay. You may find you have too many internet-connected devices (or humans) living in your household and your current plan isn't cutting it, or conversely, you may be overpaying for a fast plan that you actually don’t need. </p><p>Regardless of where your household fits in the NBN speed pie chart, there's no denying that Aussies have been embracing faster and faster internet speeds over the last few years. <a href="https://www.accc.gov.au/by-industry/telecommunications-and-internet/national-broadband-network-nbn-access-regulation/nbn-wholesale-market-indicators-report/march-quarter-2026-report">As per the ACCC's data</a>, there are now over 3 million active connections for plans offering 100Mbps download speeds and faster. That number has actually quadrupled in the past 14 months, largely due to NBN Co's wholesale speed boost in September 2025. </p><p>Those speed upgrades came in the form of three new speed tiers — NBN 500, NBN 750 and NBN 2000 — which have helped turbocharge <a href="https://www.speedtest.net/global-index">Australia's average internet download speeds to 162.34Mbps</a>. A big contributor to that increase was the fact that two of the new tiers, NBN 500 and NBN 750, were wholesale increases to the existing NBN 100 and NBN 250 tiers. What that means is that customers on full-fibre connections at home — either FTTP or HFC — should have been automatically migrated to these faster speeds for free by their NBN provider. And in most cases, these new tiers cost the same (or only fractionally more) than the slower counterparts they’ve replaced.</p><div ><table><caption>NBN tiers comparison</caption><thead><tr><th class="firstcol " ><p>NBN Tier</p></th><th  ><p>Average Monthly Cost</p></th><th  ><p>Cost per Mbps</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>NBN 50</strong></p></td><td  ><p><strong>AU$90.11</strong></p></td><td  ><p><strong>AU$1.74</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 100</strong></p></td><td  ><p><strong>AU$96.16</strong></p></td><td  ><p><strong>AU$0.96</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 500</strong></p></td><td  ><p><strong>AU$96.85</strong></p></td><td  ><p><strong>AU$0.20</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 750</strong></p></td><td  ><p><strong>AU$108.48</strong></p></td><td  ><p><strong>AU$0.16</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 1000</strong></p></td><td  ><p><strong>AU$117.03</strong></p></td><td  ><p><strong>AU$0.14</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 2000</strong></p></td><td  ><p><strong>AU$184.33</strong></p></td><td  ><p><strong>AU$0.10</strong></p></td></tr></tbody></table></div><p>If you’re currently shopping around for a new NBN provider or plan and your home has a fibre connection, in my opinion the sweet spot when comparing plan value is NBN 500, which, as the name suggests, offers maximum speeds of 500Mbps — a massive speed boost over the next tier down (NBN 50), and more than enough bandwidth for most Aussie homes. </p><p>Not only does it provide 10x faster speeds than NBN 50, on average it costs just AU$6.74 more per month and equates to just AU$0.20 per megabit. (Comparatively, while the cost per megabit does continue to decrease as you move up to faster tiers; the drop between NBN 50 and NBN 500 is the biggest one — and for most Aussie homes, the extra cost of NBN 750, 1000 or 2000 is hard to justify when it comes to practical benefits). </p><p>500Mbps is more than enough bandwidth to accommodate multiple users and devices at the same time with few interruptions, even for homes with moderately demanding internet use. It’s enough speed to allow for 4K streaming on multiple screens, online gaming and large game downloads, and conducting video calls when working from home — all simultaneously. Having that extra wiggle room means that even with numerous people doing data-intensive activities shouldn't noticeably impact regular everyday use, like social media, web browsing, or streaming YouTube. </p><p>If your household includes devoted gamers, opting for an NBN 500 plan can be especially transformative, ensuring that downloading new games or large patches completes significantly faster than on slower speeds. I've put together the table below based on three popular online games with varying download sizes so you can see how radically NBN 500 changes things. </p><div ><table><caption>NBN speed vs game downloads</caption><thead><tr><th class="firstcol " ><p>NBN Speed Tier</p></th><th  ><p>Download Speed</p></th><th  ><p>Fortnite<br>(~71 GB)</p></th><th  ><p>League of Legends<br>(~10 GB)</p></th><th  ><p>Call of Duty: Black Ops 6<br>(~150 GB)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>NBN 50</p></td><td  ><p>50 Mbps</p></td><td  ><p>~3 hr 15 min</p></td><td  ><p>~27 min</p></td><td  ><p>~6 hr 50 min</p></td></tr><tr><td class="firstcol " ><p>NBN 100</p></td><td  ><p>100 Mbps</p></td><td  ><p>~1 hr 37 min</p></td><td  ><p>~14 min</p></td><td  ><p>~3 hr 25 min</p></td></tr><tr><td class="firstcol " ><p>NBN 250</p></td><td  ><p>250 Mbps</p></td><td  ><p>~39 min</p></td><td  ><p>~5.5 min</p></td><td  ><p>~1 hr 22 min</p></td></tr><tr><td class="firstcol " ><p>NBN 500</p></td><td  ><p>500 Mbps</p></td><td  ><p>~19 min</p></td><td  ><p>~2.7 min</p></td><td  ><p>~41 min</p></td></tr><tr><td class="firstcol " ><p>NBN 1000</p></td><td  ><p>1000 Mbps</p></td><td  ><p>~10 min</p></td><td  ><p>~1.4 min</p></td><td  ><p>~20 min</p></td></tr><tr><td class="firstcol " ><p>NBN 2000</p></td><td  ><p>2000 Mbps</p></td><td  ><p>~5 min</p></td><td  ><p>~40 sec</p></td><td  ><p>~10 min</p></td></tr></tbody></table></div><p>As you can see, while NBN 500 might fall in the middle of this range, it can be the difference between minutes and hours when downloading larger titles. I think that all those practical improvements and minimal cost increase over slower plans add up to make NBN 500 the undeniable sweet spot when it comes to Australian internet in 2026.  </p><p>If you’re considering switching, I've found three of the best NBN 500 plans available right now below. </p><h3 class="article-body__section" id="section-best-nbn-500-deals-right-now"><span>Best NBN 500 deals right now</span></h3><div class="product"><a data-dimension112="17363b3a-920d-11f1-882c-437e6c6251ce" data-action="Deal Block" data-label="Dodo | AU$60.99p/m" data-dimension48="Dodo | AU$60.99p/m" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=323&gi=392&pi=13585&ct=0&ci=21644&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"><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="Zgn5RBAPy8jVuoEunnUxG9" name="dodo-lockup-purple(500x500px)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Zgn5RBAPy8jVuoEunnUxG9.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=323&gi=392&pi=13585&ct=0&ci=21644&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="17363b3a-920d-11f1-882c-437e6c6251ce" data-action="Deal Block" data-label="Dodo | AU$60.99p/m" data-dimension48="Dodo | AU$60.99p/m" data-dimension25=""><strong>Dodo | AU$60.99p/m </strong></a>(for 6 months, then AU$92.99p/m)</p><p>Dodo currently offers one of the most attractive NBN 500 plans, slashing a massive AU$180 off the first year with this low introductory rate of AU$60.99p/m.</p><p>This plan costs the exact same as Dodo's NBN 100 offer, so if you have an FTTP or HFC connection at home, Dodo's got you sorted with 5x more speed for an identical low price.</p><p><strong>Total minimum cost: AU$60.99 | Total first year cost: AU$923.88 | Yearly cost after discount: AU$1,115.88</strong><a class="view-deal button" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=323&gi=392&pi=13585&ct=0&ci=21644&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="17363b3a-920d-11f1-882c-437e6c6251ce" data-action="Deal Block" data-label="Dodo | AU$60.99p/m" data-dimension48="Dodo | AU$60.99p/m" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="17363ca2-920d-11f1-8e36-dbba5e8bae07" data-action="Deal Block" data-label="Exetel | AU$80p/m" data-dimension48="Exetel | AU$80p/m" href="https://www.exetel.com.au/broadband/nbn" target="_blank" rel="sponsored"><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:99.89%;"><img id="sfteGX6Me8uXkFRRKBCcsC" name="exetel-square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/sfteGX6Me8uXkFRRKBCcsC.jpg" mos="" align="middle" fullscreen="" width="900" height="899" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.exetel.com.au/broadband/nbn" target="_blank" rel="sponsored" data-dimension112="17363ca2-920d-11f1-8e36-dbba5e8bae07" data-action="Deal Block" data-label="Exetel | AU$80p/m" data-dimension48="Exetel | AU$80p/m" data-dimension25=""><strong>Exetel | AU$80p/m</strong></a></p><p>Exetel's One plan (which is technically its only NBN plan) advertises massive speeds of 500Mbps download and 40Mbps upload during typical evening hours. If you're a heavy internet user, gamer or streamer, Exetel's plan should offer plenty of download bandwidth and no interruptions.</p><p>Typically, introductory discounts are the factor that prompts us to recommend one NBN plan over another, but the low ongoing rate undercuts most other providers’ ongoing NBN 500 pricing, and it still comes in at a total yearly cost under AU$1,000.</p><p><strong>Total minimum cost: AU$80 | Total yearly cost: AU$960</strong><a class="view-deal button" href="https://www.exetel.com.au/broadband/nbn" target="_blank" rel="sponsored" data-dimension112="17363ca2-920d-11f1-8e36-dbba5e8bae07" data-action="Deal Block" data-label="Exetel | AU$80p/m" data-dimension48="Exetel | AU$80p/m" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="17363d24-920d-11f1-b222-a9de6cfebe01" data-action="Deal Block" data-label="Kogan Internet | AU$69.90p/m" data-dimension48="Kogan Internet | AU$69.90p/m" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:336px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="gzMMhh9HWxsj4hgjTkvxzd" name="koganinternetlogo.png" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gzMMhh9HWxsj4hgjTkvxzd.png" mos="" align="middle" fullscreen="" width="336" height="336" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="17363d24-920d-11f1-b222-a9de6cfebe01" data-action="Deal Block" data-label="Kogan Internet | AU$69.90p/m" data-dimension48="Kogan Internet | AU$69.90p/m" data-dimension25=""><strong>Kogan Internet | AU$69.90p/m </strong></a>(for 12 months, then AU$85.90p/m)</p><p>Kogan Internet’s Gold Plus Unlimited NBN 500 clocks in with evening speeds of 500Mbps and 42Mbps uploads, which is pretty typical for this tier. However, thanks to this initial discount offer, you'll save AU$16p/m in the first 12 months — that's AU$192 total — before the price increases to a still-competitive AU$85.90p/m ongoing.</p><p>The plan's first-year cost of AU$838.80 is now the cheapest available on the NBN 500 tier. What makes it even better, though, is that Kogan also offers an Internet Price Pledge, so if you find a better price on a same-speed NBN plan, the telco will give you back double the difference.</p><p><strong>Total minimum cost: AU$69.90 | Total first-year cost: AU$838.80 | Yearly cost after discount: AU$1,030.80</strong><a class="view-deal button" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="17363d24-920d-11f1-b222-a9de6cfebe01" data-action="Deal Block" data-label="Kogan Internet | AU$69.90p/m" data-dimension48="Kogan Internet | AU$69.90p/m" data-dimension25="">View Deal</a></p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/internet/nbn-500-is-the-new-broadband-sweet-spot-heres-why-i-recommend-a-500mbps-plan-for-most-aussie-households</link>
                                                                            <description>
                            <![CDATA[ Thinking of switching your NBN plan? Here's why I recommend 500Mbps for most Australian households. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zQSZKjrep9WrgAXCXNGW96</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/p7Y8XW4sbQAGpAmffTHkGW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 07 Aug 2026 03:26:39 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/UC9ncAYxkmJ5ipHEyX44ri.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, with articles covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/p7Y8XW4sbQAGpAmffTHkGW-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[using a laptop]]></media:description>                                                            <media:text><![CDATA[using a laptop]]></media:text>
                                <media:title type="plain"><![CDATA[using a laptop]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/p7Y8XW4sbQAGpAmffTHkGW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Are you looking for your next NBN plan? Let me help you!</p><p>By way of introduction, I'm Tom's Guide's resident broadband expert, and every month I collate and analyse NBN plans from over 30 providers to find the <a href="https://www.tomsguide.com/best-picks/best-nbn-deals">best NBN deals</a>. IHMO, there's a lot to consider when shopping for a suitable NBN plan, but one common factor that gets overlooked is speed. </p><p>The conversation around what NBN speed tier you have at home can be a difficult one to navigate. Finding a suitable plan means being realistic about what speeds you'll <em>actually </em>use, over what you’d ideally like to pay. You may find you have too many internet-connected devices (or humans) living in your household and your current plan isn't cutting it, or conversely, you may be overpaying for a fast plan that you actually don’t need. </p><p>Regardless of where your household fits in the NBN speed pie chart, there's no denying that Aussies have been embracing faster and faster internet speeds over the last few years. <a href="https://www.accc.gov.au/by-industry/telecommunications-and-internet/national-broadband-network-nbn-access-regulation/nbn-wholesale-market-indicators-report/march-quarter-2026-report">As per the ACCC's data</a>, there are now over 3 million active connections for plans offering 100Mbps download speeds and faster. That number has actually quadrupled in the past 14 months, largely due to NBN Co's wholesale speed boost in September 2025. </p><p>Those speed upgrades came in the form of three new speed tiers — NBN 500, NBN 750 and NBN 2000 — which have helped turbocharge <a href="https://www.speedtest.net/global-index">Australia's average internet download speeds to 162.34Mbps</a>. A big contributor to that increase was the fact that two of the new tiers, NBN 500 and NBN 750, were wholesale increases to the existing NBN 100 and NBN 250 tiers. What that means is that customers on full-fibre connections at home — either FTTP or HFC — should have been automatically migrated to these faster speeds for free by their NBN provider. And in most cases, these new tiers cost the same (or only fractionally more) than the slower counterparts they’ve replaced.</p><div ><table><caption>NBN tiers comparison</caption><thead><tr><th class="firstcol " ><p>NBN Tier</p></th><th  ><p>Average Monthly Cost</p></th><th  ><p>Cost per Mbps</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>NBN 50</strong></p></td><td  ><p><strong>AU$90.11</strong></p></td><td  ><p><strong>AU$1.74</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 100</strong></p></td><td  ><p><strong>AU$96.16</strong></p></td><td  ><p><strong>AU$0.96</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 500</strong></p></td><td  ><p><strong>AU$96.85</strong></p></td><td  ><p><strong>AU$0.20</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 750</strong></p></td><td  ><p><strong>AU$108.48</strong></p></td><td  ><p><strong>AU$0.16</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 1000</strong></p></td><td  ><p><strong>AU$117.03</strong></p></td><td  ><p><strong>AU$0.14</strong></p></td></tr><tr><td class="firstcol " ><p><strong>NBN 2000</strong></p></td><td  ><p><strong>AU$184.33</strong></p></td><td  ><p><strong>AU$0.10</strong></p></td></tr></tbody></table></div><p>If you’re currently shopping around for a new NBN provider or plan and your home has a fibre connection, in my opinion the sweet spot when comparing plan value is NBN 500, which, as the name suggests, offers maximum speeds of 500Mbps — a massive speed boost over the next tier down (NBN 50), and more than enough bandwidth for most Aussie homes. </p><p>Not only does it provide 10x faster speeds than NBN 50, on average it costs just AU$6.74 more per month and equates to just AU$0.20 per megabit. (Comparatively, while the cost per megabit does continue to decrease as you move up to faster tiers; the drop between NBN 50 and NBN 500 is the biggest one — and for most Aussie homes, the extra cost of NBN 750, 1000 or 2000 is hard to justify when it comes to practical benefits). </p><p>500Mbps is more than enough bandwidth to accommodate multiple users and devices at the same time with few interruptions, even for homes with moderately demanding internet use. It’s enough speed to allow for 4K streaming on multiple screens, online gaming and large game downloads, and conducting video calls when working from home — all simultaneously. Having that extra wiggle room means that even with numerous people doing data-intensive activities shouldn't noticeably impact regular everyday use, like social media, web browsing, or streaming YouTube. </p><p>If your household includes devoted gamers, opting for an NBN 500 plan can be especially transformative, ensuring that downloading new games or large patches completes significantly faster than on slower speeds. I've put together the table below based on three popular online games with varying download sizes so you can see how radically NBN 500 changes things. </p><div ><table><caption>NBN speed vs game downloads</caption><thead><tr><th class="firstcol " ><p>NBN Speed Tier</p></th><th  ><p>Download Speed</p></th><th  ><p>Fortnite<br>(~71 GB)</p></th><th  ><p>League of Legends<br>(~10 GB)</p></th><th  ><p>Call of Duty: Black Ops 6<br>(~150 GB)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>NBN 50</p></td><td  ><p>50 Mbps</p></td><td  ><p>~3 hr 15 min</p></td><td  ><p>~27 min</p></td><td  ><p>~6 hr 50 min</p></td></tr><tr><td class="firstcol " ><p>NBN 100</p></td><td  ><p>100 Mbps</p></td><td  ><p>~1 hr 37 min</p></td><td  ><p>~14 min</p></td><td  ><p>~3 hr 25 min</p></td></tr><tr><td class="firstcol " ><p>NBN 250</p></td><td  ><p>250 Mbps</p></td><td  ><p>~39 min</p></td><td  ><p>~5.5 min</p></td><td  ><p>~1 hr 22 min</p></td></tr><tr><td class="firstcol " ><p>NBN 500</p></td><td  ><p>500 Mbps</p></td><td  ><p>~19 min</p></td><td  ><p>~2.7 min</p></td><td  ><p>~41 min</p></td></tr><tr><td class="firstcol " ><p>NBN 1000</p></td><td  ><p>1000 Mbps</p></td><td  ><p>~10 min</p></td><td  ><p>~1.4 min</p></td><td  ><p>~20 min</p></td></tr><tr><td class="firstcol " ><p>NBN 2000</p></td><td  ><p>2000 Mbps</p></td><td  ><p>~5 min</p></td><td  ><p>~40 sec</p></td><td  ><p>~10 min</p></td></tr></tbody></table></div><p>As you can see, while NBN 500 might fall in the middle of this range, it can be the difference between minutes and hours when downloading larger titles. I think that all those practical improvements and minimal cost increase over slower plans add up to make NBN 500 the undeniable sweet spot when it comes to Australian internet in 2026.  </p><p>If you’re considering switching, I've found three of the best NBN 500 plans available right now below. </p><h3 class="article-body__section" id="section-best-nbn-500-deals-right-now"><span>Best NBN 500 deals right now</span></h3><div class="product"><a data-dimension112="17363b3a-920d-11f1-882c-437e6c6251ce" data-action="Deal Block" data-label="Dodo | AU$60.99p/m" data-dimension48="Dodo | AU$60.99p/m" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=323&gi=392&pi=13585&ct=0&ci=21644&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"><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="Zgn5RBAPy8jVuoEunnUxG9" name="dodo-lockup-purple(500x500px)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Zgn5RBAPy8jVuoEunnUxG9.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=323&gi=392&pi=13585&ct=0&ci=21644&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="17363b3a-920d-11f1-882c-437e6c6251ce" data-action="Deal Block" data-label="Dodo | AU$60.99p/m" data-dimension48="Dodo | AU$60.99p/m" data-dimension25=""><strong>Dodo | AU$60.99p/m </strong></a>(for 6 months, then AU$92.99p/m)</p><p>Dodo currently offers one of the most attractive NBN 500 plans, slashing a massive AU$180 off the first year with this low introductory rate of AU$60.99p/m.</p><p>This plan costs the exact same as Dodo's NBN 100 offer, so if you have an FTTP or HFC connection at home, Dodo's got you sorted with 5x more speed for an identical low price.</p><p><strong>Total minimum cost: AU$60.99 | Total first year cost: AU$923.88 | Yearly cost after discount: AU$1,115.88</strong><a class="view-deal button" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=323&gi=392&pi=13585&ct=0&ci=21644&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="17363b3a-920d-11f1-882c-437e6c6251ce" data-action="Deal Block" data-label="Dodo | AU$60.99p/m" data-dimension48="Dodo | AU$60.99p/m" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="17363ca2-920d-11f1-8e36-dbba5e8bae07" data-action="Deal Block" data-label="Exetel | AU$80p/m" data-dimension48="Exetel | AU$80p/m" href="https://www.exetel.com.au/broadband/nbn" target="_blank" rel="sponsored"><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:99.89%;"><img id="sfteGX6Me8uXkFRRKBCcsC" name="exetel-square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/sfteGX6Me8uXkFRRKBCcsC.jpg" mos="" align="middle" fullscreen="" width="900" height="899" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.exetel.com.au/broadband/nbn" target="_blank" rel="sponsored" data-dimension112="17363ca2-920d-11f1-8e36-dbba5e8bae07" data-action="Deal Block" data-label="Exetel | AU$80p/m" data-dimension48="Exetel | AU$80p/m" data-dimension25=""><strong>Exetel | AU$80p/m</strong></a></p><p>Exetel's One plan (which is technically its only NBN plan) advertises massive speeds of 500Mbps download and 40Mbps upload during typical evening hours. If you're a heavy internet user, gamer or streamer, Exetel's plan should offer plenty of download bandwidth and no interruptions.</p><p>Typically, introductory discounts are the factor that prompts us to recommend one NBN plan over another, but the low ongoing rate undercuts most other providers’ ongoing NBN 500 pricing, and it still comes in at a total yearly cost under AU$1,000.</p><p><strong>Total minimum cost: AU$80 | Total yearly cost: AU$960</strong><a class="view-deal button" href="https://www.exetel.com.au/broadband/nbn" target="_blank" rel="sponsored" data-dimension112="17363ca2-920d-11f1-8e36-dbba5e8bae07" data-action="Deal Block" data-label="Exetel | AU$80p/m" data-dimension48="Exetel | AU$80p/m" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="17363d24-920d-11f1-b222-a9de6cfebe01" data-action="Deal Block" data-label="Kogan Internet | AU$69.90p/m" data-dimension48="Kogan Internet | AU$69.90p/m" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:336px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="gzMMhh9HWxsj4hgjTkvxzd" name="koganinternetlogo.png" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gzMMhh9HWxsj4hgjTkvxzd.png" mos="" align="middle" fullscreen="" width="336" height="336" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="17363d24-920d-11f1-b222-a9de6cfebe01" data-action="Deal Block" data-label="Kogan Internet | AU$69.90p/m" data-dimension48="Kogan Internet | AU$69.90p/m" data-dimension25=""><strong>Kogan Internet | AU$69.90p/m </strong></a>(for 12 months, then AU$85.90p/m)</p><p>Kogan Internet’s Gold Plus Unlimited NBN 500 clocks in with evening speeds of 500Mbps and 42Mbps uploads, which is pretty typical for this tier. However, thanks to this initial discount offer, you'll save AU$16p/m in the first 12 months — that's AU$192 total — before the price increases to a still-competitive AU$85.90p/m ongoing.</p><p>The plan's first-year cost of AU$838.80 is now the cheapest available on the NBN 500 tier. What makes it even better, though, is that Kogan also offers an Internet Price Pledge, so if you find a better price on a same-speed NBN plan, the telco will give you back double the difference.</p><p><strong>Total minimum cost: AU$69.90 | Total first-year cost: AU$838.80 | Yearly cost after discount: AU$1,030.80</strong><a class="view-deal button" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="17363d24-920d-11f1-b222-a9de6cfebe01" data-action="Deal Block" data-label="Kogan Internet | AU$69.90p/m" data-dimension48="Kogan Internet | AU$69.90p/m" data-dimension25="">View Deal</a></p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I added a UPS to my NAS and now I never have to worry about power outages — or unexpected data loss ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Storing everything in the cloud and streaming movies online is certainly convenient, but subscription costs just keep climbing. That’s why a lot of us — myself included — are ditching the monthly fees in favor of <a href="https://www.tomsguide.com/computing/peripherals/im-ditching-my-icloud-subscription-for-this-backup-drive-and-saving-myself-usd120-a-year-heres-how">local storage</a> and <a href="https://www.tomsguide.com/entertainment/music-streaming/i-ditched-my-favorite-music-streaming-service-for-my-cd-collection-for-a-month-and-i-cant-believe-how-much-i-missed-it">physical media</a> backed up on a home NAS. However, when you take your data into your own hands there’s a real catch: one sudden power loss can wipe out everything before you even know what happened.</p><p>I’ve always been interested in Network Attached Storage (NAS), but it wasn’t until last year that I <a href="https://www.tomsguide.com/computing/peripherals/i-finally-added-a-nas-to-my-home-network-and-i-cant-believe-i-waited-this-long">finally added one to my home network</a>. Being able to access my files from anywhere — just like I did through the cloud, but without a monthly subscription — has been a real game changer for my workflow. Likewise, instead of <a href="https://www.tomsguide.com/ai/i-let-chatgpt-plan-my-new-daily-tv-schedule-and-now-i-dont-have-to-channel-surf-anymore">bouncing between streaming services</a>, I can watch all my favorite movies right from my home network.</p><p>Overall, this whole setup has worked out so well that even the rest of my family now knows how to access the NAS and stream content right from the TV. There’s just one problem: local grid work means constant power outages, forcing me to manually boot the NAS back up. At home, this is a minor inconvenience, but over time, it’s become a real hassle — especially when the power goes out at least once a week.</p><p>Power outages don’t just interrupt movie night, either. With every sudden drop, I worry about corrupted data — or worse, a full mechanical failure on the drives inside. For this reason, I decided to pair an Uninterruptible Power Supply (UPS) with my NAS. While these backup batteries can be expensive, if you have a Ugreen NAS like I do, you’re in luck as the company now makes an affordable one that’s a cinch to set up.</p><div class="product"><a data-dimension112="a1fd8a2c-9166-11f1-8850-91474b2e3ffb" data-action="Deal Block" data-label="US3000" data-dimension48="US3000" data-dimension25="$109" href="https://www.amazon.com/dp/B0DDC9ZK8R" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1468px;"><p class="vanilla-image-block" style="padding-top:80.99%;"><img id="bff6383ZkFKsagdTKErKP" name="US3000" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bff6383ZkFKsagdTKErKP.jpg" mos="" align="middle" fullscreen="" width="1468" height="1189" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0DDC9ZK8R" target="_blank" rel="nofollow" data-dimension112="a1fd8a2c-9166-11f1-8850-91474b2e3ffb" data-action="Deal Block" data-label="US3000" data-dimension48="US3000" data-dimension25="$109">US3000: was $137 now $109</a></strong><br>Protect your NAS against unexpected blackouts and voltage dips with this compact mini UPS. Purpose-built for Ugreen NASync devices, it features a 12,000 mAh battery, a zero-second transfer time, and seamless UGOS Pro integration to automatically manage safe standby modes and prevent file system corruption during a power loss. </p><p><strong>Price Check: </strong><a href="https://ai.ugreen.com/products/ugreen-nas-backup-power-120w-12000mah" target="_blank" rel="nofollow"><strong>$109 @ Ugreen</strong></a><a class="view-deal button" href="https://www.amazon.com/dp/B0DDC9ZK8R" target="_blank" rel="nofollow" data-dimension112="a1fd8a2c-9166-11f1-8850-91474b2e3ffb" data-action="Deal Block" data-label="US3000" data-dimension48="US3000" data-dimension25="$109">View Deal</a></p></div><h2 id="power-bank-sized-peace-of-mind">Power bank-sized peace of mind</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:3696px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xCfduG8b6g6h2B96MMrQR6" name="Ugreen US3000 UPS-3" alt="The Ugreen US3000 mini UPS on a desk" src="https://cdn.mos.cms.futurecdn.net/xCfduG8b6g6h2B96MMrQR6.jpg" mos="" align="middle" fullscreen="" width="3696" height="2079" 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>After looking into getting a UPS a few years back and seeing them on sale at Costco more recently, I was completely surprised by just how small Ugreen’s US3000 one is. At 5.7 x 5.3 x 1.7 inches, it’s more of a mini UPS that’s not much larger than one of the <a href="https://www.tomsguide.com/best-picks/best-portable-chargers">best power banks</a>. This makes sense though — the US3000 is designed to power a single device as opposed to your whole desk setup in case of an outage.</p><p>In the box, you get the device itself, a vertical stand, and a USB-C to USB-A cable — but more on that later. Despite its small size, the US3000 packs a 12,000 mAh battery and can power a four-bay Ugreen NAS like the DH4300 Plus I’m using in my living room or the more powerful <a href="https://www.tomsguide.com/computing/the-coolest-piece-of-tech-i-bought-all-year-was-the-dxp4800-plus-heres-why-its-a-game-changer">DXP4800</a> for about 8–10 minutes. </p><p>You won't be streaming movies or running large backup jobs off its battery during a prolonged blackout. Instead, the US3000 acts as a bridge — giving you enough time to gracefully power down your system, or to safely ride out split-second power dips where the lights flicker and instantly come back on.</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:5114px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="Dn5SWXRVq3Kwh46ZU4NJXA" name="Ugreen US3000 UPS-4" alt="The ports and buttons on the front side of the Ugreen US3000 mini UPS" src="https://cdn.mos.cms.futurecdn.net/Dn5SWXRVq3Kwh46ZU4NJXA.jpg" mos="" align="middle" fullscreen="" width="5114" height="2876" 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 US3000 is a surprisingly simple device too, with only a single USB-C port, a barrel-shaped power port, and a hardwired power-out port. If you prefer completely silent operation, there’s also a small pinhole that — instead of resetting the device — mutes the internal alarm that beeps whenever you switch to battery power. </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.24%;"><img id="VaU25hZePMWaEgihQnQb8E" name="Ugreen US3000 UPS-5" alt="The Ugreen US3000 mini UPS seen from the side showing off its hardwired power out cable" src="https://cdn.mos.cms.futurecdn.net/VaU25hZePMWaEgihQnQb8E.jpg" mos="" align="middle" fullscreen="" width="4111" height="2312" 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>One thing I have to give Ugreen credit for is the fact that the US3000 doesn’t come with a separate power adapter. Instead, you take the power adapter from your NAS, plug it into this UPS, and then plug that hardwired cable into your NAS. Personally, this made setup a whole lot easier since I didn’t have to redo my NAS’ <a href="https://www.tomsguide.com/how-to/how-to-manage-cables">cable management</a> to add a backup battery to it. </p><h2 id="plug-and-play-protection">Plug and play protection</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:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="8hM354NVimjt36GzqELAVH" name="Ugreen US3000 UPS-2" alt="A close-up shot showing the Ugreen US3000 mini UPS connected to a Ugreen NAS" src="https://cdn.mos.cms.futurecdn.net/8hM354NVimjt36GzqELAVH.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" 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>Just like I mentioned above, getting the US3000 set up and connected to my NAS was an absolute breeze. I safely powered down my NAS, plugged its power adapter into the back of the US3000, and then inserted that hardwired cable into the back of my NAS. In fact, I was so eager to get this mini UPS set up that I initially forgot the most important part.</p><p>Sure, the US3000 will serve as a basic battery backup this way, but you’re missing out on its best features. Remember that USB-C to USB-A cable in the box? When you connect the US3000 directly to your NAS with it, the two can actually talk to each other. Without that data link, your NAS has no idea the power is out — it will simply drain the battery to zero and crash anyway during a long outage. Plugging in the cable is what unlocks intelligent features like automatic status detection and safe system standbys.</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:3246px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9UCxKrFWXg38jScThzSVbM" name="ugreen-ups-connected" alt="A screenshot showing the Ugreen US3000 mini  UPS within Ugreen's UGOS operating system" src="https://cdn.mos.cms.futurecdn.net/9UCxKrFWXg38jScThzSVbM.jpg" mos="" align="middle" fullscreen="" width="3246" height="1826" 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>After realizing the error of my ways, I connected the two devices via USB and powered my NAS back on. From there, I pulled up the Ugreen desktop app on my computer — though I could have also done so from my phone or tablet — and opened the Control Panel within UGOS. I navigated to Hardware & Power, clicked the UPS tab, and the US3000 was instantly recognized. </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:3280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qfRqMJimgEJbKhg3CPLavR" name="ugreen-ups-settings" alt="A screenshot showing the various settings for the Ugreen US3000 mini UPS within Ugreen's UGOS operating system" src="https://cdn.mos.cms.futurecdn.net/qfRqMJimgEJbKhg3CPLavR.jpg" mos="" align="middle" fullscreen="" width="3280" height="1845" 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>Hitting the Connect button gives you access to a quick suite of tailored options. For instance, you can choose between Standby mode and Auto Shutdown. Standby mode unmounts your storage volumes and halts read-write activity to protect your drive pool from corruption while keeping the CPU powered at minimal draw — allowing the NAS to resume instantly once your power returns. Auto Shutdown, on the other hand, fully powers off the hardware, which is ideal for prolonged blackouts but requires a full boot later on. </p><p>Just like with the rest of UGOS, there’s plenty to tinker with. However, everything is presented clearly enough that even NAS newbies can get the US3000 configured to their exact liking in under a minute.</p><h2 id="physical-insurance-for-your-nas">Physical insurance for your NAS</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="D9EBStZr6bDDP9ih6QfoEK" name="UGREEN DH4300 Plus-06" alt="The Ugreen NASync DH4300 Plus with hard drives in each of its four drive bays" src="https://cdn.mos.cms.futurecdn.net/D9EBStZr6bDDP9ih6QfoEK.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>Although Ugreen’s NAS devices have made Network Attached Storage more accessible for the average user, they became widely available during one of the worst possible times: <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMaggedon</a>. </p><p>Just a few years ago, buying several 3.5-inch or even 2.5-inch hard drives with a lot of capacity wouldn’t have set you back all that much. Now though, thanks to the current AI-fueled memory and storage crisis, outfitting your NAS with terabytes of storage space isn’t nearly as cost-effective as it used to be.</p><p>Whether you’re ditching cloud storage or streaming services, adding a NAS to your home network and outfitting it with the necessary storage is certainly an investment. Adding a US3000 mini UPS between your Ugreen NAS and the nearest power outlet does add to that initial investment too, but at $129, I’d say it’s well worth it.</p><p>You never know when a power outage, blackout, or in my case, power dips can strike. Best-case scenario, you just have to reboot your NAS, but worst-case scenario, you suddenly find yourself dealing with data loss and hardware failure. Storing your files securely at home is one of the main reasons to get a NAS in the first place, but with a strong enough surge, you might end up losing them and having to replace multiple hard drives. That’s why investing in the US3000 or even a larger, more powerful UPS is an absolute must.</p><p>For me, I can rest easy knowing that my files are safe when the lights flicker and that I won’t have to manually reboot my NAS just so my family can watch a movie when they come back on.</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/computing/i-thought-my-first-nas-was-enough-but-this-ai-powered-behemoth-is-the-private-brain-my-home-office-needed">I thought my first NAS was enough, but then I touched the future</a></li><li><a href="https://www.tomsguide.com/computing/ugreen-dxp2800gt-vs-ugreen-dxp4800gt">Ugreen DXP2800 GT vs DXP4800 GT: How much NAS do you really need when replacing your costly cloud storage?</a></li><li><a href="https://www.tomsguide.com/home/home-office/i-turned-a-bookshelf-into-a-hidden-home-lab-and-it-completely-decluttered-my-office">I built a hidden network hub to declutter my home office but it can do so much more</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/i-added-a-ups-to-my-nas-and-now-i-never-have-to-worry-about-power-outages-or-unexpected-data-loss</link>
                                                                            <description>
                            <![CDATA[ The US3000 is a mini UPS that offers plug-and-play power protection for Ugreen NAS devices to keep them running and your data safe during power outages. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ghEXCKvRqiyFoYmDBLz6fg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jNo33iKQtHyaUAcUWjwUt-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 06 Aug 2026 12:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Cloud Storage]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jNo33iKQtHyaUAcUWjwUt-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Ugreen US3000 mini UPS next to a Ugreen NAS on a shelf]]></media:description>                                                            <media:text><![CDATA[The Ugreen US3000 mini UPS next to a Ugreen NAS on a shelf]]></media:text>
                                <media:title type="plain"><![CDATA[The Ugreen US3000 mini UPS next to a Ugreen NAS on a shelf]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jNo33iKQtHyaUAcUWjwUt-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Storing everything in the cloud and streaming movies online is certainly convenient, but subscription costs just keep climbing. That’s why a lot of us — myself included — are ditching the monthly fees in favor of <a href="https://www.tomsguide.com/computing/peripherals/im-ditching-my-icloud-subscription-for-this-backup-drive-and-saving-myself-usd120-a-year-heres-how">local storage</a> and <a href="https://www.tomsguide.com/entertainment/music-streaming/i-ditched-my-favorite-music-streaming-service-for-my-cd-collection-for-a-month-and-i-cant-believe-how-much-i-missed-it">physical media</a> backed up on a home NAS. However, when you take your data into your own hands there’s a real catch: one sudden power loss can wipe out everything before you even know what happened.</p><p>I’ve always been interested in Network Attached Storage (NAS), but it wasn’t until last year that I <a href="https://www.tomsguide.com/computing/peripherals/i-finally-added-a-nas-to-my-home-network-and-i-cant-believe-i-waited-this-long">finally added one to my home network</a>. Being able to access my files from anywhere — just like I did through the cloud, but without a monthly subscription — has been a real game changer for my workflow. Likewise, instead of <a href="https://www.tomsguide.com/ai/i-let-chatgpt-plan-my-new-daily-tv-schedule-and-now-i-dont-have-to-channel-surf-anymore">bouncing between streaming services</a>, I can watch all my favorite movies right from my home network.</p><p>Overall, this whole setup has worked out so well that even the rest of my family now knows how to access the NAS and stream content right from the TV. There’s just one problem: local grid work means constant power outages, forcing me to manually boot the NAS back up. At home, this is a minor inconvenience, but over time, it’s become a real hassle — especially when the power goes out at least once a week.</p><p>Power outages don’t just interrupt movie night, either. With every sudden drop, I worry about corrupted data — or worse, a full mechanical failure on the drives inside. For this reason, I decided to pair an Uninterruptible Power Supply (UPS) with my NAS. While these backup batteries can be expensive, if you have a Ugreen NAS like I do, you’re in luck as the company now makes an affordable one that’s a cinch to set up.</p><div class="product"><a data-dimension112="a1fd8a2c-9166-11f1-8850-91474b2e3ffb" data-action="Deal Block" data-label="US3000" data-dimension48="US3000" data-dimension25="$109" href="https://www.amazon.com/dp/B0DDC9ZK8R" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1468px;"><p class="vanilla-image-block" style="padding-top:80.99%;"><img id="bff6383ZkFKsagdTKErKP" name="US3000" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bff6383ZkFKsagdTKErKP.jpg" mos="" align="middle" fullscreen="" width="1468" height="1189" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0DDC9ZK8R" target="_blank" rel="nofollow" data-dimension112="a1fd8a2c-9166-11f1-8850-91474b2e3ffb" data-action="Deal Block" data-label="US3000" data-dimension48="US3000" data-dimension25="$109">US3000: was $137 now $109</a></strong><br>Protect your NAS against unexpected blackouts and voltage dips with this compact mini UPS. Purpose-built for Ugreen NASync devices, it features a 12,000 mAh battery, a zero-second transfer time, and seamless UGOS Pro integration to automatically manage safe standby modes and prevent file system corruption during a power loss. </p><p><strong>Price Check: </strong><a href="https://ai.ugreen.com/products/ugreen-nas-backup-power-120w-12000mah" target="_blank" rel="nofollow"><strong>$109 @ Ugreen</strong></a><a class="view-deal button" href="https://www.amazon.com/dp/B0DDC9ZK8R" target="_blank" rel="nofollow" data-dimension112="a1fd8a2c-9166-11f1-8850-91474b2e3ffb" data-action="Deal Block" data-label="US3000" data-dimension48="US3000" data-dimension25="$109">View Deal</a></p></div><h2 id="power-bank-sized-peace-of-mind">Power bank-sized peace of mind</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:3696px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xCfduG8b6g6h2B96MMrQR6" name="Ugreen US3000 UPS-3" alt="The Ugreen US3000 mini UPS on a desk" src="https://cdn.mos.cms.futurecdn.net/xCfduG8b6g6h2B96MMrQR6.jpg" mos="" align="middle" fullscreen="" width="3696" height="2079" 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>After looking into getting a UPS a few years back and seeing them on sale at Costco more recently, I was completely surprised by just how small Ugreen’s US3000 one is. At 5.7 x 5.3 x 1.7 inches, it’s more of a mini UPS that’s not much larger than one of the <a href="https://www.tomsguide.com/best-picks/best-portable-chargers">best power banks</a>. This makes sense though — the US3000 is designed to power a single device as opposed to your whole desk setup in case of an outage.</p><p>In the box, you get the device itself, a vertical stand, and a USB-C to USB-A cable — but more on that later. Despite its small size, the US3000 packs a 12,000 mAh battery and can power a four-bay Ugreen NAS like the DH4300 Plus I’m using in my living room or the more powerful <a href="https://www.tomsguide.com/computing/the-coolest-piece-of-tech-i-bought-all-year-was-the-dxp4800-plus-heres-why-its-a-game-changer">DXP4800</a> for about 8–10 minutes. </p><p>You won't be streaming movies or running large backup jobs off its battery during a prolonged blackout. Instead, the US3000 acts as a bridge — giving you enough time to gracefully power down your system, or to safely ride out split-second power dips where the lights flicker and instantly come back on.</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:5114px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="Dn5SWXRVq3Kwh46ZU4NJXA" name="Ugreen US3000 UPS-4" alt="The ports and buttons on the front side of the Ugreen US3000 mini UPS" src="https://cdn.mos.cms.futurecdn.net/Dn5SWXRVq3Kwh46ZU4NJXA.jpg" mos="" align="middle" fullscreen="" width="5114" height="2876" 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 US3000 is a surprisingly simple device too, with only a single USB-C port, a barrel-shaped power port, and a hardwired power-out port. If you prefer completely silent operation, there’s also a small pinhole that — instead of resetting the device — mutes the internal alarm that beeps whenever you switch to battery power. </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.24%;"><img id="VaU25hZePMWaEgihQnQb8E" name="Ugreen US3000 UPS-5" alt="The Ugreen US3000 mini UPS seen from the side showing off its hardwired power out cable" src="https://cdn.mos.cms.futurecdn.net/VaU25hZePMWaEgihQnQb8E.jpg" mos="" align="middle" fullscreen="" width="4111" height="2312" 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>One thing I have to give Ugreen credit for is the fact that the US3000 doesn’t come with a separate power adapter. Instead, you take the power adapter from your NAS, plug it into this UPS, and then plug that hardwired cable into your NAS. Personally, this made setup a whole lot easier since I didn’t have to redo my NAS’ <a href="https://www.tomsguide.com/how-to/how-to-manage-cables">cable management</a> to add a backup battery to it. </p><h2 id="plug-and-play-protection">Plug and play protection</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:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="8hM354NVimjt36GzqELAVH" name="Ugreen US3000 UPS-2" alt="A close-up shot showing the Ugreen US3000 mini UPS connected to a Ugreen NAS" src="https://cdn.mos.cms.futurecdn.net/8hM354NVimjt36GzqELAVH.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" 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>Just like I mentioned above, getting the US3000 set up and connected to my NAS was an absolute breeze. I safely powered down my NAS, plugged its power adapter into the back of the US3000, and then inserted that hardwired cable into the back of my NAS. In fact, I was so eager to get this mini UPS set up that I initially forgot the most important part.</p><p>Sure, the US3000 will serve as a basic battery backup this way, but you’re missing out on its best features. Remember that USB-C to USB-A cable in the box? When you connect the US3000 directly to your NAS with it, the two can actually talk to each other. Without that data link, your NAS has no idea the power is out — it will simply drain the battery to zero and crash anyway during a long outage. Plugging in the cable is what unlocks intelligent features like automatic status detection and safe system standbys.</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:3246px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9UCxKrFWXg38jScThzSVbM" name="ugreen-ups-connected" alt="A screenshot showing the Ugreen US3000 mini  UPS within Ugreen's UGOS operating system" src="https://cdn.mos.cms.futurecdn.net/9UCxKrFWXg38jScThzSVbM.jpg" mos="" align="middle" fullscreen="" width="3246" height="1826" 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>After realizing the error of my ways, I connected the two devices via USB and powered my NAS back on. From there, I pulled up the Ugreen desktop app on my computer — though I could have also done so from my phone or tablet — and opened the Control Panel within UGOS. I navigated to Hardware & Power, clicked the UPS tab, and the US3000 was instantly recognized. </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:3280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qfRqMJimgEJbKhg3CPLavR" name="ugreen-ups-settings" alt="A screenshot showing the various settings for the Ugreen US3000 mini UPS within Ugreen's UGOS operating system" src="https://cdn.mos.cms.futurecdn.net/qfRqMJimgEJbKhg3CPLavR.jpg" mos="" align="middle" fullscreen="" width="3280" height="1845" 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>Hitting the Connect button gives you access to a quick suite of tailored options. For instance, you can choose between Standby mode and Auto Shutdown. Standby mode unmounts your storage volumes and halts read-write activity to protect your drive pool from corruption while keeping the CPU powered at minimal draw — allowing the NAS to resume instantly once your power returns. Auto Shutdown, on the other hand, fully powers off the hardware, which is ideal for prolonged blackouts but requires a full boot later on. </p><p>Just like with the rest of UGOS, there’s plenty to tinker with. However, everything is presented clearly enough that even NAS newbies can get the US3000 configured to their exact liking in under a minute.</p><h2 id="physical-insurance-for-your-nas">Physical insurance for your NAS</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="D9EBStZr6bDDP9ih6QfoEK" name="UGREEN DH4300 Plus-06" alt="The Ugreen NASync DH4300 Plus with hard drives in each of its four drive bays" src="https://cdn.mos.cms.futurecdn.net/D9EBStZr6bDDP9ih6QfoEK.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>Although Ugreen’s NAS devices have made Network Attached Storage more accessible for the average user, they became widely available during one of the worst possible times: <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMaggedon</a>. </p><p>Just a few years ago, buying several 3.5-inch or even 2.5-inch hard drives with a lot of capacity wouldn’t have set you back all that much. Now though, thanks to the current AI-fueled memory and storage crisis, outfitting your NAS with terabytes of storage space isn’t nearly as cost-effective as it used to be.</p><p>Whether you’re ditching cloud storage or streaming services, adding a NAS to your home network and outfitting it with the necessary storage is certainly an investment. Adding a US3000 mini UPS between your Ugreen NAS and the nearest power outlet does add to that initial investment too, but at $129, I’d say it’s well worth it.</p><p>You never know when a power outage, blackout, or in my case, power dips can strike. Best-case scenario, you just have to reboot your NAS, but worst-case scenario, you suddenly find yourself dealing with data loss and hardware failure. Storing your files securely at home is one of the main reasons to get a NAS in the first place, but with a strong enough surge, you might end up losing them and having to replace multiple hard drives. That’s why investing in the US3000 or even a larger, more powerful UPS is an absolute must.</p><p>For me, I can rest easy knowing that my files are safe when the lights flicker and that I won’t have to manually reboot my NAS just so my family can watch a movie when they come back on.</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/computing/i-thought-my-first-nas-was-enough-but-this-ai-powered-behemoth-is-the-private-brain-my-home-office-needed">I thought my first NAS was enough, but then I touched the future</a></li><li><a href="https://www.tomsguide.com/computing/ugreen-dxp2800gt-vs-ugreen-dxp4800gt">Ugreen DXP2800 GT vs DXP4800 GT: How much NAS do you really need when replacing your costly cloud storage?</a></li><li><a href="https://www.tomsguide.com/home/home-office/i-turned-a-bookshelf-into-a-hidden-home-lab-and-it-completely-decluttered-my-office">I built a hidden network hub to declutter my home office but it can do so much more</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Incognito mode is a total lie – and it cost Google $5 billion ]]></title>
                                                                                                <dc:content><![CDATA[ <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/YJJ28gMyH_I" allowfullscreen></iframe></div></div><p><em><strong>You can watch this article as a video on </strong></em><a href="https://youtu.be/YJJ28gMyH_I" target="_blank"><em><strong>The Privacy Lab's YouTube channel</strong></em></a><em><strong>.</strong></em></p><p>Five billion dollars. That's how much Google agreed to pay after being <a href="https://www.tomsguide.com/news/google-facing-dollar5-billion-chrome-incognito-mode-lawsuit-what-you-need-to-know">caught tracking millions of users</a> who thought they were browsing privately with Incognito mode. During the lawsuit, quotes from Google’s own employees emerged, calling<strong> </strong>Incognito "<a href="https://www.bbc.co.uk/news/business-68709119" target="_blank" rel="nofollow">effectively a lie</a>" and a "confusing mess." </p><p>Even Google's Chief Marketing Officer warned the CEO that they had to use "fuzzy, hedging language" because, in her own words, "<a href="https://www.bloomberg.com/news/articles/2022-10-11/google-s-incognito-inspires-staff-jokes-and-a-big-lawsuit?embedded-checkout=true" target="_blank" rel="nofollow">it's not truly private</a>."</p><p>I think Incognito mode is one of the most successful illusions in tech history. So, I'm going to strip it back to look at what Google Chrome actually does to protect your data, what Incognito mode completely fails to do, and the steps you can take to stay genuinely safe online. </p><h2 id="credit-where-it-s-due">Credit where it's due</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="FsE6DaLYHWfHhsBJj8hhaJ" name="chrome.GettyImages-1211180803.edit2" alt="Chrome" src="https://cdn.mos.cms.futurecdn.net/FsE6DaLYHWfHhsBJj8hhaJ.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: Getty Images)</span></figcaption></figure><p>It's important to be fair to Google here, even though it might feel a <em>bit</em> wrong: Chrome is actually a fairly secure web browser when it comes to keeping you safe from hackers and malware. </p><p>Importantly, it makes sure you use HTTPS, which encrypts the data that passes between your device and the websites you visit. This means that even if you connect to a dodgy Wi-Fi hotspot and someone is monitoring the connection, they can't steal your passwords or read your traffic. Plus, it warns you if you click on unencrypted HTTP links. Because Chrome and most other modern browsers do this, the classic "<a href="https://www.tomsguide.com/computing/online-security/what-is-a-man-in-the-middle-attack">man in the middle</a>" attack is very rare nowadays.</p><p>Chrome also features Secure DNS, as well as tab sandboxing. The latter isolates every browser tab so a malicious site can't jump to another and steal data. But the problem isn't Chrome's security. The problem is what happens when you click on Incognito.</p><h2 id="what-incognito-mode-is-good-for">What Incognito mode is good for</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:1000px;"><p class="vanilla-image-block" style="padding-top:57.10%;"><img id="PL4sQMJGZzvYUogUairdX3" name="chrome-incognito-shst.jpg" alt="A screenshot of the opening page of Chrome's Incognito Mode." src="https://cdn.mos.cms.futurecdn.net/PL4sQMJGZzvYUogUairdX3.jpg" mos="" align="middle" fullscreen="" width="1000" height="571" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sam Kresslein/Shutterstock)</span></figcaption></figure><p>Incognito mode is not built for network stealth – it just keeps your browser tidy. When you open an Incognito tab, your browser stops recording some data. It doesn't save your activity in history, doesn't save auto-fills, and blocks third-party cookies</p><p>For example, if you're shopping for a birthday present or visiting… <em>certain</em> <em>sites</em> you'd rather not have saved in your history, Incognito mode works perfectly. It stops someone else who uses the same device from seeing what sites you've visited. However, this is exactly where its power ends.</p><h2 id="where-incognito-fails">Where Incognito fails</h2><p>Everything falls apart the moment your data leaves your device – Incognito mode does nothing to hide your identity from the outside world. Your internet provider can still log the domain names you connect to, and if you're browsing on a work or school network, they can see every single site you visit.</p><p>Most worryingly, the websites you visit can still track you. They can record your real IP address, and if they use something like Google Analytics, they can instantly tie your "private" session to your existing digital profile. </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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ghR95aEQAv6aDrgJUZVvvh" name="Incognito screenshot" alt="screenshot of the incognito mode homepage" src="https://cdn.mos.cms.futurecdn.net/ghR95aEQAv6aDrgJUZVvvh.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text"><em><strong>Incognito mode's landing page, as of August 2026.</strong></em> </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In fact, following that massive lawsuit I mentioned earlier, Google had to change the official warning page in Chrome to explicitly admit this. It now reads: "This won't change how data is collected by websites you visit and the services they use, including Google." </p><p>Essentially, they had to confess on-screen that the data collection doesn't stop.</p><h2 id="is-incognito-mode-still-worth-using">Is Incognito mode still worth using?</h2><p>Whether you should use Incognito boils down to what you expect from it.<strong> </strong>If you care about what other people using your device can see, it's perfect. It's also great for logging into different email accounts, getting around article limits on news sites, or stopping your YouTube algorithm from being ruined because you wanted to watch one weird video.</p><p>However, Incognito does not give you <em>any</em> kind of meaningful digital privacy. For any entity that has control over your connection – notably your ISP, school, or workplace – there's no difference at all between using Incognito and rawdogging it with a logged-in Chrome tab. </p><p>It's the same story for the sites you visit. Your IP and any device identifiers are still available to see, so it's very easy to link this activity with anything else you've done online. At the end of the day, Incognito only hides your tracks from the person sitting next to you – not the rest of the world.</p><p>For genuine privacy, I recommend using tools that actually secure your connection. Use one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> to hide your activity from your ISP and change your IP address, and consider switching to a browser like <a href="https://www.tomsguide.com/news/brave-search-browser-default">Brave</a> or <a href="https://www.tomsguide.com/uk/tag/firefox">Firefox</a> that blocks tracking by default. <a href="https://www.tomsguide.com/round-up/best-adblockers-privacy-extensions">Ad and tracker blockers</a> are also good – there are plenty available for free – and finally, keep everything updated, including Chrome. New releases address the most recent issues, so it's good to stay on top of this.</p><p>In short, it's certainly not in Google's best interest to provide you with a tool that strips away the possibility of data collection. There are still eyes behind the famous fedora and sunglasses – and they're always watching.</p><div data-widget-type="multimodelreview" data-model-name="NordVPN,Surfshark,Proton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:1. Accessing a service from another country (subject to the terms and conditions of that service).2. Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/incognito-mode-is-a-total-lie-and-it-cost-google-5-billion</link>
                                                                            <description>
                            <![CDATA[ Google Chrome's Incognito mode presents itself as a privacy-first way to browse the web. Here, VPN Editor Mo Harber-Lamond explores why this couldn't be further from the truth. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PYEVA3RvkoeYnxFttJPvmc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/o9WxN7u9aE7zd5TXdYid5K-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 01 Aug 2026 04:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Browsers]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Mo Harber-Lamond ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/e5z29XBdy9KTwJ4GsGoUsH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;As VPN editor at Tom&#039;s Guide, Mo manages the three-strong VPN team and oversees a busy weekly content schedule of VPN, privacy, and cybersecurity news, reviews, and advice. He&#039;s a daily VPN user himself – typically NordVPN or ExpressVPN – and a regular reviewer of all the leading services: you’ll find his latest recommendations in Tom’s Guide’s &lt;a href=&quot;https://www.tomsguide.com/best-picks/best-vpn&quot;&gt;best VPN&lt;/a&gt; and &lt;a href=&quot;https://www.tomsguide.com/best-picks/best-free-vpn&quot;&gt;best free VPN&lt;/a&gt; guides. &lt;/p&gt;&lt;p&gt;Mo is committed to helping people choose the right VPN for their needs, and takes a meticulous, data-driven approach to Tom’s Guide’s testing processes to ensure that he and his team can make confident VPN recommendations that are grounded in thorough, real-world testing. &lt;/p&gt;&lt;p&gt;Whether he’s analyzing advanced privacy features like obfuscation and split tunneling, connection speeds across different protocols such as WireGuard and OpenVPN, or compatibility across different devices, Mo has clocked up hundreds of hours over the last half-decade interrogating the claims made by leading and lesser-known VPN providers.&lt;/p&gt;&lt;p&gt;Mo&#039;s newest venture is launching &lt;a href=&quot;https://www.youtube.com/@The.PrivacyLab&quot; target=&quot;_blank&quot;&gt;The Privacy Lab&lt;/a&gt; on YouTube. Focusing on general digital privacy – including VPNs, of course – The Privacy Lab aims to make staying safer online more accessible. Expect explainers, recommendations, and longer deep-dives into important privacy stories.&lt;/p&gt;&lt;p&gt;Outside of his role at Tom’s Guide, Mo has contributed to a number of leading tech publications on VPN and privacy issues, including &lt;a href=&quot;https://www.techradar.com/author/mo-harber-lamond&quot;&gt;TechRadar&lt;/a&gt;, &lt;a href=&quot;https://www.whathifi.com/author/mo-harber-lamond&quot;&gt;What Hi-Fi?&lt;/a&gt; and &lt;a href=&quot;https://www.t3.com/author/mo-harber-lamond&quot;&gt;T3&lt;/a&gt;, developing his position as a trusted voice in the field. &lt;/p&gt;&lt;p&gt;He graduated with First Class honours in English Literature and Creative Writing from Manchester University in the UK, and before joining the Tom&#039;s Guide team, worked for several years in creative and editorial writing. Alongside this, he side-hustled as a proofreader and copy editor – honing his skills in communicating complex information clearly – all the while gaining notoriety (if not success) with his band in his homeland of Cornwall.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/o9WxN7u9aE7zd5TXdYid5K-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Two incognito mode logos, one switched on, one switched off.]]></media:description>                                                            <media:text><![CDATA[Two incognito mode logos, one switched on, one switched off.]]></media:text>
                                <media:title type="plain"><![CDATA[Two incognito mode logos, one switched on, one switched off.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/o9WxN7u9aE7zd5TXdYid5K-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <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/YJJ28gMyH_I" allowfullscreen></iframe></div></div><p><em><strong>You can watch this article as a video on </strong></em><a href="https://youtu.be/YJJ28gMyH_I" target="_blank"><em><strong>The Privacy Lab's YouTube channel</strong></em></a><em><strong>.</strong></em></p><p>Five billion dollars. That's how much Google agreed to pay after being <a href="https://www.tomsguide.com/news/google-facing-dollar5-billion-chrome-incognito-mode-lawsuit-what-you-need-to-know">caught tracking millions of users</a> who thought they were browsing privately with Incognito mode. During the lawsuit, quotes from Google’s own employees emerged, calling<strong> </strong>Incognito "<a href="https://www.bbc.co.uk/news/business-68709119" target="_blank" rel="nofollow">effectively a lie</a>" and a "confusing mess." </p><p>Even Google's Chief Marketing Officer warned the CEO that they had to use "fuzzy, hedging language" because, in her own words, "<a href="https://www.bloomberg.com/news/articles/2022-10-11/google-s-incognito-inspires-staff-jokes-and-a-big-lawsuit?embedded-checkout=true" target="_blank" rel="nofollow">it's not truly private</a>."</p><p>I think Incognito mode is one of the most successful illusions in tech history. So, I'm going to strip it back to look at what Google Chrome actually does to protect your data, what Incognito mode completely fails to do, and the steps you can take to stay genuinely safe online. </p><h2 id="credit-where-it-s-due">Credit where it's due</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="FsE6DaLYHWfHhsBJj8hhaJ" name="chrome.GettyImages-1211180803.edit2" alt="Chrome" src="https://cdn.mos.cms.futurecdn.net/FsE6DaLYHWfHhsBJj8hhaJ.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: Getty Images)</span></figcaption></figure><p>It's important to be fair to Google here, even though it might feel a <em>bit</em> wrong: Chrome is actually a fairly secure web browser when it comes to keeping you safe from hackers and malware. </p><p>Importantly, it makes sure you use HTTPS, which encrypts the data that passes between your device and the websites you visit. This means that even if you connect to a dodgy Wi-Fi hotspot and someone is monitoring the connection, they can't steal your passwords or read your traffic. Plus, it warns you if you click on unencrypted HTTP links. Because Chrome and most other modern browsers do this, the classic "<a href="https://www.tomsguide.com/computing/online-security/what-is-a-man-in-the-middle-attack">man in the middle</a>" attack is very rare nowadays.</p><p>Chrome also features Secure DNS, as well as tab sandboxing. The latter isolates every browser tab so a malicious site can't jump to another and steal data. But the problem isn't Chrome's security. The problem is what happens when you click on Incognito.</p><h2 id="what-incognito-mode-is-good-for">What Incognito mode is good for</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:1000px;"><p class="vanilla-image-block" style="padding-top:57.10%;"><img id="PL4sQMJGZzvYUogUairdX3" name="chrome-incognito-shst.jpg" alt="A screenshot of the opening page of Chrome's Incognito Mode." src="https://cdn.mos.cms.futurecdn.net/PL4sQMJGZzvYUogUairdX3.jpg" mos="" align="middle" fullscreen="" width="1000" height="571" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sam Kresslein/Shutterstock)</span></figcaption></figure><p>Incognito mode is not built for network stealth – it just keeps your browser tidy. When you open an Incognito tab, your browser stops recording some data. It doesn't save your activity in history, doesn't save auto-fills, and blocks third-party cookies</p><p>For example, if you're shopping for a birthday present or visiting… <em>certain</em> <em>sites</em> you'd rather not have saved in your history, Incognito mode works perfectly. It stops someone else who uses the same device from seeing what sites you've visited. However, this is exactly where its power ends.</p><h2 id="where-incognito-fails">Where Incognito fails</h2><p>Everything falls apart the moment your data leaves your device – Incognito mode does nothing to hide your identity from the outside world. Your internet provider can still log the domain names you connect to, and if you're browsing on a work or school network, they can see every single site you visit.</p><p>Most worryingly, the websites you visit can still track you. They can record your real IP address, and if they use something like Google Analytics, they can instantly tie your "private" session to your existing digital profile. </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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ghR95aEQAv6aDrgJUZVvvh" name="Incognito screenshot" alt="screenshot of the incognito mode homepage" src="https://cdn.mos.cms.futurecdn.net/ghR95aEQAv6aDrgJUZVvvh.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text"><em><strong>Incognito mode's landing page, as of August 2026.</strong></em> </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In fact, following that massive lawsuit I mentioned earlier, Google had to change the official warning page in Chrome to explicitly admit this. It now reads: "This won't change how data is collected by websites you visit and the services they use, including Google." </p><p>Essentially, they had to confess on-screen that the data collection doesn't stop.</p><h2 id="is-incognito-mode-still-worth-using">Is Incognito mode still worth using?</h2><p>Whether you should use Incognito boils down to what you expect from it.<strong> </strong>If you care about what other people using your device can see, it's perfect. It's also great for logging into different email accounts, getting around article limits on news sites, or stopping your YouTube algorithm from being ruined because you wanted to watch one weird video.</p><p>However, Incognito does not give you <em>any</em> kind of meaningful digital privacy. For any entity that has control over your connection – notably your ISP, school, or workplace – there's no difference at all between using Incognito and rawdogging it with a logged-in Chrome tab. </p><p>It's the same story for the sites you visit. Your IP and any device identifiers are still available to see, so it's very easy to link this activity with anything else you've done online. At the end of the day, Incognito only hides your tracks from the person sitting next to you – not the rest of the world.</p><p>For genuine privacy, I recommend using tools that actually secure your connection. Use one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> to hide your activity from your ISP and change your IP address, and consider switching to a browser like <a href="https://www.tomsguide.com/news/brave-search-browser-default">Brave</a> or <a href="https://www.tomsguide.com/uk/tag/firefox">Firefox</a> that blocks tracking by default. <a href="https://www.tomsguide.com/round-up/best-adblockers-privacy-extensions">Ad and tracker blockers</a> are also good – there are plenty available for free – and finally, keep everything updated, including Chrome. New releases address the most recent issues, so it's good to stay on top of this.</p><p>In short, it's certainly not in Google's best interest to provide you with a tool that strips away the possibility of data collection. There are still eyes behind the famous fedora and sunglasses – and they're always watching.</p><div data-widget-type="multimodelreview" data-model-name="NordVPN,Surfshark,Proton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:1. Accessing a service from another country (subject to the terms and conditions of that service).2. Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested Starlink-powered 4G on my phone — here's what actually happened in a dead zone ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/news/starlink-coverage-map-revealed-heres-where-people-are-using-the-service">Satellite-based internet</a> is nothing new, but the idea of getting satellite internet on your phone is something that has eluded us for a while. A number of smartphones now offer satellite connectivity of some kind, but that's mostly reserved for emergency situations, but the real question is, when will we be able to ditch cellular service and beam our mobile data from space?</p><p>Big tech has already been mulling over this idea for a while now. Elon Musk has <a href="https://www.reuters.com/business/media-telecom/musks-spacex-targets-us-consumers-with-starlink-mobile-service-push-ft-reports-2026-06-26/" target="_blank">talked about making</a> Starlink a direct-to-cell service. And just this week <a href="https://www.semafor.com/article/07/29/2026/spacex-looks-to-compete-with-the-carriers?utm_source=tldrnewsletter" target="_blank">Semafor</a> reported that SpaceX (the parent company of Starlink) may be looking to acquire spectrum at government auction to compete directly with AT&T, Verizon and T-Mobile. Or it may decide to acquire another wireless carrier altogether.</p><p>Meanwhile, <a href="https://www.ft.com/content/83e93ce0-1ebd-4b04-a70c-82ff7b64a5f4?syn-25a6b1a6=1#" target="_blank">Amazon</a> has filed an application to launch its own satellite-based internet service. Fortunately, we don't have to wait for the to get their act together, because carriers around the world have started offering satellite services to their customers.</p><p>Being the curious type, I decided to give one a go and see whether it was actually worth signing up for full time.</p><h2 id="how-satellite-4g-works">How satellite 4G works</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pcknePfYXoBQFhLBS55wTc" name="PXL_20260725_113038308" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/pcknePfYXoBQFhLBS55wTc.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>Those reading this from the U.S. may be aware that T-Mobile <a href="https://www.t-mobile.com/coverage/satellite-phone-service" target="_blank" rel="nofollow">offers</a> a satellite service powered by Starlink. I live in the U.K., and naturally don't have access to T-Mobile, but the <a href="https://www.o2.co.uk/satellite" target="_blank" rel="nofollow">carrier O2</a> offers a similar service as an optional extra. This extra is also powered by Starlink, costs £3/$4 a month, and gives you access to satellite-based 4G should you find yourself without a cell signal or Wi-Fi connection.</p><p>That lack of additional connectivity is crucial to the whole process, because of the way modern smartphones connect to satellites. If there is another form of data connection, be it cellular or Wi-Fi, then the phone will refuse to look for a satellite. The satellite is essentially a last port of call to get your device connected.</p><p>This has led to some amusing instances of my phone looking for a satellite when there's zero chance of making a connection — such as when I was traveling several feet underground on the London Underground's Central Line. That's because I disconnected from cell service for more than a few seconds.</p><h2 id="finding-the-right-spot">Finding the right spot</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:1198px;"><p class="vanilla-image-block" style="padding-top:65.19%;"><img id="4XSjScp6yJJWQk5Le2GCrP" name="Screenshot 2026-07-30 115658" alt="O2 4g coverage map south east" src="https://cdn.mos.cms.futurecdn.net/4XSjScp6yJJWQk5Le2GCrP.png" mos="" align="middle" fullscreen="" width="1198" height="781" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Blue is good, orange is ok and white is complete loss of service </span><span class="credit" itemprop="copyrightHolder">(Image credit: O2)</span></figcaption></figure><p>Surprisingly, the connectivity aspect actually caused a problem for me, because O2's outdoor 4G coverage is surprisingly good in my part of the country. There are plenty of areas in the U.K. that don't get any 4G cell signal, let alone 5G, but the <a href="https://www.o2.co.uk/coveragechecker" target="_blank" rel="nofollow"><u>official coverage map</u></a> shows they're mainly in very rural areas — notably mountainous regions of Wales, Scotland and Northern England. </p><p>I live in the South East, roughly around 40 miles from central London. Anyone from different parts of England will be well aware that this is the region where most of the money goes. So, even though I live in a village in a fairly rural area, the cell signal is remarkably robust when you're using an O2 SIM card.</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RN9vc89cmMLEAeVzGni5ac" name="PXL_20260725_112402829" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/RN9vc89cmMLEAeVzGni5ac.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>That's not to say 4G connectivity is universally available. There are various dead spots scattered around the place, according to both O2's own coverage checked and the <a href="https://www.ofcom.org.uk/mobile-coverage-checker" target="_blank">independent map </a>from mobile regulator Ofcom. </p><p>I just had to find one that intersected with a road, ideally one that had ample space to pull over and let me play on my phone. If you've had any experience with British country roads, you'll know that they're often too narrow to do this safely. </p><p>Thankfully, I found a spot roughly 30 minutes away by car. Not only is it a good-size deadspot, it also contains a pub with a sizable parking lot. There are certainly worse places to stop and test some new phone features.</p><h2 id="the-actual-connection-is-easy-and-automatic">The actual connection is easy and automatic</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JbFx5CXBHBPkkK9bMcwJac" name="PXL_20260725_112359792" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/JbFx5CXBHBPkkK9bMcwJac.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>It took a couple of minutes to drive through the deadspot and park my car, by which point my Galaxy S26 Ultra had already connected to Starlink's satellites. That was rather surprising, considering that satellite connectivity typically needs a direct view of the sky to actually make the connection.</p><p>And no, before anyone asks, my car does not have a sun roof. It's totally solid, though I'm unsure of what materials were actually involved in its construction.</p><p>Admittedly, the signal wasn't particularly strong inside the car, illustrated as one bar out of three in the S26 Ultra's status bar. This doesn't change the fact that my phone was connected to the satellite through the car roof, and was receiving data from some Starlink satellite in space.</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:2240px;"><p class="vanilla-image-block" style="padding-top:60.27%;"><img id="T6xE2b5etvDVXGYGzfBHvS" name="Untitled-1 copy.JPG" alt="using 4g over satellite" src="https://cdn.mos.cms.futurecdn.net/T6xE2b5etvDVXGYGzfBHvS.jpg" mos="" align="middle" fullscreen="" width="2240" height="1350" 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>My next move was to stick the phone out of my window and raise it up towards the sky. It took about a minute for the S26 Ultra to register that circumstances had changed, and there were no obstacles in the way — at which point the signal jumped up to two bars. </p><p>It never hit three bars, though, despite the fact I was in an open area with relatively clear skies. I should also note that moving inside the pub, a 350-year old building with a thatched roof, cut off all access to the satellite. So while the signal may be able to penetrate my car, it isn't magic.</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dFWP6PdLdWD6JSDVZKJwZc" name="PXL_20260725_112408008" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/dFWP6PdLdWD6JSDVZKJwZc.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>Accessing <a href="https://www.tomsguide.com/news/how-to-use-google-maps">Google Maps</a> from inside my car was a slightly drawn out affair. The app warned me that it was connected to the satellite, with lower loading times, and it took between 30 and 60 seconds for the actual map interface to load up fully. Shifting things outside and the load times were significantly reduced, though nowhere near as quick as they are with a 4G connection, let alone 5G.</p><p>So you're not going to be tapping your feet staring at your phone waiting for an all-important app to load over the course of several minutes. But your speeds aren't going to be as instantaneous as they might be with full bars of cell signal.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XjaEaO"></div>                            </div>                            <script src="https://kwizly.com/embed/XjaEaO.js" async></script><h2 id="this-isn-t-unrestricted-4g-like-you-re-used-to">This isn't unrestricted 4G like you're used to</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2TDkkh3fLyKXHCQzRu2qac" name="PXL_20260725_112542141" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/2TDkkh3fLyKXHCQzRu2qac.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>It was a surprisingly effective system, though the main drawback is that there are limitations on the apps you're able to use. These limitations seem to have been coded in at a system level by your phone rather than by the carrier. My personal guess is that this is due to modern phones treating satellite connectivity as an emergency feature, rather than a stable source of data.</p><p>This means that you will only be able to use the bare minimum of apps you need to communicate, navigate and potentially allow yourself to be found in an emergency. We're talking about things like Google Maps, Google Find Hub, Messages and the weather. </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="Q29W3qAJLdrTPZnNRuQriS" name="satellite1.JPG" alt="using 4g over satellite" src="https://cdn.mos.cms.futurecdn.net/Q29W3qAJLdrTPZnNRuQriS.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>The latter may seem like an odd choice, but if you're out in the sticks by yourself with no vehicle or shelter, being able to keep tabs on the weather is essential. It could be the difference between you being stuck in a freak storm and finding somewhere to hunker down and ride it out in relative safety.</p><p>Your more frivolous apps, like social media and web browsers, are all disconnected and behave as though you don't have any active data connection. So don't expect to be sitting on a mountain somewhere catching up on your favorite Netflix series. That's not what this system is for, and the app straight up won't work if you try it.</p><p>Likewise, any third-party apps that could prove useful in precarious situations, such as mapping apps, still behave as though they are offline. The good news for wilderness-enthusiasts is that you can still get GPS with no data, but if assets haven't loaded, or are hilariously out of date, then the lack of data to update could end up being a problem.</p><h2 id="a-fantastic-backup-tool-but-it-s-not-replacing-cell-service-yet">A fantastic backup tool, but it's not replacing cell service yet</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kvmLGEA874pjyQVDihV5ac" name="PXL_20260725_112346025" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/kvmLGEA874pjyQVDihV5ac.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>If you live out in a deadspot, or regularly find yourself in one, then gaining satellite access through your carrier is not going to make up for the fact there's no cell signal. The limitations in what the satellite connection can or can't do means that it's not a true replacement for cell service in the way a full Starlink setup would be for home internet.</p><p>But this sure as heck beats being stuck with zero access to the internet. Carrier-supplied 4G may not be able to give you access to web browsers and streaming, but it keeps you hooked into the apps that you might actually need in a pinch. In short, it means that you will always be able to reach the outside world in the event that you desperately need to.</p><p>Some may not like the fact that it's getting harder and harder to disconnect, but this means that you won't be stuck in the middle of nowhere without support. The fact that satellite access still worked in my car, and loaded up Google Maps, will easily be a major boon for navigating areas with little to no cell service. Which isn't a bad deal for $4 a month (or $10 a month with T-Mobile).</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/phones/iphones/i-turned-my-iphone-screen-completely-gray-for-two-weeks-heres-how-making-it-boring-helped-me-get-my-brain-back">I turned my iPhone screen completely gray for two weeks — here's how making it boring helped me get my brain back</a></li><li><a href="https://www.tomsguide.com/phones/i-shot-the-same-25-photos-with-a-usd329-budget-phone-and-usd1-199-flagship-heres-the-results">I shot the same 25 photos with a $329 budget phone and $1,199 flagship — here's the results</a></li><li><a href="https://www.tomsguide.com/phones/i-got-sick-of-buying-cases-for-my-phones-so-i-decided-to-3d-print-them-at-home-heres-what-happened">I got sick of buying cases for my phones, so I decided to 3D print them at home — here's what happened</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/phones/network-carriers/i-tested-starlink-powered-4g-on-my-phone-heres-what-actually-happened-in-a-dead-zone</link>
                                                                            <description>
                            <![CDATA[ Carriers around the world now offer plans with 4G satellite data when normal service isn't available. Curious as to what it was like, I drove into the sticks to find out what it was like. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kcLRdz8d3RPfh6VKGLoZAd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7ZkrNW59zysDZ5wUTkqqHc-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 30 Jul 2026 13:55:05 +0000</pubDate>                                                                                                                                <updated>Thu, 30 Jul 2026 13:55:11 +0000</updated>
                                                                                                                                            <category><![CDATA[Network Carriers]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Phones]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                                                                <author><![CDATA[ tom.pritchard@futurenet.com (Tom Pritchard) ]]></author>                    <dc:creator><![CDATA[ Tom Pritchard ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/biCewUkKfSA6QnT2HxVc3f.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7ZkrNW59zysDZ5wUTkqqHc-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[4g connection over satellite on galaxy s26 ultra]]></media:description>                                                            <media:text><![CDATA[4g connection over satellite on galaxy s26 ultra]]></media:text>
                                <media:title type="plain"><![CDATA[4g connection over satellite on galaxy s26 ultra]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7ZkrNW59zysDZ5wUTkqqHc-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/news/starlink-coverage-map-revealed-heres-where-people-are-using-the-service">Satellite-based internet</a> is nothing new, but the idea of getting satellite internet on your phone is something that has eluded us for a while. A number of smartphones now offer satellite connectivity of some kind, but that's mostly reserved for emergency situations, but the real question is, when will we be able to ditch cellular service and beam our mobile data from space?</p><p>Big tech has already been mulling over this idea for a while now. Elon Musk has <a href="https://www.reuters.com/business/media-telecom/musks-spacex-targets-us-consumers-with-starlink-mobile-service-push-ft-reports-2026-06-26/" target="_blank">talked about making</a> Starlink a direct-to-cell service. And just this week <a href="https://www.semafor.com/article/07/29/2026/spacex-looks-to-compete-with-the-carriers?utm_source=tldrnewsletter" target="_blank">Semafor</a> reported that SpaceX (the parent company of Starlink) may be looking to acquire spectrum at government auction to compete directly with AT&T, Verizon and T-Mobile. Or it may decide to acquire another wireless carrier altogether.</p><p>Meanwhile, <a href="https://www.ft.com/content/83e93ce0-1ebd-4b04-a70c-82ff7b64a5f4?syn-25a6b1a6=1#" target="_blank">Amazon</a> has filed an application to launch its own satellite-based internet service. Fortunately, we don't have to wait for the to get their act together, because carriers around the world have started offering satellite services to their customers.</p><p>Being the curious type, I decided to give one a go and see whether it was actually worth signing up for full time.</p><h2 id="how-satellite-4g-works">How satellite 4G works</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pcknePfYXoBQFhLBS55wTc" name="PXL_20260725_113038308" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/pcknePfYXoBQFhLBS55wTc.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>Those reading this from the U.S. may be aware that T-Mobile <a href="https://www.t-mobile.com/coverage/satellite-phone-service" target="_blank" rel="nofollow">offers</a> a satellite service powered by Starlink. I live in the U.K., and naturally don't have access to T-Mobile, but the <a href="https://www.o2.co.uk/satellite" target="_blank" rel="nofollow">carrier O2</a> offers a similar service as an optional extra. This extra is also powered by Starlink, costs £3/$4 a month, and gives you access to satellite-based 4G should you find yourself without a cell signal or Wi-Fi connection.</p><p>That lack of additional connectivity is crucial to the whole process, because of the way modern smartphones connect to satellites. If there is another form of data connection, be it cellular or Wi-Fi, then the phone will refuse to look for a satellite. The satellite is essentially a last port of call to get your device connected.</p><p>This has led to some amusing instances of my phone looking for a satellite when there's zero chance of making a connection — such as when I was traveling several feet underground on the London Underground's Central Line. That's because I disconnected from cell service for more than a few seconds.</p><h2 id="finding-the-right-spot">Finding the right spot</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:1198px;"><p class="vanilla-image-block" style="padding-top:65.19%;"><img id="4XSjScp6yJJWQk5Le2GCrP" name="Screenshot 2026-07-30 115658" alt="O2 4g coverage map south east" src="https://cdn.mos.cms.futurecdn.net/4XSjScp6yJJWQk5Le2GCrP.png" mos="" align="middle" fullscreen="" width="1198" height="781" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Blue is good, orange is ok and white is complete loss of service </span><span class="credit" itemprop="copyrightHolder">(Image credit: O2)</span></figcaption></figure><p>Surprisingly, the connectivity aspect actually caused a problem for me, because O2's outdoor 4G coverage is surprisingly good in my part of the country. There are plenty of areas in the U.K. that don't get any 4G cell signal, let alone 5G, but the <a href="https://www.o2.co.uk/coveragechecker" target="_blank" rel="nofollow"><u>official coverage map</u></a> shows they're mainly in very rural areas — notably mountainous regions of Wales, Scotland and Northern England. </p><p>I live in the South East, roughly around 40 miles from central London. Anyone from different parts of England will be well aware that this is the region where most of the money goes. So, even though I live in a village in a fairly rural area, the cell signal is remarkably robust when you're using an O2 SIM card.</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RN9vc89cmMLEAeVzGni5ac" name="PXL_20260725_112402829" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/RN9vc89cmMLEAeVzGni5ac.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>That's not to say 4G connectivity is universally available. There are various dead spots scattered around the place, according to both O2's own coverage checked and the <a href="https://www.ofcom.org.uk/mobile-coverage-checker" target="_blank">independent map </a>from mobile regulator Ofcom. </p><p>I just had to find one that intersected with a road, ideally one that had ample space to pull over and let me play on my phone. If you've had any experience with British country roads, you'll know that they're often too narrow to do this safely. </p><p>Thankfully, I found a spot roughly 30 minutes away by car. Not only is it a good-size deadspot, it also contains a pub with a sizable parking lot. There are certainly worse places to stop and test some new phone features.</p><h2 id="the-actual-connection-is-easy-and-automatic">The actual connection is easy and automatic</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JbFx5CXBHBPkkK9bMcwJac" name="PXL_20260725_112359792" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/JbFx5CXBHBPkkK9bMcwJac.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>It took a couple of minutes to drive through the deadspot and park my car, by which point my Galaxy S26 Ultra had already connected to Starlink's satellites. That was rather surprising, considering that satellite connectivity typically needs a direct view of the sky to actually make the connection.</p><p>And no, before anyone asks, my car does not have a sun roof. It's totally solid, though I'm unsure of what materials were actually involved in its construction.</p><p>Admittedly, the signal wasn't particularly strong inside the car, illustrated as one bar out of three in the S26 Ultra's status bar. This doesn't change the fact that my phone was connected to the satellite through the car roof, and was receiving data from some Starlink satellite in space.</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:2240px;"><p class="vanilla-image-block" style="padding-top:60.27%;"><img id="T6xE2b5etvDVXGYGzfBHvS" name="Untitled-1 copy.JPG" alt="using 4g over satellite" src="https://cdn.mos.cms.futurecdn.net/T6xE2b5etvDVXGYGzfBHvS.jpg" mos="" align="middle" fullscreen="" width="2240" height="1350" 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>My next move was to stick the phone out of my window and raise it up towards the sky. It took about a minute for the S26 Ultra to register that circumstances had changed, and there were no obstacles in the way — at which point the signal jumped up to two bars. </p><p>It never hit three bars, though, despite the fact I was in an open area with relatively clear skies. I should also note that moving inside the pub, a 350-year old building with a thatched roof, cut off all access to the satellite. So while the signal may be able to penetrate my car, it isn't magic.</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dFWP6PdLdWD6JSDVZKJwZc" name="PXL_20260725_112408008" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/dFWP6PdLdWD6JSDVZKJwZc.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>Accessing <a href="https://www.tomsguide.com/news/how-to-use-google-maps">Google Maps</a> from inside my car was a slightly drawn out affair. The app warned me that it was connected to the satellite, with lower loading times, and it took between 30 and 60 seconds for the actual map interface to load up fully. Shifting things outside and the load times were significantly reduced, though nowhere near as quick as they are with a 4G connection, let alone 5G.</p><p>So you're not going to be tapping your feet staring at your phone waiting for an all-important app to load over the course of several minutes. But your speeds aren't going to be as instantaneous as they might be with full bars of cell signal.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XjaEaO"></div>                            </div>                            <script src="https://kwizly.com/embed/XjaEaO.js" async></script><h2 id="this-isn-t-unrestricted-4g-like-you-re-used-to">This isn't unrestricted 4G like you're used to</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2TDkkh3fLyKXHCQzRu2qac" name="PXL_20260725_112542141" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/2TDkkh3fLyKXHCQzRu2qac.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>It was a surprisingly effective system, though the main drawback is that there are limitations on the apps you're able to use. These limitations seem to have been coded in at a system level by your phone rather than by the carrier. My personal guess is that this is due to modern phones treating satellite connectivity as an emergency feature, rather than a stable source of data.</p><p>This means that you will only be able to use the bare minimum of apps you need to communicate, navigate and potentially allow yourself to be found in an emergency. We're talking about things like Google Maps, Google Find Hub, Messages and the weather. </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="Q29W3qAJLdrTPZnNRuQriS" name="satellite1.JPG" alt="using 4g over satellite" src="https://cdn.mos.cms.futurecdn.net/Q29W3qAJLdrTPZnNRuQriS.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>The latter may seem like an odd choice, but if you're out in the sticks by yourself with no vehicle or shelter, being able to keep tabs on the weather is essential. It could be the difference between you being stuck in a freak storm and finding somewhere to hunker down and ride it out in relative safety.</p><p>Your more frivolous apps, like social media and web browsers, are all disconnected and behave as though you don't have any active data connection. So don't expect to be sitting on a mountain somewhere catching up on your favorite Netflix series. That's not what this system is for, and the app straight up won't work if you try it.</p><p>Likewise, any third-party apps that could prove useful in precarious situations, such as mapping apps, still behave as though they are offline. The good news for wilderness-enthusiasts is that you can still get GPS with no data, but if assets haven't loaded, or are hilariously out of date, then the lack of data to update could end up being a problem.</p><h2 id="a-fantastic-backup-tool-but-it-s-not-replacing-cell-service-yet">A fantastic backup tool, but it's not replacing cell service yet</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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kvmLGEA874pjyQVDihV5ac" name="PXL_20260725_112346025" alt="4g connection over satellite on galaxy s26 ultra" src="https://cdn.mos.cms.futurecdn.net/kvmLGEA874pjyQVDihV5ac.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>If you live out in a deadspot, or regularly find yourself in one, then gaining satellite access through your carrier is not going to make up for the fact there's no cell signal. The limitations in what the satellite connection can or can't do means that it's not a true replacement for cell service in the way a full Starlink setup would be for home internet.</p><p>But this sure as heck beats being stuck with zero access to the internet. Carrier-supplied 4G may not be able to give you access to web browsers and streaming, but it keeps you hooked into the apps that you might actually need in a pinch. In short, it means that you will always be able to reach the outside world in the event that you desperately need to.</p><p>Some may not like the fact that it's getting harder and harder to disconnect, but this means that you won't be stuck in the middle of nowhere without support. The fact that satellite access still worked in my car, and loaded up Google Maps, will easily be a major boon for navigating areas with little to no cell service. Which isn't a bad deal for $4 a month (or $10 a month with T-Mobile).</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/phones/iphones/i-turned-my-iphone-screen-completely-gray-for-two-weeks-heres-how-making-it-boring-helped-me-get-my-brain-back">I turned my iPhone screen completely gray for two weeks — here's how making it boring helped me get my brain back</a></li><li><a href="https://www.tomsguide.com/phones/i-shot-the-same-25-photos-with-a-usd329-budget-phone-and-usd1-199-flagship-heres-the-results">I shot the same 25 photos with a $329 budget phone and $1,199 flagship — here's the results</a></li><li><a href="https://www.tomsguide.com/phones/i-got-sick-of-buying-cases-for-my-phones-so-i-decided-to-3d-print-them-at-home-heres-what-happened">I got sick of buying cases for my phones, so I decided to 3D print them at home — here's what happened</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Google VPN was doomed from day one – how lack of trust meant it never had a chance ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/JD2Sy3HhMvI" allowfullscreen></iframe></div></div><p><em><strong>You can watch this article as a video on </strong></em><a href="https://youtu.be/JD2Sy3HhMvI" target="_blank"><em><strong>The Privacy Lab's YouTube channel</strong></em></a><em><strong>.</strong></em></p><p>In October 2020, Google launched a virtual private network. Of course, this seemed out of character – one of the most data-hungry companies in the world whipping up a product to help people protect that exact commodity. But, on paper, Google VPN looked pretty good. It had a huge server network and because it came bundled with premium Google Drive plans, for many it was effectively "free." There were murmurings that it could even dethrone the big names that populate our guide to the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> overall. </p><p>However, in April 2024, it was announced that the VPN was <a href="https://www.tomsguide.com/computing/vpns/google-one-vpn-set-to-shut-down-later-this-year">destined for the Google graveyard</a>. By June, it was <a href="https://www.tomsguide.com/computing/vpns/vpn-by-google-for-pixel-owners-replacing-google-one-vpn">dead and buried</a>.</p><p>As <a href="https://www.zdnet.com/article/google-to-shut-down-google-one-vpn-on-june-20-here-are-some-alternatives/" target="_blank" rel="nofollow">ZDNet reported</a>, Google stated:<strong> </strong>"We're refocusing our efforts to support more in-demand features with Google One. To keep our subscription service fresh, we're discontinuing the VPN feature." In short, Google's reasoning was that people simply weren't using it.</p><p>But that was just a cover story.</p><h2 id="a-clash-of-philosophies">A clash of philosophies</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:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NNsTkUGMk96zrAhyGcpdrM" name="Google campus with logo" alt="Photograph of a large Google logo at Google's campus" src="https://cdn.mos.cms.futurecdn.net/NNsTkUGMk96zrAhyGcpdrM.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: Getty Images)</span></figcaption></figure><p>To understand Google VPN's issues, you have to look at the business model first. Effectively, Google is a data and advertising company. It makes money by tracking your searches, mapping your locations, and ultimately building a very specific profile around you to sell targeted ads.</p><p>However, VPNs are designed to stop exactly that. By encrypting your data, VPNs allow you to hide what you're doing from your internet provider, government, and any hackers on dodgy networks. By changing your IP address, they make it harder to build a profile from your activity. Naturally, people were skeptical of Google developing such a product. </p><p>To build trust, Google published white papers, open-sourced the apps, and even commissioned independent audits. For example, in its official technical white paper, <a href="https://web.archive.org/web/20230402190520/https://one.google.com/about/vpn/howitworks" target="_blank" rel="nofollow">Google laid out</a> how hard it worked to protect your data, writing:</p><p>"By employing a cryptographic blind signing step between user authentication and connecting to the VPN, we give users a stronger guarantee that their network activity can't be tied back to their identity."</p><p>Cybersecurity firm NCC Group agreed, writing in its <a href="https://www.nccgroup.com/media/1frenovo/_ncc-group-public-report-vpn-by-google-one-v10.pdf" target="_blank" rel="nofollow">public report</a> that it found the system to have "a robust implementation and a strong technical security posture."</p><p>The truth is that Google's VPN <em>was</em> very secure. But even with these stamps of approval, most of us struggled to look past the irony of asking an advertising giant to secure your web traffic. The audience looking for privacy didn't trust Google, and the audience that trusted Google didn't care about privacy.</p><h2 id="a-vpn-limited-by-design">A VPN limited by design</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:7307px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="79SFYWjmex8cFVBppJbjge" name="VPN icons" alt="VPN icons hovering above a laptop" src="https://cdn.mos.cms.futurecdn.net/79SFYWjmex8cFVBppJbjge.jpg" mos="" align="middle" fullscreen="" width="7307" height="4110" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Supatman via Shutterstock)</span></figcaption></figure><p>Perhaps more people trusted Google than I'm giving them credit for. But those that <em>did</em> use Google VPN found it was no match for established names like <a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a>, <a href="https://www.tomsguide.com/reviews/protonvpn-review">Proton VPN</a>, or <a href="https://www.tomsguide.com/reviews/mullvad-vpn-review">Mullvad</a>. It couldn't compete because it only did half the job.</p><p>Most people want their VPN to change their virtual location. That might be to access regional sites like BBC iPlayer and watch more shows on Netflix, or maybe to avoid content restrictions in countries like Russia and China. Either way, it's a core feature of any good VPN.</p><p>However, even on its paid plan, Google VPN did not let you choose a country to connect to. Instead, when it was first launched, it only allocated you an IP address in your "broad" location. In reality, that often meant connecting to a server several states away. This ended up messing with things like weather reports and proved very annoying – especially for people who didn't really understand how VPNs work.</p><p>In 2023, Google addressed this by allowing you to use a "local" IP address nearer your real location, but there was still no true location choice. This decision was an absolute dealbreaker for millions of potential customers. </p><p>What's more, the app was seriously underpowered. It lacked things like <a href="https://www.tomsguide.com/computing/vpns/what-is-a-vpn-protocol">protocol</a> switching, <a href="https://www.tomsguide.com/computing/vpns/what-is-a-dedicated-ip">dedicated IPs</a>, <a href="https://www.tomsguide.com/computing/vpns/everything-you-need-to-know-about-port-forwarding-and-how-to-make-it-work-for-you">port forwarding</a>, <a href="https://www.tomsguide.com/news/what-is-vpn-obfuscation-and-do-i-need-it">obfuscation</a>, or <a href="https://www.tomsguide.com/news/what-is-vpn-split-tunneling-and-how-does-it-work">split tunneling</a>. Plus, if you didn't have a Pixel phone, Google VPN didn’t even have a <a href="https://www.tomsguide.com/features/what-is-a-vpn-kill-switch-and-why-do-you-need-one">kill switch</a> to block internet traffic if it crashed. </p><p>In short, it was half-baked. Anyone actively looking to buy a VPN realised pretty quickly that there were so many better options out there.</p><h2 id="the-fragmented-ecosystem">The fragmented ecosystem</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="sNepDunTtPgaxfRaYsZSCj" name="Google-Pixel-10a" alt="Google Pixel 10a in hand on street corner" src="https://cdn.mos.cms.futurecdn.net/sNepDunTtPgaxfRaYsZSCj.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: Tom's Guide)</span></figcaption></figure><p>You might have noticed that there are more than a few similarities between Google's VPN and another well-known privacy tool from a Big Tech company: <a href="https://www.tomsguide.com/phones/iphones/i-pay-for-icloud-not-for-storage-but-for-this-perk-instead">Apple Private Relay</a>. Really, they are – or were – exactly the same thing: a limited VPN bundled with <a href="https://www.tomsguide.com/buying-guide/best-cloud-storage-for-photos">cloud storage</a>.</p><p>But there are a few key reasons why Google VPN failed spectacularly, and why Private Relay is still going strong. Buckle up – Google made all of this quite confusing.</p><p>There were in fact three different versions of Google VPN: Google One VPN (RIP), Google Fi Wireless VPN, and VPN by Google. The latter two still exist, both now called VPN by Google, but in reality they're two different bits of software. Notably, though, the now-dead Google One VPN was the only one available for <em>anyone</em> to buy. The others require Google hardware to use them.</p><p>Coverage at the time shows the disconnect. Initially, Google stated that it was shuttering the VPN because "<a href="https://www.tomsguide.com/computing/vpns/google-one-vpn-set-to-shut-down-later-this-year">people weren't using it</a>." However, it was also announced that the <a href="https://www.tomsguide.com/computing/vpns/vpn-by-google-for-pixel-owners-replacing-google-one-vpn">VPN would live on</a> in the form of the Pixel VPN. And that's not to mention Google Fi.</p><p>Confusing, right? Well, it doesn't stop there. If we consider each product separately, they all appear to have different purposes and different goals – and none seem properly integrated. Let's quickly have a look at these:</p><ul><li><strong>Google One VPN:</strong> This is the one that died, the one I covered the most here at Tom's Guide, and probably the most-used version at the time. It was used as an incentive to convince users to buy more cloud storage, and the only version available without the purchase of a Google hardware product.</li><li><strong>Google Fi Wireless VPN:</strong> This VPN's purpose was to convince customers to switch their phone lines over to Google's cellular network, and was available with a Google Fi subscription.</li><li><strong>Pixel VPN: </strong>The Pixel VPN's goal was to increase physical phone sales. Essentially, Google wanted to offer perks to compete with the iPhone. This version was only available with the purchase of a Pixel 7 or newer phone.</li></ul><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:66.67%;"><img id="Mi5yorDM6vJfkbFWJ7UyPF" name="Google .jpg" alt="Google" src="https://cdn.mos.cms.futurecdn.net/Mi5yorDM6vJfkbFWJ7UyPF.jpg" mos="" align="middle" fullscreen="" width="3000" height="2000" 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>Although there's no definitive proof, it appears that each team responsible for these three products was totally separate from the other. The three VPNs may even have run on completely different infrastructures.</p><p>Here's a clue that points that way: Google claims it shut down Google One VPN due to low usage – but this was arguably the most-used version of the three. If all three VPNs shared the same servers, why kill the most popular one for being underused, while Fi and Pixel carried on unaffected? It suggests, at the very least, that Google One VPN was built and run with little coordination with Google's other VPN ventures.</p><p>Even if we avoid conjecture entirely, the fact remains that in early 2024 you could own a Pixel phone, run it on Google Fi, and pay for a Google One cloud storage – meaning you'd have three different Google-branded VPNs competing for control over the exact same traffic.</p><p>Suffice to say, it seems Google wasn't quite as organised as you might expect one of the richest companies in the world to be.</p><h2 id="the-pivot-to-ai">The pivot to AI</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:5000px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="94aMizYXEPSAu4AWXycfi" name="Google Gemini displayed on a Pixel phone" alt="Google Gemini displayed on a Pixel phone, resting on a laptop" src="https://cdn.mos.cms.futurecdn.net/94aMizYXEPSAu4AWXycfi.jpg" mos="" align="middle" fullscreen="" width="5000" height="2812" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Running a VPN is expensive. Thousands of servers in dozens of countries, tip-top security, and routing huge amounts of data takes a lot of cash.</p><p>For a company like NordVPN or ExpressVPN, these costs are justified because it's their entire business. For Google, it was a expense that wasn’t generating any revenue. No one was subscribing to Google One <em>just</em> for the VPN – it was just a "perk" that came with their cloud storage, which they probably didn't use.</p><p>Then, in early 2024, Google changed tack. AI was here. Google's CEO, Sundar Pichai, celebrated a massive milestone on X, but his words betrayed the future of Google:</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/1755988540037730738"><p lang="en" dir="ltr">We just crossed 100M Google One subscribers! Looking forward to building on that momentum with our new AI Premium Plan (launched yesterday) offering AI features like Gemini Advanced, plus Gemini in Gmail, Docs + more coming soon. https://t.co/m7zAVop7P6 pic.twitter.com/sMdwJeq0iU<a href="https://twitter.com/cantworkitout/status/1755988540037730738">February 9, 2024</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The writing was on the wall. The future of Google's subscription business didn't include tools like a VPN. It was going to be driven by artificial intelligence – and there was no reason to maintain an unpopular product that didn't line the coffers.</p><h2 id="bottom-line-2">Bottom line</h2><p>Ultimately, the collapse of Google VPN proves that privacy can't be treated as an afterthought. A successful VPN needs more than solid engineering – it demands an overall philosophy that isn’t compromised by a business model based around advertising and data collection. Google didn't fail because it lacked the technology. It failed because it lacked the trust.</p><p>Then, when the AI boom hit, the VPN was first on the chopping block. Google could no longer justify maintaining an expensive and underused infrastructure that actively protected your data – the commodity most valued by the tech giant. By killing the VPN, it cleared the path for Gemini and showed us exactly where Big Tech’s priorities lie.</p><p>But, for us, this was a win. Consumers sent a message that they refused to compromise on trust just for the convenience of a cheap bundle. You voted with your wallets, and Google had to listen.</p><p><em>We have contacted Google for comment. We await their reply.</em></p><div data-widget-type="multimodelreview" data-model-name="NordVPN,Surfshark,Proton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:1. Accessing a service from another country (subject to the terms and conditions of that service).2. Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/google-vpn-was-doomed-from-day-one-how-lack-of-trust-meant-it-never-had-a-chance</link>
                                                                            <description>
                            <![CDATA[ Google VPN was the giant's first foray into personal privacy – and it ended up its last. This is the story of why Google's VPN was one of its greatest failures. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Eqd26Z37s2KoTryjeiK9SN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8jp3c43JSu9jQHgRtRbcuZ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 29 Jul 2026 11:47:28 +0000</pubDate>                                                                                                                                <updated>Wed, 29 Jul 2026 11:51:08 +0000</updated>
                                                                                                                                            <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Mo Harber-Lamond ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/e5z29XBdy9KTwJ4GsGoUsH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;As VPN editor at Tom&#039;s Guide, Mo manages the three-strong VPN team and oversees a busy weekly content schedule of VPN, privacy, and cybersecurity news, reviews, and advice. He&#039;s a daily VPN user himself – typically NordVPN or ExpressVPN – and a regular reviewer of all the leading services: you’ll find his latest recommendations in Tom’s Guide’s &lt;a href=&quot;https://www.tomsguide.com/best-picks/best-vpn&quot;&gt;best VPN&lt;/a&gt; and &lt;a href=&quot;https://www.tomsguide.com/best-picks/best-free-vpn&quot;&gt;best free VPN&lt;/a&gt; guides. &lt;/p&gt;&lt;p&gt;Mo is committed to helping people choose the right VPN for their needs, and takes a meticulous, data-driven approach to Tom’s Guide’s testing processes to ensure that he and his team can make confident VPN recommendations that are grounded in thorough, real-world testing. &lt;/p&gt;&lt;p&gt;Whether he’s analyzing advanced privacy features like obfuscation and split tunneling, connection speeds across different protocols such as WireGuard and OpenVPN, or compatibility across different devices, Mo has clocked up hundreds of hours over the last half-decade interrogating the claims made by leading and lesser-known VPN providers.&lt;/p&gt;&lt;p&gt;Mo&#039;s newest venture is launching &lt;a href=&quot;https://www.youtube.com/@The.PrivacyLab&quot; target=&quot;_blank&quot;&gt;The Privacy Lab&lt;/a&gt; on YouTube. Focusing on general digital privacy – including VPNs, of course – The Privacy Lab aims to make staying safer online more accessible. Expect explainers, recommendations, and longer deep-dives into important privacy stories.&lt;/p&gt;&lt;p&gt;Outside of his role at Tom’s Guide, Mo has contributed to a number of leading tech publications on VPN and privacy issues, including &lt;a href=&quot;https://www.techradar.com/author/mo-harber-lamond&quot;&gt;TechRadar&lt;/a&gt;, &lt;a href=&quot;https://www.whathifi.com/author/mo-harber-lamond&quot;&gt;What Hi-Fi?&lt;/a&gt; and &lt;a href=&quot;https://www.t3.com/author/mo-harber-lamond&quot;&gt;T3&lt;/a&gt;, developing his position as a trusted voice in the field. &lt;/p&gt;&lt;p&gt;He graduated with First Class honours in English Literature and Creative Writing from Manchester University in the UK, and before joining the Tom&#039;s Guide team, worked for several years in creative and editorial writing. Alongside this, he side-hustled as a proofreader and copy editor – honing his skills in communicating complex information clearly – all the while gaining notoriety (if not success) with his band in his homeland of Cornwall.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/8jp3c43JSu9jQHgRtRbcuZ-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Large google logo sign outside a building]]></media:description>                                                            <media:text><![CDATA[Large google logo sign outside a building]]></media:text>
                                <media:title type="plain"><![CDATA[Large google logo sign outside a building]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8jp3c43JSu9jQHgRtRbcuZ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/JD2Sy3HhMvI" allowfullscreen></iframe></div></div><p><em><strong>You can watch this article as a video on </strong></em><a href="https://youtu.be/JD2Sy3HhMvI" target="_blank"><em><strong>The Privacy Lab's YouTube channel</strong></em></a><em><strong>.</strong></em></p><p>In October 2020, Google launched a virtual private network. Of course, this seemed out of character – one of the most data-hungry companies in the world whipping up a product to help people protect that exact commodity. But, on paper, Google VPN looked pretty good. It had a huge server network and because it came bundled with premium Google Drive plans, for many it was effectively "free." There were murmurings that it could even dethrone the big names that populate our guide to the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> overall. </p><p>However, in April 2024, it was announced that the VPN was <a href="https://www.tomsguide.com/computing/vpns/google-one-vpn-set-to-shut-down-later-this-year">destined for the Google graveyard</a>. By June, it was <a href="https://www.tomsguide.com/computing/vpns/vpn-by-google-for-pixel-owners-replacing-google-one-vpn">dead and buried</a>.</p><p>As <a href="https://www.zdnet.com/article/google-to-shut-down-google-one-vpn-on-june-20-here-are-some-alternatives/" target="_blank" rel="nofollow">ZDNet reported</a>, Google stated:<strong> </strong>"We're refocusing our efforts to support more in-demand features with Google One. To keep our subscription service fresh, we're discontinuing the VPN feature." In short, Google's reasoning was that people simply weren't using it.</p><p>But that was just a cover story.</p><h2 id="a-clash-of-philosophies">A clash of philosophies</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:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NNsTkUGMk96zrAhyGcpdrM" name="Google campus with logo" alt="Photograph of a large Google logo at Google's campus" src="https://cdn.mos.cms.futurecdn.net/NNsTkUGMk96zrAhyGcpdrM.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: Getty Images)</span></figcaption></figure><p>To understand Google VPN's issues, you have to look at the business model first. Effectively, Google is a data and advertising company. It makes money by tracking your searches, mapping your locations, and ultimately building a very specific profile around you to sell targeted ads.</p><p>However, VPNs are designed to stop exactly that. By encrypting your data, VPNs allow you to hide what you're doing from your internet provider, government, and any hackers on dodgy networks. By changing your IP address, they make it harder to build a profile from your activity. Naturally, people were skeptical of Google developing such a product. </p><p>To build trust, Google published white papers, open-sourced the apps, and even commissioned independent audits. For example, in its official technical white paper, <a href="https://web.archive.org/web/20230402190520/https://one.google.com/about/vpn/howitworks" target="_blank" rel="nofollow">Google laid out</a> how hard it worked to protect your data, writing:</p><p>"By employing a cryptographic blind signing step between user authentication and connecting to the VPN, we give users a stronger guarantee that their network activity can't be tied back to their identity."</p><p>Cybersecurity firm NCC Group agreed, writing in its <a href="https://www.nccgroup.com/media/1frenovo/_ncc-group-public-report-vpn-by-google-one-v10.pdf" target="_blank" rel="nofollow">public report</a> that it found the system to have "a robust implementation and a strong technical security posture."</p><p>The truth is that Google's VPN <em>was</em> very secure. But even with these stamps of approval, most of us struggled to look past the irony of asking an advertising giant to secure your web traffic. The audience looking for privacy didn't trust Google, and the audience that trusted Google didn't care about privacy.</p><h2 id="a-vpn-limited-by-design">A VPN limited by design</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:7307px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="79SFYWjmex8cFVBppJbjge" name="VPN icons" alt="VPN icons hovering above a laptop" src="https://cdn.mos.cms.futurecdn.net/79SFYWjmex8cFVBppJbjge.jpg" mos="" align="middle" fullscreen="" width="7307" height="4110" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Supatman via Shutterstock)</span></figcaption></figure><p>Perhaps more people trusted Google than I'm giving them credit for. But those that <em>did</em> use Google VPN found it was no match for established names like <a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a>, <a href="https://www.tomsguide.com/reviews/protonvpn-review">Proton VPN</a>, or <a href="https://www.tomsguide.com/reviews/mullvad-vpn-review">Mullvad</a>. It couldn't compete because it only did half the job.</p><p>Most people want their VPN to change their virtual location. That might be to access regional sites like BBC iPlayer and watch more shows on Netflix, or maybe to avoid content restrictions in countries like Russia and China. Either way, it's a core feature of any good VPN.</p><p>However, even on its paid plan, Google VPN did not let you choose a country to connect to. Instead, when it was first launched, it only allocated you an IP address in your "broad" location. In reality, that often meant connecting to a server several states away. This ended up messing with things like weather reports and proved very annoying – especially for people who didn't really understand how VPNs work.</p><p>In 2023, Google addressed this by allowing you to use a "local" IP address nearer your real location, but there was still no true location choice. This decision was an absolute dealbreaker for millions of potential customers. </p><p>What's more, the app was seriously underpowered. It lacked things like <a href="https://www.tomsguide.com/computing/vpns/what-is-a-vpn-protocol">protocol</a> switching, <a href="https://www.tomsguide.com/computing/vpns/what-is-a-dedicated-ip">dedicated IPs</a>, <a href="https://www.tomsguide.com/computing/vpns/everything-you-need-to-know-about-port-forwarding-and-how-to-make-it-work-for-you">port forwarding</a>, <a href="https://www.tomsguide.com/news/what-is-vpn-obfuscation-and-do-i-need-it">obfuscation</a>, or <a href="https://www.tomsguide.com/news/what-is-vpn-split-tunneling-and-how-does-it-work">split tunneling</a>. Plus, if you didn't have a Pixel phone, Google VPN didn’t even have a <a href="https://www.tomsguide.com/features/what-is-a-vpn-kill-switch-and-why-do-you-need-one">kill switch</a> to block internet traffic if it crashed. </p><p>In short, it was half-baked. Anyone actively looking to buy a VPN realised pretty quickly that there were so many better options out there.</p><h2 id="the-fragmented-ecosystem">The fragmented ecosystem</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="sNepDunTtPgaxfRaYsZSCj" name="Google-Pixel-10a" alt="Google Pixel 10a in hand on street corner" src="https://cdn.mos.cms.futurecdn.net/sNepDunTtPgaxfRaYsZSCj.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: Tom's Guide)</span></figcaption></figure><p>You might have noticed that there are more than a few similarities between Google's VPN and another well-known privacy tool from a Big Tech company: <a href="https://www.tomsguide.com/phones/iphones/i-pay-for-icloud-not-for-storage-but-for-this-perk-instead">Apple Private Relay</a>. Really, they are – or were – exactly the same thing: a limited VPN bundled with <a href="https://www.tomsguide.com/buying-guide/best-cloud-storage-for-photos">cloud storage</a>.</p><p>But there are a few key reasons why Google VPN failed spectacularly, and why Private Relay is still going strong. Buckle up – Google made all of this quite confusing.</p><p>There were in fact three different versions of Google VPN: Google One VPN (RIP), Google Fi Wireless VPN, and VPN by Google. The latter two still exist, both now called VPN by Google, but in reality they're two different bits of software. Notably, though, the now-dead Google One VPN was the only one available for <em>anyone</em> to buy. The others require Google hardware to use them.</p><p>Coverage at the time shows the disconnect. Initially, Google stated that it was shuttering the VPN because "<a href="https://www.tomsguide.com/computing/vpns/google-one-vpn-set-to-shut-down-later-this-year">people weren't using it</a>." However, it was also announced that the <a href="https://www.tomsguide.com/computing/vpns/vpn-by-google-for-pixel-owners-replacing-google-one-vpn">VPN would live on</a> in the form of the Pixel VPN. And that's not to mention Google Fi.</p><p>Confusing, right? Well, it doesn't stop there. If we consider each product separately, they all appear to have different purposes and different goals – and none seem properly integrated. Let's quickly have a look at these:</p><ul><li><strong>Google One VPN:</strong> This is the one that died, the one I covered the most here at Tom's Guide, and probably the most-used version at the time. It was used as an incentive to convince users to buy more cloud storage, and the only version available without the purchase of a Google hardware product.</li><li><strong>Google Fi Wireless VPN:</strong> This VPN's purpose was to convince customers to switch their phone lines over to Google's cellular network, and was available with a Google Fi subscription.</li><li><strong>Pixel VPN: </strong>The Pixel VPN's goal was to increase physical phone sales. Essentially, Google wanted to offer perks to compete with the iPhone. This version was only available with the purchase of a Pixel 7 or newer phone.</li></ul><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:66.67%;"><img id="Mi5yorDM6vJfkbFWJ7UyPF" name="Google .jpg" alt="Google" src="https://cdn.mos.cms.futurecdn.net/Mi5yorDM6vJfkbFWJ7UyPF.jpg" mos="" align="middle" fullscreen="" width="3000" height="2000" 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>Although there's no definitive proof, it appears that each team responsible for these three products was totally separate from the other. The three VPNs may even have run on completely different infrastructures.</p><p>Here's a clue that points that way: Google claims it shut down Google One VPN due to low usage – but this was arguably the most-used version of the three. If all three VPNs shared the same servers, why kill the most popular one for being underused, while Fi and Pixel carried on unaffected? It suggests, at the very least, that Google One VPN was built and run with little coordination with Google's other VPN ventures.</p><p>Even if we avoid conjecture entirely, the fact remains that in early 2024 you could own a Pixel phone, run it on Google Fi, and pay for a Google One cloud storage – meaning you'd have three different Google-branded VPNs competing for control over the exact same traffic.</p><p>Suffice to say, it seems Google wasn't quite as organised as you might expect one of the richest companies in the world to be.</p><h2 id="the-pivot-to-ai">The pivot to AI</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:5000px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="94aMizYXEPSAu4AWXycfi" name="Google Gemini displayed on a Pixel phone" alt="Google Gemini displayed on a Pixel phone, resting on a laptop" src="https://cdn.mos.cms.futurecdn.net/94aMizYXEPSAu4AWXycfi.jpg" mos="" align="middle" fullscreen="" width="5000" height="2812" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Running a VPN is expensive. Thousands of servers in dozens of countries, tip-top security, and routing huge amounts of data takes a lot of cash.</p><p>For a company like NordVPN or ExpressVPN, these costs are justified because it's their entire business. For Google, it was a expense that wasn’t generating any revenue. No one was subscribing to Google One <em>just</em> for the VPN – it was just a "perk" that came with their cloud storage, which they probably didn't use.</p><p>Then, in early 2024, Google changed tack. AI was here. Google's CEO, Sundar Pichai, celebrated a massive milestone on X, but his words betrayed the future of Google:</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/1755988540037730738"><p lang="en" dir="ltr">We just crossed 100M Google One subscribers! Looking forward to building on that momentum with our new AI Premium Plan (launched yesterday) offering AI features like Gemini Advanced, plus Gemini in Gmail, Docs + more coming soon. https://t.co/m7zAVop7P6 pic.twitter.com/sMdwJeq0iU<a href="https://twitter.com/cantworkitout/status/1755988540037730738">February 9, 2024</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The writing was on the wall. The future of Google's subscription business didn't include tools like a VPN. It was going to be driven by artificial intelligence – and there was no reason to maintain an unpopular product that didn't line the coffers.</p><h2 id="bottom-line-2">Bottom line</h2><p>Ultimately, the collapse of Google VPN proves that privacy can't be treated as an afterthought. A successful VPN needs more than solid engineering – it demands an overall philosophy that isn’t compromised by a business model based around advertising and data collection. Google didn't fail because it lacked the technology. It failed because it lacked the trust.</p><p>Then, when the AI boom hit, the VPN was first on the chopping block. Google could no longer justify maintaining an expensive and underused infrastructure that actively protected your data – the commodity most valued by the tech giant. By killing the VPN, it cleared the path for Gemini and showed us exactly where Big Tech’s priorities lie.</p><p>But, for us, this was a win. Consumers sent a message that they refused to compromise on trust just for the convenience of a cheap bundle. You voted with your wallets, and Google had to listen.</p><p><em>We have contacted Google for comment. We await their reply.</em></p><div data-widget-type="multimodelreview" data-model-name="NordVPN,Surfshark,Proton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:1. Accessing a service from another country (subject to the terms and conditions of that service).2. Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Instagram was down — Live updates on massive outage affecting DMs ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p>Thousands of users flocked to <a href="https://downdetector.com/status/instagram/" target="_blank">Downdetector</a> today, reporting problems with the popular social media platform Instagram. When the outage first started, we saw a massive spike in reports, with more than 2,000, which is significant so early in the downtime.</p><p>Reports reached a high of around 4,000 today. As far as we can tell, Meta never acknowledged the outage on its <a href="https://metastatus.com/" target="_blank">status page</a>. Though it appears that the issue with Instagram mostly extended to DMs, which weren't going through. </p><p>The outage lasted around 2 hours starting at 6:30 am specific.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoD2zX"></div>                            </div>                            <script src="https://kwizly.com/embed/OoD2zX.js" async></script></div><div class="live-content"><time datetime="2026-07-22T14:03:45+00:00">July 22, 2026 – 10:03 AM</time><h2 id="the-reports-are-rolling-in">The reports are rolling in</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:1440px;"><p class="vanilla-image-block" style="padding-top:57.08%;"><img id="NRgiarJU3WM3FdCrovdAGo" name="Screenshot 2026-07-22 at 10.02.23 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/NRgiarJU3WM3FdCrovdAGo.png" mos="" align="middle" fullscreen="" width="1440" height="822" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>We're seeing a massive spike in Instagram reports on <a href="https://downdetector.com/status/instagram/" target="_blank">Downdetector</a>, with more than 2,500 people jumping to the outage-reporting website to say something is wrong with the beloved social network.</p><p>We're also seeing smaller spikes to other Meta-owned social networks, with Messenger sitting at around <a href="https://downdetector.com/status/facebook-messenger/" target="_blank">500 reports</a> and <a href="https://downdetector.com/status/facebook/" target="_blank">Facebook at 300</a>. </p></div><div class="live-content"><time datetime="2026-07-22T14:10:03+00:00">July 22, 2026 – 10:10 AM</time><h2 id="meta-across-the-board">Meta across the board</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:2220px;"><p class="vanilla-image-block" style="padding-top:24.05%;"><img id="APd6ZvuA8TDUFEVzMrtrd" name="Screenshot 2026-07-22 at 10.08.38 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/APd6ZvuA8TDUFEVzMrtrd.png" mos="" align="middle" fullscreen="" width="2220" height="534" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>It's all Meta at the top of Downdetector, but it's a bit deceiving, as Instagram is the only one with more than 1,000 reports. The other Meta services are worth monitoring, but they're lower.</p></div><div class="live-content"><time datetime="2026-07-22T14:12:38+00:00">July 22, 2026 – 10:12 AM</time><h2 id="dms-appear-the-be-the-problem">DMs appear the be the problem</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:2220px;"><p class="vanilla-image-block" style="padding-top:20.81%;"><img id="HWiHj2jBFRnpQEVinuaqxF" name="Screenshot 2026-07-22 at 10.11.04 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/HWiHj2jBFRnpQEVinuaqxF.png" mos="" align="middle" fullscreen="" width="2220" height="462" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Based on the comments section on Downdetector, it seems that Instagram DMs are the main issue, which could explain why we're also seeing a spike in reports to Messenger. If you're struggling to send Direct Messages on Instagram, know you're not alone, as it seems to be a fairly widespread issue.</p></div><div class="live-content"><time datetime="2026-07-22T14:17:05+00:00">July 22, 2026 – 10:17 AM</time><h2 id="more-than-3-000-reports">More than 3,000 reports</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:1366px;"><p class="vanilla-image-block" style="padding-top:36.90%;"><img id="kwpyT3Xmq7J8BmABnHgNje" name="Screenshot 2026-07-22 at 10.15.23 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/kwpyT3Xmq7J8BmABnHgNje.png" mos="" align="middle" fullscreen="" width="1366" height="504" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Instagram has gone past 3,000 reports for the first time since the outage began. Clearly, more users are logging in to find that they can't send direct messages, leaving them disappointed and forced to jump on Downdetector to tell the world.</p><p>Hopefully, this is just a quick outage that Meta resolves ASAP, but we'll keep you posted as it develops.</p></div><div class="live-content"><time datetime="2026-07-22T14:24:25+00:00">July 22, 2026 – 10:24 AM</time><h2 id="messenger-still-climbing">Messenger still climbing</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:1366px;"><p class="vanilla-image-block" style="padding-top:36.90%;"><img id="tcLbDSVmZVbw4bb9g9vig" name="Screenshot 2026-07-22 at 10.23.06 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/tcLbDSVmZVbw4bb9g9vig.png" mos="" align="middle" fullscreen="" width="1366" height="504" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>While the predominant user reports seem to be about Instagram direct messages, we're also seeing Meta's main Messenger app spike, surpassing 1,000 reports. </p></div><div class="live-content"><time datetime="2026-07-22T14:38:02+00:00">July 22, 2026 – 10:38 AM</time><h2 id="no-known-issues">'No Known Issues'</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:1944px;"><p class="vanilla-image-block" style="padding-top:39.40%;"><img id="wJS5cLUTuet2WcZ37aCmpK" name="Screenshot 2026-07-22 at 10.33.50 AM" alt="Meta status page" src="https://cdn.mos.cms.futurecdn.net/wJS5cLUTuet2WcZ37aCmpK.png" mos="" align="middle" fullscreen="" width="1944" height="766" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Meta)</span></figcaption></figure><p>Over on Meta's status page, everything is still showing as "No Known Issues." While it's clear that something is wrong based on the raw number of reports, for whatever reason, Meta isn't publicly saying anything. </p><p>We've reached out to the social network and will update if we hear back.</p></div><div class="live-content"><time datetime="2026-07-22T14:49:13+00:00">July 22, 2026 – 10:49 AM</time><h2 id="leveling-off">Leveling off</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:1944px;"><p class="vanilla-image-block" style="padding-top:39.40%;"><img id="aTwdyyxwEUejfA9RWRxAEQ" name="Screenshot 2026-07-22 at 10.47.51 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/aTwdyyxwEUejfA9RWRxAEQ.png" mos="" align="middle" fullscreen="" width="1944" height="766" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>For the first time, Downdetector reports on Instagram have updated without a sizable increase. Instead, it went up by less than 100, creating the first leveling of we've seen since the outage started.</p></div><div class="live-content"><time datetime="2026-07-22T15:03:20+00:00">July 22, 2026 – 11:03 AM</time><h2 id="my-experience">My experience</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:4972px;"><p class="vanilla-image-block" style="padding-top:65.75%;"><img id="YJ7gXp3cZmhj4Tbm2ByWWU" name="GettyImages-1039914532.jpg" alt="Instagram hide likes" src="https://cdn.mos.cms.futurecdn.net/YJ7gXp3cZmhj4Tbm2ByWWU.jpg" mos="" align="middle" fullscreen="" width="4972" height="3269" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Aytac Unal/Anadolu Agency/Getty Images)</span></figcaption></figure><p>I've been playing with Instagram DMs on and off between posts, and it seems to still be having problems. When I send a message, it doesn't seem to actually get delivered to the recipient; instead, it sits in the thread unsent. Additionally, when I scroll up in a thread, I'm seeing an unable to load older messages error.</p><p>While some people are saying it's working again, I'm definitely not among those folks, as I'm still having problems. Clearly, Instagram isn't fully operational yet.</p></div><div class="live-content"><time datetime="2026-07-22T15:33:15+00:00">July 22, 2026 – 11:33 AM</time><h2 id="finally-a-big-drop">Finally, a big drop</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:1944px;"><p class="vanilla-image-block" style="padding-top:39.40%;"><img id="BC8S2FjJEt8TViRVeEjgCN" name="Screenshot 2026-07-22 at 11.31.31 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/BC8S2FjJEt8TViRVeEjgCN.png" mos="" align="middle" fullscreen="" width="1944" height="766" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>For the first time since the outage began, we're finally seeing a big drop in reports, with Instagram falling to 2,600. This is more than 1,000 reports below the peak, which is a good sign that things are coming back to normal.</p><p>For what it's worth, I was able to send a direct message and receive a response on Instagram, so the trouble seems to be resolved for me.</p></div><div class="live-content"><time datetime="2026-07-22T15:56:11+00:00">July 22, 2026 – 11:56 AM</time><h2 id="reports-are-in-a-steady-decline">Reports are in a steady decline</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="jPZiwUxvsgL5bSjBsCdCvB" name="Instagram.shutterstock_2620925129" alt="Instagram app logo on a phone display" src="https://cdn.mos.cms.futurecdn.net/jPZiwUxvsgL5bSjBsCdCvB.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: Shutterstock)</span></figcaption></figure><p>Since I last looked at Down Detector, reports have steadily declined dropping from around 3200 to now just under 400. </p><p>We're probably in the clear as the issues resolve but I'll keep an eye on things just a bit longer in case it flares up again. </p></div><div class="live-content"><time datetime="2026-07-22T16:24:48+00:00">July 22, 2026 – 12:24 PM</time><h2 id="calling-it-2">Calling it</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:3405px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="J4EEHYGRdoGNKryBLi9JEf" name="GettyImages-1086354750.jpg" alt="Instagram" src="https://cdn.mos.cms.futurecdn.net/J4EEHYGRdoGNKryBLi9JEf.jpg" mos="" align="middle" fullscreen="" width="3405" height="2270" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: aap Arriens/NurPhoto via Getty Images)</span></figcaption></figure><p>With reports well under 250, we're calling this outage. It doesn't appear that things will flare up again. </p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/news/live/instagram-down-outage-live-updates-7-22-26</link>
                                                                            <description>
                            <![CDATA[ There seems to be an issue with Instagram, as users are reporting problems on the popular social network. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">72rBddB5zBxd3LVHmMNfJ3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jPZiwUxvsgL5bSjBsCdCvB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 22 Jul 2026 14:04:04 +0000</pubDate>                                                                                                                                <updated>Wed, 22 Jul 2026 16:24:51 +0000</updated>
                                                                                                                                            <category><![CDATA[Social Media]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ dave.leclair@futurenet.com (Dave LeClair) ]]></author>                    <dc:creator><![CDATA[ Dave LeClair ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/fyx7qYdxPMTNBhdnMfNmaB.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave LeClair is the Managing News Editor for Tom&#039;s Guide, keeping his finger on the pulse of all things technology. He loves taking the complicated happenings in the tech world and explaining why they matter. Whether Apple is announcing the next big thing in the mobile space or a small startup advancing generative AI, Dave will apply his experience to help you figure out what&#039;s happening and why it&#039;s relevant to your life.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Before Tom&#039;s Guide, Dave worked for publications like PCMag, Pocket-lint, MUO, How-To Geek, Digital Trends, and others. He started writing about technology professionally for MUO in 2011 and hasn&#039;t looked back since. In addition to news, you can find reviews, how-to pieces, shopping guides, and many other types of content with Dave&#039;s name attached.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jPZiwUxvsgL5bSjBsCdCvB-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Instagram app logo on a phone display]]></media:description>                                                            <media:text><![CDATA[Instagram app logo on a phone display]]></media:text>
                                <media:title type="plain"><![CDATA[Instagram app logo on a phone display]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jPZiwUxvsgL5bSjBsCdCvB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p>Thousands of users flocked to <a href="https://downdetector.com/status/instagram/" target="_blank">Downdetector</a> today, reporting problems with the popular social media platform Instagram. When the outage first started, we saw a massive spike in reports, with more than 2,000, which is significant so early in the downtime.</p><p>Reports reached a high of around 4,000 today. As far as we can tell, Meta never acknowledged the outage on its <a href="https://metastatus.com/" target="_blank">status page</a>. Though it appears that the issue with Instagram mostly extended to DMs, which weren't going through. </p><p>The outage lasted around 2 hours starting at 6:30 am specific.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoD2zX"></div>                            </div>                            <script src="https://kwizly.com/embed/OoD2zX.js" async></script></div><div class="live-content"><time datetime="2026-07-22T14:03:45+00:00">July 22, 2026 – 10:03 AM</time><h2 id="the-reports-are-rolling-in">The reports are rolling in</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:1440px;"><p class="vanilla-image-block" style="padding-top:57.08%;"><img id="NRgiarJU3WM3FdCrovdAGo" name="Screenshot 2026-07-22 at 10.02.23 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/NRgiarJU3WM3FdCrovdAGo.png" mos="" align="middle" fullscreen="" width="1440" height="822" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>We're seeing a massive spike in Instagram reports on <a href="https://downdetector.com/status/instagram/" target="_blank">Downdetector</a>, with more than 2,500 people jumping to the outage-reporting website to say something is wrong with the beloved social network.</p><p>We're also seeing smaller spikes to other Meta-owned social networks, with Messenger sitting at around <a href="https://downdetector.com/status/facebook-messenger/" target="_blank">500 reports</a> and <a href="https://downdetector.com/status/facebook/" target="_blank">Facebook at 300</a>. </p></div><div class="live-content"><time datetime="2026-07-22T14:10:03+00:00">July 22, 2026 – 10:10 AM</time><h2 id="meta-across-the-board">Meta across the board</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:2220px;"><p class="vanilla-image-block" style="padding-top:24.05%;"><img id="APd6ZvuA8TDUFEVzMrtrd" name="Screenshot 2026-07-22 at 10.08.38 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/APd6ZvuA8TDUFEVzMrtrd.png" mos="" align="middle" fullscreen="" width="2220" height="534" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>It's all Meta at the top of Downdetector, but it's a bit deceiving, as Instagram is the only one with more than 1,000 reports. The other Meta services are worth monitoring, but they're lower.</p></div><div class="live-content"><time datetime="2026-07-22T14:12:38+00:00">July 22, 2026 – 10:12 AM</time><h2 id="dms-appear-the-be-the-problem">DMs appear the be the problem</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:2220px;"><p class="vanilla-image-block" style="padding-top:20.81%;"><img id="HWiHj2jBFRnpQEVinuaqxF" name="Screenshot 2026-07-22 at 10.11.04 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/HWiHj2jBFRnpQEVinuaqxF.png" mos="" align="middle" fullscreen="" width="2220" height="462" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Based on the comments section on Downdetector, it seems that Instagram DMs are the main issue, which could explain why we're also seeing a spike in reports to Messenger. If you're struggling to send Direct Messages on Instagram, know you're not alone, as it seems to be a fairly widespread issue.</p></div><div class="live-content"><time datetime="2026-07-22T14:17:05+00:00">July 22, 2026 – 10:17 AM</time><h2 id="more-than-3-000-reports">More than 3,000 reports</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:1366px;"><p class="vanilla-image-block" style="padding-top:36.90%;"><img id="kwpyT3Xmq7J8BmABnHgNje" name="Screenshot 2026-07-22 at 10.15.23 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/kwpyT3Xmq7J8BmABnHgNje.png" mos="" align="middle" fullscreen="" width="1366" height="504" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Instagram has gone past 3,000 reports for the first time since the outage began. Clearly, more users are logging in to find that they can't send direct messages, leaving them disappointed and forced to jump on Downdetector to tell the world.</p><p>Hopefully, this is just a quick outage that Meta resolves ASAP, but we'll keep you posted as it develops.</p></div><div class="live-content"><time datetime="2026-07-22T14:24:25+00:00">July 22, 2026 – 10:24 AM</time><h2 id="messenger-still-climbing">Messenger still climbing</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:1366px;"><p class="vanilla-image-block" style="padding-top:36.90%;"><img id="tcLbDSVmZVbw4bb9g9vig" name="Screenshot 2026-07-22 at 10.23.06 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/tcLbDSVmZVbw4bb9g9vig.png" mos="" align="middle" fullscreen="" width="1366" height="504" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>While the predominant user reports seem to be about Instagram direct messages, we're also seeing Meta's main Messenger app spike, surpassing 1,000 reports. </p></div><div class="live-content"><time datetime="2026-07-22T14:38:02+00:00">July 22, 2026 – 10:38 AM</time><h2 id="no-known-issues">'No Known Issues'</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:1944px;"><p class="vanilla-image-block" style="padding-top:39.40%;"><img id="wJS5cLUTuet2WcZ37aCmpK" name="Screenshot 2026-07-22 at 10.33.50 AM" alt="Meta status page" src="https://cdn.mos.cms.futurecdn.net/wJS5cLUTuet2WcZ37aCmpK.png" mos="" align="middle" fullscreen="" width="1944" height="766" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Meta)</span></figcaption></figure><p>Over on Meta's status page, everything is still showing as "No Known Issues." While it's clear that something is wrong based on the raw number of reports, for whatever reason, Meta isn't publicly saying anything. </p><p>We've reached out to the social network and will update if we hear back.</p></div><div class="live-content"><time datetime="2026-07-22T14:49:13+00:00">July 22, 2026 – 10:49 AM</time><h2 id="leveling-off">Leveling off</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:1944px;"><p class="vanilla-image-block" style="padding-top:39.40%;"><img id="aTwdyyxwEUejfA9RWRxAEQ" name="Screenshot 2026-07-22 at 10.47.51 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/aTwdyyxwEUejfA9RWRxAEQ.png" mos="" align="middle" fullscreen="" width="1944" height="766" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>For the first time, Downdetector reports on Instagram have updated without a sizable increase. Instead, it went up by less than 100, creating the first leveling of we've seen since the outage started.</p></div><div class="live-content"><time datetime="2026-07-22T15:03:20+00:00">July 22, 2026 – 11:03 AM</time><h2 id="my-experience">My experience</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:4972px;"><p class="vanilla-image-block" style="padding-top:65.75%;"><img id="YJ7gXp3cZmhj4Tbm2ByWWU" name="GettyImages-1039914532.jpg" alt="Instagram hide likes" src="https://cdn.mos.cms.futurecdn.net/YJ7gXp3cZmhj4Tbm2ByWWU.jpg" mos="" align="middle" fullscreen="" width="4972" height="3269" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Aytac Unal/Anadolu Agency/Getty Images)</span></figcaption></figure><p>I've been playing with Instagram DMs on and off between posts, and it seems to still be having problems. When I send a message, it doesn't seem to actually get delivered to the recipient; instead, it sits in the thread unsent. Additionally, when I scroll up in a thread, I'm seeing an unable to load older messages error.</p><p>While some people are saying it's working again, I'm definitely not among those folks, as I'm still having problems. Clearly, Instagram isn't fully operational yet.</p></div><div class="live-content"><time datetime="2026-07-22T15:33:15+00:00">July 22, 2026 – 11:33 AM</time><h2 id="finally-a-big-drop">Finally, a big drop</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:1944px;"><p class="vanilla-image-block" style="padding-top:39.40%;"><img id="BC8S2FjJEt8TViRVeEjgCN" name="Screenshot 2026-07-22 at 11.31.31 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/BC8S2FjJEt8TViRVeEjgCN.png" mos="" align="middle" fullscreen="" width="1944" height="766" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>For the first time since the outage began, we're finally seeing a big drop in reports, with Instagram falling to 2,600. This is more than 1,000 reports below the peak, which is a good sign that things are coming back to normal.</p><p>For what it's worth, I was able to send a direct message and receive a response on Instagram, so the trouble seems to be resolved for me.</p></div><div class="live-content"><time datetime="2026-07-22T15:56:11+00:00">July 22, 2026 – 11:56 AM</time><h2 id="reports-are-in-a-steady-decline">Reports are in a steady decline</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="jPZiwUxvsgL5bSjBsCdCvB" name="Instagram.shutterstock_2620925129" alt="Instagram app logo on a phone display" src="https://cdn.mos.cms.futurecdn.net/jPZiwUxvsgL5bSjBsCdCvB.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: Shutterstock)</span></figcaption></figure><p>Since I last looked at Down Detector, reports have steadily declined dropping from around 3200 to now just under 400. </p><p>We're probably in the clear as the issues resolve but I'll keep an eye on things just a bit longer in case it flares up again. </p></div><div class="live-content"><time datetime="2026-07-22T16:24:48+00:00">July 22, 2026 – 12:24 PM</time><h2 id="calling-it-2">Calling it</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:3405px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="J4EEHYGRdoGNKryBLi9JEf" name="GettyImages-1086354750.jpg" alt="Instagram" src="https://cdn.mos.cms.futurecdn.net/J4EEHYGRdoGNKryBLi9JEf.jpg" mos="" align="middle" fullscreen="" width="3405" height="2270" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: aap Arriens/NurPhoto via Getty Images)</span></figcaption></figure><p>With reports well under 250, we're calling this outage. It doesn't appear that things will flare up again. </p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ One night, one match, no second chances – make sure a VPN has your World Cup final stream covered ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The World Cup final. One match, one night, and then a four-year wait until the next one. Whatever can go wrong with your stream, tonight is <em>not</em> the night for it.</p><p>The threats are real and they're varied. If you're watching from abroad, geo-restrictions could lock you out of the coverage you'd get at home. If you're on public Wi-Fi – at a bar, a hotel, a fan zone – your connection is shared, unsecured, and unpredictable. And if you're at home on your own broadband, your ISP can see exactly what you're doing – and has every incentive to throttle a 4K stream on one of the busiest nights of the streaming year. </p><p>Using one of the<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> solves all three at once, routing your traffic through an encrypted tunnel that sidesteps geo-blocks, secures public connections, and hides your activity from your ISP.</p><p>Norton VPN currently tops our best streaming VPN rankings, and with a deal running right now that brings it to $3.33 per month, there's no better time to get it sorted before kickoff. </p><div class="product"><a data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow" data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow" data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns">How does Norton VPN compare to other top VPNs?</h2><p>Surfshark is our pick for the<a href="https://www.tomsguide.com/best-picks/cheap-vpn"> best cheap VPN</a>, and at $2.49 per month it's a very affordable option – with the added bonus of unlimited device connections that Norton doesn't offer. The gap is streaming consistency. Norton has been the more reliable performer across every major platform in our testing, and for a final that comes around once every four years, that's the gap that matters.</p><p>NordVPN is our top-ranked VPN overall, and earns it – 9,000+ servers across 148 countries, speeds of over 1,000 Mbps, and a near-flawless unblocking record. At $3.49 per month it costs more than Norton's current deal, though, and its 30-day guarantee is half the safety net Norton gives you for a night this important.</p><p>It's also worth remembering that the World Cup final isn't a game you can quietly catch up on tomorrow. The result will be everywhere before you've even found a replay link – on your phone, in your group chats, across every headline. Whatever VPN you go with tonight, just make sure it's one you've actually tested before kickoff.</p><p>For a night with no replay, no second viewing, and a four-year wait for the next one, Norton makes the strongest case.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/one-night-one-match-no-second-chances-make-sure-a-vpn-has-your-world-cup-final-stream-covered</link>
                                                                            <description>
                            <![CDATA[ The World Cup final only comes around once every four years – and a VPN covers every reason your stream might let you down on the night ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dHYLxj4H9XcoXNpsXnRJKZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9iH4PNj7XMYsikqiXvsqh6-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sun, 19 Jul 2026 16:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/9iH4PNj7XMYsikqiXvsqh6-1280-80.png">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Spain vs Argentina - Yamal vs Messi]]></media:description>                                                            <media:text><![CDATA[Spain vs Argentina - Yamal vs Messi]]></media:text>
                                <media:title type="plain"><![CDATA[Spain vs Argentina - Yamal vs Messi]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9iH4PNj7XMYsikqiXvsqh6-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The World Cup final. One match, one night, and then a four-year wait until the next one. Whatever can go wrong with your stream, tonight is <em>not</em> the night for it.</p><p>The threats are real and they're varied. If you're watching from abroad, geo-restrictions could lock you out of the coverage you'd get at home. If you're on public Wi-Fi – at a bar, a hotel, a fan zone – your connection is shared, unsecured, and unpredictable. And if you're at home on your own broadband, your ISP can see exactly what you're doing – and has every incentive to throttle a 4K stream on one of the busiest nights of the streaming year. </p><p>Using one of the<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> solves all three at once, routing your traffic through an encrypted tunnel that sidesteps geo-blocks, secures public connections, and hides your activity from your ISP.</p><p>Norton VPN currently tops our best streaming VPN rankings, and with a deal running right now that brings it to $3.33 per month, there's no better time to get it sorted before kickoff. </p><div class="product"><a data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow" data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow" data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns">How does Norton VPN compare to other top VPNs?</h2><p>Surfshark is our pick for the<a href="https://www.tomsguide.com/best-picks/cheap-vpn"> best cheap VPN</a>, and at $2.49 per month it's a very affordable option – with the added bonus of unlimited device connections that Norton doesn't offer. The gap is streaming consistency. Norton has been the more reliable performer across every major platform in our testing, and for a final that comes around once every four years, that's the gap that matters.</p><p>NordVPN is our top-ranked VPN overall, and earns it – 9,000+ servers across 148 countries, speeds of over 1,000 Mbps, and a near-flawless unblocking record. At $3.49 per month it costs more than Norton's current deal, though, and its 30-day guarantee is half the safety net Norton gives you for a night this important.</p><p>It's also worth remembering that the World Cup final isn't a game you can quietly catch up on tomorrow. The result will be everywhere before you've even found a replay link – on your phone, in your group chats, across every headline. Whatever VPN you go with tonight, just make sure it's one you've actually tested before kickoff.</p><p>For a night with no replay, no second viewing, and a four-year wait for the next one, Norton makes the strongest case.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft is still using ‘deceptive tactics and design’ to force you to use Edge ]]></title>
                                                                                                <dc:content><![CDATA[ <p>You already know about Microsoft’s desperate ploys to get you to use Edge on Windows 11 — chances are you’re one of the folks who have gone through the test of patience to install <a href="https://www.tomsguide.com/tag/firefox">Firefox</a> or <a href="https://www.tomsguide.com/tag/chrome">Google Chrome</a>.</p><p>Well, new <a href="https://research.mozilla.org/browser-competition/over-the-edge-2/" target="_blank">research by Mozilla</a> reveals that the Redmond crew are not only still up to their old tricks, but getting worse. All kinds of “harmful design” shenanigans are at play here, in order to “not allow people to download and install an alternative browser, to set it as their default, or to continue using it as their default, without harmful interference.”</p><p>If only we could only get the same treatment as <a href="https://www.tomsguide.com/computing/windows-operating-systems/finally-microsoft-will-stop-begging-you-to-make-edge-your-default-browser-but-not-for-everyone">Windows users get in the EU</a>...</p><h2 id="staying-desperate">Staying desperate</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:1351px;"><p class="vanilla-image-block" style="padding-top:79.94%;"><img id="phisb8hSyHA5EzrRHf8eAN" name="Microsoft Edge" alt="Microsoft Edge" src="https://cdn.mos.cms.futurecdn.net/phisb8hSyHA5EzrRHf8eAN.jpg" mos="" align="middle" fullscreen="1" width="1351" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/phisb8hSyHA5EzrRHf8eAN.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Mozilla)</span></figcaption></figure><p>So what did the research find? Well, Mozilla discovered that a lot of the shady tricks Microsoft was called out for in the past are still happening:</p><ul><li><strong>Visual interference: </strong>Searching for different browsers to download in Edge still brings up the “All you need is right here” banner, as well as a banner promoting the browser when you go to Chrome’s download page.</li><li><strong>Default browser selection trickery: </strong>There is a button at the top of the default apps screen to change to a different browser, but not every file type is switched over.</li><li><strong>Trick wording: </strong>Things like “Use Microsoft’s recommended browser settings,” “You’re almost done setting up your PC” and more still persist.</li><li><strong>Dark patterns: </strong>In the setup screens you normally see a few days later, Edge-preferential options are shown as big blue buttons, whereas keeping the same settings is usually smaller, greyed-out text.</li></ul><p>And that’s just a few of the many different harmful patterns Mozilla found — including Copilot opening links in Edge instead of your default browser, pre-selecting checkboxes to sync data to Edge, and resetting it as the default browser when you migrate from Windows 10 to 11.</p><h2 id="just-make-a-better-browser">Just make a better browser</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="Tc9zNbWDujp6HyxnFHUWqG" name="Edge_wants_you_to_stay.jpg" alt="Microsoft Edge wants you to stay as a user" src="https://cdn.mos.cms.futurecdn.net/Tc9zNbWDujp6HyxnFHUWqG.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: Future / Microsoft)</span></figcaption></figure><p>It screams “inferiority complex” if I’m being real, which is a shame because Edge is indeed a good browser. It runs on the same Chromium engine as Chrome (to support all the same extensions), but also has some efficiencies built into it to not drain the battery as badly.</p><p>But this aggressive lock-in, some high RAM resource usage in the background and the clutter of Copilot and MSN news does make it falter. It’s not like Microsoft doesn't have a history of doing this — they were taken to court over an antitrust lawsuit in 1998 for bundling Internet Explorer with Windows and making it difficult to install a competing browser.</p><p>The only difference now is that users are committed enough to jump through those hoops to get to their favorite browsers. I mean “Google Chrome” is one of the most searched terms on Bing after all!</p><p>If you want to compete, build something better. Don’t go about it this way.</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/computing/hardware/sk-hynix-warns-2027-will-be-worst-year-for-ram-prices-right-as-a-damning-report-reveals-something-that-will-add-fuel-to-the-price-fixing-lawsuit">SK Hynix warns 2027 will be 'worst year' for RAM prices — right as a damning report reveals something that will add fuel to the price-fixing lawsuit</a></li><li><a href="https://www.tomsguide.com/computing/routers/router-overheating-the-simple-mistakes-killing-your-wi-fi-this-summer-according-to-a-networking-expert">Router overheating? The simple mistakes killing your Wi-Fi this summer — according to a networking expert</a></li><li><a href="https://www.tomsguide.com/computing/malware-adware/dangerous-new-crashstealer-mac-malware-bypasses-apples-gatekeeper-to-steal-your-passwords-and-more">Dangerous new CrashStealer Mac impersonates Apple's own tools — and bypasses Gatekeeper — to steal your passwords and more</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/browsers/microsoft-is-still-using-deceptive-tactics-and-design-to-force-you-to-use-edge</link>
                                                                            <description>
                            <![CDATA[ Mozilla’s new "Over The Edge 2.0" report proves Microsoft is still using deceptive dark patterns and Copilot overrides to force Windows users to use Edge. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">sS336gzqWFg87SufLQCaBh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gcb4ZLNUhkLc5vcuK2DVjB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 16 Jul 2026 11:42:57 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Browsers]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gcb4ZLNUhkLc5vcuK2DVjB-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Edge open on a laptop with the browser&#039;s app listing page open on a smartphone in front of it]]></media:description>                                                            <media:text><![CDATA[Microsoft Edge open on a laptop with the browser&#039;s app listing page open on a smartphone in front of it]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Edge open on a laptop with the browser&#039;s app listing page open on a smartphone in front of it]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gcb4ZLNUhkLc5vcuK2DVjB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>You already know about Microsoft’s desperate ploys to get you to use Edge on Windows 11 — chances are you’re one of the folks who have gone through the test of patience to install <a href="https://www.tomsguide.com/tag/firefox">Firefox</a> or <a href="https://www.tomsguide.com/tag/chrome">Google Chrome</a>.</p><p>Well, new <a href="https://research.mozilla.org/browser-competition/over-the-edge-2/" target="_blank">research by Mozilla</a> reveals that the Redmond crew are not only still up to their old tricks, but getting worse. All kinds of “harmful design” shenanigans are at play here, in order to “not allow people to download and install an alternative browser, to set it as their default, or to continue using it as their default, without harmful interference.”</p><p>If only we could only get the same treatment as <a href="https://www.tomsguide.com/computing/windows-operating-systems/finally-microsoft-will-stop-begging-you-to-make-edge-your-default-browser-but-not-for-everyone">Windows users get in the EU</a>...</p><h2 id="staying-desperate">Staying desperate</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:1351px;"><p class="vanilla-image-block" style="padding-top:79.94%;"><img id="phisb8hSyHA5EzrRHf8eAN" name="Microsoft Edge" alt="Microsoft Edge" src="https://cdn.mos.cms.futurecdn.net/phisb8hSyHA5EzrRHf8eAN.jpg" mos="" align="middle" fullscreen="1" width="1351" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/phisb8hSyHA5EzrRHf8eAN.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Mozilla)</span></figcaption></figure><p>So what did the research find? Well, Mozilla discovered that a lot of the shady tricks Microsoft was called out for in the past are still happening:</p><ul><li><strong>Visual interference: </strong>Searching for different browsers to download in Edge still brings up the “All you need is right here” banner, as well as a banner promoting the browser when you go to Chrome’s download page.</li><li><strong>Default browser selection trickery: </strong>There is a button at the top of the default apps screen to change to a different browser, but not every file type is switched over.</li><li><strong>Trick wording: </strong>Things like “Use Microsoft’s recommended browser settings,” “You’re almost done setting up your PC” and more still persist.</li><li><strong>Dark patterns: </strong>In the setup screens you normally see a few days later, Edge-preferential options are shown as big blue buttons, whereas keeping the same settings is usually smaller, greyed-out text.</li></ul><p>And that’s just a few of the many different harmful patterns Mozilla found — including Copilot opening links in Edge instead of your default browser, pre-selecting checkboxes to sync data to Edge, and resetting it as the default browser when you migrate from Windows 10 to 11.</p><h2 id="just-make-a-better-browser">Just make a better browser</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="Tc9zNbWDujp6HyxnFHUWqG" name="Edge_wants_you_to_stay.jpg" alt="Microsoft Edge wants you to stay as a user" src="https://cdn.mos.cms.futurecdn.net/Tc9zNbWDujp6HyxnFHUWqG.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: Future / Microsoft)</span></figcaption></figure><p>It screams “inferiority complex” if I’m being real, which is a shame because Edge is indeed a good browser. It runs on the same Chromium engine as Chrome (to support all the same extensions), but also has some efficiencies built into it to not drain the battery as badly.</p><p>But this aggressive lock-in, some high RAM resource usage in the background and the clutter of Copilot and MSN news does make it falter. It’s not like Microsoft doesn't have a history of doing this — they were taken to court over an antitrust lawsuit in 1998 for bundling Internet Explorer with Windows and making it difficult to install a competing browser.</p><p>The only difference now is that users are committed enough to jump through those hoops to get to their favorite browsers. I mean “Google Chrome” is one of the most searched terms on Bing after all!</p><p>If you want to compete, build something better. Don’t go about it this way.</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/computing/hardware/sk-hynix-warns-2027-will-be-worst-year-for-ram-prices-right-as-a-damning-report-reveals-something-that-will-add-fuel-to-the-price-fixing-lawsuit">SK Hynix warns 2027 will be 'worst year' for RAM prices — right as a damning report reveals something that will add fuel to the price-fixing lawsuit</a></li><li><a href="https://www.tomsguide.com/computing/routers/router-overheating-the-simple-mistakes-killing-your-wi-fi-this-summer-according-to-a-networking-expert">Router overheating? The simple mistakes killing your Wi-Fi this summer — according to a networking expert</a></li><li><a href="https://www.tomsguide.com/computing/malware-adware/dangerous-new-crashstealer-mac-malware-bypasses-apples-gatekeeper-to-steal-your-passwords-and-more">Dangerous new CrashStealer Mac impersonates Apple's own tools — and bypasses Gatekeeper — to steal your passwords and more</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Dangerous new CrashStealer Mac impersonates Apple's own tools — and bypasses Gatekeeper — to steal your passwords and more ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Even with one of the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a>, you can never be too careful when downloading new apps. Case in point: a new <a href="https://www.tomsguide.com/computing/malware-adware/hackers-are-using-fake-apps-to-distribute-this-dangerous-mac-malware-dont-fall-for-this">malicious Mac app</a> is posing as a legitimate Apple tool to steal passwords, keychain data and more from vulnerable systems.</p><p>As reported by <a href="https://www.bleepingcomputer.com/news/security/new-crashstealer-malware-poses-as-apple-crash-reporting-tool/" target="_blank">BleepingComputer</a>, the app in question serves as a means to infect vulnerable Apple computers with a new <a href="https://www.tomsguide.com/computing/malware-adware/macs-under-threat-from-info-stealing-malware-dont-fall-for-this-microsoft-teams-scam">Mac info-stealer</a>. While security researchers at Jamf first observed it back in May when it was still in development, this malware is now being actively used by cybercriminals in their attacks.</p><p>Dubbed CrashStealer, what makes this Mac malware strain so dangerous is the way in which it perfectly mimics Apple’s own macOS crash reports. Although something might seem off to more discerning users, others could easily fall for this attack given how much care and attention has gone into impersonating this legitimate tool.</p><p>Here’s everything you need to know about this new Mac malware and how you can keep your own MacBook and all the sensitive data it contains safe from hackers.</p><h2 id="impersonating-a-legitimate-apple-utility">Impersonating a legitimate Apple utility</h2><p>In their <a href="https://www.jamf.com/blog/crashstealer-macos-infostealer-analysis/" target="_blank">report</a>, Jamf’s security researchers explain how the malware hides in plain sight by posing as a meeting platform called Werkbit. While they don’t go into details about the malware’s initial distribution method, a malicious app like this could be distributed via <a href="https://www.tomsguide.com/news/hackers-using-google-ads-to-steal-your-info-and-drain-your-accounts-what-you-need-to-know">fake ads</a> or on a developer-focused site like GitHub.</p><p>After downloading the app, it’s mounted on your desktop just like with any new software you download for your Mac. Surprisingly, though, the hackers behind this campaign are using a signed and Apple-notarized installer to distribute their fake app. Not only does this add a sense of legitimacy to the app but it also allows it to bypass Apple’s built-in <a href="https://www.tomsguide.com/news/this-severe-macos-flaw-could-let-malware-run-on-your-mac-update-right-now">Gatekeeper</a> security feature without any warnings whatsoever.</p><p>When launched for the first time, the app displays a fake macOS password prompt that looks strikingly similar to what you’d see when downloading new software manually as opposed to through the Mac App Store. Once a victim puts in the password for their Mac, the hackers then have everything they need to unlock their <a href="https://www.tomsguide.com/news/new-macstealer-malware-steals-icloud-keychain-data-and-passwords-how-to-stay-safe">Apple Keychain </a>which acts as macOS’ encrypted password vault and contains all sorts of sensitive info like saved credentials in Safari, app passwords, Wi-Fi passwords and more.</p><p>The CrashStealer malware isn’t just limited to stealing from your Keychain though. It can also steal browser credentials and cookies from Chrome and other Chromium-based browsers as well as Firefox. Likewise, it can steal data from 80 different crypto wallet extensions and 14 of the <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">best password managers</a> including 1Password, LastPass, Dashlane and more.</p><p>To get all of this stolen data off your Mac, the malware encrypts it before packaging it into hidden ZIP archives and uploading it to a hacker-controlled C&C server.</p><p>By using a signed and notarized dropper and a re-signed payload, CrashStealer is a sophisticated Mac malware that’s especially good at avoiding detection.</p><h2 id="how-to-stay-safe-from-mac-malware">How to stay safe from Mac malware</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:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="F9ybS7WNwSK95hqxotZgYM" name="apple shutterstock.jpg" alt="A padlock resting next to the Apple logo on the lid of a gold-colored Apple laptop." src="https://cdn.mos.cms.futurecdn.net/F9ybS7WNwSK95hqxotZgYM.jpg" mos="" align="middle" fullscreen="" width="1000" height="563" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: robert coolen/Shutterstock)</span></figcaption></figure><p>If you’re worried about CrashStealer and other Mac malware, the first thing you should do is to avoid sideloading apps, or in this case, installing new apps from anywhere besides the <a href="https://www.tomsguide.com/computing/macos/macos-sequoia-is-streamlining-downloads-from-the-mac-app-store-heres-what-you-need-to-know">Mac App Store</a>.</p><p>Just like on one of the <a href="https://www.tomsguide.com/us/best-android-phones,review-6051.html">best Android smartphones</a>, when you download new apps from websites instead of an official app store, you’re putting your devices and the data they contain at risk. Apps submitted to the Mac App Store go through rigorous security checks while those you download from a random website don’t.</p><p>Normally when you download an unverified app from the web, macOS’s built-in Gatekeeper security feature will block it or warn you before you install it. In this case, though, that doesn’t happen since the installer used in this campaign is signed and appears to be legitimate. Well, at least in Gatekeeper’s eyes.</p><p>While Gatekeeper can keep you safe from most threats, there are ones like this that manage to bypass its defenses. For this reason, you might want to consider using one of the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software</a> solutions alongside Apple’s built-in ones. That way, if something slips past Apple, your third-party antivirus software will be able to stop the threat before it can do serious damage.</p><p>Since CrashStealer is still a relatively new Mac malware, this likely won’t be the last time we see it. This is why you always need to be extra careful when downloading and installing new software onto your Apple computer.</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/computing/malware-adware/new-pamstealer-mac-malware-poses-as-a-clipboard-manager-to-steal-your-login-info-how-to-stay-safe">New PamStealer Mac malware poses as a clipboard manager to steal login info</a></li><li><a href="https://www.tomsguide.com/computing/online-security/apples-hide-my-email-always-seemed-too-good-to-be-true-and-this-new-vulnerability-proves-it-was">Apple’s ‘Hide My Email’ reportedly exposing real email addresses</a></li><li><a href="https://www.tomsguide.com/gaming/gta-6-warning-pre-order-scams-are-stealing-users-info-and-spreading-malware-how-to-stay-safe">GTA 6 warning: Pre-order scams are stealing users' info and spreading malware </a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/malware-adware/dangerous-new-crashstealer-mac-malware-bypasses-apples-gatekeeper-to-steal-your-passwords-and-more</link>
                                                                            <description>
                            <![CDATA[ A new Mac malware strain impersonates Apple’s own crash reports to trick unsuspecting users into handing over their credentials. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Ncr9JcdVzBTEMaNasmtJKB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/wKaEoNvjNpRkyZH74YAq2B-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 15 Jul 2026 19:35:38 +0000</pubDate>                                                                                                                                <updated>Wed, 15 Jul 2026 19:40:34 +0000</updated>
                                                                                                                                            <category><![CDATA[Malware & Adware]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/wKaEoNvjNpRkyZH74YAq2B-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[MacBook Pro 16-inch 2021 sitting on a patio table]]></media:description>                                                            <media:text><![CDATA[MacBook Pro 16-inch 2021 sitting on a patio table]]></media:text>
                                <media:title type="plain"><![CDATA[MacBook Pro 16-inch 2021 sitting on a patio table]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/wKaEoNvjNpRkyZH74YAq2B-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Even with one of the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a>, you can never be too careful when downloading new apps. Case in point: a new <a href="https://www.tomsguide.com/computing/malware-adware/hackers-are-using-fake-apps-to-distribute-this-dangerous-mac-malware-dont-fall-for-this">malicious Mac app</a> is posing as a legitimate Apple tool to steal passwords, keychain data and more from vulnerable systems.</p><p>As reported by <a href="https://www.bleepingcomputer.com/news/security/new-crashstealer-malware-poses-as-apple-crash-reporting-tool/" target="_blank">BleepingComputer</a>, the app in question serves as a means to infect vulnerable Apple computers with a new <a href="https://www.tomsguide.com/computing/malware-adware/macs-under-threat-from-info-stealing-malware-dont-fall-for-this-microsoft-teams-scam">Mac info-stealer</a>. While security researchers at Jamf first observed it back in May when it was still in development, this malware is now being actively used by cybercriminals in their attacks.</p><p>Dubbed CrashStealer, what makes this Mac malware strain so dangerous is the way in which it perfectly mimics Apple’s own macOS crash reports. Although something might seem off to more discerning users, others could easily fall for this attack given how much care and attention has gone into impersonating this legitimate tool.</p><p>Here’s everything you need to know about this new Mac malware and how you can keep your own MacBook and all the sensitive data it contains safe from hackers.</p><h2 id="impersonating-a-legitimate-apple-utility">Impersonating a legitimate Apple utility</h2><p>In their <a href="https://www.jamf.com/blog/crashstealer-macos-infostealer-analysis/" target="_blank">report</a>, Jamf’s security researchers explain how the malware hides in plain sight by posing as a meeting platform called Werkbit. While they don’t go into details about the malware’s initial distribution method, a malicious app like this could be distributed via <a href="https://www.tomsguide.com/news/hackers-using-google-ads-to-steal-your-info-and-drain-your-accounts-what-you-need-to-know">fake ads</a> or on a developer-focused site like GitHub.</p><p>After downloading the app, it’s mounted on your desktop just like with any new software you download for your Mac. Surprisingly, though, the hackers behind this campaign are using a signed and Apple-notarized installer to distribute their fake app. Not only does this add a sense of legitimacy to the app but it also allows it to bypass Apple’s built-in <a href="https://www.tomsguide.com/news/this-severe-macos-flaw-could-let-malware-run-on-your-mac-update-right-now">Gatekeeper</a> security feature without any warnings whatsoever.</p><p>When launched for the first time, the app displays a fake macOS password prompt that looks strikingly similar to what you’d see when downloading new software manually as opposed to through the Mac App Store. Once a victim puts in the password for their Mac, the hackers then have everything they need to unlock their <a href="https://www.tomsguide.com/news/new-macstealer-malware-steals-icloud-keychain-data-and-passwords-how-to-stay-safe">Apple Keychain </a>which acts as macOS’ encrypted password vault and contains all sorts of sensitive info like saved credentials in Safari, app passwords, Wi-Fi passwords and more.</p><p>The CrashStealer malware isn’t just limited to stealing from your Keychain though. It can also steal browser credentials and cookies from Chrome and other Chromium-based browsers as well as Firefox. Likewise, it can steal data from 80 different crypto wallet extensions and 14 of the <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">best password managers</a> including 1Password, LastPass, Dashlane and more.</p><p>To get all of this stolen data off your Mac, the malware encrypts it before packaging it into hidden ZIP archives and uploading it to a hacker-controlled C&C server.</p><p>By using a signed and notarized dropper and a re-signed payload, CrashStealer is a sophisticated Mac malware that’s especially good at avoiding detection.</p><h2 id="how-to-stay-safe-from-mac-malware">How to stay safe from Mac malware</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:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="F9ybS7WNwSK95hqxotZgYM" name="apple shutterstock.jpg" alt="A padlock resting next to the Apple logo on the lid of a gold-colored Apple laptop." src="https://cdn.mos.cms.futurecdn.net/F9ybS7WNwSK95hqxotZgYM.jpg" mos="" align="middle" fullscreen="" width="1000" height="563" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: robert coolen/Shutterstock)</span></figcaption></figure><p>If you’re worried about CrashStealer and other Mac malware, the first thing you should do is to avoid sideloading apps, or in this case, installing new apps from anywhere besides the <a href="https://www.tomsguide.com/computing/macos/macos-sequoia-is-streamlining-downloads-from-the-mac-app-store-heres-what-you-need-to-know">Mac App Store</a>.</p><p>Just like on one of the <a href="https://www.tomsguide.com/us/best-android-phones,review-6051.html">best Android smartphones</a>, when you download new apps from websites instead of an official app store, you’re putting your devices and the data they contain at risk. Apps submitted to the Mac App Store go through rigorous security checks while those you download from a random website don’t.</p><p>Normally when you download an unverified app from the web, macOS’s built-in Gatekeeper security feature will block it or warn you before you install it. In this case, though, that doesn’t happen since the installer used in this campaign is signed and appears to be legitimate. Well, at least in Gatekeeper’s eyes.</p><p>While Gatekeeper can keep you safe from most threats, there are ones like this that manage to bypass its defenses. For this reason, you might want to consider using one of the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software</a> solutions alongside Apple’s built-in ones. That way, if something slips past Apple, your third-party antivirus software will be able to stop the threat before it can do serious damage.</p><p>Since CrashStealer is still a relatively new Mac malware, this likely won’t be the last time we see it. This is why you always need to be extra careful when downloading and installing new software onto your Apple computer.</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/computing/malware-adware/new-pamstealer-mac-malware-poses-as-a-clipboard-manager-to-steal-your-login-info-how-to-stay-safe">New PamStealer Mac malware poses as a clipboard manager to steal login info</a></li><li><a href="https://www.tomsguide.com/computing/online-security/apples-hide-my-email-always-seemed-too-good-to-be-true-and-this-new-vulnerability-proves-it-was">Apple’s ‘Hide My Email’ reportedly exposing real email addresses</a></li><li><a href="https://www.tomsguide.com/gaming/gta-6-warning-pre-order-scams-are-stealing-users-info-and-spreading-malware-how-to-stay-safe">GTA 6 warning: Pre-order scams are stealing users' info and spreading malware </a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ GTA 6 warning: Pre-order scams are stealing users' info and spreading malware — how to stay safe ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The official <a href="https://www.tomsguide.com/news/gta-6">Grand Theft Auto 6</a> launch isn't for several months, but <a href="https://www.tomsguide.com/news/live/gta-6-pre-orders-news-and-live-updates">pre-orders have been in full swing</a> since the end of June. You may want to be careful if you try to order the game, though.</p><p>Security researchers from Kaspersky recently released a warning via email to Tom's Guide that cybercriminals are using the hype around GTA 6 to deploy a "wide range of fraud schemes." The most common scheme appears to be fake pre-order websites or false video tutorials on how to get the game.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODqPrX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODqPrX.js" async></script><p>"Highly anticipated game releases have long presented significant opportunities for cybercriminals, and we are already detecting related fraudulent activity," Olga Altukhova, a Senior Web Content Analyst at Kaspersky, said in the report. "These schemes are carefully timed to capitalize on heightened consumer excitement: attackers understand that periods of intense anticipation can lower users’ guard and create a false sense of urgency."</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:678px;"><p class="vanilla-image-block" style="padding-top:75.22%;"><img id="rd7uUoPxLGWds5RBKSztLW" name="image001" alt="Fake GTA 6 preorder sites found by Kaspersky" src="https://cdn.mos.cms.futurecdn.net/rd7uUoPxLGWds5RBKSztLW.png" mos="" align="middle" fullscreen="" width="678" height="510" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Kaspersky)</span></figcaption></figure><p>The fake sites utilize graphics and copy that mimic Rockstar's branding, including real trailers and promotional artwork. They offer gamers the ability to pre-order the game for the <a href="https://www.tomsguide.com/reviews/ps5">PS5</a> or <a href="https://www.tomsguide.com/reviews/xbox-series-x">Xbox</a>.</p><p>Unfortunately, when users enter their personal details and payment information, it sets them up to potentially have their bank accounts drained and sensitive data compromised.</p><p>According to Kaspersky, the false pages have been found in multiple languages, which indicates that scammers are targeting unsuspecting people across the globe.</p><h2 id="other-frauds-to-avoid">Other frauds to avoid</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:678px;"><p class="vanilla-image-block" style="padding-top:74.63%;"><img id="8NL5KtvjaVfMUtFMHrA2KW" name="image002" alt="Fake GTA 6 preorder sites found by Kaspersky" src="https://cdn.mos.cms.futurecdn.net/8NL5KtvjaVfMUtFMHrA2KW.png" mos="" align="middle" fullscreen="" width="678" height="506" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Kaspersky)</span></figcaption></figure><p>Fake websites aren't the only scam. At least one website was offering what it claimed to be a beta version of the game as a download framing it as a leak. </p><p>The false beta was promoted on social media and streaming platforms where scammers showed gamers how to "safely" download the game. Downloading and opening the file enabled malware to be installed on your system which could lead to compromised data and unauthorized access.</p><p>Finally, cryptocurrency owners are also being targeted via suspicious websites promoting tokens using GTA 6 branding. </p><h2 id="how-to-safely-pre-order-and-avoid-scammers">How to safely pre-order and avoid scammers</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="A2wZYUKPaGJDjuekL7Qkh4" name="GTA 6 TV" alt="GTA 6 on a TV screen." src="https://cdn.mos.cms.futurecdn.net/A2wZYUKPaGJDjuekL7Qkh4.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock / Rockstar / Tom's Guide)</span></figcaption></figure><p>As always, when it comes to software, whether games or programs, we always recommend you purchase or download from official sources. </p><p>GTA 6 is only launching on PS5 and <a href="https://www.tomsguide.com/reviews/xbox-series-s">Xbox Series S</a> and X this November. If you're interested, purchase the game through the storefronts on your console of choice. Or you can go to the<a href="https://www.rockstargames.com/VI/editions" target="_blank"> official Rockstar GTA 6 site</a> and pre-order there.</p><p>Kaspersky recommends using a prepaid card when purchasing games to avoid exposing your credit card or bank account information. It's an extra step but good practice for keeping your financial information safe.</p><p>Even beyond of GTA 6, you should always double-check the URL formats of websites you're visiting, especially ones you're not familiar with. Also check the spelling of names and organizations where typos can reveal falsehoods.</p><p>Online scams often end up with nasty malware infections, so you want to keep your devices protected as well. Make sure that you're using the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a> on your Windows PC, the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software</a> on your Apple computer, and one of the <a href="https://www.tomsguide.com/best-picks/best-android-antivirus">best Android antivirus apps</a> on your Android smartphone</p><p>For even greater protection and help recovering any funds lost to scams, you may also want to consider signing up for one of the <a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html">best identity theft protection services</a>.</p><p>Finally, consider enabling multi-factor authentication and monitoring accounts regularly, which can help warn you about unauthorized access.</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/gaming/3-cloud-gaming-services-i-recommend-if-gaming-platforms-are-too-expensive">3 cloud gaming services I recommend if gaming platforms are too expensive</a></li><li><a href="https://www.tomsguide.com/gaming/assassins-creed-black-flag-resynced-review">Assassin’s Creed Black Flag Resynced is a remake done right — and the best pirate game I’ve ever played</a></li><li><a href="https://www.tomsguide.com/gaming/i-grinded-enough-microsoft-reward-points-to-get-gta-6-for-free-heres-how-you-can-do-it-too">I grinded enough Microsoft reward points to get GTA 6 for free — here's how you can do it too</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/gaming/gta-6-warning-pre-order-scams-are-stealing-users-info-and-spreading-malware-how-to-stay-safe</link>
                                                                            <description>
                            <![CDATA[ Security researchers are warning that fake GTA 6 preorder sites could spread malware or try to steal your sensitive information. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BPoLKEfAdCG3X6q5AA2mmR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hyce8Ftu8N8gj3Dx5Dqg6b-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 08 Jul 2026 19:13:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/hyce8Ftu8N8gj3Dx5Dqg6b-1280-80.jpg">
                                                            <media:credit><![CDATA[Rockstar]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Grand Theft Auto VI screenshot]]></media:description>                                                            <media:text><![CDATA[Grand Theft Auto VI screenshot]]></media:text>
                                <media:title type="plain"><![CDATA[Grand Theft Auto VI screenshot]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hyce8Ftu8N8gj3Dx5Dqg6b-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The official <a href="https://www.tomsguide.com/news/gta-6">Grand Theft Auto 6</a> launch isn't for several months, but <a href="https://www.tomsguide.com/news/live/gta-6-pre-orders-news-and-live-updates">pre-orders have been in full swing</a> since the end of June. You may want to be careful if you try to order the game, though.</p><p>Security researchers from Kaspersky recently released a warning via email to Tom's Guide that cybercriminals are using the hype around GTA 6 to deploy a "wide range of fraud schemes." The most common scheme appears to be fake pre-order websites or false video tutorials on how to get the game.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODqPrX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODqPrX.js" async></script><p>"Highly anticipated game releases have long presented significant opportunities for cybercriminals, and we are already detecting related fraudulent activity," Olga Altukhova, a Senior Web Content Analyst at Kaspersky, said in the report. "These schemes are carefully timed to capitalize on heightened consumer excitement: attackers understand that periods of intense anticipation can lower users’ guard and create a false sense of urgency."</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:678px;"><p class="vanilla-image-block" style="padding-top:75.22%;"><img id="rd7uUoPxLGWds5RBKSztLW" name="image001" alt="Fake GTA 6 preorder sites found by Kaspersky" src="https://cdn.mos.cms.futurecdn.net/rd7uUoPxLGWds5RBKSztLW.png" mos="" align="middle" fullscreen="" width="678" height="510" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Kaspersky)</span></figcaption></figure><p>The fake sites utilize graphics and copy that mimic Rockstar's branding, including real trailers and promotional artwork. They offer gamers the ability to pre-order the game for the <a href="https://www.tomsguide.com/reviews/ps5">PS5</a> or <a href="https://www.tomsguide.com/reviews/xbox-series-x">Xbox</a>.</p><p>Unfortunately, when users enter their personal details and payment information, it sets them up to potentially have their bank accounts drained and sensitive data compromised.</p><p>According to Kaspersky, the false pages have been found in multiple languages, which indicates that scammers are targeting unsuspecting people across the globe.</p><h2 id="other-frauds-to-avoid">Other frauds to avoid</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:678px;"><p class="vanilla-image-block" style="padding-top:74.63%;"><img id="8NL5KtvjaVfMUtFMHrA2KW" name="image002" alt="Fake GTA 6 preorder sites found by Kaspersky" src="https://cdn.mos.cms.futurecdn.net/8NL5KtvjaVfMUtFMHrA2KW.png" mos="" align="middle" fullscreen="" width="678" height="506" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Kaspersky)</span></figcaption></figure><p>Fake websites aren't the only scam. At least one website was offering what it claimed to be a beta version of the game as a download framing it as a leak. </p><p>The false beta was promoted on social media and streaming platforms where scammers showed gamers how to "safely" download the game. Downloading and opening the file enabled malware to be installed on your system which could lead to compromised data and unauthorized access.</p><p>Finally, cryptocurrency owners are also being targeted via suspicious websites promoting tokens using GTA 6 branding. </p><h2 id="how-to-safely-pre-order-and-avoid-scammers">How to safely pre-order and avoid scammers</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="A2wZYUKPaGJDjuekL7Qkh4" name="GTA 6 TV" alt="GTA 6 on a TV screen." src="https://cdn.mos.cms.futurecdn.net/A2wZYUKPaGJDjuekL7Qkh4.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock / Rockstar / Tom's Guide)</span></figcaption></figure><p>As always, when it comes to software, whether games or programs, we always recommend you purchase or download from official sources. </p><p>GTA 6 is only launching on PS5 and <a href="https://www.tomsguide.com/reviews/xbox-series-s">Xbox Series S</a> and X this November. If you're interested, purchase the game through the storefronts on your console of choice. Or you can go to the<a href="https://www.rockstargames.com/VI/editions" target="_blank"> official Rockstar GTA 6 site</a> and pre-order there.</p><p>Kaspersky recommends using a prepaid card when purchasing games to avoid exposing your credit card or bank account information. It's an extra step but good practice for keeping your financial information safe.</p><p>Even beyond of GTA 6, you should always double-check the URL formats of websites you're visiting, especially ones you're not familiar with. Also check the spelling of names and organizations where typos can reveal falsehoods.</p><p>Online scams often end up with nasty malware infections, so you want to keep your devices protected as well. Make sure that you're using the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a> on your Windows PC, the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software</a> on your Apple computer, and one of the <a href="https://www.tomsguide.com/best-picks/best-android-antivirus">best Android antivirus apps</a> on your Android smartphone</p><p>For even greater protection and help recovering any funds lost to scams, you may also want to consider signing up for one of the <a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html">best identity theft protection services</a>.</p><p>Finally, consider enabling multi-factor authentication and monitoring accounts regularly, which can help warn you about unauthorized access.</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/gaming/3-cloud-gaming-services-i-recommend-if-gaming-platforms-are-too-expensive">3 cloud gaming services I recommend if gaming platforms are too expensive</a></li><li><a href="https://www.tomsguide.com/gaming/assassins-creed-black-flag-resynced-review">Assassin’s Creed Black Flag Resynced is a remake done right — and the best pirate game I’ve ever played</a></li><li><a href="https://www.tomsguide.com/gaming/i-grinded-enough-microsoft-reward-points-to-get-gta-6-for-free-heres-how-you-can-do-it-too">I grinded enough Microsoft reward points to get GTA 6 for free — here's how you can do it too</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ ExpressVPN adds China server location and boosts its network – but the numbers are somewhat inflated ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/reviews/expressvpn-review">ExpressVPN</a> has expanded its global server network to 214 "app-selectable locations" across 113 countries – its broadest coverage to date. The expansion adds new connection points across Europe, Africa, the Middle East, and North America, with cities including Nuuk, Lagos, Doha, Valencia, and Manchester among the new additions.</p><p>For users of one of the most popular<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> on the market, more locations means more precise control over where their encrypted connection appears to originate – which affects everything from latency to which local services and content are accessible. The expansion also builds on ExpressVPN's earlier <a href="https://www.tomsguide.com/computing/vpns/expressvpn-launches-servers-in-every-us-state-heres-why-you-should-care">rollout across all 50 US states</a>, extending that same local-first approach to its global network.</p><p>The headline figure of 214 deserves some scrutiny, however. ExpressVPN counts multiple connection points within the same city – Toronto 1 and Toronto 2, for example – as distinct locations. By our count, the network sits closer to 196. Both figures tell a real story, but they're measuring different things.</p><h2 id="how-much-has-changed">How much has changed?</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4YgpfofWJJuSwfH43kmPW7" name="ExpressIDHeader" alt="ExpressVPN's Identity Defender dashboard displayed on a smartphone" src="https://cdn.mos.cms.futurecdn.net/4YgpfofWJJuSwfH43kmPW7.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ExpressVPN)</span></figcaption></figure><p>The expansion represents a meaningful step up for ExpressVPN's network. By country count, the service has grown from 108 to 113 – an increase of 5. By location count, our latest testing puts the figure at 196 unique locations, up from 188 – an increase of 8. The gap between that 196 and ExpressVPN's stated 214 comes down to methodology – the company counts multiple connection points within the same city as distinct "app-selectable locations."</p><p>However, the most significant new addition is one ExpressVPN hasn't drawn attention to: China. The service now offers a Chinese IP address, though the physical server is hosted in Singapore – a setup ExpressVPN lists transparently on its virtual server locations page. </p><p>For those who need a Chinese IP for work, travel, or accessing local services, this is a genuinely useful addition, even with that caveat. It's also a selling point over big rivals <a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> and <a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a>, which don't offer any locations in China.</p><h2 id="how-does-expressvpn-compare">How does ExpressVPN compare?</h2><p>In terms of country count – the metric that matters most for most users – ExpressVPN's 113 puts it behind NordVPN (149 countries) and Proton VPN (148 countries). However, these are the only two reputable providers we can confidently say offer broader reach, and finishing third in this particular race is far from embarrassing.</p><p>The gap narrows when location depth is taken into account: ExpressVPN's 196 unique locations trails NordVPN's 224 and <a href="https://www.tomsguide.com/reviews/protonvpn-review">Proton VPN</a>'s 193, but comfortably outpaces Surfshark, our pick for the<a href="https://www.tomsguide.com/best-picks/cheap-vpn"> best cheap VPN</a>, which covers 100 countries across 142 locations.</p><p>It's also worth noting that country count and location count measure different things. Country coverage determines where a VPN can get you. Location count determines how precisely you can get there – useful for reducing latency or accessing city-specific content in large countries. ExpressVPN has historically punched above its weight on the latter, and this expansion keeps it competitive.</p><p>Taken as a whole, this is a meaningful upgrade rather than a transformative one – with one exception. The addition of China changes the calculus for a specific group of users in a way that no location count figure can capture.</p><div data-widget-type="simple" data-model-name="ExpressVPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:1. Accessing a service from another country (subject to the terms and conditions of that service).2. Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/expressvpn-adds-china-server-location-and-boosts-its-network-but-the-numbers-are-somewhat-inflated</link>
                                                                            <description>
                            <![CDATA[ ExpressVPN has expanded its global network to 214 in 113 countries, though our analysis puts the true unique-location count closer to 196. However, the addition of a China location is a big positive. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NeWQF4xNYPVUyBMiyggieF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ow52enJE2qssvbjPNLpSpZ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 08 Jul 2026 13:36:49 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ow52enJE2qssvbjPNLpSpZ-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[ExpressVPN new UI displayed on Mac]]></media:description>                                                            <media:text><![CDATA[ExpressVPN new UI displayed on Mac]]></media:text>
                                <media:title type="plain"><![CDATA[ExpressVPN new UI displayed on Mac]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ow52enJE2qssvbjPNLpSpZ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/reviews/expressvpn-review">ExpressVPN</a> has expanded its global server network to 214 "app-selectable locations" across 113 countries – its broadest coverage to date. The expansion adds new connection points across Europe, Africa, the Middle East, and North America, with cities including Nuuk, Lagos, Doha, Valencia, and Manchester among the new additions.</p><p>For users of one of the most popular<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> on the market, more locations means more precise control over where their encrypted connection appears to originate – which affects everything from latency to which local services and content are accessible. The expansion also builds on ExpressVPN's earlier <a href="https://www.tomsguide.com/computing/vpns/expressvpn-launches-servers-in-every-us-state-heres-why-you-should-care">rollout across all 50 US states</a>, extending that same local-first approach to its global network.</p><p>The headline figure of 214 deserves some scrutiny, however. ExpressVPN counts multiple connection points within the same city – Toronto 1 and Toronto 2, for example – as distinct locations. By our count, the network sits closer to 196. Both figures tell a real story, but they're measuring different things.</p><h2 id="how-much-has-changed">How much has changed?</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4YgpfofWJJuSwfH43kmPW7" name="ExpressIDHeader" alt="ExpressVPN's Identity Defender dashboard displayed on a smartphone" src="https://cdn.mos.cms.futurecdn.net/4YgpfofWJJuSwfH43kmPW7.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ExpressVPN)</span></figcaption></figure><p>The expansion represents a meaningful step up for ExpressVPN's network. By country count, the service has grown from 108 to 113 – an increase of 5. By location count, our latest testing puts the figure at 196 unique locations, up from 188 – an increase of 8. The gap between that 196 and ExpressVPN's stated 214 comes down to methodology – the company counts multiple connection points within the same city as distinct "app-selectable locations."</p><p>However, the most significant new addition is one ExpressVPN hasn't drawn attention to: China. The service now offers a Chinese IP address, though the physical server is hosted in Singapore – a setup ExpressVPN lists transparently on its virtual server locations page. </p><p>For those who need a Chinese IP for work, travel, or accessing local services, this is a genuinely useful addition, even with that caveat. It's also a selling point over big rivals <a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> and <a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a>, which don't offer any locations in China.</p><h2 id="how-does-expressvpn-compare">How does ExpressVPN compare?</h2><p>In terms of country count – the metric that matters most for most users – ExpressVPN's 113 puts it behind NordVPN (149 countries) and Proton VPN (148 countries). However, these are the only two reputable providers we can confidently say offer broader reach, and finishing third in this particular race is far from embarrassing.</p><p>The gap narrows when location depth is taken into account: ExpressVPN's 196 unique locations trails NordVPN's 224 and <a href="https://www.tomsguide.com/reviews/protonvpn-review">Proton VPN</a>'s 193, but comfortably outpaces Surfshark, our pick for the<a href="https://www.tomsguide.com/best-picks/cheap-vpn"> best cheap VPN</a>, which covers 100 countries across 142 locations.</p><p>It's also worth noting that country count and location count measure different things. Country coverage determines where a VPN can get you. Location count determines how precisely you can get there – useful for reducing latency or accessing city-specific content in large countries. ExpressVPN has historically punched above its weight on the latter, and this expansion keeps it competitive.</p><p>Taken as a whole, this is a meaningful upgrade rather than a transformative one – with one exception. The addition of China changes the calculus for a specific group of users in a way that no location count figure can capture.</p><div data-widget-type="simple" data-model-name="ExpressVPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:1. Accessing a service from another country (subject to the terms and conditions of that service).2. Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Is your USA vs. Belgium stream buffering? A VPN can stop the lag — here’s how ]]></title>
                                                                                                <dc:content><![CDATA[ <p>USA vs. Belgium is one of the most anticipated matchups of the 2026 FIFA World Cup, and millions of fans will be settling in front of their screens on Monday to watch it unfold.</p><p>But there is a good chance your stream won't go quite as planned. Just as the referee blows the whistle for kickoff, your crisp picture could easily drop into a pixelated, low-res mess — or freeze entirely.</p><p>The culprit? Your Internet Service Provider (ISP).</p><p>During major live sporting events, internet service providers frequently throttle bandwidth to manage the surge in users. </p><p>The good news is there's a straightforward technical fix, and you don't need to be particularly tech-savvy to use it. </p><p>The<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPN</a>s encrypt your internet traffic before it leaves your device, masking it from your ISP. Because your provider can no longer see what kind of data you're consuming, it won't trigger its throttling algorithms — leaving you with a stable, high-def stream from kickoff to the final whistle. </p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard. </p><p><strong>What you'll get...</strong></p><p>🔒 Encryption that blocks ISP throttling<br>⚡️ High-speed servers built for stable 4K sports streaming<br>📺 Apps for Windows, Mac, Android, iOS, and smart TVs<br>🌍 Servers in 30+ countries worldwide</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="is-it-worth-keeping-after-the-match">Is it worth keeping after the match?</h2><p>If you decide to keep the service beyond Monday's match, an annual plan breaks down to less than a single match-day takeaway — and it will cover your connection for every remaining game for the rest of the year. </p><p>Because it comes with an industry-double 60-day money-back guarantee, you can essentially test it out completely risk-free. If it doesn't instantly stabilize your stream, you can claim a full refund without any hassle.</p><p>Either way, don't leave it until the last minute. Get the app downloaded and run a quick speed test before kickoff today — so when the first whistle blows, you're confident in your stream. </p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/is-your-usa-vs-belgium-stream-buffering-a-vpn-can-stop-the-lag-heres-how</link>
                                                                            <description>
                            <![CDATA[ ISPs often throttle streaming traffic during big live events — a VPN's encryption can keep your stream running smoothly ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">z9bXUgLnF2HrPphwVsk2bH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kZJyq9aikPwZaZQtdmWxuU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 2026 22:59:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kZJyq9aikPwZaZQtdmWxuU-1280-80.jpg">
                                                            <media:credit><![CDATA[Charlotte Wilson/Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Malik Tillman #17 of the United States celebrates scoring his team&#039;s second goal during the FIFA World Cup 2026 Round of 32 match between USA and Bosnia and Herzegovina]]></media:description>                                                            <media:text><![CDATA[Malik Tillman #17 of the United States celebrates scoring his team&#039;s second goal during the FIFA World Cup 2026 Round of 32 match between USA and Bosnia and Herzegovina]]></media:text>
                                <media:title type="plain"><![CDATA[Malik Tillman #17 of the United States celebrates scoring his team&#039;s second goal during the FIFA World Cup 2026 Round of 32 match between USA and Bosnia and Herzegovina]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kZJyq9aikPwZaZQtdmWxuU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>USA vs. Belgium is one of the most anticipated matchups of the 2026 FIFA World Cup, and millions of fans will be settling in front of their screens on Monday to watch it unfold.</p><p>But there is a good chance your stream won't go quite as planned. Just as the referee blows the whistle for kickoff, your crisp picture could easily drop into a pixelated, low-res mess — or freeze entirely.</p><p>The culprit? Your Internet Service Provider (ISP).</p><p>During major live sporting events, internet service providers frequently throttle bandwidth to manage the surge in users. </p><p>The good news is there's a straightforward technical fix, and you don't need to be particularly tech-savvy to use it. </p><p>The<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPN</a>s encrypt your internet traffic before it leaves your device, masking it from your ISP. Because your provider can no longer see what kind of data you're consuming, it won't trigger its throttling algorithms — leaving you with a stable, high-def stream from kickoff to the final whistle. </p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard. </p><p><strong>What you'll get...</strong></p><p>🔒 Encryption that blocks ISP throttling<br>⚡️ High-speed servers built for stable 4K sports streaming<br>📺 Apps for Windows, Mac, Android, iOS, and smart TVs<br>🌍 Servers in 30+ countries worldwide</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="is-it-worth-keeping-after-the-match">Is it worth keeping after the match?</h2><p>If you decide to keep the service beyond Monday's match, an annual plan breaks down to less than a single match-day takeaway — and it will cover your connection for every remaining game for the rest of the year. </p><p>Because it comes with an industry-double 60-day money-back guarantee, you can essentially test it out completely risk-free. If it doesn't instantly stabilize your stream, you can claim a full refund without any hassle.</p><p>Either way, don't leave it until the last minute. Get the app downloaded and run a quick speed test before kickoff today — so when the first whistle blows, you're confident in your stream. </p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New PamStealer Mac malware poses as a clipboard manager to steal your login info — how to stay safe ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Security researchers who focus on Apple devices have discovered a new <a href="https://www.tomsguide.com/computing/malware-adware/hackers-are-using-cracked-versions-of-legitimate-apps-to-spread-dangerous-mac-malware-how-to-stay-safe">macOS malware</a> that appears to be surprisingly clever while it harvests data and login credentials. </p><p>According to the IT firm <a href="https://www.jamf.com/blog/pamstealer-macos-infostealer-applescript-rust/" target="_blank">Jamf </a>(via <a href="https://arstechnica.com/security/2026/07/new-pamstealer-macos-malware-uses-clever-tradecraft-to-remain-stealthy/?comments-page=1#comments" target="_blank">ArsTechnica</a>), the new malware, dubbed PamStealer, can get on your Mac in two stages. First, it disguises itself as Maccy, a clipboard manager. </p><p>Apparently, PamStealer is compiled as AppleScript written in Rust that uses the Pluggable Authentication Modules interface that is built into macOS to target the device's login password, which is then sent to an attacker-controlled server.</p><p>What makes PamStealer unique is that it combines AppleScript and disk images to stealthily enter your computer. When you click the AppleScript, it opens the macOS Script Editor where the malware is buried in the file.</p><p>"Rather than relying on shell commands such as curl or zsh, the AppleScript executes a self-contained JavaScript for Automation (JXA) downloader that retrieves and stages the payload using native Objective-C APIs," the Jamf team wrote. "Combined with a Rust-based second stage and a password capture workflow that validates credentials locally through PAM, the result is a quieter execution chain than we typically observe in commodity macOS stealers."</p><h2 id="how-pamstealer-works">How PamStealer works</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="q5NLfryTKCNZmK5StdViGe" name="shutterstock_1748211680 apple security lock.jpg" alt="opened padlock in front of Apple logo" src="https://cdn.mos.cms.futurecdn.net/q5NLfryTKCNZmK5StdViGe.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: Shutterstock)</span></figcaption></figure><p>When someone installs the false Maccy and opens the disk image,  they're prompted to enter Command-R immediately. Doing so executes the malicious code inside AppleScript. This allows it to bypass com.apple.quarantine, a normal macOS feature that offers warnings and restrictions when you're opening executable files from the internet.</p><p>The second stage is a Mach-O file specifically written for Macs running Apple M-series CPUs. Rust is apparently an uncommon code for <a href="https://www.tomsguide.com/computing/malware-adware/hackers-are-using-cracked-versions-of-legitimate-apps-to-spread-dangerous-mac-malware-how-to-stay-safe">macOS infostealers</a>. This bundles SQLite and calls it read interface, meaning it opens and reads databases files directly.</p><p>PamStealer will pop up a native password prompt that is meant to resemble a system authorization request. It reads, "“Maccy wants to make changes. Enter your password to allow this.” </p><p>Once a password is entered, it's validated through the PAM API, meaning its harder for malware defenders to detect. Additionally, it can either give a malicious actor full disk access or inject code designed to access Ethereum accounts.</p><p>“Together, these behaviors illustrate how commodity macOS stealers continue to evolve, adopting quieter execution chains and native implementations that reduce traditional detection opportunities while remaining compatible with standard macOS features,” Jamf said.</p><h2 id="how-to-stay-safe-from-pamstealer">How to stay safe from PamStealer</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="WNK5Zs69wY5j94beX98P3A" name="MacBook Pro M5--11" alt="MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/WNK5Zs69wY5j94beX98P3A.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>First and foremost, Maccy is a real, legitimate app that is quite popular. If you are interested in checking the app, the only real website is <a href="https://maccy.app/" target="_blank">maccy.app</a>. </p><p>Jamf found the fake Maccy was being hosted at maccyapp.com, a site you should <strong>not</strong> visit.</p><p>Secondly, it's a good reminder to double and triple-check website URLs. Specifically for macOS apps, you can also see if the app in question is available in the Apple App Store. Maccy, for instance, is in the App Store.</p><p>Apple is still a pretty closed garden so if you're looking for something and want to be sure it's real, I would recommend starting there before venturing into the hinterlands of the internet.</p><p>Beyond that, your Mac does come with built-in security software in the form of <a href="https://www.tomsguide.com/computing/online-security/i-tried-apples-new-security-feature-in-macos-that-warns-you-about-potential-clickfix-attacks-and-windows-should-take-note">XProtect</a>. But if you need some extra protection, it might be worth investing in one of the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software</a> solutions to run alongside it.</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/computing/online-security/apples-hide-my-email-always-seemed-too-good-to-be-true-and-this-new-vulnerability-proves-it-was">Apple’s ‘Hide My Email’ reportedly exposing real email addresses</a></li><li><a href="https://www.tomsguide.com/computing/online-security/what-is-q-day">What is Q-Day?</a></li><li><a href="https://www.tomsguide.com/computing/online-security/amazon-put-identity-theft-victims-through-a-kafkaesque-ordeal-ftc-issues-usd2-5-million-fine-over-denying-requests">'Amazon put identity theft victims through a Kafkaesque ordeal': FTC issues $2.5 million fine over denying requests</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/malware-adware/new-pamstealer-mac-malware-poses-as-a-clipboard-manager-to-steal-your-login-info-how-to-stay-safe</link>
                                                                            <description>
                            <![CDATA[ The new PamStealer Mac malware appears to be surprisingly clever while it harvests data and login credentials in the background. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Wx9SvCZDucTPh9rnMm85un</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rjvaLaDqTmZTLZ7RKhKSUB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 03 Jul 2026 03:55:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Malware & Adware]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/rjvaLaDqTmZTLZ7RKhKSUB-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Malware]]></media:description>                                                            <media:text><![CDATA[Malware]]></media:text>
                                <media:title type="plain"><![CDATA[Malware]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rjvaLaDqTmZTLZ7RKhKSUB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Security researchers who focus on Apple devices have discovered a new <a href="https://www.tomsguide.com/computing/malware-adware/hackers-are-using-cracked-versions-of-legitimate-apps-to-spread-dangerous-mac-malware-how-to-stay-safe">macOS malware</a> that appears to be surprisingly clever while it harvests data and login credentials. </p><p>According to the IT firm <a href="https://www.jamf.com/blog/pamstealer-macos-infostealer-applescript-rust/" target="_blank">Jamf </a>(via <a href="https://arstechnica.com/security/2026/07/new-pamstealer-macos-malware-uses-clever-tradecraft-to-remain-stealthy/?comments-page=1#comments" target="_blank">ArsTechnica</a>), the new malware, dubbed PamStealer, can get on your Mac in two stages. First, it disguises itself as Maccy, a clipboard manager. </p><p>Apparently, PamStealer is compiled as AppleScript written in Rust that uses the Pluggable Authentication Modules interface that is built into macOS to target the device's login password, which is then sent to an attacker-controlled server.</p><p>What makes PamStealer unique is that it combines AppleScript and disk images to stealthily enter your computer. When you click the AppleScript, it opens the macOS Script Editor where the malware is buried in the file.</p><p>"Rather than relying on shell commands such as curl or zsh, the AppleScript executes a self-contained JavaScript for Automation (JXA) downloader that retrieves and stages the payload using native Objective-C APIs," the Jamf team wrote. "Combined with a Rust-based second stage and a password capture workflow that validates credentials locally through PAM, the result is a quieter execution chain than we typically observe in commodity macOS stealers."</p><h2 id="how-pamstealer-works">How PamStealer works</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="q5NLfryTKCNZmK5StdViGe" name="shutterstock_1748211680 apple security lock.jpg" alt="opened padlock in front of Apple logo" src="https://cdn.mos.cms.futurecdn.net/q5NLfryTKCNZmK5StdViGe.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: Shutterstock)</span></figcaption></figure><p>When someone installs the false Maccy and opens the disk image,  they're prompted to enter Command-R immediately. Doing so executes the malicious code inside AppleScript. This allows it to bypass com.apple.quarantine, a normal macOS feature that offers warnings and restrictions when you're opening executable files from the internet.</p><p>The second stage is a Mach-O file specifically written for Macs running Apple M-series CPUs. Rust is apparently an uncommon code for <a href="https://www.tomsguide.com/computing/malware-adware/hackers-are-using-cracked-versions-of-legitimate-apps-to-spread-dangerous-mac-malware-how-to-stay-safe">macOS infostealers</a>. This bundles SQLite and calls it read interface, meaning it opens and reads databases files directly.</p><p>PamStealer will pop up a native password prompt that is meant to resemble a system authorization request. It reads, "“Maccy wants to make changes. Enter your password to allow this.” </p><p>Once a password is entered, it's validated through the PAM API, meaning its harder for malware defenders to detect. Additionally, it can either give a malicious actor full disk access or inject code designed to access Ethereum accounts.</p><p>“Together, these behaviors illustrate how commodity macOS stealers continue to evolve, adopting quieter execution chains and native implementations that reduce traditional detection opportunities while remaining compatible with standard macOS features,” Jamf said.</p><h2 id="how-to-stay-safe-from-pamstealer">How to stay safe from PamStealer</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="WNK5Zs69wY5j94beX98P3A" name="MacBook Pro M5--11" alt="MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/WNK5Zs69wY5j94beX98P3A.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>First and foremost, Maccy is a real, legitimate app that is quite popular. If you are interested in checking the app, the only real website is <a href="https://maccy.app/" target="_blank">maccy.app</a>. </p><p>Jamf found the fake Maccy was being hosted at maccyapp.com, a site you should <strong>not</strong> visit.</p><p>Secondly, it's a good reminder to double and triple-check website URLs. Specifically for macOS apps, you can also see if the app in question is available in the Apple App Store. Maccy, for instance, is in the App Store.</p><p>Apple is still a pretty closed garden so if you're looking for something and want to be sure it's real, I would recommend starting there before venturing into the hinterlands of the internet.</p><p>Beyond that, your Mac does come with built-in security software in the form of <a href="https://www.tomsguide.com/computing/online-security/i-tried-apples-new-security-feature-in-macos-that-warns-you-about-potential-clickfix-attacks-and-windows-should-take-note">XProtect</a>. But if you need some extra protection, it might be worth investing in one of the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software</a> solutions to run alongside it.</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/computing/online-security/apples-hide-my-email-always-seemed-too-good-to-be-true-and-this-new-vulnerability-proves-it-was">Apple’s ‘Hide My Email’ reportedly exposing real email addresses</a></li><li><a href="https://www.tomsguide.com/computing/online-security/what-is-q-day">What is Q-Day?</a></li><li><a href="https://www.tomsguide.com/computing/online-security/amazon-put-identity-theft-victims-through-a-kafkaesque-ordeal-ftc-issues-usd2-5-million-fine-over-denying-requests">'Amazon put identity theft victims through a Kafkaesque ordeal': FTC issues $2.5 million fine over denying requests</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Apple’s ‘Hide My Email’ reportedly exposing real email addresses ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Back when it was first revealed alongside iCloud Plus, Apple’s <a href="https://www.tomsguide.com/phones/iphones/i-pay-for-icloud-not-for-storage-but-for-this-perk-instead">Hide My Email</a> always seemed like magic as anyone could use it to avoid handing out their ‘real’ email address. However, a newly disclosed vulnerability just revealed that this privacy feature isn’t so private after all, leaving a way for attackers to completely uncover your actual email address.</p><p>For those unfamiliar, Hide My Email is one of the built-in perks that comes with a paid iCloud account. Once enabled, it masks your primary email address and replaces it with a randomly generated one that ends in @icloud.com. From there, Apple makes it easy to view any emails sent to that random address as they’re automatically forwarded to your main email address.</p><p>Think of Hide My Email as a fast-tracked way to get a burner email address from one of the biggest names in tech. And the best part, you don’t need one of the <a href="https://www.tomsguide.com/us/best-apple-iphone,review-6348.html">best iPhones</a> to use this feature since even Android and Windows users can sign up for <a href="https://www.tomsguide.com/reviews/icloud-review">iCloud Plus</a>.</p><p>From signing up for newsletters to free trials, Hide My Email can be an incredibly useful feature, especially for those times when you don’t want to use your work or personal email to avoid ending up with loads of spam in your inbox.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmAMgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmAMgX.js" async></script><p>Personally, I always thought it seemed too good to be true and according to a new report from <a href="https://www.404media.co/apple-hide-my-email-vulnerability-reveals-peoples-real-email-addresses/" target="_blank">404 Media</a>, that just might be the case. Here’s everything you need to know about this new Hide My Email vulnerability along with some alternatives you might want to try out in the meantime until Apple finally rolls out a real patch for this major flaw.</p><h2 id="not-your-standard-disclosure">Not your standard disclosure</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="ycPeoy26BBSBkbwXPzHuLf" name="ios16mail.jpeg" alt="how to unsend an email in iOS 16 mail" src="https://cdn.mos.cms.futurecdn.net/ycPeoy26BBSBkbwXPzHuLf.jpeg" 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>Normally with high-profile vulnerabilities, security researchers discover them and then inform the company in question about their findings. Once this is done, they usually give companies a 90-day window to verify the bug, patch it, and test that their fix actually works. Sometimes though, companies might ask for an extension if they’re dealing with a difficult-to-patch, high-severity vulnerability.</p><p>According to 404 Media’s reporting, security researcher Tyler Murphy went above and beyond when reporting the Hide My Email vulnerability to Apple back in June of last year. Instead of 90 days, he reported the issue and showed how to replicate it to Apple over a year ago. After waiting all that time, Murphy has finally come out and disclosed the vulnerability to 404 Media.</p><p>It’s worth noting though that neither Murphy nor 404 Media have revealed the exact details of this major vulnerability. Apparently though, it’s still exploitable as the news outlet independently verified the flaw this week, uncovering their own reporter's real address using a hidden email alias.</p><p>After reporting the issue to Apple, the company told Murphy that it was looking into the vulnerability. From there, Cupertino said that it was fixed back in March of this year. However, during his follow-up investigation, Murphy discovered that it was still exploitable. He then contacted Apple about the vulnerability again, and Apple effectively begged him not to go public, stating they would "appreciate" him keeping quiet until an actual fix rolls out.</p><p>As it stands now, Hide My Email can reveal your real email address since a patch that actually fixes this bug hasn’t been released yet.</p><h2 id="hide-my-email-alternatives-you-can-try-right-now">Hide My Email alternatives you can try right now</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:6000px;"><p class="vanilla-image-block" style="padding-top:58.27%;"><img id="AkUyHVwDzTTvwAgoH3BYEf" name="duckduckgo browser.jpg" alt="DuckDuckGo logo on phone" src="https://cdn.mos.cms.futurecdn.net/AkUyHVwDzTTvwAgoH3BYEf.jpg" mos="" align="middle" fullscreen="" width="6000" height="3496" 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>Given this is a major vulnerability that completely undermines Apple’s privacy-first focus, I guarantee that if the company wasn’t actively working on a fix, it absolutely is now. However, since your real email address could have been exposed as a result of this bug, you might be considering other alternatives.</p><p>Another reason you might want to ditch Hide My Email is due to an upcoming change Apple recently announced in a <a href="https://developer.apple.com/news/?id=sus6t6ab" target="_blank">blog post</a>. Instead of just providing you with a random email address ending in @icloud.com, going forward, all of your new burner email addresses will end with the dedicated @private.icloud.com subdomain. This might seem like a small change, but it’s actually quite a significant one. By switching to a unified, obvious subdomain, the very websites on which you previously used Hide My Email could soon start blocking your burner addresses automatically because they are so easy to identify. If you want to get ahead of that change, here are some alternatives worth considering.</p><p>Proton is well-known for its privacy-first tools, and just like Apple, it also has an email forwarding service called <a href="https://simplelogin.io/" target="_blank">SimpleLogin</a>. It’s considered one of the best alternatives to Hide My Email overall, and along with dedicated iOS and Android apps, it also works seamlessly in any web browser. Another cool feature is that you can instantly toggle your email aliases off with a single tap.</p><p>Another alternative worth considering is <a href="https://duckduckgo.com/email/" target="_blank">DuckDuckGo’s Email Protection</a>. The privacy-focused search engine’s email alias service is both completely free and very lightweight. It’s built into both its browser extensions and mobile apps and generates a @duck.com email alias. Besides hiding your real email address, this alternative also strips out hidden ad trackers before forwarding replies from your email alias right to your real inbox.</p><p>Finally, there’s <a href="https://relay.firefox.com/" target="_blank">Mozilla’s Firefox Relay</a>. It provides you with email aliases via a simple browser extension and has a user-friendly dashboard that lets you manage, mask, and delete your email aliases very easily.</p><p>Apple’s Hide My Email made email aliases mainstream and has been a godsend for many iCloud users. However, given this recent vulnerability and its potential fallout, no one would blame you for giving a similar service a try.</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/ai/google-is-force-feeding-ai-with-no-way-to-opt-duckduckgo-ceo-says-installs-are-surging-after-google-i-o">'Google is force-feeding AI with no way to opt ': DuckDuckGo CEO says installs are surging after Google I/O</a></li><li><a href="https://www.tomsguide.com/computing/vpns/what-are-anti-censorship-features-and-how-is-proton-vpn-leading-the-way">What are anti-censorship features and how is Proton VPN leading the way?</a></li><li><a href="https://www.tomsguide.com/computing/online-security/we-asked-cybersecurity-experts-to-build-a-privacy-toolbox-for-usd10-per-month-heres-what-they-came-up-with-and-more">We asked cybersecurity experts to build a privacy toolbox for $10 per month – here's what they came up with, and more</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/apples-hide-my-email-always-seemed-too-good-to-be-true-and-this-new-vulnerability-proves-it-was</link>
                                                                            <description>
                            <![CDATA[ Apple’s Hide My Email privacy feature is under fire after a new vulnerability revealed it was exposing, not hiding iCloud users’ real email addresses. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4Li8cThTXmRrAq7CEZimf7</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/t2NEEYUA2hFnbf6vm5HJwX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 02 Jul 2026 08:45:00 +0000</pubDate>                                                                                                                                <updated>Thu, 02 Jul 2026 15:28:15 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/t2NEEYUA2hFnbf6vm5HJwX-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Apple Mail on iPhone with Apple logo in background]]></media:description>                                                            <media:text><![CDATA[Apple Mail on iPhone with Apple logo in background]]></media:text>
                                <media:title type="plain"><![CDATA[Apple Mail on iPhone with Apple logo in background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/t2NEEYUA2hFnbf6vm5HJwX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Back when it was first revealed alongside iCloud Plus, Apple’s <a href="https://www.tomsguide.com/phones/iphones/i-pay-for-icloud-not-for-storage-but-for-this-perk-instead">Hide My Email</a> always seemed like magic as anyone could use it to avoid handing out their ‘real’ email address. However, a newly disclosed vulnerability just revealed that this privacy feature isn’t so private after all, leaving a way for attackers to completely uncover your actual email address.</p><p>For those unfamiliar, Hide My Email is one of the built-in perks that comes with a paid iCloud account. Once enabled, it masks your primary email address and replaces it with a randomly generated one that ends in @icloud.com. From there, Apple makes it easy to view any emails sent to that random address as they’re automatically forwarded to your main email address.</p><p>Think of Hide My Email as a fast-tracked way to get a burner email address from one of the biggest names in tech. And the best part, you don’t need one of the <a href="https://www.tomsguide.com/us/best-apple-iphone,review-6348.html">best iPhones</a> to use this feature since even Android and Windows users can sign up for <a href="https://www.tomsguide.com/reviews/icloud-review">iCloud Plus</a>.</p><p>From signing up for newsletters to free trials, Hide My Email can be an incredibly useful feature, especially for those times when you don’t want to use your work or personal email to avoid ending up with loads of spam in your inbox.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmAMgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmAMgX.js" async></script><p>Personally, I always thought it seemed too good to be true and according to a new report from <a href="https://www.404media.co/apple-hide-my-email-vulnerability-reveals-peoples-real-email-addresses/" target="_blank">404 Media</a>, that just might be the case. Here’s everything you need to know about this new Hide My Email vulnerability along with some alternatives you might want to try out in the meantime until Apple finally rolls out a real patch for this major flaw.</p><h2 id="not-your-standard-disclosure">Not your standard disclosure</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="ycPeoy26BBSBkbwXPzHuLf" name="ios16mail.jpeg" alt="how to unsend an email in iOS 16 mail" src="https://cdn.mos.cms.futurecdn.net/ycPeoy26BBSBkbwXPzHuLf.jpeg" 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>Normally with high-profile vulnerabilities, security researchers discover them and then inform the company in question about their findings. Once this is done, they usually give companies a 90-day window to verify the bug, patch it, and test that their fix actually works. Sometimes though, companies might ask for an extension if they’re dealing with a difficult-to-patch, high-severity vulnerability.</p><p>According to 404 Media’s reporting, security researcher Tyler Murphy went above and beyond when reporting the Hide My Email vulnerability to Apple back in June of last year. Instead of 90 days, he reported the issue and showed how to replicate it to Apple over a year ago. After waiting all that time, Murphy has finally come out and disclosed the vulnerability to 404 Media.</p><p>It’s worth noting though that neither Murphy nor 404 Media have revealed the exact details of this major vulnerability. Apparently though, it’s still exploitable as the news outlet independently verified the flaw this week, uncovering their own reporter's real address using a hidden email alias.</p><p>After reporting the issue to Apple, the company told Murphy that it was looking into the vulnerability. From there, Cupertino said that it was fixed back in March of this year. However, during his follow-up investigation, Murphy discovered that it was still exploitable. He then contacted Apple about the vulnerability again, and Apple effectively begged him not to go public, stating they would "appreciate" him keeping quiet until an actual fix rolls out.</p><p>As it stands now, Hide My Email can reveal your real email address since a patch that actually fixes this bug hasn’t been released yet.</p><h2 id="hide-my-email-alternatives-you-can-try-right-now">Hide My Email alternatives you can try right now</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:6000px;"><p class="vanilla-image-block" style="padding-top:58.27%;"><img id="AkUyHVwDzTTvwAgoH3BYEf" name="duckduckgo browser.jpg" alt="DuckDuckGo logo on phone" src="https://cdn.mos.cms.futurecdn.net/AkUyHVwDzTTvwAgoH3BYEf.jpg" mos="" align="middle" fullscreen="" width="6000" height="3496" 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>Given this is a major vulnerability that completely undermines Apple’s privacy-first focus, I guarantee that if the company wasn’t actively working on a fix, it absolutely is now. However, since your real email address could have been exposed as a result of this bug, you might be considering other alternatives.</p><p>Another reason you might want to ditch Hide My Email is due to an upcoming change Apple recently announced in a <a href="https://developer.apple.com/news/?id=sus6t6ab" target="_blank">blog post</a>. Instead of just providing you with a random email address ending in @icloud.com, going forward, all of your new burner email addresses will end with the dedicated @private.icloud.com subdomain. This might seem like a small change, but it’s actually quite a significant one. By switching to a unified, obvious subdomain, the very websites on which you previously used Hide My Email could soon start blocking your burner addresses automatically because they are so easy to identify. If you want to get ahead of that change, here are some alternatives worth considering.</p><p>Proton is well-known for its privacy-first tools, and just like Apple, it also has an email forwarding service called <a href="https://simplelogin.io/" target="_blank">SimpleLogin</a>. It’s considered one of the best alternatives to Hide My Email overall, and along with dedicated iOS and Android apps, it also works seamlessly in any web browser. Another cool feature is that you can instantly toggle your email aliases off with a single tap.</p><p>Another alternative worth considering is <a href="https://duckduckgo.com/email/" target="_blank">DuckDuckGo’s Email Protection</a>. The privacy-focused search engine’s email alias service is both completely free and very lightweight. It’s built into both its browser extensions and mobile apps and generates a @duck.com email alias. Besides hiding your real email address, this alternative also strips out hidden ad trackers before forwarding replies from your email alias right to your real inbox.</p><p>Finally, there’s <a href="https://relay.firefox.com/" target="_blank">Mozilla’s Firefox Relay</a>. It provides you with email aliases via a simple browser extension and has a user-friendly dashboard that lets you manage, mask, and delete your email aliases very easily.</p><p>Apple’s Hide My Email made email aliases mainstream and has been a godsend for many iCloud users. However, given this recent vulnerability and its potential fallout, no one would blame you for giving a similar service a try.</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/ai/google-is-force-feeding-ai-with-no-way-to-opt-duckduckgo-ceo-says-installs-are-surging-after-google-i-o">'Google is force-feeding AI with no way to opt ': DuckDuckGo CEO says installs are surging after Google I/O</a></li><li><a href="https://www.tomsguide.com/computing/vpns/what-are-anti-censorship-features-and-how-is-proton-vpn-leading-the-way">What are anti-censorship features and how is Proton VPN leading the way?</a></li><li><a href="https://www.tomsguide.com/computing/online-security/we-asked-cybersecurity-experts-to-build-a-privacy-toolbox-for-usd10-per-month-heres-what-they-came-up-with-and-more">We asked cybersecurity experts to build a privacy toolbox for $10 per month – here's what they came up with, and more</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'Amazon put identity theft victims through a Kafkaesque ordeal': FTC issues $2.5 million fine over denying requests ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Federal Trade Commission is fining Amazon $2.25 million over allegations that the <strong>retail giant regularly denied records requests from identity theft victims</strong>. The U.S. agency accused Amazon of violating the Fair Credit Reporting Act. </p><p>Per an <a href="https://www.ftc.gov/news-events/news/press-releases/2026/06/ftc-requires-amazon-pay-225-million-resolve-charges-it-knowingly-violated-fair-credit-reporting-act">FTC press release</a>, a complaint was filed by the Department of Justice as a referral from the FTC. It alleged that Amazon failed to comply with <a href="https://www.ftc.gov/business-guidance/resources/businesses-must-provide-victims-law-enforcement-transaction-records-relating-identity-theft" target="_blank">Section 609(e) of the FCRA</a>, which requires companies to provide victims of identity theft with records about transactions made in their name within 30 days of a consumer's request. </p><h2 id="ftc-accusations-against-amazon">FTC accusations against Amazon</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:1050px;"><p class="vanilla-image-block" style="padding-top:65.81%;"><img id="8TpRNq27mEgGpZN8JRsuUD" name="ftc-hq-loc.jpg" alt="Federal Trade Commission building" src="https://cdn.mos.cms.futurecdn.net/8TpRNq27mEgGpZN8JRsuUD.jpg" mos="" align="middle" fullscreen="" width="1050" height="691" attribution="" endorsement="" class="inline"></p></div></div></figure><p>Amazon apparently did not have a written policy for responding to 609(e) requests until last year.</p><div><blockquote><p>Amazon often put identity theft victims through a Kafkaesque ordeal by demanding they identify the thief who stole their information before Amazon would release the records.</p><p>Christopher Mufarrige, FTC</p></blockquote></div><p>“Amazon often put identity theft victims through a Kafkaesque ordeal by demanding they identify the thief who stole their information before Amazon would release the records the law entitles them to—records that could help victims protect themselves and recover from the fraudulent conduct,” said Christopher Mufarrige, Director of the FTC’s Bureau of Consumer Protection said in the release.</p><p><strong>The complaint claims that customers who reached out to Amazon were often told that the requested records could not be provided for "security" or "privacy" reasons. </strong>In one provided example, a consumer tried to get business records related to unauthorized charges from a fraudulent account. However, Amazon reportedly refused for security reasons unless the consumer "guessed the name on the [fraudulent] account," which they were unable to do.</p><h2 id="penalties-and-resolution">Penalties and resolution</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="n7naznf6XXby7f2TzxcSt3" name="Amazon Tips.jpg" alt="Amazon app logo" src="https://cdn.mos.cms.futurecdn.net/n7naznf6XXby7f2TzxcSt3.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: Shutterstock)</span></figcaption></figure><p>Alongside the $2.25 million civial penalty, <strong>the </strong><a href="https://www.ftc.gov/system/files/ftc_gov/pdf/Amazon-ConsentMotionforOrder.pdf" target="_blank"><strong>DOJ's proposed order</strong></a><strong> requires Amazon to provide records lawfully requested by identity theft victim</strong>s and law enforcement agencies. It also requires the company to provide notice to customers about how they can request FCRA records.</p><p>Additionally, Amazon is required to contact any customers who requested records since April 2024. </p><p><strong>An Amazon spokesperson told Tom's Guide that it has implemented process improvements and resolved the matter with the FTC.</strong></p><p>“We are committed to providing customers with their detailed account information when they need it most. We've resolved this matter with the FTC and have implemented process improvements for customers who believe they may be victims of identity theft. Customers who need assistance requesting their records can visit our <a href="https://www.amazon.com/gp/help/customer/display.html?nodeId=TJxMd8vqN3YHz8DNEo" target="_blank">Help Page</a> to learn more."</p><h2 id="how-to-contact-amazon-for-identity-theft-records">How to contact Amazon for Identity Theft records</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="XQaBKuYTokum8CcLXPetj3" name="Amazon sale.jpg" alt="Amazon Summer Sale" src="https://cdn.mos.cms.futurecdn.net/XQaBKuYTokum8CcLXPetj3.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: Shutterstock)</span></figcaption></figure><p>Amazon has a portal for Identity theft called "<a href="https://account-status.amazon.com/uaa-account-unauthorized-activity-report" target="_blank">Report Suspicious Activity</a>." There you can report unrecognized orders, chargers to your payment methods that aren't from your Amazon account and other unauthorized activity.</p><p><strong>You can request records relating to fraudulent transactions via the </strong><a href="https://www.amazon.com/hz/privacy-central/data-requests/preview.html" target="_blank"><strong>Request Your Data</strong></a><strong> portal. </strong>If that's not enough you can also send an email or physical mail: </p><p><strong>By Email: </strong>fcra-requests@amazon.com</p><p><strong>By Mail: </strong>Amazon Legal Department <br>Attn: FCRA Records Requests <br>P.O. Box 80161Seattle, WA 98108-9990</p><p>You will need to provide a copy of a government ID, a copy of a police report concerning identity theft, or a government-issued Identity Theft Report, found at <a href="https://www.identitytheft.gov/" target="_blank">IdentityTheft.gov</a>. You'll also need relevant details about the fraudulent transaction and contact information so Amazon can reach out.</p><p>Amazon says that it will fulfill your requests within 30 days unless more information is needed.</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/entertainment/streaming-devices/amazon-kills-fire-stick-sideloading-apparently-malware-and-piracy-are-to-blame">Amazon kills Fire Stick sideloading — apparently, malware and piracy are to blame</a></li><li><a href="https://www.tomsguide.com/sales-events/amazon-has-a-hidden-button-that-connects-you-with-a-real-customer-service-agent-heres-where-to-find-it">Amazon has a hidden button that connects you with a real customer service agent — here's where to find it</a></li><li><a href="https://www.tomsguide.com/ai/i-never-shop-on-amazon-without-chatgpt-heres-how-i-use-it-to-find-the-best-products">Still shopping blind on Amazon? This ChatGPT trick helps me avoid bad buys — and it works every time</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/amazon-put-identity-theft-victims-through-a-kafkaesque-ordeal-ftc-issues-usd2-5-million-fine-over-denying-requests</link>
                                                                            <description>
                            <![CDATA[ The Federal Trade Commission accused Amazon of making it difficult for identity theft victims to actually get records of fraudulent transactions. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EADeR4L7JTYdAtzNK7K7rQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/wmVm3TePyjJDn24ewHmcBh-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 01 Jul 2026 20:48:38 +0000</pubDate>                                                                                                                                <updated>Wed, 01 Jul 2026 20:58:49 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/wmVm3TePyjJDn24ewHmcBh-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon logo on a building]]></media:description>                                                            <media:text><![CDATA[Amazon logo on a building]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon logo on a building]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/wmVm3TePyjJDn24ewHmcBh-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Federal Trade Commission is fining Amazon $2.25 million over allegations that the <strong>retail giant regularly denied records requests from identity theft victims</strong>. The U.S. agency accused Amazon of violating the Fair Credit Reporting Act. </p><p>Per an <a href="https://www.ftc.gov/news-events/news/press-releases/2026/06/ftc-requires-amazon-pay-225-million-resolve-charges-it-knowingly-violated-fair-credit-reporting-act">FTC press release</a>, a complaint was filed by the Department of Justice as a referral from the FTC. It alleged that Amazon failed to comply with <a href="https://www.ftc.gov/business-guidance/resources/businesses-must-provide-victims-law-enforcement-transaction-records-relating-identity-theft" target="_blank">Section 609(e) of the FCRA</a>, which requires companies to provide victims of identity theft with records about transactions made in their name within 30 days of a consumer's request. </p><h2 id="ftc-accusations-against-amazon">FTC accusations against Amazon</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:1050px;"><p class="vanilla-image-block" style="padding-top:65.81%;"><img id="8TpRNq27mEgGpZN8JRsuUD" name="ftc-hq-loc.jpg" alt="Federal Trade Commission building" src="https://cdn.mos.cms.futurecdn.net/8TpRNq27mEgGpZN8JRsuUD.jpg" mos="" align="middle" fullscreen="" width="1050" height="691" attribution="" endorsement="" class="inline"></p></div></div></figure><p>Amazon apparently did not have a written policy for responding to 609(e) requests until last year.</p><div><blockquote><p>Amazon often put identity theft victims through a Kafkaesque ordeal by demanding they identify the thief who stole their information before Amazon would release the records.</p><p>Christopher Mufarrige, FTC</p></blockquote></div><p>“Amazon often put identity theft victims through a Kafkaesque ordeal by demanding they identify the thief who stole their information before Amazon would release the records the law entitles them to—records that could help victims protect themselves and recover from the fraudulent conduct,” said Christopher Mufarrige, Director of the FTC’s Bureau of Consumer Protection said in the release.</p><p><strong>The complaint claims that customers who reached out to Amazon were often told that the requested records could not be provided for "security" or "privacy" reasons. </strong>In one provided example, a consumer tried to get business records related to unauthorized charges from a fraudulent account. However, Amazon reportedly refused for security reasons unless the consumer "guessed the name on the [fraudulent] account," which they were unable to do.</p><h2 id="penalties-and-resolution">Penalties and resolution</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="n7naznf6XXby7f2TzxcSt3" name="Amazon Tips.jpg" alt="Amazon app logo" src="https://cdn.mos.cms.futurecdn.net/n7naznf6XXby7f2TzxcSt3.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: Shutterstock)</span></figcaption></figure><p>Alongside the $2.25 million civial penalty, <strong>the </strong><a href="https://www.ftc.gov/system/files/ftc_gov/pdf/Amazon-ConsentMotionforOrder.pdf" target="_blank"><strong>DOJ's proposed order</strong></a><strong> requires Amazon to provide records lawfully requested by identity theft victim</strong>s and law enforcement agencies. It also requires the company to provide notice to customers about how they can request FCRA records.</p><p>Additionally, Amazon is required to contact any customers who requested records since April 2024. </p><p><strong>An Amazon spokesperson told Tom's Guide that it has implemented process improvements and resolved the matter with the FTC.</strong></p><p>“We are committed to providing customers with their detailed account information when they need it most. We've resolved this matter with the FTC and have implemented process improvements for customers who believe they may be victims of identity theft. Customers who need assistance requesting their records can visit our <a href="https://www.amazon.com/gp/help/customer/display.html?nodeId=TJxMd8vqN3YHz8DNEo" target="_blank">Help Page</a> to learn more."</p><h2 id="how-to-contact-amazon-for-identity-theft-records">How to contact Amazon for Identity Theft records</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="XQaBKuYTokum8CcLXPetj3" name="Amazon sale.jpg" alt="Amazon Summer Sale" src="https://cdn.mos.cms.futurecdn.net/XQaBKuYTokum8CcLXPetj3.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: Shutterstock)</span></figcaption></figure><p>Amazon has a portal for Identity theft called "<a href="https://account-status.amazon.com/uaa-account-unauthorized-activity-report" target="_blank">Report Suspicious Activity</a>." There you can report unrecognized orders, chargers to your payment methods that aren't from your Amazon account and other unauthorized activity.</p><p><strong>You can request records relating to fraudulent transactions via the </strong><a href="https://www.amazon.com/hz/privacy-central/data-requests/preview.html" target="_blank"><strong>Request Your Data</strong></a><strong> portal. </strong>If that's not enough you can also send an email or physical mail: </p><p><strong>By Email: </strong>fcra-requests@amazon.com</p><p><strong>By Mail: </strong>Amazon Legal Department <br>Attn: FCRA Records Requests <br>P.O. Box 80161Seattle, WA 98108-9990</p><p>You will need to provide a copy of a government ID, a copy of a police report concerning identity theft, or a government-issued Identity Theft Report, found at <a href="https://www.identitytheft.gov/" target="_blank">IdentityTheft.gov</a>. You'll also need relevant details about the fraudulent transaction and contact information so Amazon can reach out.</p><p>Amazon says that it will fulfill your requests within 30 days unless more information is needed.</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/entertainment/streaming-devices/amazon-kills-fire-stick-sideloading-apparently-malware-and-piracy-are-to-blame">Amazon kills Fire Stick sideloading — apparently, malware and piracy are to blame</a></li><li><a href="https://www.tomsguide.com/sales-events/amazon-has-a-hidden-button-that-connects-you-with-a-real-customer-service-agent-heres-where-to-find-it">Amazon has a hidden button that connects you with a real customer service agent — here's where to find it</a></li><li><a href="https://www.tomsguide.com/ai/i-never-shop-on-amazon-without-chatgpt-heres-how-i-use-it-to-find-the-best-products">Still shopping blind on Amazon? This ChatGPT trick helps me avoid bad buys — and it works every time</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Your VPN won't stop AI companies collecting your data — here's what actually helps ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As AI tools become part of everyday life, many people are rethinking their online privacy. A new survey from <a href="https://allaboutcookies.org/vpn-usage-survey" target="_blank">All About Cookies</a> found that 40% of VPN users say they now use a virtual private network (<a href="https://www.tomsguide.com/best-picks/streaming-vpn">VPN</a>) specifically to protect their data from AI companies.</p><p>It's an understandable concern. Every time you interact with an AI chatbot, upload a document or generate an image, you're sharing information with an online service. But there's one important catch: while a VPN is a great privacy tool, it probably doesn't protect your AI data in the way many people think it does.</p><p>Here's what you need to know.</p><h2 id="why-people-are-turning-to-vpns">Why people are turning to VPNs</h2><p>According to All About Cookies' annual VPN survey of 1,000 U.S. adults, concerns about AI are beginning to influence how people think about online privacy.</p><p>The survey found that:</p><p><strong>40% of VPN users say they use a VPN to protect their data from AI companies.</strong></p><p><strong>19% use a VPN when accessing AI tools.</strong></p><p>For that reason alone, it's no surprise that VPN awareness has risen sharply over the past year. At the same time, very few respondents correctly identified everything a VPN actually does. Perhaps that last finding may explain the first.</p><h2 id="what-a-vpn-actually-does">What a VPN actually does</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:3858px;"><p class="vanilla-image-block" style="padding-top:56.56%;"><img id="xqq7DDsXvZP7BFgm7oza5T" name="VPN testing" alt="VPN Editor Mo Harber-Lamond undertaking user-testing with the top five VPNs, NordVPN, Surfshark, ExpressVPN, Proton VPN, and Private Internet Access." src="https://cdn.mos.cms.futurecdn.net/xqq7DDsXvZP7BFgm7oza5T.jpg" mos="" align="middle" fullscreen="" width="3858" height="2182" 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 VPN creates an encrypted connection between your device and a VPN server. There are valuable privacy benefits, and they're one reason VPNs remain popular.</p><p>That means it can:</p><ul><li>Hide your IP address from the websites you visit.</li><li>Encrypt your internet traffic, especially when you're using public Wi-Fi.</li><li>Prevent your internet service provider from seeing the contents of your browsing activity.</li><li>Make it appear as though you're browsing from another location.</li></ul><h2 id="what-a-vpn-doesn-t-do">What a VPN doesn't do</h2><p>This is where AI enters the picture. If you open ChatGPT, Gemini, Claude or another AI service and type in a prompt, you're voluntarily sending that information directly to the company operating the service.</p><p>A VPN doesn't stop that.</p><p>Similarly, if you're logged into an AI account, the service can still associate your conversations with your account regardless of whether you're using a VPN.</p><p>In other words, a VPN protects the connection, but not the information you choose to share once you reach the website.</p><h2 id="how-to-better-protect-your-ai-privacy">How to better protect your AI privacy</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="3TFsSKKCQqRhrxhurG8gji" name="ai.shutterstock_2255757301" alt="AI on data server" src="https://cdn.mos.cms.futurecdn.net/3TFsSKKCQqRhrxhurG8gji.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: Shutterstock)</span></figcaption></figure><p>A VPN is still a smart addition to your privacy toolkit, especially if you frequently use public Wi-Fi or want to hide your IP address. Just don't expect it to prevent AI services from collecting information that you intentionally submit.</p><p>If your goal is to reduce how much information AI companies collect, these steps are usually more effective than relying on a VPN alone:</p><ul><li>Review each <a href="https://www.tomsguide.com/ai/google-just-changed-a-major-privacy-setting-heres-the-switch-i-turned-off-immediately">AI service's privacy settings</a>.</li><li><a href="https://www.tomsguide.com/how-to/chatgpt-is-sharing-your-secrets-keep-your-chats-private-by-changing-this-setting">Turn off chat history</a> or model training where the option exists.</li><li>Avoid sharing sensitive personal or <a href="https://www.tomsguide.com/ai/im-more-terrified-of-my-chatgpt-history-leaking-than-my-bank-account-and-i-know-im-not-alone">financial information</a>.</li><li>Use <a href="https://www.tomsguide.com/ai/google-gemini-just-closed-the-gap-by-adding-chatgpt-features-heres-how-they-work">temporary chats</a> or anonymous sessions when appropriate.</li><li>Read each company's data retention policy before uploading documents.</li></ul><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKJ4MW"></div>                            </div>                            <script src="https://kwizly.com/embed/OKJ4MW.js" async></script><h2 id="the-takeaway-3">The takeaway</h2><p>The survey highlights the fact that people are increasingly concerned about what happens to their data when they use AI.</p><p>A VPN is an excellent tool for improving online privacy, but it's not an invisibility cloak for AI. If you're using ChatGPT, Gemini, Claude or another AI assistant, the most important privacy controls are usually found inside the service itself — not in your VPN app.</p><a href="https://follow.it/articles-by-amanda-caswell-tom-s-guide?leanpub" class="button button--large button--primary">Follow Amanda Caswell and stay ahead of the AI curve</a><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/ai/chatgpt-isnt-just-a-chatbot-anymore-here-are-11-things-it-can-do-in-2026">ChatGPT isn't just a chatbot anymore — here are 11 things it can do in 2026</a></li><li><a href="https://www.tomsguide.com/ai/i-built-five-chatgpt-agents-then-replaced-them-with-one-master-ai">I built five ChatGPT agents — then replaced them with one 'master' AI</a></li><li><a href="https://www.tomsguide.com/ai/i-used-chatgpt-to-audit-my-subscriptions-these-prompts-helped-me-find-nearly-usd2-000-a-year-in-recurring-charges">I used ChatGPT to audit my subscriptions — these prompts helped me find nearly $2,000 a year in recurring charges</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/40-percent-of-vpn-users-say-theyre-trying-to-block-ai-companies-from-collecting-their-data-but-does-a-vpn-actually-help</link>
                                                                            <description>
                            <![CDATA[ A new survey found that 40% of VPN users are trying to stop AI companies from collecting their data. Here's what a VPN can and can't actually protect. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xfjp3C8BM4qkMHMaYHchrc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dJqD6CntJtstecpE6TDYEF-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 01 Jul 2026 15:05:55 +0000</pubDate>                                                                                                                                <updated>Wed, 01 Jul 2026 18:45:35 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/dJqD6CntJtstecpE6TDYEF-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Proton VPN displayed on a Windows laptop]]></media:description>                                                            <media:text><![CDATA[Proton VPN displayed on a Windows laptop]]></media:text>
                                <media:title type="plain"><![CDATA[Proton VPN displayed on a Windows laptop]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dJqD6CntJtstecpE6TDYEF-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As AI tools become part of everyday life, many people are rethinking their online privacy. A new survey from <a href="https://allaboutcookies.org/vpn-usage-survey" target="_blank">All About Cookies</a> found that 40% of VPN users say they now use a virtual private network (<a href="https://www.tomsguide.com/best-picks/streaming-vpn">VPN</a>) specifically to protect their data from AI companies.</p><p>It's an understandable concern. Every time you interact with an AI chatbot, upload a document or generate an image, you're sharing information with an online service. But there's one important catch: while a VPN is a great privacy tool, it probably doesn't protect your AI data in the way many people think it does.</p><p>Here's what you need to know.</p><h2 id="why-people-are-turning-to-vpns">Why people are turning to VPNs</h2><p>According to All About Cookies' annual VPN survey of 1,000 U.S. adults, concerns about AI are beginning to influence how people think about online privacy.</p><p>The survey found that:</p><p><strong>40% of VPN users say they use a VPN to protect their data from AI companies.</strong></p><p><strong>19% use a VPN when accessing AI tools.</strong></p><p>For that reason alone, it's no surprise that VPN awareness has risen sharply over the past year. At the same time, very few respondents correctly identified everything a VPN actually does. Perhaps that last finding may explain the first.</p><h2 id="what-a-vpn-actually-does">What a VPN actually does</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:3858px;"><p class="vanilla-image-block" style="padding-top:56.56%;"><img id="xqq7DDsXvZP7BFgm7oza5T" name="VPN testing" alt="VPN Editor Mo Harber-Lamond undertaking user-testing with the top five VPNs, NordVPN, Surfshark, ExpressVPN, Proton VPN, and Private Internet Access." src="https://cdn.mos.cms.futurecdn.net/xqq7DDsXvZP7BFgm7oza5T.jpg" mos="" align="middle" fullscreen="" width="3858" height="2182" 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 VPN creates an encrypted connection between your device and a VPN server. There are valuable privacy benefits, and they're one reason VPNs remain popular.</p><p>That means it can:</p><ul><li>Hide your IP address from the websites you visit.</li><li>Encrypt your internet traffic, especially when you're using public Wi-Fi.</li><li>Prevent your internet service provider from seeing the contents of your browsing activity.</li><li>Make it appear as though you're browsing from another location.</li></ul><h2 id="what-a-vpn-doesn-t-do">What a VPN doesn't do</h2><p>This is where AI enters the picture. If you open ChatGPT, Gemini, Claude or another AI service and type in a prompt, you're voluntarily sending that information directly to the company operating the service.</p><p>A VPN doesn't stop that.</p><p>Similarly, if you're logged into an AI account, the service can still associate your conversations with your account regardless of whether you're using a VPN.</p><p>In other words, a VPN protects the connection, but not the information you choose to share once you reach the website.</p><h2 id="how-to-better-protect-your-ai-privacy">How to better protect your AI privacy</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="3TFsSKKCQqRhrxhurG8gji" name="ai.shutterstock_2255757301" alt="AI on data server" src="https://cdn.mos.cms.futurecdn.net/3TFsSKKCQqRhrxhurG8gji.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: Shutterstock)</span></figcaption></figure><p>A VPN is still a smart addition to your privacy toolkit, especially if you frequently use public Wi-Fi or want to hide your IP address. Just don't expect it to prevent AI services from collecting information that you intentionally submit.</p><p>If your goal is to reduce how much information AI companies collect, these steps are usually more effective than relying on a VPN alone:</p><ul><li>Review each <a href="https://www.tomsguide.com/ai/google-just-changed-a-major-privacy-setting-heres-the-switch-i-turned-off-immediately">AI service's privacy settings</a>.</li><li><a href="https://www.tomsguide.com/how-to/chatgpt-is-sharing-your-secrets-keep-your-chats-private-by-changing-this-setting">Turn off chat history</a> or model training where the option exists.</li><li>Avoid sharing sensitive personal or <a href="https://www.tomsguide.com/ai/im-more-terrified-of-my-chatgpt-history-leaking-than-my-bank-account-and-i-know-im-not-alone">financial information</a>.</li><li>Use <a href="https://www.tomsguide.com/ai/google-gemini-just-closed-the-gap-by-adding-chatgpt-features-heres-how-they-work">temporary chats</a> or anonymous sessions when appropriate.</li><li>Read each company's data retention policy before uploading documents.</li></ul><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKJ4MW"></div>                            </div>                            <script src="https://kwizly.com/embed/OKJ4MW.js" async></script><h2 id="the-takeaway-3">The takeaway</h2><p>The survey highlights the fact that people are increasingly concerned about what happens to their data when they use AI.</p><p>A VPN is an excellent tool for improving online privacy, but it's not an invisibility cloak for AI. If you're using ChatGPT, Gemini, Claude or another AI assistant, the most important privacy controls are usually found inside the service itself — not in your VPN app.</p><a href="https://follow.it/articles-by-amanda-caswell-tom-s-guide?leanpub" class="button button--large button--primary">Follow Amanda Caswell and stay ahead of the AI curve</a><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/ai/chatgpt-isnt-just-a-chatbot-anymore-here-are-11-things-it-can-do-in-2026">ChatGPT isn't just a chatbot anymore — here are 11 things it can do in 2026</a></li><li><a href="https://www.tomsguide.com/ai/i-built-five-chatgpt-agents-then-replaced-them-with-one-master-ai">I built five ChatGPT agents — then replaced them with one 'master' AI</a></li><li><a href="https://www.tomsguide.com/ai/i-used-chatgpt-to-audit-my-subscriptions-these-prompts-helped-me-find-nearly-usd2-000-a-year-in-recurring-charges">I used ChatGPT to audit my subscriptions — these prompts helped me find nearly $2,000 a year in recurring charges</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ WhatsApp usernames are rolling out soon — here's how to reserve yours ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The biggest WhatsApp privacy update in years is officially underway. WhatsApp is finally shifting away from phone numbers and introducing usernames, giving its three billion users an entirely new way to connect securely. </p><p>But with username reservations going live this week, the clock is ticking to claim your digital identity before the scramble begins. While the platform is offering first dibs to users wishing to port over their existing Facebook or Instagram handles, unreserved names are up for grabs. </p><p>Here is how to beat the global rush, navigate the new settings, and secure your WhatsApp username right now.</p><section class="howto-block">                    <h3>How to set up your WhatsApp username</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/JJcjKXmwbSXbRrzCkAnwa9.jpg"                                        alt="The WhatsApp app tile visible on an iPhone screen"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/JJcjKXmwbSXbRrzCkAnwa9.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p><strong>Open WhatsApp and tap You in the bottom right corner</strong>. From here, <strong>go to Account and select username</strong>. If you don't see it yet, the feature is rolling out globally this week and should appear shortly. </p><p><strong>Tap Create username </strong>and once you are in, you can claim a brand-new name, use WhatsApp’s generator for ideas, or instantly port over your existing Instagram or Facebook handle. </p><p>After locking down your choice, be sure to customize your privacy settings. Enabling the optional four-digit PIN adds an excellent extra layer of security, requiring new contacts to know both your handle and your code before they can message you. </p><p>From there, you can start handing out your username instead of your digits. </p></p>                </section><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:676px;"><p class="vanilla-image-block" style="padding-top:31.51%;"><img id="8RpLeaq6UZxfGpTcqGj7HX" name="Google" alt="Google" src="https://cdn.mos.cms.futurecdn.net/8RpLeaq6UZxfGpTcqGj7HX.jpg" mos="" align="right" fullscreen="" width="676" height="213" attribution="" endorsement="" class="pull-rightinline"></p></div></div></figure><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/home/smart-home/i-thought-it-was-weird-spying-on-my-cats-with-this-new-robotic-litter-box-but-it-does-more-than-just-record-them">You can use WhatsApp on Apple Watch — here's how to set it up</a></li><li><a href="https://www.tomsguide.com/computing/instant-messengers/hidden-whatsapp-features-you-should-know-about">Message like a boss — these are the 7 WhatsApp features you should be using</a></li><li><a href="https://www.tomsguide.com/how-to/how-to-pin-whatsapp-messages">WhatsApp finally lets you pin messages — here's how</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/social-media/whatsapp-usernames-are-rolling-out-soon-heres-how-to-reserve-yours</link>
                                                                            <description>
                            <![CDATA[ Users can claim their preferred WhatsApp username during the early access period. Here's how to do it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">opyWwBrd78H7ziaJvNERiH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DhZDGQfQtdXXfhkSAWhbKZ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 30 Jun 2026 14:31:18 +0000</pubDate>                                                                                                                                <updated>Tue, 30 Jun 2026 17:01:37 +0000</updated>
                                                                                                                                            <category><![CDATA[Social Media]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DhZDGQfQtdXXfhkSAWhbKZ-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Whatsapp logo]]></media:description>                                                            <media:text><![CDATA[Whatsapp logo]]></media:text>
                                <media:title type="plain"><![CDATA[Whatsapp logo]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DhZDGQfQtdXXfhkSAWhbKZ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The biggest WhatsApp privacy update in years is officially underway. WhatsApp is finally shifting away from phone numbers and introducing usernames, giving its three billion users an entirely new way to connect securely. </p><p>But with username reservations going live this week, the clock is ticking to claim your digital identity before the scramble begins. While the platform is offering first dibs to users wishing to port over their existing Facebook or Instagram handles, unreserved names are up for grabs. </p><p>Here is how to beat the global rush, navigate the new settings, and secure your WhatsApp username right now.</p><section class="howto-block">                    <h3>How to set up your WhatsApp username</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/JJcjKXmwbSXbRrzCkAnwa9.jpg"                                        alt="The WhatsApp app tile visible on an iPhone screen"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/JJcjKXmwbSXbRrzCkAnwa9.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p><strong>Open WhatsApp and tap You in the bottom right corner</strong>. From here, <strong>go to Account and select username</strong>. If you don't see it yet, the feature is rolling out globally this week and should appear shortly. </p><p><strong>Tap Create username </strong>and once you are in, you can claim a brand-new name, use WhatsApp’s generator for ideas, or instantly port over your existing Instagram or Facebook handle. </p><p>After locking down your choice, be sure to customize your privacy settings. Enabling the optional four-digit PIN adds an excellent extra layer of security, requiring new contacts to know both your handle and your code before they can message you. </p><p>From there, you can start handing out your username instead of your digits. </p></p>                </section><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:676px;"><p class="vanilla-image-block" style="padding-top:31.51%;"><img id="8RpLeaq6UZxfGpTcqGj7HX" name="Google" alt="Google" src="https://cdn.mos.cms.futurecdn.net/8RpLeaq6UZxfGpTcqGj7HX.jpg" mos="" align="right" fullscreen="" width="676" height="213" attribution="" endorsement="" class="pull-rightinline"></p></div></div></figure><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/home/smart-home/i-thought-it-was-weird-spying-on-my-cats-with-this-new-robotic-litter-box-but-it-does-more-than-just-record-them">You can use WhatsApp on Apple Watch — here's how to set it up</a></li><li><a href="https://www.tomsguide.com/computing/instant-messengers/hidden-whatsapp-features-you-should-know-about">Message like a boss — these are the 7 WhatsApp features you should be using</a></li><li><a href="https://www.tomsguide.com/how-to/how-to-pin-whatsapp-messages">WhatsApp finally lets you pin messages — here's how</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to use a VPN to get better signal on crowded networks – stadiums, airports, World Cup fan zones ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Stadiums, airports, and fan parks are some of the worst environments imaginable for public Wi-Fi. Tens of thousands of people competing for the same signal means packet loss, crawling speeds, and connections that drop without warning. So, for example, if you're heading to a few games at the <a href="https://www.tomsguide.com/entertainment/streaming/theres-a-simple-way-to-watch-world-cup-2026-for-free">FIFA World Cup 2026</a>, things might not be as smooth as you'd like.</p><p>One of the<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> is a handy tool to have at your disposal on networks like these. While it's fairly unlikely nowadays you'll be caught out by a <a href="https://www.tomsguide.com/computing/online-security/what-is-a-man-in-the-middle-attack">man-in-the-middle attack</a>, boosting your privacy can only be a good thing – and when a VPN is set up right, a VPN may also be able to increase your connection speeds significantly.</p><p>Here, I'll run down a few quick settings to tweak to make your public Wi-Fi experience more bearable.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="pick-your-protocol">Pick your protocol</h2><p>A VPN protocol is the set of rules that determines how your device encrypts and moves your data. On a congested or restrictive network, the wrong protocol can mean failed connections, throttled speeds, or both – and switching is often the quickest fix.</p><p>WireGuard should be your first port of call. It's a modern protocol built with a low data overhead and near-instant reconnection times, making it well suited to the kind of unstable connections you'll find in a packed stadium or airport terminal. Most VPN apps already default to it – but if you're on an iPhone, check your settings, as IKEv2 is often the default instead.</p><p>IKEv2 is a solid runner-up for mobile users who switch frequently between Wi-Fi and cellular data. It handles network changes smoothly, though speeds won't quite match WireGuard.</p><p>If you're struggling to connect at all, try OpenVPN. It's generally slower than WireGuard, but its ability to run on port 443 – the same port used by standard web traffic – means it's more likely to work on networks that try to block VPNs. For a deeper look at how the<a href="https://www.tomsguide.com/best-picks/best-fast-vpn"> fastest VPNs</a> handle different conditions, our dedicated guide is worth a read. </p><h2 id="stay-stealthy">Stay stealthy</h2><p>Many stadiums and airports actively manage their networks by throttling heavy data users – a necessary measure when tens of thousands of people are sharing the same connection, but one that can reduce your speeds to near-unusable levels during a big event.</p><p>VPNs can sidestep this by hiding your traffic from the network – if it can't see what you're doing, it can't single you out for throttling. The catch is that many venues have wised up to this, and will throttle any traffic that looks like VPN traffic too.</p><p>The fix is Stealth Mode – sometimes called Obfuscation or Scramble depending on which app you're using. It disguises your VPN traffic as ordinary web traffic, so the network treats it accordingly. You keep the speed benefits of bypassing throttling while your actual activity stays hidden.</p><p>Unfortunately, if the network you're connected to flat-out throttle's <em>everyone's</em> connection, regardless of how much data theyre using, a VPN won't make much of a difference. As always, there's an element of trial and error to this.</p><h2 id="set-switches-to-kill">Set switches to kill</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:7687px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="Uge7NgrXmKH5Fcs7JCHRZ8" name="Kill switch image article header.jpg" alt="Green switch in the On position on a pastel yellow background" src="https://cdn.mos.cms.futurecdn.net/Uge7NgrXmKH5Fcs7JCHRZ8.jpg" mos="" align="middle" fullscreen="" width="7687" height="4323" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Javier Zayas Photography)</span></figcaption></figure><p>Switching between Wi-Fi and mobile data – or simply dropping out of range in a crowded venue – can cause your VPN connection to drop momentarily. That split second is enough for your real IP address to be exposed before the VPN reconnects, which defeats the purpose of using one in the first place.</p><p>A kill switch solves this by blocking all internet traffic the moment your VPN drops, preventing any leaks until the connection is restored. Pair this with Auto-Connect, which ensures your VPN engages automatically whenever you join an untrusted public network, and you've closed off the two most common sources of accidental exposure.</p><p>As a side-note, your VPN "blocking all internet traffic" sounds drastic, but in reality, it's nothing to worry about. This only equates to a second or two of downtime, which is very unlikely to be noticed.</p><h2 id="split-the-tunnel">Split the tunnel</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="oHZ43H5QK9Ni6g6KV48Zvc" name="Seattle Stadium, temporarily renamed from Lumen Field, pictured ahead of World Cup 2026" alt="Seattle Stadium, temporarily renamed from Lumen Field, pictured ahead of World Cup 2026" src="https://cdn.mos.cms.futurecdn.net/oHZ43H5QK9Ni6g6KV48Zvc.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: Jason Redmond/AFP via Getty Images)</span></figcaption></figure><p>Running all your apps through a VPN simultaneously puts extra demand on both your device and the network – bandwidth you can't afford to waste when thousands of people are competing for the same signal.</p><p>Split tunneling lets you choose which apps use the VPN and which don't. Route your sensitive apps – banking, email, social media logins – through the encrypted tunnel, and let everything else connect directly. Checking live scores or streaming music in the background doesn't need VPN protection, and bypassing it for those apps can free up enough speed to make a real difference. Plus, by reducing the amount of data you need to encrypt will also save you precious battery life.</p><h2 id="bottom-line-3">Bottom line</h2><p>A few seconds spent in your VPN's settings can be the difference between a working connection and a frustrating one. </p><p>Switch your protocol – WireGuard for speed, OpenVPN if you're struggling to connect – enable Stealth mode, turn on your kill switch, and set up split tunneling. Do all of this, and you'll be in a far better position than the thousands of other people on the same network. </p><div ><table><caption>Quick Cheat Sheet</caption><thead><tr><th class="firstcol " ><p><strong>What to look for in your app</strong></p></th><th  ><p><strong>What to set it to</strong></p></th><th  ><p><strong>What it does for you</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Protocol / Connection Type</strong></p></td><td  ><p>WireGuard / OpenVPN</p></td><td  ><p>Generally gives you the fastest speed and quickest reconnections. If you have connection issues, try <strong>OpenVPN</strong>.</p></td></tr><tr><td class="firstcol " ><p><strong>Stealth / Obfuscation</strong></p></td><td  ><p>ON (if you struggle to connect)</p></td><td  ><p>Not always necessary, but helps stop the venue's Wi-Fi from blocking your VPN.</p></td></tr><tr><td class="firstcol " ><p><strong>Kill Switch</strong></p></td><td  ><p>ON (always)</p></td><td  ><p>Keeps you safe if the crowded Wi-Fi suddenly drops.</p></td></tr><tr><td class="firstcol " ><p><strong>Split Tunneling</strong></p></td><td  ><p>Enabled (Select apps)</p></td><td  ><p>Saves speed by only protecting your most important apps.</p></td></tr></tbody></table></div><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/how-to-use-a-vpn-to-get-better-signal-on-crowded-networks-stadiums-airports-world-cup-fan-zones</link>
                                                                            <description>
                            <![CDATA[ It's worth using a VPN on crowded public networks – and with the right settings, a few seconds of tweaking can keep your connection fast, secure, and leak-free. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4KnCNU2NrGEZxRoPeT7jLm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iwe78CWeJYTaQrJKSEEr84-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 26 Jun 2026 15:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/iwe78CWeJYTaQrJKSEEr84-1280-80.png">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Fully packed stands in a large stadium]]></media:description>                                                            <media:text><![CDATA[Fully packed stands in a large stadium]]></media:text>
                                <media:title type="plain"><![CDATA[Fully packed stands in a large stadium]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/iwe78CWeJYTaQrJKSEEr84-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Stadiums, airports, and fan parks are some of the worst environments imaginable for public Wi-Fi. Tens of thousands of people competing for the same signal means packet loss, crawling speeds, and connections that drop without warning. So, for example, if you're heading to a few games at the <a href="https://www.tomsguide.com/entertainment/streaming/theres-a-simple-way-to-watch-world-cup-2026-for-free">FIFA World Cup 2026</a>, things might not be as smooth as you'd like.</p><p>One of the<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> is a handy tool to have at your disposal on networks like these. While it's fairly unlikely nowadays you'll be caught out by a <a href="https://www.tomsguide.com/computing/online-security/what-is-a-man-in-the-middle-attack">man-in-the-middle attack</a>, boosting your privacy can only be a good thing – and when a VPN is set up right, a VPN may also be able to increase your connection speeds significantly.</p><p>Here, I'll run down a few quick settings to tweak to make your public Wi-Fi experience more bearable.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="pick-your-protocol">Pick your protocol</h2><p>A VPN protocol is the set of rules that determines how your device encrypts and moves your data. On a congested or restrictive network, the wrong protocol can mean failed connections, throttled speeds, or both – and switching is often the quickest fix.</p><p>WireGuard should be your first port of call. It's a modern protocol built with a low data overhead and near-instant reconnection times, making it well suited to the kind of unstable connections you'll find in a packed stadium or airport terminal. Most VPN apps already default to it – but if you're on an iPhone, check your settings, as IKEv2 is often the default instead.</p><p>IKEv2 is a solid runner-up for mobile users who switch frequently between Wi-Fi and cellular data. It handles network changes smoothly, though speeds won't quite match WireGuard.</p><p>If you're struggling to connect at all, try OpenVPN. It's generally slower than WireGuard, but its ability to run on port 443 – the same port used by standard web traffic – means it's more likely to work on networks that try to block VPNs. For a deeper look at how the<a href="https://www.tomsguide.com/best-picks/best-fast-vpn"> fastest VPNs</a> handle different conditions, our dedicated guide is worth a read. </p><h2 id="stay-stealthy">Stay stealthy</h2><p>Many stadiums and airports actively manage their networks by throttling heavy data users – a necessary measure when tens of thousands of people are sharing the same connection, but one that can reduce your speeds to near-unusable levels during a big event.</p><p>VPNs can sidestep this by hiding your traffic from the network – if it can't see what you're doing, it can't single you out for throttling. The catch is that many venues have wised up to this, and will throttle any traffic that looks like VPN traffic too.</p><p>The fix is Stealth Mode – sometimes called Obfuscation or Scramble depending on which app you're using. It disguises your VPN traffic as ordinary web traffic, so the network treats it accordingly. You keep the speed benefits of bypassing throttling while your actual activity stays hidden.</p><p>Unfortunately, if the network you're connected to flat-out throttle's <em>everyone's</em> connection, regardless of how much data theyre using, a VPN won't make much of a difference. As always, there's an element of trial and error to this.</p><h2 id="set-switches-to-kill">Set switches to kill</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:7687px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="Uge7NgrXmKH5Fcs7JCHRZ8" name="Kill switch image article header.jpg" alt="Green switch in the On position on a pastel yellow background" src="https://cdn.mos.cms.futurecdn.net/Uge7NgrXmKH5Fcs7JCHRZ8.jpg" mos="" align="middle" fullscreen="" width="7687" height="4323" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Javier Zayas Photography)</span></figcaption></figure><p>Switching between Wi-Fi and mobile data – or simply dropping out of range in a crowded venue – can cause your VPN connection to drop momentarily. That split second is enough for your real IP address to be exposed before the VPN reconnects, which defeats the purpose of using one in the first place.</p><p>A kill switch solves this by blocking all internet traffic the moment your VPN drops, preventing any leaks until the connection is restored. Pair this with Auto-Connect, which ensures your VPN engages automatically whenever you join an untrusted public network, and you've closed off the two most common sources of accidental exposure.</p><p>As a side-note, your VPN "blocking all internet traffic" sounds drastic, but in reality, it's nothing to worry about. This only equates to a second or two of downtime, which is very unlikely to be noticed.</p><h2 id="split-the-tunnel">Split the tunnel</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="oHZ43H5QK9Ni6g6KV48Zvc" name="Seattle Stadium, temporarily renamed from Lumen Field, pictured ahead of World Cup 2026" alt="Seattle Stadium, temporarily renamed from Lumen Field, pictured ahead of World Cup 2026" src="https://cdn.mos.cms.futurecdn.net/oHZ43H5QK9Ni6g6KV48Zvc.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: Jason Redmond/AFP via Getty Images)</span></figcaption></figure><p>Running all your apps through a VPN simultaneously puts extra demand on both your device and the network – bandwidth you can't afford to waste when thousands of people are competing for the same signal.</p><p>Split tunneling lets you choose which apps use the VPN and which don't. Route your sensitive apps – banking, email, social media logins – through the encrypted tunnel, and let everything else connect directly. Checking live scores or streaming music in the background doesn't need VPN protection, and bypassing it for those apps can free up enough speed to make a real difference. Plus, by reducing the amount of data you need to encrypt will also save you precious battery life.</p><h2 id="bottom-line-3">Bottom line</h2><p>A few seconds spent in your VPN's settings can be the difference between a working connection and a frustrating one. </p><p>Switch your protocol – WireGuard for speed, OpenVPN if you're struggling to connect – enable Stealth mode, turn on your kill switch, and set up split tunneling. Do all of this, and you'll be in a far better position than the thousands of other people on the same network. </p><div ><table><caption>Quick Cheat Sheet</caption><thead><tr><th class="firstcol " ><p><strong>What to look for in your app</strong></p></th><th  ><p><strong>What to set it to</strong></p></th><th  ><p><strong>What it does for you</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Protocol / Connection Type</strong></p></td><td  ><p>WireGuard / OpenVPN</p></td><td  ><p>Generally gives you the fastest speed and quickest reconnections. If you have connection issues, try <strong>OpenVPN</strong>.</p></td></tr><tr><td class="firstcol " ><p><strong>Stealth / Obfuscation</strong></p></td><td  ><p>ON (if you struggle to connect)</p></td><td  ><p>Not always necessary, but helps stop the venue's Wi-Fi from blocking your VPN.</p></td></tr><tr><td class="firstcol " ><p><strong>Kill Switch</strong></p></td><td  ><p>ON (always)</p></td><td  ><p>Keeps you safe if the crowded Wi-Fi suddenly drops.</p></td></tr><tr><td class="firstcol " ><p><strong>Split Tunneling</strong></p></td><td  ><p>Enabled (Select apps)</p></td><td  ><p>Saves speed by only protecting your most important apps.</p></td></tr></tbody></table></div><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Don't let ISP throttling ruin your USA vs Turkey stream – fix it with our top streaming VPN which has a 60-day money-back guarantee ]]></title>
                                                                                                <dc:content><![CDATA[ <p>USA vs Turkey is a chance for the USMNT to really flex their muscles, seeing as they're through to the Round of 32 regardless of the result. However, even if you've got a solid broadband connection at home, there's no guarantee of a smooth stream. ISPs routinely throttle bandwidth when they detect heavy streaming activity, and with millions of fans tuning in simultaneously, the risk of a buffering-plagued match is very real.</p><p>The <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> tackle this by making your traffic unreadable to your ISP. Without knowing what you're doing, it can't make the decision to slow you down – so instead of throttling your stream mid-match, it simply lets your connection run at full tilt.</p><p>Right now, Norton VPN sits at the top of our <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best streaming VPN</a> rankings, and a compelling World Cup deal makes it particularly well-timed for anyone wanting a buffer-free tournament.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-2">How does Norton VPN compare to other top VPNs?</h2><p>When it comes to sheer breadth, <a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> is hard to beat. Its network spans more than 9,000 servers across 149 countries, and in our speed tests it hit over 1,249 Mbps locally – figures that put it ahead of most of the competition. That firepower does come at a cost, though. NordVPN starts at <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, and that requires you to commit for two years. What's more, it comes with only a 30-day money-back guarantee, compared to Norton's 60-day window.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> undercuts both on price, with two-year plans coming in at just <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> – and unlike Norton, it places no cap on device connections, making it an appealing option for households with a lot of hardware. Speed-wise it's no slouch either, ranking among the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. Where it falls short is consistency: in our streaming tests, it has occasionally failed to unblock certain Netflix regions that Norton handles without issue.</p><p>For throttling specifically, what matters most is that your VPN can reliably access streaming sites and mask your traffic from your ISP – and that's precisely where Norton's streaming credentials count most. Add in the 60-day money-back guarantee, which is double the industry standard and comfortably covers the entire tournament, and the choice is easy. </p><p>NordVPN and Surfshark are both worth considering once the final whistle blows on the group stage, but if a buffer-free World Cup is the goal, Norton is the one to back.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/dont-let-isp-throttling-ruin-your-usa-vs-turkey-stream-fix-it-with-our-top-streaming-vpn-which-has-a-60-day-money-back-guarantee</link>
                                                                            <description>
                            <![CDATA[ Internet throttling can seriously mess up your streams – if you use too much bandwidth, your ISP may slow you down to keep things fair. However, using a VPN fixes this. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yNGV2RxVcZU8eBwvqu4fxA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dKPHULhwogJnk38dxm4F7m-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 25 Jun 2026 23:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/dKPHULhwogJnk38dxm4F7m-1280-80.png">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Christian Pulisic celebrating a goal for the USMNT]]></media:description>                                                            <media:text><![CDATA[Christian Pulisic celebrating a goal for the USMNT]]></media:text>
                                <media:title type="plain"><![CDATA[Christian Pulisic celebrating a goal for the USMNT]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dKPHULhwogJnk38dxm4F7m-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>USA vs Turkey is a chance for the USMNT to really flex their muscles, seeing as they're through to the Round of 32 regardless of the result. However, even if you've got a solid broadband connection at home, there's no guarantee of a smooth stream. ISPs routinely throttle bandwidth when they detect heavy streaming activity, and with millions of fans tuning in simultaneously, the risk of a buffering-plagued match is very real.</p><p>The <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> tackle this by making your traffic unreadable to your ISP. Without knowing what you're doing, it can't make the decision to slow you down – so instead of throttling your stream mid-match, it simply lets your connection run at full tilt.</p><p>Right now, Norton VPN sits at the top of our <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best streaming VPN</a> rankings, and a compelling World Cup deal makes it particularly well-timed for anyone wanting a buffer-free tournament.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-2">How does Norton VPN compare to other top VPNs?</h2><p>When it comes to sheer breadth, <a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> is hard to beat. Its network spans more than 9,000 servers across 149 countries, and in our speed tests it hit over 1,249 Mbps locally – figures that put it ahead of most of the competition. That firepower does come at a cost, though. NordVPN starts at <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, and that requires you to commit for two years. What's more, it comes with only a 30-day money-back guarantee, compared to Norton's 60-day window.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> undercuts both on price, with two-year plans coming in at just <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> – and unlike Norton, it places no cap on device connections, making it an appealing option for households with a lot of hardware. Speed-wise it's no slouch either, ranking among the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. Where it falls short is consistency: in our streaming tests, it has occasionally failed to unblock certain Netflix regions that Norton handles without issue.</p><p>For throttling specifically, what matters most is that your VPN can reliably access streaming sites and mask your traffic from your ISP – and that's precisely where Norton's streaming credentials count most. Add in the 60-day money-back guarantee, which is double the industry standard and comfortably covers the entire tournament, and the choice is easy. </p><p>NordVPN and Surfshark are both worth considering once the final whistle blows on the group stage, but if a buffer-free World Cup is the goal, Norton is the one to back.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Stay private while streaming Scotland vs Brazil – use our top streaming VPN which has a 60-day money-back guarantee ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Scotland vs Brazil is one of the most anticipated matches of the FIFA World Cup 2026's group stage – and whether you're watching from a bar, a hotel, or any other network that isn't your own, your connection may be more exposed than you think. Plus, if you accidentally end up on websites that aren't trustworthy, exposing your IP address to them can spell danger.</p><p>Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> closes that window by encrypting your traffic and masking your IP address, so nobody on the same network can see what you're doing. It also means your ISP can't monitor your streaming habits, and websites can't see your real IP – useful if you'd rather keep your viewing activity to yourself.</p><p>We currently rate Norton VPN as the <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best VPN for streaming</a>, and there's a sensational deal running right now that makes it an easy choice for World Cup coverage.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-3">How does Norton VPN compare to other top VPNs?</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> continues to outperform Norton VPN in our overall VPN rankings, and its testing record backs that up: speeds of over 1,249 Mbps locally, a server network spanning more than 8,000 servers across 135 countries, and a near-flawless streaming unblocking record. In comparison, Norton VPN only offers servers in 65+ countries – meaning potentially less choice when it comes to streaming services.</p><p>The catch is price – even on the discounted two-year plan, NordVPN works out at around <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, which is a little more than Norton. What's more, it only comes with a 30-day money-back guarantee. Norton also has the edge when it comes to raw streaming performance, unblocking every major streaming platform in our latest round of testing, despite its smaller network.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> is a budget alternative, with plans starting at a very reasonable <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> and the bonus of unlimited device connections. This is a contrast to Norton VPN, which has strict limits on how many devices you can install the VPN on. Surfshark's a capable all-rounder, too, and one of the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. However, its streaming unblocking has been less consistent than Norton's in our reviews, occasionally struggling with certain Netflix regions.</p><p>If your main priority is keeping your streaming activity private without interruption, Norton VPN is the clear choice. What's more, that performance currently comes with competitive pricing against NordVPN and a 60-day guarantee which is double what most competitors offer, giving you the entire tournament to decide if it's right for you.</p><p>NordVPN and Surfshark remain solid options for general use once the World Cup wraps up, but for streaming this tournament privately and securely, Norton's combination of unblocking power and excellent pricing is hard to beat.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/stay-private-while-streaming-england-vs-ghana-use-our-top-streaming-vpn-which-has-a-60-day-money-back-guarantee</link>
                                                                            <description>
                            <![CDATA[ If you're out and about or abroad and trying to stream, a VPN is the perfect companion. It hides your IP, and stops any dodgy sites recording your IP address. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">d5a7TT39CVKoybUvgvFh4R</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iwVtzsLdhsxtR5TqhDPrzL-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 17:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 24 Jun 2026 15:22:23 +0000</updated>
                                                                                                                                            <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/iwVtzsLdhsxtR5TqhDPrzL-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images / Visionhaus]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ryan Christie of Scotland receives the ball in the FIFA World Cup 2026]]></media:description>                                                            <media:text><![CDATA[Ryan Christie of Scotland receives the ball in the FIFA World Cup 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Ryan Christie of Scotland receives the ball in the FIFA World Cup 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/iwVtzsLdhsxtR5TqhDPrzL-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Scotland vs Brazil is one of the most anticipated matches of the FIFA World Cup 2026's group stage – and whether you're watching from a bar, a hotel, or any other network that isn't your own, your connection may be more exposed than you think. Plus, if you accidentally end up on websites that aren't trustworthy, exposing your IP address to them can spell danger.</p><p>Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> closes that window by encrypting your traffic and masking your IP address, so nobody on the same network can see what you're doing. It also means your ISP can't monitor your streaming habits, and websites can't see your real IP – useful if you'd rather keep your viewing activity to yourself.</p><p>We currently rate Norton VPN as the <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best VPN for streaming</a>, and there's a sensational deal running right now that makes it an easy choice for World Cup coverage.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-3">How does Norton VPN compare to other top VPNs?</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> continues to outperform Norton VPN in our overall VPN rankings, and its testing record backs that up: speeds of over 1,249 Mbps locally, a server network spanning more than 8,000 servers across 135 countries, and a near-flawless streaming unblocking record. In comparison, Norton VPN only offers servers in 65+ countries – meaning potentially less choice when it comes to streaming services.</p><p>The catch is price – even on the discounted two-year plan, NordVPN works out at around <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, which is a little more than Norton. What's more, it only comes with a 30-day money-back guarantee. Norton also has the edge when it comes to raw streaming performance, unblocking every major streaming platform in our latest round of testing, despite its smaller network.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> is a budget alternative, with plans starting at a very reasonable <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> and the bonus of unlimited device connections. This is a contrast to Norton VPN, which has strict limits on how many devices you can install the VPN on. Surfshark's a capable all-rounder, too, and one of the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. However, its streaming unblocking has been less consistent than Norton's in our reviews, occasionally struggling with certain Netflix regions.</p><p>If your main priority is keeping your streaming activity private without interruption, Norton VPN is the clear choice. What's more, that performance currently comes with competitive pricing against NordVPN and a 60-day guarantee which is double what most competitors offer, giving you the entire tournament to decide if it's right for you.</p><p>NordVPN and Surfshark remain solid options for general use once the World Cup wraps up, but for streaming this tournament privately and securely, Norton's combination of unblocking power and excellent pricing is hard to beat.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Reddit, X and Zoom were down — everything is back to normal now ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p>Users experienced issues across multiple services like Reddit, X, Canva, Zoom — giving it a serious feeling of another mass-internet outage. </p><p>At around 9:40 a.m. this morning, thousands flocked to <a href="https://downdetector.com/status/reddit/" target="_blank">Downdetector</a> to report issues with the popular sharing website, and other services like X followed shortly after.</p><p>During this time, we suspected it could be something to do with Cloudflare's routine server maintenance in New Jersey, as the <a href="https://www.cloudflarestatus.com/" target="_blank">company's status page</a> notes it could cause latency and connection issues.</p><p>We received an email from Cloudflare's PR firm saying that there was nothing on its end that would cause an outage, and instead said, "Zayo, a network provider, is experiencing an outage on some of its network routes. That may cause some sites using Zayo exclusively to be unreachable, whether they use Cloudflare or not."</p><p>We'll keep a close eye on it ourselves, but if you spot any issues, let us know!</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OLVd9e"></div>                            </div>                            <script src="https://kwizly.com/embed/OLVd9e.js" async></script><h3 class="article-body__section" id="section-live-outage-updates"><span>Live outage updates</span></h3></div><div class="live-content"><time datetime="2026-06-22T13:54:14+00:00">June 22, 2026 – 9:54 AM</time><h2 id="reports-are-coming-in-fast">Reports are coming in fast</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:2216px;"><p class="vanilla-image-block" style="padding-top:35.29%;"><img id="mTjCtEKAEMCfBoyiYt7M8f" name="Screenshot 2026-06-22 at 9.53.44 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/mTjCtEKAEMCfBoyiYt7M8f.png" mos="" align="middle" fullscreen="" width="2216" height="782" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>We're seeing around 2,200 reports on Reddit at the moment, which is a large number in a very short time. It's too early to say if this outage will last, but it definitely seems that large quantities of Reddit users are having problems.</p></div><div class="live-content"><time datetime="2026-06-22T14:02:29+00:00">June 22, 2026 – 10:02 AM</time><h2 id="part-of-something-larger">Part of something larger?</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:2216px;"><p class="vanilla-image-block" style="padding-top:64.44%;"><img id="PeJYN5H5cu7rPcuaxYqH4Y" name="Screenshot 2026-06-22 at 9.57.03 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/PeJYN5H5cu7rPcuaxYqH4Y.png" mos="" align="middle" fullscreen="" width="2216" height="1428" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>While Reddit was the first major service to see a large Downdetector spike, we also noticed several services jumping, including Teams, Whatnot, Crunchyroll, Toast and tons of others. </p><p>We're also seeing spikes in reports to Cloudflare and AWS, two services that are the backbone of much of the internet. We've looked into AWS and found it to be a false flag at this point. Cloudflare's status page shows it's performing maintenance at its EWR (Newark) data center.</p><p>"Traffic might be re-routed from this location, hence there is a possibility of a slight increase in latency during this maintenance window for end-users in the affected region. For PNI / CNI customers connecting with us in this location, please make sure you are expecting this traffic to fail over elsewhere during this maintenance window as network interfaces in this datacentre may become temporarily unavailable." </p><p>This could certainly explain why services like Reddit are having issues.</p></div><div class="live-content"><time datetime="2026-06-22T14:09:58+00:00">June 22, 2026 – 10:09 AM</time><h2 id="current-cloudflare-status">Current Cloudflare status</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:1660px;"><p class="vanilla-image-block" style="padding-top:68.92%;"><img id="B7Z9itjMVMxdZfoWJRna6k" name="Screenshot 2026-06-22 at 10.08.48 AM" alt="Cloudflare" src="https://cdn.mos.cms.futurecdn.net/B7Z9itjMVMxdZfoWJRna6k.png" mos="" align="middle" fullscreen="" width="1660" height="1144" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Cloudflare)</span></figcaption></figure></div><div class="live-content"><time datetime="2026-06-22T14:14:32+00:00">June 22, 2026 – 10:14 AM</time><h2 id="reddit-still-showing-all-systems-operational">Reddit still showing all systems operational</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:1724px;"><p class="vanilla-image-block" style="padding-top:80.16%;"><img id="EnRECwBAQUAwnTo4GMGTwN" name="Screenshot 2026-06-22 at 10.12.36 AM" alt="Reddit status" src="https://cdn.mos.cms.futurecdn.net/EnRECwBAQUAwnTo4GMGTwN.png" mos="" align="middle" fullscreen="" width="1724" height="1382" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Reddit)</span></figcaption></figure><p>Something seems to be happening on the backend that's causing problems for Reddit, which started this whole ordeal, but the company hasn't acknowledged it yet. The company's status page still shows "All Systems Operational," despite thousands of Downdetector reports suggesting otherwise.</p></div><div class="live-content"><time datetime="2026-06-22T14:18:55+00:00">June 22, 2026 – 10:18 AM</time><h2 id="that-s-a-lot-of-x-reports">That's a lot of X reports</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:2172px;"><p class="vanilla-image-block" style="padding-top:40.42%;"><img id="8Xbm2zWvt4sjNuvQJhDTDB" name="Screenshot 2026-06-22 at 10.17.08 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/8Xbm2zWvt4sjNuvQJhDTDB.png" mos="" align="middle" fullscreen="" width="2172" height="878" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Currently, X has around 33,000 reports on Downdetector, which is a shockingly high number.</p><p>It's not surprising that X would have the most reports, though, as it's the most popular service among those dealing with issues at the moment. </p></div><div class="live-content"><time datetime="2026-06-22T14:24:29+00:00">June 22, 2026 – 10:24 AM</time><h2 id="reddit-declining">Reddit declining</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:2172px;"><p class="vanilla-image-block" style="padding-top:40.42%;"><img id="WCdJhSeiUJPEaysDX7D4Yc" name="Screenshot 2026-06-22 at 10.21.54 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/WCdJhSeiUJPEaysDX7D4Yc.png" mos="" align="middle" fullscreen="" width="2172" height="878" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>The reports for Reddit are starting to drop (X is still climbing), but it could mean that some of the traffic is being rerouted to other servers successfully (if that is ultimately what's causing the problems).</p></div><div class="live-content"><time datetime="2026-06-22T14:31:01+00:00">June 22, 2026 – 10:31 AM</time><h2 id="cloudflare-s-on-the-case">Cloudflare's on the case</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:869px;"><p class="vanilla-image-block" style="padding-top:60.18%;"><img id="Td5N9PmWBQPGXByd7MTVia" name="Cloudflare" alt="Cloudflare" src="https://cdn.mos.cms.futurecdn.net/Td5N9PmWBQPGXByd7MTVia.png" mos="" align="middle" fullscreen="" width="869" height="523" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Cloudflare)</span></figcaption></figure><p>We've been thinking these outages could be tied back to some scheduled maintenance of Cloudflare's datacenter in Newark. The company's just updated its system status saying they are "investigating increased error rates and latency in multiple services."</p><p>With all of these services taking a dip, looks like they may have resolved it already. But we'll test it ourselves!</p></div><div class="live-content"><time datetime="2026-06-22T14:34:33+00:00">June 22, 2026 – 10:34 AM</time><h2 id="x-outage-reports-are-dropping-like-a-stone">X outage reports are dropping like a stone</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:844px;"><p class="vanilla-image-block" style="padding-top:46.09%;"><img id="pFzVoLZNM85myLhroaTxz6" name="Down detector" alt="Down detector" src="https://cdn.mos.cms.futurecdn.net/pFzVoLZNM85myLhroaTxz6.png" mos="" align="middle" fullscreen="" width="844" height="389" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down detector)</span></figcaption></figure><p>Hope you enjoyed your time away from X — the feed is loading for me and outage reports on Down Detector are going down sharply!</p></div><div class="live-content"><time datetime="2026-06-22T14:38:59+00:00">June 22, 2026 – 10:38 AM</time><h2 id="and-there-goes-zoom">And there goes Zoom</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:837px;"><p class="vanilla-image-block" style="padding-top:46.24%;"><img id="KUkiY227fJXVDs8EHykUt3" name="Down detector" alt="Down detector" src="https://cdn.mos.cms.futurecdn.net/KUkiY227fJXVDs8EHykUt3.png" mos="" align="middle" fullscreen="" width="837" height="387" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down detector)</span></figcaption></figure><p>Had a nice Zoom call with my family who are on vacation at the moment to test it — can confirm it's working and outage reports are dropping off too!</p></div><div class="live-content"><time datetime="2026-06-22T14:50:18+00:00">June 22, 2026 – 10:50 AM</time><h2 id="we-re-calling-it">We're calling it!</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:838px;"><p class="vanilla-image-block" style="padding-top:37.83%;"><img id="6JbVoVGUJhXSrXnaUSEKYn" name="Cloudflare" alt="Cloudflare" src="https://cdn.mos.cms.futurecdn.net/6JbVoVGUJhXSrXnaUSEKYn.png" mos="" align="middle" fullscreen="" width="838" height="317" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Cloudflare)</span></figcaption></figure><p>And with a confirmation of a fix being implemented by Cloudflare and all the service outage reports for X, Zoom, Reddit and more dropping all the way back down, we're calling it.</p><p>My guess is it could've been a bit of a kettling scenario. The routine maintenance caused some latency issues, that caused more people to refresh more regularly/check the pages. An increase in traffic to an already re-routed datacenter causes more pressure on the re-routed server and here we are.</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/news/live/reddit-down-live-outage-6-22-2026</link>
                                                                            <description>
                            <![CDATA[ If you were having trouble browsing Reddit, looking at X posts and doing lots of other things online, you weren't alone, as thousands are flocking to Downdetector to report problems. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TVcqdkY3Sig2yNy8XvMFne</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/K2s442AeQLHa2V2cFAv9t4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 22 Jun 2026 13:54:59 +0000</pubDate>                                                                                                                                <updated>Mon, 22 Jun 2026 17:04:05 +0000</updated>
                                                                                                                                            <category><![CDATA[Social Media]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ dave.leclair@futurenet.com (Dave LeClair) ]]></author>                    <dc:creator><![CDATA[ Dave LeClair ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/fyx7qYdxPMTNBhdnMfNmaB.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave LeClair is the Managing News Editor for Tom&#039;s Guide, keeping his finger on the pulse of all things technology. He loves taking the complicated happenings in the tech world and explaining why they matter. Whether Apple is announcing the next big thing in the mobile space or a small startup advancing generative AI, Dave will apply his experience to help you figure out what&#039;s happening and why it&#039;s relevant to your life.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Before Tom&#039;s Guide, Dave worked for publications like PCMag, Pocket-lint, MUO, How-To Geek, Digital Trends, and others. He started writing about technology professionally for MUO in 2011 and hasn&#039;t looked back since. In addition to news, you can find reviews, how-to pieces, shopping guides, and many other types of content with Dave&#039;s name attached.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/K2s442AeQLHa2V2cFAv9t4-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Logos of outages ]]></media:description>                                                            <media:text><![CDATA[Logos of outages ]]></media:text>
                                <media:title type="plain"><![CDATA[Logos of outages ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/K2s442AeQLHa2V2cFAv9t4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p>Users experienced issues across multiple services like Reddit, X, Canva, Zoom — giving it a serious feeling of another mass-internet outage. </p><p>At around 9:40 a.m. this morning, thousands flocked to <a href="https://downdetector.com/status/reddit/" target="_blank">Downdetector</a> to report issues with the popular sharing website, and other services like X followed shortly after.</p><p>During this time, we suspected it could be something to do with Cloudflare's routine server maintenance in New Jersey, as the <a href="https://www.cloudflarestatus.com/" target="_blank">company's status page</a> notes it could cause latency and connection issues.</p><p>We received an email from Cloudflare's PR firm saying that there was nothing on its end that would cause an outage, and instead said, "Zayo, a network provider, is experiencing an outage on some of its network routes. That may cause some sites using Zayo exclusively to be unreachable, whether they use Cloudflare or not."</p><p>We'll keep a close eye on it ourselves, but if you spot any issues, let us know!</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OLVd9e"></div>                            </div>                            <script src="https://kwizly.com/embed/OLVd9e.js" async></script><h3 class="article-body__section" id="section-live-outage-updates"><span>Live outage updates</span></h3></div><div class="live-content"><time datetime="2026-06-22T13:54:14+00:00">June 22, 2026 – 9:54 AM</time><h2 id="reports-are-coming-in-fast">Reports are coming in fast</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:2216px;"><p class="vanilla-image-block" style="padding-top:35.29%;"><img id="mTjCtEKAEMCfBoyiYt7M8f" name="Screenshot 2026-06-22 at 9.53.44 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/mTjCtEKAEMCfBoyiYt7M8f.png" mos="" align="middle" fullscreen="" width="2216" height="782" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>We're seeing around 2,200 reports on Reddit at the moment, which is a large number in a very short time. It's too early to say if this outage will last, but it definitely seems that large quantities of Reddit users are having problems.</p></div><div class="live-content"><time datetime="2026-06-22T14:02:29+00:00">June 22, 2026 – 10:02 AM</time><h2 id="part-of-something-larger">Part of something larger?</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:2216px;"><p class="vanilla-image-block" style="padding-top:64.44%;"><img id="PeJYN5H5cu7rPcuaxYqH4Y" name="Screenshot 2026-06-22 at 9.57.03 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/PeJYN5H5cu7rPcuaxYqH4Y.png" mos="" align="middle" fullscreen="" width="2216" height="1428" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>While Reddit was the first major service to see a large Downdetector spike, we also noticed several services jumping, including Teams, Whatnot, Crunchyroll, Toast and tons of others. </p><p>We're also seeing spikes in reports to Cloudflare and AWS, two services that are the backbone of much of the internet. We've looked into AWS and found it to be a false flag at this point. Cloudflare's status page shows it's performing maintenance at its EWR (Newark) data center.</p><p>"Traffic might be re-routed from this location, hence there is a possibility of a slight increase in latency during this maintenance window for end-users in the affected region. For PNI / CNI customers connecting with us in this location, please make sure you are expecting this traffic to fail over elsewhere during this maintenance window as network interfaces in this datacentre may become temporarily unavailable." </p><p>This could certainly explain why services like Reddit are having issues.</p></div><div class="live-content"><time datetime="2026-06-22T14:09:58+00:00">June 22, 2026 – 10:09 AM</time><h2 id="current-cloudflare-status">Current Cloudflare status</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:1660px;"><p class="vanilla-image-block" style="padding-top:68.92%;"><img id="B7Z9itjMVMxdZfoWJRna6k" name="Screenshot 2026-06-22 at 10.08.48 AM" alt="Cloudflare" src="https://cdn.mos.cms.futurecdn.net/B7Z9itjMVMxdZfoWJRna6k.png" mos="" align="middle" fullscreen="" width="1660" height="1144" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Cloudflare)</span></figcaption></figure></div><div class="live-content"><time datetime="2026-06-22T14:14:32+00:00">June 22, 2026 – 10:14 AM</time><h2 id="reddit-still-showing-all-systems-operational">Reddit still showing all systems operational</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:1724px;"><p class="vanilla-image-block" style="padding-top:80.16%;"><img id="EnRECwBAQUAwnTo4GMGTwN" name="Screenshot 2026-06-22 at 10.12.36 AM" alt="Reddit status" src="https://cdn.mos.cms.futurecdn.net/EnRECwBAQUAwnTo4GMGTwN.png" mos="" align="middle" fullscreen="" width="1724" height="1382" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Reddit)</span></figcaption></figure><p>Something seems to be happening on the backend that's causing problems for Reddit, which started this whole ordeal, but the company hasn't acknowledged it yet. The company's status page still shows "All Systems Operational," despite thousands of Downdetector reports suggesting otherwise.</p></div><div class="live-content"><time datetime="2026-06-22T14:18:55+00:00">June 22, 2026 – 10:18 AM</time><h2 id="that-s-a-lot-of-x-reports">That's a lot of X reports</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:2172px;"><p class="vanilla-image-block" style="padding-top:40.42%;"><img id="8Xbm2zWvt4sjNuvQJhDTDB" name="Screenshot 2026-06-22 at 10.17.08 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/8Xbm2zWvt4sjNuvQJhDTDB.png" mos="" align="middle" fullscreen="" width="2172" height="878" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Currently, X has around 33,000 reports on Downdetector, which is a shockingly high number.</p><p>It's not surprising that X would have the most reports, though, as it's the most popular service among those dealing with issues at the moment. </p></div><div class="live-content"><time datetime="2026-06-22T14:24:29+00:00">June 22, 2026 – 10:24 AM</time><h2 id="reddit-declining">Reddit declining</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:2172px;"><p class="vanilla-image-block" style="padding-top:40.42%;"><img id="WCdJhSeiUJPEaysDX7D4Yc" name="Screenshot 2026-06-22 at 10.21.54 AM" alt="Downdetector" src="https://cdn.mos.cms.futurecdn.net/WCdJhSeiUJPEaysDX7D4Yc.png" mos="" align="middle" fullscreen="" width="2172" height="878" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>The reports for Reddit are starting to drop (X is still climbing), but it could mean that some of the traffic is being rerouted to other servers successfully (if that is ultimately what's causing the problems).</p></div><div class="live-content"><time datetime="2026-06-22T14:31:01+00:00">June 22, 2026 – 10:31 AM</time><h2 id="cloudflare-s-on-the-case">Cloudflare's on the case</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:869px;"><p class="vanilla-image-block" style="padding-top:60.18%;"><img id="Td5N9PmWBQPGXByd7MTVia" name="Cloudflare" alt="Cloudflare" src="https://cdn.mos.cms.futurecdn.net/Td5N9PmWBQPGXByd7MTVia.png" mos="" align="middle" fullscreen="" width="869" height="523" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Cloudflare)</span></figcaption></figure><p>We've been thinking these outages could be tied back to some scheduled maintenance of Cloudflare's datacenter in Newark. The company's just updated its system status saying they are "investigating increased error rates and latency in multiple services."</p><p>With all of these services taking a dip, looks like they may have resolved it already. But we'll test it ourselves!</p></div><div class="live-content"><time datetime="2026-06-22T14:34:33+00:00">June 22, 2026 – 10:34 AM</time><h2 id="x-outage-reports-are-dropping-like-a-stone">X outage reports are dropping like a stone</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:844px;"><p class="vanilla-image-block" style="padding-top:46.09%;"><img id="pFzVoLZNM85myLhroaTxz6" name="Down detector" alt="Down detector" src="https://cdn.mos.cms.futurecdn.net/pFzVoLZNM85myLhroaTxz6.png" mos="" align="middle" fullscreen="" width="844" height="389" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down detector)</span></figcaption></figure><p>Hope you enjoyed your time away from X — the feed is loading for me and outage reports on Down Detector are going down sharply!</p></div><div class="live-content"><time datetime="2026-06-22T14:38:59+00:00">June 22, 2026 – 10:38 AM</time><h2 id="and-there-goes-zoom">And there goes Zoom</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:837px;"><p class="vanilla-image-block" style="padding-top:46.24%;"><img id="KUkiY227fJXVDs8EHykUt3" name="Down detector" alt="Down detector" src="https://cdn.mos.cms.futurecdn.net/KUkiY227fJXVDs8EHykUt3.png" mos="" align="middle" fullscreen="" width="837" height="387" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down detector)</span></figcaption></figure><p>Had a nice Zoom call with my family who are on vacation at the moment to test it — can confirm it's working and outage reports are dropping off too!</p></div><div class="live-content"><time datetime="2026-06-22T14:50:18+00:00">June 22, 2026 – 10:50 AM</time><h2 id="we-re-calling-it">We're calling it!</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:838px;"><p class="vanilla-image-block" style="padding-top:37.83%;"><img id="6JbVoVGUJhXSrXnaUSEKYn" name="Cloudflare" alt="Cloudflare" src="https://cdn.mos.cms.futurecdn.net/6JbVoVGUJhXSrXnaUSEKYn.png" mos="" align="middle" fullscreen="" width="838" height="317" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Cloudflare)</span></figcaption></figure><p>And with a confirmation of a fix being implemented by Cloudflare and all the service outage reports for X, Zoom, Reddit and more dropping all the way back down, we're calling it.</p><p>My guess is it could've been a bit of a kettling scenario. The routine maintenance caused some latency issues, that caused more people to refresh more regularly/check the pages. An increase in traffic to an already re-routed datacenter causes more pressure on the re-routed server and here we are.</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Dangerous new Android malware impersonates TikTok and Chrome to steal your banking info from over 200 apps — how to stay safe ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Even though you should always download new apps from official sources like the <a href="https://www.tomsguide.com/news/google-play-store-is-making-a-big-upgrade-to-fight-malware-what-you-need-to-know">Google Play Store</a>, some Android users still end up getting tricked into downloading them from websites which can be extremely dangerous. Case in point, a new <a href="https://www.tomsguide.com/computing/malware-adware/this-android-banking-trojan-steals-passwords-to-take-over-your-accounts-and-all-it-takes-is-a-single-text-message">Android banking trojan</a> is currently making the rounds online that’s distributed via fake apps from malicious websites.</p><p>As reported by <a href="https://www.bleepingcomputer.com/news/security/new-rokarolla-android-malware-targets-217-banking-crypto-apps/" target="_blank">BleepingComputer</a>, once installed on vulnerable Android phones, the banking trojan in question is capable of targeting over 200 banking and financial apps to drain accounts and steal crypto. Unsurprisingly, it does so by impersonating Google Chrome and TikTok as both apps are extremely popular.</p><p>The trojan installs the new Rokarolla malware which also steals lock screen credentials, your contacts, SMS data and even uses keyloggers to record everything you type into your phone.</p><p>Here’s everything you need to know about this new Android banking trojan and how you can keep your bank account safe from the cybercriminals using it in their attacks.</p><h2 id="masquerading-as-google-play-protect">Masquerading as Google Play Protect</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="aMwXYxuTeVu62PiTqBzShb" name="Google Play Protect Real Time Scanning.jpg" alt="An example showing how real-time scanning works in Google Play Protect" src="https://cdn.mos.cms.futurecdn.net/aMwXYxuTeVu62PiTqBzShb.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: Google)</span></figcaption></figure><p>Although you should never <a href="https://www.tomsguide.com/news/hackers-have-developed-a-clever-new-way-to-add-malware-to-android-apps">sideload Android apps</a> unless you absolutely have to, many people still do despite the risk. The hackers behind this campaign use fake websites to trick unsuspecting users into installing Chrome or TikTok unofficially instead of downloading these apps directly from the Google Play Store like they should.</p><p>According to a <a href="https://zimperium.com/blog/rokarolla-android-banker-with-complete-device-takeover-capabilities" target="_blank">new report</a> from the cybersecurity firm Zimperium, after downloading either app though, the hackers use an interesting trick to give potential victims the illusion of safety. For those unfamiliar, Google’s built-in security app <a href="https://www.tomsguide.com/reviews/google-play-protect">Google Play Protect</a> checks any new software you download for viruses. However, in this case, a fake Play Protect pop-up appears before the Rockarolla malware is actually downloaded. Given the fact that the pop-up perfectly impersonates a Play Protect warning, most users wouldn’t think twice before proceeding with this secondary download.</p><p>At this point, the damage is done and the Rockarolla malware gets to work. In total, it’s able to spoof 217 different banking and financial apps to steal your credentials. It does so by using overlays that mimic each individual app. While to the end user it appears as if they’re just logging into their online bank account, they’re actually handing over their username and password to hackers.</p><p>Another interesting trick up Rockarolla’s sleeve is that it can steal SMS notifications from your online bank as well as intercept any calls trying to warn you that something is amiss. This way, you won’t get a fraud alert and the hackers can proceed to empty your accounts one by one.</p><p>While Google continues to improve Android’s security, if you don’t download apps the right way, you too could easily end up falling victim to this and other malware.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X8ogVO"></div>                            </div>                            <script src="https://kwizly.com/embed/X8ogVO.js" async></script><h2 id="how-to-stay-safe-from-android-banking-trojans">How to stay safe from Android banking trojans</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:910px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="MRUEsvBrdDnwpsDgw3GGzh" name="zaT2fiZB7dapNQNABNG7Yk.jpg" alt="A hand holding a phone securely logging in" src="https://cdn.mos.cms.futurecdn.net/MRUEsvBrdDnwpsDgw3GGzh.jpg" mos="" align="middle" fullscreen="" width="910" height="512" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>I can’t stress this enough, unless you <em>really</em> know what you’re doing, you should avoid sideloading apps. Sure, <a href="https://www.tomsguide.com/computing/malware-adware/more-than-250-malicious-apps-are-spreading-info-stealing-malware-on-android-and-ios-delete-these-right-now">malicious apps</a> do manage to sneak past Google’s defenses from time to time but for the most part, if you download new apps from the Play Store, you should be safe. The same goes for other official Android app stores like the Samsung Galaxy Store too.</p><p>From there, you want to make sure that Google Play Protect is installed and enabled on your smartphone. It’s enabled by default on all of the <a href="https://www.tomsguide.com/us/best-android-phones,review-6051.html">best Android phones</a> but it’s always a good idea to check to make sure. For extra protection though, you can also use one of the <a href="https://www.tomsguide.com/best-picks/best-android-antivirus">best Android antivirus apps</a> alongside it. You have to pay for many of them but they typically add other useful features like a <a href="https://www.tomsguide.com/best-picks/best-vpn">VPN</a> or <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">password manager</a> to help keep you safe online.</p><p>Despite constant warnings, people keep installing apps from websites instead of official stores. As long as this keeps happening, hackers are going to use it to their advantage. However, if you install new apps the way you’re supposed to, you can avoid falling victim to Rockrolla and other banking trojans like it.</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/computing/online-security/popular-steam-wallpaper-app-hijacked-to-spread-dangerous-malware-how-to-stay-safe">Popular Steam wallpaper app hijacked to spread dangerous malware — how to stay safe</a></li><li><a href="https://www.tomsguide.com/computing/gpus/update-your-nvidia-gpu-drivers-now-to-protect-your-pc-from-9-high-severity-vulnerabilities-heres-whats-at-risk">Update your Nvidia GPU drivers now to protect your PC from 9 "high-severity" vulnerabilities — here's what's at risk</a></li><li><a href="https://www.tomsguide.com/wellness/smart-rings/ultrahuman-data-breach-i-was-affected-and-here-is-exactly-what-hackers-stole-from-my-account">I just got hit by the Ultrahuman data breach — here's what hackers stole from my account</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/malware-adware/dangerous-new-android-malware-impersonates-tiktok-and-chrome-to-steal-your-banking-info-from-over-200-apps-how-to-stay-safe</link>
                                                                            <description>
                            <![CDATA[ A dangerous new Android banking trojan is posing as popular apps to take over devices and drain bank accounts. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kdVPtFri2ZPK2nhxjADc5T</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PoEqQyXuATwMvtLV5s5VYL-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Jun 2026 18:33:22 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Malware & Adware]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PoEqQyXuATwMvtLV5s5VYL-1280-80.jpg">
                                                            <media:credit><![CDATA[Shuterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Android malware]]></media:description>                                                            <media:text><![CDATA[Android malware]]></media:text>
                                <media:title type="plain"><![CDATA[Android malware]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PoEqQyXuATwMvtLV5s5VYL-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Even though you should always download new apps from official sources like the <a href="https://www.tomsguide.com/news/google-play-store-is-making-a-big-upgrade-to-fight-malware-what-you-need-to-know">Google Play Store</a>, some Android users still end up getting tricked into downloading them from websites which can be extremely dangerous. Case in point, a new <a href="https://www.tomsguide.com/computing/malware-adware/this-android-banking-trojan-steals-passwords-to-take-over-your-accounts-and-all-it-takes-is-a-single-text-message">Android banking trojan</a> is currently making the rounds online that’s distributed via fake apps from malicious websites.</p><p>As reported by <a href="https://www.bleepingcomputer.com/news/security/new-rokarolla-android-malware-targets-217-banking-crypto-apps/" target="_blank">BleepingComputer</a>, once installed on vulnerable Android phones, the banking trojan in question is capable of targeting over 200 banking and financial apps to drain accounts and steal crypto. Unsurprisingly, it does so by impersonating Google Chrome and TikTok as both apps are extremely popular.</p><p>The trojan installs the new Rokarolla malware which also steals lock screen credentials, your contacts, SMS data and even uses keyloggers to record everything you type into your phone.</p><p>Here’s everything you need to know about this new Android banking trojan and how you can keep your bank account safe from the cybercriminals using it in their attacks.</p><h2 id="masquerading-as-google-play-protect">Masquerading as Google Play Protect</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="aMwXYxuTeVu62PiTqBzShb" name="Google Play Protect Real Time Scanning.jpg" alt="An example showing how real-time scanning works in Google Play Protect" src="https://cdn.mos.cms.futurecdn.net/aMwXYxuTeVu62PiTqBzShb.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: Google)</span></figcaption></figure><p>Although you should never <a href="https://www.tomsguide.com/news/hackers-have-developed-a-clever-new-way-to-add-malware-to-android-apps">sideload Android apps</a> unless you absolutely have to, many people still do despite the risk. The hackers behind this campaign use fake websites to trick unsuspecting users into installing Chrome or TikTok unofficially instead of downloading these apps directly from the Google Play Store like they should.</p><p>According to a <a href="https://zimperium.com/blog/rokarolla-android-banker-with-complete-device-takeover-capabilities" target="_blank">new report</a> from the cybersecurity firm Zimperium, after downloading either app though, the hackers use an interesting trick to give potential victims the illusion of safety. For those unfamiliar, Google’s built-in security app <a href="https://www.tomsguide.com/reviews/google-play-protect">Google Play Protect</a> checks any new software you download for viruses. However, in this case, a fake Play Protect pop-up appears before the Rockarolla malware is actually downloaded. Given the fact that the pop-up perfectly impersonates a Play Protect warning, most users wouldn’t think twice before proceeding with this secondary download.</p><p>At this point, the damage is done and the Rockarolla malware gets to work. In total, it’s able to spoof 217 different banking and financial apps to steal your credentials. It does so by using overlays that mimic each individual app. While to the end user it appears as if they’re just logging into their online bank account, they’re actually handing over their username and password to hackers.</p><p>Another interesting trick up Rockarolla’s sleeve is that it can steal SMS notifications from your online bank as well as intercept any calls trying to warn you that something is amiss. This way, you won’t get a fraud alert and the hackers can proceed to empty your accounts one by one.</p><p>While Google continues to improve Android’s security, if you don’t download apps the right way, you too could easily end up falling victim to this and other malware.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X8ogVO"></div>                            </div>                            <script src="https://kwizly.com/embed/X8ogVO.js" async></script><h2 id="how-to-stay-safe-from-android-banking-trojans">How to stay safe from Android banking trojans</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:910px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="MRUEsvBrdDnwpsDgw3GGzh" name="zaT2fiZB7dapNQNABNG7Yk.jpg" alt="A hand holding a phone securely logging in" src="https://cdn.mos.cms.futurecdn.net/MRUEsvBrdDnwpsDgw3GGzh.jpg" mos="" align="middle" fullscreen="" width="910" height="512" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>I can’t stress this enough, unless you <em>really</em> know what you’re doing, you should avoid sideloading apps. Sure, <a href="https://www.tomsguide.com/computing/malware-adware/more-than-250-malicious-apps-are-spreading-info-stealing-malware-on-android-and-ios-delete-these-right-now">malicious apps</a> do manage to sneak past Google’s defenses from time to time but for the most part, if you download new apps from the Play Store, you should be safe. The same goes for other official Android app stores like the Samsung Galaxy Store too.</p><p>From there, you want to make sure that Google Play Protect is installed and enabled on your smartphone. It’s enabled by default on all of the <a href="https://www.tomsguide.com/us/best-android-phones,review-6051.html">best Android phones</a> but it’s always a good idea to check to make sure. For extra protection though, you can also use one of the <a href="https://www.tomsguide.com/best-picks/best-android-antivirus">best Android antivirus apps</a> alongside it. You have to pay for many of them but they typically add other useful features like a <a href="https://www.tomsguide.com/best-picks/best-vpn">VPN</a> or <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">password manager</a> to help keep you safe online.</p><p>Despite constant warnings, people keep installing apps from websites instead of official stores. As long as this keeps happening, hackers are going to use it to their advantage. However, if you install new apps the way you’re supposed to, you can avoid falling victim to Rockrolla and other banking trojans like it.</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/computing/online-security/popular-steam-wallpaper-app-hijacked-to-spread-dangerous-malware-how-to-stay-safe">Popular Steam wallpaper app hijacked to spread dangerous malware — how to stay safe</a></li><li><a href="https://www.tomsguide.com/computing/gpus/update-your-nvidia-gpu-drivers-now-to-protect-your-pc-from-9-high-severity-vulnerabilities-heres-whats-at-risk">Update your Nvidia GPU drivers now to protect your PC from 9 "high-severity" vulnerabilities — here's what's at risk</a></li><li><a href="https://www.tomsguide.com/wellness/smart-rings/ultrahuman-data-breach-i-was-affected-and-here-is-exactly-what-hackers-stole-from-my-account">I just got hit by the Ultrahuman data breach — here's what hackers stole from my account</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Facebook went down for thousands of users — full recap as bug crashed the social media app ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p>Facebook users started seeing more problems today, June 18, less than a week after users were unable to log into the social network.</p><p>Reports started to spike on DownDetector at 6:30 am ET / 11:20 am BST with over 1,000 users reporting problems. According to the reports, 80% of affected users claimed there was an issue the Facebook app loading.</p><p>Earlier this week, Facebook's parent company Meta experienced issues for around four hours that also impacted other services like Instagram and WhatsApp. Today's problems lasted little more than a couple of hours and seemed to affect primarily Android users. It could have been due to an update to Facebook's Android app that was released yesterday.</p><p>Here's how our coverage of the reports unfolded:</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XbQ4NO"></div>                            </div>                            <script src="https://kwizly.com/embed/XbQ4NO.js" async></script><h3 class="article-body__section" id="section-full-recap"><span>Full recap</span></h3></div><div class="live-content"><time datetime="2026-06-18T11:48:20+00:00">June 18, 2026 – 7:48 AM</time><h2 id="reports-surge-past-1-000-on-downdetector">Reports surge past 1,000 on DownDetector</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:1396px;"><p class="vanilla-image-block" style="padding-top:53.37%;"><img id="i7VsogkYuhvjVPxgchvydM" name="Screenshot 2026-06-18 124627" alt="A downdetector spike for Facebook 18/6" src="https://cdn.mos.cms.futurecdn.net/i7VsogkYuhvjVPxgchvydM.png" mos="" align="middle" fullscreen="" width="1396" height="745" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>Our clearest picture that there's some trouble at Facebook comes from the website DownDetector, which has suddenly shown a spike of over 1,000 users reporting trouble with the social network. Less than a week ago, similar problems hit Facebook for over four hours.</p></div><div class="live-content"><time datetime="2026-06-18T11:51:19+00:00">June 18, 2026 – 7:51 AM</time><h2 id="new-york-chicago-and-dallas">New York, Chicago and Dallas</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:1423px;"><p class="vanilla-image-block" style="padding-top:67.32%;"><img id="bNT5rn8zJ9yZghgVUjYcAi" name="Screenshot 2026-06-18 124928" alt="DownDetector map of Facebook outage" src="https://cdn.mos.cms.futurecdn.net/bNT5rn8zJ9yZghgVUjYcAi.png" mos="" align="middle" fullscreen="" width="1423" height="958" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>Most of the reports of Facebook's troubles on DownDetector appear to be coming from three main cities: New York, Chicago and Dallas. If you're based in one of those regions and are having trouble accessing your Facebook profile right now — let us know!</p></div><div class="live-content"><time datetime="2026-06-18T11:54:53+00:00">June 18, 2026 – 7:54 AM</time><h2 id="meta-isn-t-reporting-anything-yet">Meta isn't reporting anything, yet</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:988px;"><p class="vanilla-image-block" style="padding-top:70.24%;"><img id="Cizwb7TEFBtxzquGWo5vUB" name="Screenshot 2026-06-18 125203" alt="Meta business status page" src="https://cdn.mos.cms.futurecdn.net/Cizwb7TEFBtxzquGWo5vUB.png" mos="" align="middle" fullscreen="" width="988" height="694" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Meta)</span></figcaption></figure><p>Meta doesn't have a status page for its consumer products, so we can't see if there's anything officially amiss, but it does <a href="https://metastatus.com/" target="_blank">run an equivalent for its business products</a>. As we can see at the time of writing, there are no reported problems there.</p><p>So, if people are experiencing issues this morning, it may be a more localized problem and one that hasn't touched Meta's central nervous system yet. We'll keep circling back to this page and let you know if there are any updates.</p></div><div class="live-content"><time datetime="2026-06-18T11:57:43+00:00">June 18, 2026 – 7:57 AM</time><h2 id="instagram-and-whatsapp-unaffected">Instagram and WhatsApp unaffected</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:3405px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="J4EEHYGRdoGNKryBLi9JEf" name="GettyImages-1086354750.jpg" alt="Instagram" src="https://cdn.mos.cms.futurecdn.net/v2/t:355,l:0,cw:3405,ch:1915,q:80/J4EEHYGRdoGNKryBLi9JEf.jpg" mos="" align="middle" fullscreen="" width="3405" height="2270" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: aap Arriens/NurPhoto via Getty Images)</span></figcaption></figure><p>While we're seeing reports spike across Facebook, there seemingly aren't any issues with Meta's other services at present. Instagram, WhatsApp, Facebook Messenger and Threads all appear to be working normally. </p></div><div class="live-content"><time datetime="2026-06-18T12:01:18+00:00">June 18, 2026 – 8:01 AM</time><h2 id="facebook-failing-to-load">Facebook failing to load?</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:3936px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2K24tKx6GcSfP7z9D6TvY3" name="GettyImages-1204838442.jpg" alt="iPhone Facebook app" src="https://cdn.mos.cms.futurecdn.net/v2/t:283,l:0,cw:3936,ch:2214,q:80/2K24tKx6GcSfP7z9D6TvY3.jpg" mos="" align="middle" fullscreen="" width="3936" height="2624" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: NurPhoto / Getty Images)</span></figcaption></figure><p>When issues started to occur for Facebook earlier in the week, users trying to access the app were bumped right out to the login screen of the app. This affected the app both on Android and iOS.</p><p>I'm based in London in the U.K. and — for me at least — the app appears to be working as normal. If you're seeing something different, let me know in the comments.</p></div><div class="live-content"><time datetime="2026-06-18T12:08:12+00:00">June 18, 2026 – 8:08 AM</time><h2 id="reports-are-starting-to-slip">Reports are starting to slip</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:1371px;"><p class="vanilla-image-block" style="padding-top:53.90%;"><img id="KLUngNBdKLgm4HnGj2dCBW" name="Screenshot 2026-06-18 130205" alt="Reports on Facebook outage slipping" src="https://cdn.mos.cms.futurecdn.net/KLUngNBdKLgm4HnGj2dCBW.png" mos="" align="middle" fullscreen="" width="1371" height="739" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>This could be little more than a blip for just a few folks. The reports on DownDetector — while still north of 1,000 — are starting to slip. Sometimes this can indicate the issues were only very temporary. </p><p>They could be a result of a small update or configuration change that's been pushed through by Meta that's caused a hiccup in servers along the network.</p></div><div class="live-content"><time datetime="2026-06-18T12:14:55+00:00">June 18, 2026 – 8:14 AM</time><h2 id="it-could-be-an-android-issue">It could be an Android issue</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:1998px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="3kWod5vfFi35otShydB6i6" name="Android-17-on-Pixel-9-Pro-XL--LEDE9" alt="Android 17 badge superimposed on a Google Pixel phone" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:1998,ch:1124,q:80/3kWod5vfFi35otShydB6i6.jpg" mos="" align="middle" fullscreen="" width="2000" height="1124" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>Android users may be feeling today's Facebook problems more than iPhone users. One commentator on DownDetector says that the issue is persisting on their Samsung Galaxy Note 20.</p><p>If that's the case then it could be that the problems being reported today are specific to one particular app version rather than anything more widespread. </p></div><div class="live-content"><time datetime="2026-06-18T12:25:15+00:00">June 18, 2026 – 8:25 AM</time><h2 id="reports-falling-but-users-report-problems-on-x">Reports falling, but users report problems on X</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:1354px;"><p class="vanilla-image-block" style="padding-top:54.58%;"><img id="VKq29qBSrWfLV2HwNaNvnP" name="Screenshot 2026-06-18 132116" alt="Facebook outage" src="https://cdn.mos.cms.futurecdn.net/VKq29qBSrWfLV2HwNaNvnP.png" mos="" align="middle" fullscreen="" width="1354" height="739" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>Reports are continuing to decrease sharply on DownDetector right now — falling down to below 800. Usually, if there are prolonged issues we would expect to see another small spike occurring right now but that hasn't happened.</p><p>Users are still reporting problems with the service over on X/Twitter. But this looks very much like it could just be a flash in the pan.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2067579891927888272"><p lang="en" dir="ltr">The only reason I still have X on my phone is because whenever Facebook goes down or starts acting up, I check X to see if anyone else is having the same problem 🤣<a href="https://twitter.com/cantworkitout/status/2067579891927888272">June 18, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div></div><div class="live-content"><time datetime="2026-06-18T12:29:11+00:00">June 18, 2026 – 8:29 AM</time><h2 id="are-you-having-problems-with-facebook-this-morning">Are you having problems with Facebook this morning?</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="sLVafzDwk5nitQ3mkCFYT4" name="GettyImages-944827400.jpg" alt="Mark Zuckerberg Facebook" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:3000,ch:1688,q:80/sLVafzDwk5nitQ3mkCFYT4.jpg" mos="" align="middle" fullscreen="" width="3000" height="2000" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chip Somodevilla/Getty Images)</span></figcaption></figure><p>A problem we're seeing reported is that users are able to log into the Facebook mobile app for a few seconds before it then bounces them back out again to the login screen.</p><p>It seems like reports are starting to subside, so this might not be an ongoing problem but if you're experiencing an outage on Facebook today, let us know in the poll below. We'll continue to monitor the situation as it unfolds.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XbQ4NO"></div>                            </div>                            <script src="https://kwizly.com/embed/XbQ4NO.js" async></script></div><div class="live-content"><time datetime="2026-06-18T12:43:29+00:00">June 18, 2026 – 8:43 AM</time><h2 id="how-to-clear-your-facebook-cache">How to clear your Facebook cache</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:2520px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="BT3qzfU8pwZnqsDWVZB6NA" name="5sbEaogyrMseDtAeGAz5yX" alt="A person logging into Facebook on their phone with the site also open on a laptop in the background" src="https://cdn.mos.cms.futurecdn.net/BT3qzfU8pwZnqsDWVZB6NA.jpg" mos="" align="middle" fullscreen="" width="2520" height="1418" 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>If these recent problems with Facebook have got you concerned about how the app is running, one thing you can do to juice up the performance is clear your cache.</p><p>Providing you can access Facebook's app, you'll need to tap <strong>Menu</strong> > <strong>Settings & Privacy</strong> > <strong>Settings</strong>. Then, under the Preferences section, tap <strong>Browser</strong>, then select <strong>Clear</strong> next to Cookies and Cache.</p></div><div class="live-content"><time datetime="2026-06-18T13:03:54+00:00">June 18, 2026 – 9:03 AM</time><h2 id="less-than-500-downdetector-users-now-reporting-problems">Less than 500 DownDetector users now reporting problems</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:1366px;"><p class="vanilla-image-block" style="padding-top:54.32%;"><img id="ZDC2HeQDPYnWVJci56kGzV" name="Screenshot 2026-06-18 135906" alt="Facebook outage" src="https://cdn.mos.cms.futurecdn.net/ZDC2HeQDPYnWVJci56kGzV.png" mos="" align="middle" fullscreen="" width="1366" height="742" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>Reports on DownDetector have now <a href="https://downdetector.com/status/facebook/" target="_blank">sunk to below 500 reports</a> and there's been no official statement from Meta on any problems with its app. </p><p>A quick glance at the Play Store shows the Facebook Android app was given an update yesterday, June 17, so it's highly likely that it has caused some teething problems with Android users. Especially if those users own older devices. For the vast majority of Facebook users, it appears that the social network is operating as normal today.</p></div><div class="live-content"><time datetime="2026-06-18T14:47:00+00:00">June 18, 2026 – 10:47 AM</time><h2 id="calling-time-on-today-s-outage">Calling time on today's outage</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:5760px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BF5xH7FGTtH7QaZndup27d" name="GettyImages-962130574.jpg" alt="Mark Zuckerberg, chief executive officer and founder of Facebook (Photo by Christophe Morin/IP3/Getty Images)" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:5760,ch:3240,q:80/BF5xH7FGTtH7QaZndup27d.jpg" mos="" align="middle" fullscreen="" width="5760" height="3240" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Christophe Morin/IP3/Getty Images)</span></figcaption></figure><p>We can call time on today's outage as reports have dwindled to under 100 on DownDetector, and the comments on social media have dried up. Unlike the outage earlier in the week, this one was just a blip. We can all rest comfortably now that Facebook is back up and running — thanks for reading along, everyone.</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/news/live/facebook-down-6-18-2026-live-updates</link>
                                                                            <description>
                            <![CDATA[ Facebook suffered some more trouble just six days after it last experienced an outage. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FrMHxDVQHinK96oz6rxuXV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MuL8Yo7Y7eiv5VXNABoLKZ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Jun 2026 11:48:42 +0000</pubDate>                                                                                                                                <updated>Thu, 18 Jun 2026 14:54:04 +0000</updated>
                                                                                                                                            <category><![CDATA[Social Media]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jeff is U.K. Editor-in-Chief for Tom’s Guide looking after the day-to-day output of the site’s British contingent. &lt;/p&gt;&lt;p&gt;Rising early and heading straight for the coffee machine, Jeff loves nothing more than dialling into the zeitgeist of the day’s tech news. A journalist for over a decade, he&#039;s travelled around the world testing and reviewing any gadget he can get his hands on.&lt;/p&gt;&lt;p&gt;Before joining the team at Tom’s Guide, Jeff covered technology and science for two of the U.K.’s biggest national news sites: Metro.co.uk and the Daily Mirror. Memorable moments include getting lost in Vienna in an electric Audi, touring Lockheed Martin’s mile-long jet factory in Fort Worth and filming a Netflix documentary about Elon Musk in West London.&lt;/p&gt;&lt;p&gt;When not plugged into the current news agenda, editing or commissioning a series of articles or debating the merits of Apple vs Android, Jeff can usually be found out for a run trying to shave precious seconds off his PB. Or lifting weights in a vain attempt to offset the ageing process.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MuL8Yo7Y7eiv5VXNABoLKZ-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Facebook Live outage]]></media:description>                                                            <media:text><![CDATA[Facebook Live outage]]></media:text>
                                <media:title type="plain"><![CDATA[Facebook Live outage]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MuL8Yo7Y7eiv5VXNABoLKZ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p>Facebook users started seeing more problems today, June 18, less than a week after users were unable to log into the social network.</p><p>Reports started to spike on DownDetector at 6:30 am ET / 11:20 am BST with over 1,000 users reporting problems. According to the reports, 80% of affected users claimed there was an issue the Facebook app loading.</p><p>Earlier this week, Facebook's parent company Meta experienced issues for around four hours that also impacted other services like Instagram and WhatsApp. Today's problems lasted little more than a couple of hours and seemed to affect primarily Android users. It could have been due to an update to Facebook's Android app that was released yesterday.</p><p>Here's how our coverage of the reports unfolded:</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XbQ4NO"></div>                            </div>                            <script src="https://kwizly.com/embed/XbQ4NO.js" async></script><h3 class="article-body__section" id="section-full-recap"><span>Full recap</span></h3></div><div class="live-content"><time datetime="2026-06-18T11:48:20+00:00">June 18, 2026 – 7:48 AM</time><h2 id="reports-surge-past-1-000-on-downdetector">Reports surge past 1,000 on DownDetector</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:1396px;"><p class="vanilla-image-block" style="padding-top:53.37%;"><img id="i7VsogkYuhvjVPxgchvydM" name="Screenshot 2026-06-18 124627" alt="A downdetector spike for Facebook 18/6" src="https://cdn.mos.cms.futurecdn.net/i7VsogkYuhvjVPxgchvydM.png" mos="" align="middle" fullscreen="" width="1396" height="745" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>Our clearest picture that there's some trouble at Facebook comes from the website DownDetector, which has suddenly shown a spike of over 1,000 users reporting trouble with the social network. Less than a week ago, similar problems hit Facebook for over four hours.</p></div><div class="live-content"><time datetime="2026-06-18T11:51:19+00:00">June 18, 2026 – 7:51 AM</time><h2 id="new-york-chicago-and-dallas">New York, Chicago and Dallas</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:1423px;"><p class="vanilla-image-block" style="padding-top:67.32%;"><img id="bNT5rn8zJ9yZghgVUjYcAi" name="Screenshot 2026-06-18 124928" alt="DownDetector map of Facebook outage" src="https://cdn.mos.cms.futurecdn.net/bNT5rn8zJ9yZghgVUjYcAi.png" mos="" align="middle" fullscreen="" width="1423" height="958" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>Most of the reports of Facebook's troubles on DownDetector appear to be coming from three main cities: New York, Chicago and Dallas. If you're based in one of those regions and are having trouble accessing your Facebook profile right now — let us know!</p></div><div class="live-content"><time datetime="2026-06-18T11:54:53+00:00">June 18, 2026 – 7:54 AM</time><h2 id="meta-isn-t-reporting-anything-yet">Meta isn't reporting anything, yet</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:988px;"><p class="vanilla-image-block" style="padding-top:70.24%;"><img id="Cizwb7TEFBtxzquGWo5vUB" name="Screenshot 2026-06-18 125203" alt="Meta business status page" src="https://cdn.mos.cms.futurecdn.net/Cizwb7TEFBtxzquGWo5vUB.png" mos="" align="middle" fullscreen="" width="988" height="694" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Meta)</span></figcaption></figure><p>Meta doesn't have a status page for its consumer products, so we can't see if there's anything officially amiss, but it does <a href="https://metastatus.com/" target="_blank">run an equivalent for its business products</a>. As we can see at the time of writing, there are no reported problems there.</p><p>So, if people are experiencing issues this morning, it may be a more localized problem and one that hasn't touched Meta's central nervous system yet. We'll keep circling back to this page and let you know if there are any updates.</p></div><div class="live-content"><time datetime="2026-06-18T11:57:43+00:00">June 18, 2026 – 7:57 AM</time><h2 id="instagram-and-whatsapp-unaffected">Instagram and WhatsApp unaffected</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:3405px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="J4EEHYGRdoGNKryBLi9JEf" name="GettyImages-1086354750.jpg" alt="Instagram" src="https://cdn.mos.cms.futurecdn.net/v2/t:355,l:0,cw:3405,ch:1915,q:80/J4EEHYGRdoGNKryBLi9JEf.jpg" mos="" align="middle" fullscreen="" width="3405" height="2270" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: aap Arriens/NurPhoto via Getty Images)</span></figcaption></figure><p>While we're seeing reports spike across Facebook, there seemingly aren't any issues with Meta's other services at present. Instagram, WhatsApp, Facebook Messenger and Threads all appear to be working normally. </p></div><div class="live-content"><time datetime="2026-06-18T12:01:18+00:00">June 18, 2026 – 8:01 AM</time><h2 id="facebook-failing-to-load">Facebook failing to load?</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:3936px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2K24tKx6GcSfP7z9D6TvY3" name="GettyImages-1204838442.jpg" alt="iPhone Facebook app" src="https://cdn.mos.cms.futurecdn.net/v2/t:283,l:0,cw:3936,ch:2214,q:80/2K24tKx6GcSfP7z9D6TvY3.jpg" mos="" align="middle" fullscreen="" width="3936" height="2624" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: NurPhoto / Getty Images)</span></figcaption></figure><p>When issues started to occur for Facebook earlier in the week, users trying to access the app were bumped right out to the login screen of the app. This affected the app both on Android and iOS.</p><p>I'm based in London in the U.K. and — for me at least — the app appears to be working as normal. If you're seeing something different, let me know in the comments.</p></div><div class="live-content"><time datetime="2026-06-18T12:08:12+00:00">June 18, 2026 – 8:08 AM</time><h2 id="reports-are-starting-to-slip">Reports are starting to slip</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:1371px;"><p class="vanilla-image-block" style="padding-top:53.90%;"><img id="KLUngNBdKLgm4HnGj2dCBW" name="Screenshot 2026-06-18 130205" alt="Reports on Facebook outage slipping" src="https://cdn.mos.cms.futurecdn.net/KLUngNBdKLgm4HnGj2dCBW.png" mos="" align="middle" fullscreen="" width="1371" height="739" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>This could be little more than a blip for just a few folks. The reports on DownDetector — while still north of 1,000 — are starting to slip. Sometimes this can indicate the issues were only very temporary. </p><p>They could be a result of a small update or configuration change that's been pushed through by Meta that's caused a hiccup in servers along the network.</p></div><div class="live-content"><time datetime="2026-06-18T12:14:55+00:00">June 18, 2026 – 8:14 AM</time><h2 id="it-could-be-an-android-issue">It could be an Android issue</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:1998px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="3kWod5vfFi35otShydB6i6" name="Android-17-on-Pixel-9-Pro-XL--LEDE9" alt="Android 17 badge superimposed on a Google Pixel phone" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:1998,ch:1124,q:80/3kWod5vfFi35otShydB6i6.jpg" mos="" align="middle" fullscreen="" width="2000" height="1124" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>Android users may be feeling today's Facebook problems more than iPhone users. One commentator on DownDetector says that the issue is persisting on their Samsung Galaxy Note 20.</p><p>If that's the case then it could be that the problems being reported today are specific to one particular app version rather than anything more widespread. </p></div><div class="live-content"><time datetime="2026-06-18T12:25:15+00:00">June 18, 2026 – 8:25 AM</time><h2 id="reports-falling-but-users-report-problems-on-x">Reports falling, but users report problems on X</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:1354px;"><p class="vanilla-image-block" style="padding-top:54.58%;"><img id="VKq29qBSrWfLV2HwNaNvnP" name="Screenshot 2026-06-18 132116" alt="Facebook outage" src="https://cdn.mos.cms.futurecdn.net/VKq29qBSrWfLV2HwNaNvnP.png" mos="" align="middle" fullscreen="" width="1354" height="739" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>Reports are continuing to decrease sharply on DownDetector right now — falling down to below 800. Usually, if there are prolonged issues we would expect to see another small spike occurring right now but that hasn't happened.</p><p>Users are still reporting problems with the service over on X/Twitter. But this looks very much like it could just be a flash in the pan.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2067579891927888272"><p lang="en" dir="ltr">The only reason I still have X on my phone is because whenever Facebook goes down or starts acting up, I check X to see if anyone else is having the same problem 🤣<a href="https://twitter.com/cantworkitout/status/2067579891927888272">June 18, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div></div><div class="live-content"><time datetime="2026-06-18T12:29:11+00:00">June 18, 2026 – 8:29 AM</time><h2 id="are-you-having-problems-with-facebook-this-morning">Are you having problems with Facebook this morning?</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="sLVafzDwk5nitQ3mkCFYT4" name="GettyImages-944827400.jpg" alt="Mark Zuckerberg Facebook" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:3000,ch:1688,q:80/sLVafzDwk5nitQ3mkCFYT4.jpg" mos="" align="middle" fullscreen="" width="3000" height="2000" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chip Somodevilla/Getty Images)</span></figcaption></figure><p>A problem we're seeing reported is that users are able to log into the Facebook mobile app for a few seconds before it then bounces them back out again to the login screen.</p><p>It seems like reports are starting to subside, so this might not be an ongoing problem but if you're experiencing an outage on Facebook today, let us know in the poll below. We'll continue to monitor the situation as it unfolds.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XbQ4NO"></div>                            </div>                            <script src="https://kwizly.com/embed/XbQ4NO.js" async></script></div><div class="live-content"><time datetime="2026-06-18T12:43:29+00:00">June 18, 2026 – 8:43 AM</time><h2 id="how-to-clear-your-facebook-cache">How to clear your Facebook cache</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:2520px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="BT3qzfU8pwZnqsDWVZB6NA" name="5sbEaogyrMseDtAeGAz5yX" alt="A person logging into Facebook on their phone with the site also open on a laptop in the background" src="https://cdn.mos.cms.futurecdn.net/BT3qzfU8pwZnqsDWVZB6NA.jpg" mos="" align="middle" fullscreen="" width="2520" height="1418" 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>If these recent problems with Facebook have got you concerned about how the app is running, one thing you can do to juice up the performance is clear your cache.</p><p>Providing you can access Facebook's app, you'll need to tap <strong>Menu</strong> > <strong>Settings & Privacy</strong> > <strong>Settings</strong>. Then, under the Preferences section, tap <strong>Browser</strong>, then select <strong>Clear</strong> next to Cookies and Cache.</p></div><div class="live-content"><time datetime="2026-06-18T13:03:54+00:00">June 18, 2026 – 9:03 AM</time><h2 id="less-than-500-downdetector-users-now-reporting-problems">Less than 500 DownDetector users now reporting problems</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:1366px;"><p class="vanilla-image-block" style="padding-top:54.32%;"><img id="ZDC2HeQDPYnWVJci56kGzV" name="Screenshot 2026-06-18 135906" alt="Facebook outage" src="https://cdn.mos.cms.futurecdn.net/ZDC2HeQDPYnWVJci56kGzV.png" mos="" align="middle" fullscreen="" width="1366" height="742" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>Reports on DownDetector have now <a href="https://downdetector.com/status/facebook/" target="_blank">sunk to below 500 reports</a> and there's been no official statement from Meta on any problems with its app. </p><p>A quick glance at the Play Store shows the Facebook Android app was given an update yesterday, June 17, so it's highly likely that it has caused some teething problems with Android users. Especially if those users own older devices. For the vast majority of Facebook users, it appears that the social network is operating as normal today.</p></div><div class="live-content"><time datetime="2026-06-18T14:47:00+00:00">June 18, 2026 – 10:47 AM</time><h2 id="calling-time-on-today-s-outage">Calling time on today's outage</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:5760px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BF5xH7FGTtH7QaZndup27d" name="GettyImages-962130574.jpg" alt="Mark Zuckerberg, chief executive officer and founder of Facebook (Photo by Christophe Morin/IP3/Getty Images)" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:5760,ch:3240,q:80/BF5xH7FGTtH7QaZndup27d.jpg" mos="" align="middle" fullscreen="" width="5760" height="3240" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Christophe Morin/IP3/Getty Images)</span></figcaption></figure><p>We can call time on today's outage as reports have dwindled to under 100 on DownDetector, and the comments on social media have dried up. Unlike the outage earlier in the week, this one was just a blip. We can all rest comfortably now that Facebook is back up and running — thanks for reading along, everyone.</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested Norton's Deepfake Protection — and it finally convinced me my next laptop needs an NPU ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If accidentally downloading <a href="https://www.tomsguide.com/computing/malware-adware/more-than-250-malicious-apps-are-spreading-info-stealing-malware-on-android-and-ios-delete-these-right-now">malicious apps</a> and getting your computer infected with viruses wasn’t enough, these days, you can’t even trust your own eyes and ears thanks to <a href="https://www.tomsguide.com/ai/5-tips-for-spotting-ai-generated-deep-fakes-dont-get-fooled">deepfakes</a>.</p><p>Just a few years ago, you only had to look out for <a href="https://www.tomsguide.com/news/this-is-the-one-thing-to-look-out-for-in-scam-emails">phishing emails</a>, fake websites and dodgy attachments from unknown senders. Now though, thanks to AI, you can just as easily be fooled by a very convincing fake image or video.</p><p>Fortunately, in the same way that cybercriminals are now using AI in their attacks, so too are cybersecurity firms. While Norton and the rest of the companies behind the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a> use cloud-based AI to better analyze and detect new threats, this isn’t your only option when it comes to staying safe online.</p><p>You can also do so yourself locally but you will need a computer with its own neural processing unit or <a href="https://www.tomsguide.com/computing/laptops/heres-5-things-an-npu-can-do-for-your-laptop-ai-smarts-youll-actually-use-without-realizing-it">NPU</a>. Thankfully, the <a href="https://www.tomsguide.com/best-picks/best-ai-laptop">best AI laptops</a> with chips from Intel, AMD, Qualcomm and even Apple have you covered. However, when I bought my <a href="https://www.tomsguide.com/opinion/i-love-my-desktop-but-this-thinkpad-convinced-me-to-give-laptops-a-second-chance">trusty ThinkPad</a> a few years ago, this wasn’t an option yet.</p><p>After trying out Norton’s Deepfake Protection for myself though, I’ve become an NPU believer. While laptop makers tried to sell us on AI-powered features like portrait lighting, auto-framing and live captions, as it turns out, set–and-forget online security was what finally convinced me in the end.</p><h2 id="no-more-second-guessing">No more second guessing</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="bLvaToLkkdVsb6ydhQM5uJ" name="TG How to look good on video header.jpg" alt="Laptop with four participants on video call" src="https://cdn.mos.cms.futurecdn.net/bLvaToLkkdVsb6ydhQM5uJ.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: Shutterstock)</span></figcaption></figure><p>In the past, you always had to be careful when checking your inbox or navigating to unfamiliar sites. With the rise of deepfakes though, <a href="https://www.tomsguide.com/computing/online-security/7-online-scams-that-can-leave-you-broke-exposed-and-feeling-helpless">online scams</a> can appear where you’d least expect them like on a job interview or even a video call with a loved one.</p><p>For instance, let’s say you’re looking for a new remote job and make it to the interview stage. You hop on Zoom, Google Meet or Microsoft Teams and expect the other attendees to be actual people, right? Well with deepfake videos becoming more advanced every day, they might not be. </p><p>Alternatively, maybe an <a href="https://www.tomsguide.com/ai/voice-cloning-celebrity-impersonations-and-the-need-for-safeguarding-humes-ceo-sounds-off-on-the-world-of-ai-voice-generation">urgent video or audio clip</a> arrives in your messages from a loved one who’s in trouble. The message may look and sound just like them but the whole thing could actually be fake and an attempt to con you out of your hard-earned cash.</p><p><a href="https://www.tomsguide.com/computing/online-security/ai-powered-tax-scams-are-here-how-to-stay-safe-from-deepfakes-phishing-and-more-this-tax-season">AI-powered scams</a> are here to stay but if you use Norton’s Deepfake Protection, they’ll get flagged before they can do any real damage just like how its antivirus detects and prevents you from interacting with malware. From giveaway scams to crypto fraud, this feature runs locally on your device to analyze and detect synthetic voices so you don’t have to keep guessing whether or not something is real.</p><p>While I know most of us believe we’re tech-savvy enough to spot these kinds of things, that isn’t always the case. And all it takes is one slip up to end up in a very bad situation. Likewise, for those of us with older parents or relatives, we can rest easy knowing we won’t get a frantic phone call in the middle of the day as they’ll be protected.</p><p>Just like with deepfakes themselves, I had to experience this new feature for myself, so I installed <a href="https://www.tomsguide.com/computing/antivirus/norton-360-review">Norton 360</a> on my laptop, toggled Deepfake Protection on and took it for a spin.</p><div class="product"><a data-dimension112="1e01d0a5-fccd-47ab-b641-b6fe51dda666" data-action="Deal Block" data-label="360 Deluxe" data-dimension48="360 Deluxe" data-dimension25="$49" href="https://www.anrdoezrs.net/click-8900245-17226974?sid=hawk-custom-tracking" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1125px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="FtihGnjEgkVmKkrokNzeiT" name="norton2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FtihGnjEgkVmKkrokNzeiT.jpg" mos="" align="middle" fullscreen="" width="1125" height="1125" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.anrdoezrs.net/click-8900245-17226974?sid=hawk-custom-tracking" target="_blank" rel="nofollow" data-dimension112="1e01d0a5-fccd-47ab-b641-b6fe51dda666" data-action="Deal Block" data-label="360 Deluxe" data-dimension48="360 Deluxe" data-dimension25="$49">360 Deluxe: was $119 now $49</a></strong><br>This antivirus suite from Norton lets you protect up to five PCs, Macs, tablets or smartphones at the same time. It comes with malware, ransomware, hacking and even scam protection but you also get plenty of extras too like a VPN, password manager, parental controls, cloud backup, dark web monitoring and more.<a class="view-deal button" href="https://www.anrdoezrs.net/click-8900245-17226974?sid=hawk-custom-tracking" target="_blank" rel="nofollow" data-dimension112="1e01d0a5-fccd-47ab-b641-b6fe51dda666" data-action="Deal Block" data-label="360 Deluxe" data-dimension48="360 Deluxe" data-dimension25="$49">View Deal</a></p></div><h2 id="deepfake-protection-at-a-cost">Deepfake protection (at a cost)</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:4090px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="ohcjwfUo6atWWiE2chTYqg" name="Norton Deepfake Protection-3" alt="A laptop running Norton 360 showing the various settings in Norton's Deepfake Protection" src="https://cdn.mos.cms.futurecdn.net/ohcjwfUo6atWWiE2chTYqg.jpg" mos="" align="middle" fullscreen="" width="4090" height="2301" 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>With Norton 360 installed on my laptop, I headed to the Scam Protection tab where in addition to Deepfake Protection, you can also enable Safe Web to keep you protected from risky websites and other online scams as well as Safe SMS which uses AI to flag <a href="https://www.tomsguide.com/news/this-fake-text-message-from-amazon-can-steal-your-account-dont-fall-for-this-nasty-phishing-scam">scam text messages</a>.</p><p>In Deepfake Protection’s settings, you can toggle on an auto-scan feature and another one that notifies you when AI-generated voices are being used on a site you’re visiting or in a video you’re watching. It’s all fairly simple and there aren’t too many settings to configure which makes it easy to set up regardless of how skilled you are on a computer.</p><p>In my case though, there was just one catch. Since I don’t have an AI laptop, Norton’s Deepfake Protection does require more system resources. Thankfully, my ThinkPad was powerful enough that I could just enable it right from within Norton 360. However, if you’re using an older laptop with fewer than six CPU cores and less than 8GB of RAM, you will need to manually install it but Norton walks you through the process in <a href="https://support.norton.com/sp/en/us/home/current/solutions/v2025051222180272" target="_blank">this support article</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:1918px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="RJd8Q3aMZaKtWKDQkbFVGk" name="listening-for-deepfakes" alt="A screenshot showing Norton's Deepfake Protection feature running inside Norton 360" src="https://cdn.mos.cms.futurecdn.net/RJd8Q3aMZaKtWKDQkbFVGk.jpg" mos="" align="middle" fullscreen="" width="1918" height="1079" 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>While Deepfake Protection works automatically in the background, you can also manually enable it too. On the right side, there’s a Start button and clicking on it analyzes the audio or video playing in any app. This could be particularly useful if you’re on a video call in an app as opposed to through your browser.</p><p>Although I like the simplicity of Norton’s Deepfake Protection, I was a bit let down that I couldn’t manually select files for local analysis. I get that the feature runs in the background but it would be nice to be able to drag and drop pictures or videos saved on your computer — perhaps from a messaging service like WhatsApp — to have them analyzed just to be sure.</p><h2 id="finally-sold-on-an-npu">Finally sold on an NPU</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qti5nhB52AhQbvybhA9spe" name="Intel Panther Lake" alt="Intel Panther Lake" src="https://cdn.mos.cms.futurecdn.net/Qti5nhB52AhQbvybhA9spe.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>During my testing, I didn’t see much of a performance hit on my ThinkPad. However, that doesn’t mean that over time, running Norton’s Deepfake Protection on a non-AI laptop won’t affect your workflow. If you’re trying to do something intensive like render video, you’re going to need all of your laptop’s processing power and something like this running in the background could slow things down.</p><p>While you can run Norton’s Deepfake Protection on older laptops, this feature and the added peace of mind it brings is what finally convinced me that paying a bit more for a computer with an NPU in its processor is absolutely worth it. </p><p>When AI laptops <a href="https://www.tomsguide.com/computing/laptops/ai-laptops-hype-is-not-what-you-think-companies-will-hate-me-for-revealing-this-secret">first hit store shelves</a>, they were a harder sell as the features offered at the time just weren’t useful enough to justify the higher prices of these new devices. Now though, you can put that extra bit of silicon to much better use by having it proactively keep you safe from deepfakes and other online scams in the background. </p><p>Years ago when I first started covering antivirus software, its performance impact was a critical factor that couldn’t be overlooked. While this is still true today and we continue to see how <a href="https://www.tomsguide.com/us/av-software-least-system-impact,review-6276.html">running scans can affect performance</a>, NPUs have changed things significantly. I never thought deepfakes would sell me on NPUs, here we are.</p><p>As for Norton’s Deepfake Protection, I expect it will only get better over time just as the effectiveness of its antivirus has. Sure, cybersecurity will always be a game of cat and mouse but with an NPU inside your laptop, at least you can fight that fight locally instead of over the cloud.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePVPpO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePVPpO.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/computing/online-security/i-tried-3-ai-powered-scam-detectors-to-help-keep-me-safe-online-and-theres-a-clear-winner">I tried 3 AI-powered scam detectors to help keep me safe online — and there's a clear winner</a></li><li><a href="https://www.tomsguide.com/computing/online-security/popular-steam-wallpaper-app-hijacked-to-spread-dangerous-malware-how-to-stay-safe">Popular Steam wallpaper app hijacked to spread dangerous malware — how to stay safe</a></li><li><a href="https://www.tomsguide.com/computing/online-security/i-almost-got-hit-with-a-phishing-attack-and-a-malicious-app-last-week-heres-how-i-knew-not-to-click">I found a phishing email in my inbox and a malicious app in my news feed — here’s how I knew they were scams</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/i-tested-nortons-deepfake-protection-and-it-finally-convinced-me-my-next-laptop-needs-an-npu</link>
                                                                            <description>
                            <![CDATA[ AI laptops were a tough sell for me until I realized their NPUs can actively scan what’s on your computer to keep you safe from scams and deepfakes. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ULrtivkcivyE55e7mMdhTj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NV8sTQ6gQ6MHQFvrGdqyBa-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Jun 2026 08:45:00 +0000</pubDate>                                                                                                                                <updated>Thu, 18 Jun 2026 09:24:34 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/NV8sTQ6gQ6MHQFvrGdqyBa-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A laptop on a table running Norton 360 showing off Norton&#039;s Deepfake Protection feature]]></media:description>                                                            <media:text><![CDATA[A laptop on a table running Norton 360 showing off Norton&#039;s Deepfake Protection feature]]></media:text>
                                <media:title type="plain"><![CDATA[A laptop on a table running Norton 360 showing off Norton&#039;s Deepfake Protection feature]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NV8sTQ6gQ6MHQFvrGdqyBa-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If accidentally downloading <a href="https://www.tomsguide.com/computing/malware-adware/more-than-250-malicious-apps-are-spreading-info-stealing-malware-on-android-and-ios-delete-these-right-now">malicious apps</a> and getting your computer infected with viruses wasn’t enough, these days, you can’t even trust your own eyes and ears thanks to <a href="https://www.tomsguide.com/ai/5-tips-for-spotting-ai-generated-deep-fakes-dont-get-fooled">deepfakes</a>.</p><p>Just a few years ago, you only had to look out for <a href="https://www.tomsguide.com/news/this-is-the-one-thing-to-look-out-for-in-scam-emails">phishing emails</a>, fake websites and dodgy attachments from unknown senders. Now though, thanks to AI, you can just as easily be fooled by a very convincing fake image or video.</p><p>Fortunately, in the same way that cybercriminals are now using AI in their attacks, so too are cybersecurity firms. While Norton and the rest of the companies behind the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a> use cloud-based AI to better analyze and detect new threats, this isn’t your only option when it comes to staying safe online.</p><p>You can also do so yourself locally but you will need a computer with its own neural processing unit or <a href="https://www.tomsguide.com/computing/laptops/heres-5-things-an-npu-can-do-for-your-laptop-ai-smarts-youll-actually-use-without-realizing-it">NPU</a>. Thankfully, the <a href="https://www.tomsguide.com/best-picks/best-ai-laptop">best AI laptops</a> with chips from Intel, AMD, Qualcomm and even Apple have you covered. However, when I bought my <a href="https://www.tomsguide.com/opinion/i-love-my-desktop-but-this-thinkpad-convinced-me-to-give-laptops-a-second-chance">trusty ThinkPad</a> a few years ago, this wasn’t an option yet.</p><p>After trying out Norton’s Deepfake Protection for myself though, I’ve become an NPU believer. While laptop makers tried to sell us on AI-powered features like portrait lighting, auto-framing and live captions, as it turns out, set–and-forget online security was what finally convinced me in the end.</p><h2 id="no-more-second-guessing">No more second guessing</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="bLvaToLkkdVsb6ydhQM5uJ" name="TG How to look good on video header.jpg" alt="Laptop with four participants on video call" src="https://cdn.mos.cms.futurecdn.net/bLvaToLkkdVsb6ydhQM5uJ.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: Shutterstock)</span></figcaption></figure><p>In the past, you always had to be careful when checking your inbox or navigating to unfamiliar sites. With the rise of deepfakes though, <a href="https://www.tomsguide.com/computing/online-security/7-online-scams-that-can-leave-you-broke-exposed-and-feeling-helpless">online scams</a> can appear where you’d least expect them like on a job interview or even a video call with a loved one.</p><p>For instance, let’s say you’re looking for a new remote job and make it to the interview stage. You hop on Zoom, Google Meet or Microsoft Teams and expect the other attendees to be actual people, right? Well with deepfake videos becoming more advanced every day, they might not be. </p><p>Alternatively, maybe an <a href="https://www.tomsguide.com/ai/voice-cloning-celebrity-impersonations-and-the-need-for-safeguarding-humes-ceo-sounds-off-on-the-world-of-ai-voice-generation">urgent video or audio clip</a> arrives in your messages from a loved one who’s in trouble. The message may look and sound just like them but the whole thing could actually be fake and an attempt to con you out of your hard-earned cash.</p><p><a href="https://www.tomsguide.com/computing/online-security/ai-powered-tax-scams-are-here-how-to-stay-safe-from-deepfakes-phishing-and-more-this-tax-season">AI-powered scams</a> are here to stay but if you use Norton’s Deepfake Protection, they’ll get flagged before they can do any real damage just like how its antivirus detects and prevents you from interacting with malware. From giveaway scams to crypto fraud, this feature runs locally on your device to analyze and detect synthetic voices so you don’t have to keep guessing whether or not something is real.</p><p>While I know most of us believe we’re tech-savvy enough to spot these kinds of things, that isn’t always the case. And all it takes is one slip up to end up in a very bad situation. Likewise, for those of us with older parents or relatives, we can rest easy knowing we won’t get a frantic phone call in the middle of the day as they’ll be protected.</p><p>Just like with deepfakes themselves, I had to experience this new feature for myself, so I installed <a href="https://www.tomsguide.com/computing/antivirus/norton-360-review">Norton 360</a> on my laptop, toggled Deepfake Protection on and took it for a spin.</p><div class="product"><a data-dimension112="1e01d0a5-fccd-47ab-b641-b6fe51dda666" data-action="Deal Block" data-label="360 Deluxe" data-dimension48="360 Deluxe" data-dimension25="$49" href="https://www.anrdoezrs.net/click-8900245-17226974?sid=hawk-custom-tracking" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1125px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="FtihGnjEgkVmKkrokNzeiT" name="norton2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FtihGnjEgkVmKkrokNzeiT.jpg" mos="" align="middle" fullscreen="" width="1125" height="1125" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.anrdoezrs.net/click-8900245-17226974?sid=hawk-custom-tracking" target="_blank" rel="nofollow" data-dimension112="1e01d0a5-fccd-47ab-b641-b6fe51dda666" data-action="Deal Block" data-label="360 Deluxe" data-dimension48="360 Deluxe" data-dimension25="$49">360 Deluxe: was $119 now $49</a></strong><br>This antivirus suite from Norton lets you protect up to five PCs, Macs, tablets or smartphones at the same time. It comes with malware, ransomware, hacking and even scam protection but you also get plenty of extras too like a VPN, password manager, parental controls, cloud backup, dark web monitoring and more.<a class="view-deal button" href="https://www.anrdoezrs.net/click-8900245-17226974?sid=hawk-custom-tracking" target="_blank" rel="nofollow" data-dimension112="1e01d0a5-fccd-47ab-b641-b6fe51dda666" data-action="Deal Block" data-label="360 Deluxe" data-dimension48="360 Deluxe" data-dimension25="$49">View Deal</a></p></div><h2 id="deepfake-protection-at-a-cost">Deepfake protection (at a cost)</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:4090px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="ohcjwfUo6atWWiE2chTYqg" name="Norton Deepfake Protection-3" alt="A laptop running Norton 360 showing the various settings in Norton's Deepfake Protection" src="https://cdn.mos.cms.futurecdn.net/ohcjwfUo6atWWiE2chTYqg.jpg" mos="" align="middle" fullscreen="" width="4090" height="2301" 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>With Norton 360 installed on my laptop, I headed to the Scam Protection tab where in addition to Deepfake Protection, you can also enable Safe Web to keep you protected from risky websites and other online scams as well as Safe SMS which uses AI to flag <a href="https://www.tomsguide.com/news/this-fake-text-message-from-amazon-can-steal-your-account-dont-fall-for-this-nasty-phishing-scam">scam text messages</a>.</p><p>In Deepfake Protection’s settings, you can toggle on an auto-scan feature and another one that notifies you when AI-generated voices are being used on a site you’re visiting or in a video you’re watching. It’s all fairly simple and there aren’t too many settings to configure which makes it easy to set up regardless of how skilled you are on a computer.</p><p>In my case though, there was just one catch. Since I don’t have an AI laptop, Norton’s Deepfake Protection does require more system resources. Thankfully, my ThinkPad was powerful enough that I could just enable it right from within Norton 360. However, if you’re using an older laptop with fewer than six CPU cores and less than 8GB of RAM, you will need to manually install it but Norton walks you through the process in <a href="https://support.norton.com/sp/en/us/home/current/solutions/v2025051222180272" target="_blank">this support article</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:1918px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="RJd8Q3aMZaKtWKDQkbFVGk" name="listening-for-deepfakes" alt="A screenshot showing Norton's Deepfake Protection feature running inside Norton 360" src="https://cdn.mos.cms.futurecdn.net/RJd8Q3aMZaKtWKDQkbFVGk.jpg" mos="" align="middle" fullscreen="" width="1918" height="1079" 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>While Deepfake Protection works automatically in the background, you can also manually enable it too. On the right side, there’s a Start button and clicking on it analyzes the audio or video playing in any app. This could be particularly useful if you’re on a video call in an app as opposed to through your browser.</p><p>Although I like the simplicity of Norton’s Deepfake Protection, I was a bit let down that I couldn’t manually select files for local analysis. I get that the feature runs in the background but it would be nice to be able to drag and drop pictures or videos saved on your computer — perhaps from a messaging service like WhatsApp — to have them analyzed just to be sure.</p><h2 id="finally-sold-on-an-npu">Finally sold on an NPU</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qti5nhB52AhQbvybhA9spe" name="Intel Panther Lake" alt="Intel Panther Lake" src="https://cdn.mos.cms.futurecdn.net/Qti5nhB52AhQbvybhA9spe.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>During my testing, I didn’t see much of a performance hit on my ThinkPad. However, that doesn’t mean that over time, running Norton’s Deepfake Protection on a non-AI laptop won’t affect your workflow. If you’re trying to do something intensive like render video, you’re going to need all of your laptop’s processing power and something like this running in the background could slow things down.</p><p>While you can run Norton’s Deepfake Protection on older laptops, this feature and the added peace of mind it brings is what finally convinced me that paying a bit more for a computer with an NPU in its processor is absolutely worth it. </p><p>When AI laptops <a href="https://www.tomsguide.com/computing/laptops/ai-laptops-hype-is-not-what-you-think-companies-will-hate-me-for-revealing-this-secret">first hit store shelves</a>, they were a harder sell as the features offered at the time just weren’t useful enough to justify the higher prices of these new devices. Now though, you can put that extra bit of silicon to much better use by having it proactively keep you safe from deepfakes and other online scams in the background. </p><p>Years ago when I first started covering antivirus software, its performance impact was a critical factor that couldn’t be overlooked. While this is still true today and we continue to see how <a href="https://www.tomsguide.com/us/av-software-least-system-impact,review-6276.html">running scans can affect performance</a>, NPUs have changed things significantly. I never thought deepfakes would sell me on NPUs, here we are.</p><p>As for Norton’s Deepfake Protection, I expect it will only get better over time just as the effectiveness of its antivirus has. Sure, cybersecurity will always be a game of cat and mouse but with an NPU inside your laptop, at least you can fight that fight locally instead of over the cloud.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePVPpO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePVPpO.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/computing/online-security/i-tried-3-ai-powered-scam-detectors-to-help-keep-me-safe-online-and-theres-a-clear-winner">I tried 3 AI-powered scam detectors to help keep me safe online — and there's a clear winner</a></li><li><a href="https://www.tomsguide.com/computing/online-security/popular-steam-wallpaper-app-hijacked-to-spread-dangerous-malware-how-to-stay-safe">Popular Steam wallpaper app hijacked to spread dangerous malware — how to stay safe</a></li><li><a href="https://www.tomsguide.com/computing/online-security/i-almost-got-hit-with-a-phishing-attack-and-a-malicious-app-last-week-heres-how-i-knew-not-to-click">I found a phishing email in my inbox and a malicious app in my news feed — here’s how I knew they were scams</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Job done? ACCC's last ever broadband report reveals Aussies are finally getting the consistent broadband speeds they deserve ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Aussie internet speeds are achieving consistent measures across fixed-line and wireless broadband plans, according to ACCC's final quarterly report.</p><p>As per the last <a href="https://www.accc.gov.au/by-industry/telecommunications-and-internet/telecommunications-monitoring/measuring-broadband-australia-program/latest-performance-report">Measuring Broadband Australia report</a>, Australian homes have averaged an impressive 99.4% of their internet plan's download speeds during the test period from March 1 to March 31, 2026. Comparatively, the results recorded in the previous report showed the average during peak evening hours was 98.5% of advertised plan speeds. </p><p>In recent years, these results have gotten closer to 100% of advertised plan speeds, which is a solid uptick from the 80% average when the reports were first published in 2017. The reports were established to provide Aussies with impartial quarterly data on NBN and home broadband services, including speed, latency and outages recorded by volunteers using different telecommunication providers. </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:2355px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="cidNPA2eFyDKdzRQvY8b9Y" name="accc-screenshot-june-2026" alt="ACCC graph on latest Measuring Broadband report" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:2355,ch:1325,q:80/cidNPA2eFyDKdzRQvY8b9Y.png" mos="" align="middle" fullscreen="" width="2376" height="1336" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ACCC)</span></figcaption></figure><p>At Tom's Guide, we regularly check and analyse the ACCC reports to make informed recommendations about NBN and broadband plans. Even though the reports have concluded, we often consider them a sounding board for our own in-depth monthly research, using the data in collaboration with our findings to inform our choices. Moving forward, we will lean on other reports, such as those by <a href="https://www.opensignal.com/" target="_blank">OpenSignal</a>, to provide unbiased and genuine recommendations.</p><p>The ACCC's Commissioner, Anna Brakey, noted that the reports have "brought transparency and scrutiny to broadband performance, and it has helped to ensure that consumers receive the quality of service that they pay for". </p><p>The conclusion of the quarterly reports comes after several key changes to NBN Co's wholesale products, less differentiation between NBN providers' performance and considerable improvements in overall performance since the program's inception. </p><p>Brakey also stated that "internet providers have a responsibility to deliver a service that meets the speed and performance that they advertise and the ACCC will continue to take strong enforcement action where we see evidence of misleading claims". The consumer watchdog has also confirmed it will continue to closely monitor broadband performance using its data.</p><h2 id="improvements-across-the-board">Improvements across the board</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:903px;"><p class="vanilla-image-block" style="padding-top:47.29%;"><img id="oMWws3F4VGhdFrm2chPf6Y" name="imgi_5_mba-33-mr-img-1" alt="ACCC graph on latest Measuring Broadband report" src="https://cdn.mos.cms.futurecdn.net/oMWws3F4VGhdFrm2chPf6Y.png" mos="" align="middle" fullscreen="" width="903" height="427" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ACCC)</span></figcaption></figure><p>Further, the quarterly reports have seen an improvement in underperforming services on the fixed-line network. In May 2018, over eight years ago, 13.9% of fixed-line services were considered underperforming. In the last report, the figure is now just 5.6% across the network. </p><p>The final performance report also reveals that NBN Co's fixed wireless network has continued to supply a high-speed broadband alternative for homes in rural and regional areas outside the fixed-line footprint. </p><p>The latest findings recorded 160.5Mbps average download speeds and 12.6Mbps uploads for those on NBN's Fixed Wireless Plus plan, which rivals the best NBN 100 plans in terms of speed. </p><p>As for high-performing NBN providers, <a href="https://www.tomsguide.com/computing/internet/dodos-just-hatched-a-ripper-deal-on-its-nbn-500-plan-now-the-cheapest-of-the-lot-at-just-au-usd63p-m">Dodo</a> and iPrimus take the cake for hitting advertised plan speeds, with the telco reaching up to 102.8% of speeds during all hours of the day and 102.3% of speeds during the busy hours. Leaptel, <a href="https://www.tomsguide.com/reviews/tpg-nbn-review">TPG</a> and <a href="https://www.tomsguide.com/reviews/exetel-nbn">Exetel</a> follow closely behind, each reaching above 102% across all hours of the day. </p><p>While there's no confirmation yet of a new ACCC report of broadband data, these great performance standards have now cemented the evolution of NBN Co's network, giving consumers confidence in the Australian internet landscape. At Tom's Guide, we will continue to provide the best deals, data and reviews when it comes to NBN and broadband plans, so if you're weighing up your home internet options, we've got your back — and will continue to do so. </p><p>If you have yet to take full advantage of your NBN connection type and upgrade to a speedy plan with a top-rated provider like those mentioned above, I've selected some options that will cater to most Aussie households below. If these picks don't quite satisfy your speed needs, you can check out the <a href="https://www.tomsguide.com/computing/internet/ive-trawled-through-over-115-eofy-nbn-discounts-these-4-are-the-ones-worth-switching-for">best NBN EOFY deals</a> or the <a href="https://www.tomsguide.com/best-picks/nbn-plans">best NBN plans in June</a> for an extensive range of hand-picked plans. </p><iframe allow="" height="1180" width="100%" id="" style="" class="position-center" data-lazy-priority="low" data-lazy-src="https://tomsguide.whistleout.com.au/Widgets/BroadbandSearch/Load?data=-1&speed=40&connection=NBN-Fixed-Line&tab=fixed&includefeatured=false&customer=Personal&maxresults=5&maxresultspersupplier=1&enforcemaximumresultlimits=false&hd=Today's%20best%20NBN%20plans"></iframe><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/deals/eofy-sale-australia" target="_blank">EOFY sales 2026: Australia's end of financial year sales are now on</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/internet/job-done-acccs-last-ever-broadband-report-reveals-aussies-are-finally-getting-the-consistent-broadband-speeds-they-deserve</link>
                                                                            <description>
                            <![CDATA[ The ACCC's latest and final quarterly report has revealed that Aussie homes are finally achieving consistent broadband speeds on fixed-line and wireless broadband plans. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">YdHe6UfG9TZTckaeq88uQK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/nSqhYfn3JiMsYDX8W6JVVA-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Jun 2026 02:19:04 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/UC9ncAYxkmJ5ipHEyX44ri.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, with articles covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/nSqhYfn3JiMsYDX8W6JVVA-1280-80.jpg">
                                                            <media:credit><![CDATA[Pexels / Eren Li]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An individual typing on a laptop, focusing on the hands and keyboard in an indoor setting.]]></media:description>                                                            <media:text><![CDATA[An individual typing on a laptop, focusing on the hands and keyboard in an indoor setting.]]></media:text>
                                <media:title type="plain"><![CDATA[An individual typing on a laptop, focusing on the hands and keyboard in an indoor setting.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/nSqhYfn3JiMsYDX8W6JVVA-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Aussie internet speeds are achieving consistent measures across fixed-line and wireless broadband plans, according to ACCC's final quarterly report.</p><p>As per the last <a href="https://www.accc.gov.au/by-industry/telecommunications-and-internet/telecommunications-monitoring/measuring-broadband-australia-program/latest-performance-report">Measuring Broadband Australia report</a>, Australian homes have averaged an impressive 99.4% of their internet plan's download speeds during the test period from March 1 to March 31, 2026. Comparatively, the results recorded in the previous report showed the average during peak evening hours was 98.5% of advertised plan speeds. </p><p>In recent years, these results have gotten closer to 100% of advertised plan speeds, which is a solid uptick from the 80% average when the reports were first published in 2017. The reports were established to provide Aussies with impartial quarterly data on NBN and home broadband services, including speed, latency and outages recorded by volunteers using different telecommunication providers. </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:2355px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="cidNPA2eFyDKdzRQvY8b9Y" name="accc-screenshot-june-2026" alt="ACCC graph on latest Measuring Broadband report" src="https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:2355,ch:1325,q:80/cidNPA2eFyDKdzRQvY8b9Y.png" mos="" align="middle" fullscreen="" width="2376" height="1336" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ACCC)</span></figcaption></figure><p>At Tom's Guide, we regularly check and analyse the ACCC reports to make informed recommendations about NBN and broadband plans. Even though the reports have concluded, we often consider them a sounding board for our own in-depth monthly research, using the data in collaboration with our findings to inform our choices. Moving forward, we will lean on other reports, such as those by <a href="https://www.opensignal.com/" target="_blank">OpenSignal</a>, to provide unbiased and genuine recommendations.</p><p>The ACCC's Commissioner, Anna Brakey, noted that the reports have "brought transparency and scrutiny to broadband performance, and it has helped to ensure that consumers receive the quality of service that they pay for". </p><p>The conclusion of the quarterly reports comes after several key changes to NBN Co's wholesale products, less differentiation between NBN providers' performance and considerable improvements in overall performance since the program's inception. </p><p>Brakey also stated that "internet providers have a responsibility to deliver a service that meets the speed and performance that they advertise and the ACCC will continue to take strong enforcement action where we see evidence of misleading claims". The consumer watchdog has also confirmed it will continue to closely monitor broadband performance using its data.</p><h2 id="improvements-across-the-board">Improvements across the board</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:903px;"><p class="vanilla-image-block" style="padding-top:47.29%;"><img id="oMWws3F4VGhdFrm2chPf6Y" name="imgi_5_mba-33-mr-img-1" alt="ACCC graph on latest Measuring Broadband report" src="https://cdn.mos.cms.futurecdn.net/oMWws3F4VGhdFrm2chPf6Y.png" mos="" align="middle" fullscreen="" width="903" height="427" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ACCC)</span></figcaption></figure><p>Further, the quarterly reports have seen an improvement in underperforming services on the fixed-line network. In May 2018, over eight years ago, 13.9% of fixed-line services were considered underperforming. In the last report, the figure is now just 5.6% across the network. </p><p>The final performance report also reveals that NBN Co's fixed wireless network has continued to supply a high-speed broadband alternative for homes in rural and regional areas outside the fixed-line footprint. </p><p>The latest findings recorded 160.5Mbps average download speeds and 12.6Mbps uploads for those on NBN's Fixed Wireless Plus plan, which rivals the best NBN 100 plans in terms of speed. </p><p>As for high-performing NBN providers, <a href="https://www.tomsguide.com/computing/internet/dodos-just-hatched-a-ripper-deal-on-its-nbn-500-plan-now-the-cheapest-of-the-lot-at-just-au-usd63p-m">Dodo</a> and iPrimus take the cake for hitting advertised plan speeds, with the telco reaching up to 102.8% of speeds during all hours of the day and 102.3% of speeds during the busy hours. Leaptel, <a href="https://www.tomsguide.com/reviews/tpg-nbn-review">TPG</a> and <a href="https://www.tomsguide.com/reviews/exetel-nbn">Exetel</a> follow closely behind, each reaching above 102% across all hours of the day. </p><p>While there's no confirmation yet of a new ACCC report of broadband data, these great performance standards have now cemented the evolution of NBN Co's network, giving consumers confidence in the Australian internet landscape. At Tom's Guide, we will continue to provide the best deals, data and reviews when it comes to NBN and broadband plans, so if you're weighing up your home internet options, we've got your back — and will continue to do so. </p><p>If you have yet to take full advantage of your NBN connection type and upgrade to a speedy plan with a top-rated provider like those mentioned above, I've selected some options that will cater to most Aussie households below. If these picks don't quite satisfy your speed needs, you can check out the <a href="https://www.tomsguide.com/computing/internet/ive-trawled-through-over-115-eofy-nbn-discounts-these-4-are-the-ones-worth-switching-for">best NBN EOFY deals</a> or the <a href="https://www.tomsguide.com/best-picks/nbn-plans">best NBN plans in June</a> for an extensive range of hand-picked plans. </p><iframe allow="" height="1180" width="100%" id="" style="" class="position-center" data-lazy-priority="low" data-lazy-src="https://tomsguide.whistleout.com.au/Widgets/BroadbandSearch/Load?data=-1&speed=40&connection=NBN-Fixed-Line&tab=fixed&includefeatured=false&customer=Personal&maxresults=5&maxresultspersupplier=1&enforcemaximumresultlimits=false&hd=Today's%20best%20NBN%20plans"></iframe><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/deals/eofy-sale-australia" target="_blank">EOFY sales 2026: Australia's end of financial year sales are now on</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Don't miss a second of England vs Croatia while you're abroad – Norton VPN is our top streaming VPN and has a 60-day money-back guarantee ]]></title>
                                                                                                <dc:content><![CDATA[ <p>England take on Croatia in a one of the most hotly anticipated games of the <a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams">2026 World Cup</a>'s group stage – and if you're traveling abroad or just away from your usual setup, you don't want to miss it. Streaming services often restrict access based on location, which can leave you locked out of the coverage you'd normally get at home.</p><p>Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> solves this by routing your connection through a server in your home country, letting you access your usual streaming service as if you'd never left. It also encrypts your traffic, which is useful if you're connecting via public Wi-Fi at an airport, hotel, or bar to catch the match.</p><p>We currently rate <a href="https://www.tomsguide.com/computing/vpns/norton-vpn-review">Norton VPN</a> as the <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best VPN for streaming</a>, and there's a sensational deal running right now that makes it an easy choice for World Cup coverage.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-4">How does Norton VPN compare to other top VPNs?</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> remains our top-rated VPN overall, and its testing backs that up: speeds of over 1,249 Mbps locally, a server network spanning more than 8,000 servers across a staggering 167 countries, and a near-flawless streaming unblocking record. In comparison, Norton only offers servers in a measly 65 countries – meaning potentially less choice when it comes to streaming services.</p><p>The catch is price – even on the discounted two-year plan, NordVPN works out to around <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, more than Norton's current World Cup deal. Norton also has the edge when it comes to raw streaming performance, unblocking every major streaming platform in our latest round of testing, despite its smaller network.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> is a budget alternative, with plans starting at a very reasonable <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> and the bonus of unlimited device connections. This is a bonus compared to Norton, which has strict limits on how many devices you can install the VPN on. Surfshark's a capable all-rounder, too, and one of the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. However, its streaming unblocking has been less consistent than Norton's in our reviews, occasionally struggling with certain Netflix regions.</p><p>If your main priority is locking in reliable access to every match without interruption, Norton VPN is the clear choice. What's more, that performance currently comes with competitive pricing against NordVPN and a 60-day guarantee which is double what most competitors offer, giving you the entire tournament to decide if it's right for you. </p><p>NordVPN and Surfshark remain solid options for general use once the World Cup wraps up, but for streaming this tournament specifically, Norton's combination of unblocking power and deal pricing is hard to beat.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/dont-miss-a-second-of-england-vs-croatia-while-youre-abroad-norton-vpn-is-our-top-streaming-vpn-and-has-a-60-day-money-back-guarantee</link>
                                                                            <description>
                            <![CDATA[ Norton VPN's 12-month plan now starts at $3.33 a month, backed by a money-back guarantee that covers the entire tournament ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">33yjnaEshAPEhz9HdvAQwN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LWRdbEnZruhyCeoStbzXYD-1280-80.webp" type="image/webp" length="0"></enclosure>
                                                                        <pubDate>Wed, 17 Jun 2026 15:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/webp" url="https://cdn.mos.cms.futurecdn.net/LWRdbEnZruhyCeoStbzXYD-1280-80.webp">
                                                            <media:credit><![CDATA[Michael Regan - The FA/The FA via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Harry Kane of England scores a penalty for his team&#039;s third goal during the FIFA World Cup 2026 qualifier match between Latvia and England at Daugava Stadium on October 14, 2025 in Riga, Latvia.]]></media:description>                                                            <media:text><![CDATA[Harry Kane of England scores a penalty for his team&#039;s third goal during the FIFA World Cup 2026 qualifier match between Latvia and England at Daugava Stadium on October 14, 2025 in Riga, Latvia.]]></media:text>
                                <media:title type="plain"><![CDATA[Harry Kane of England scores a penalty for his team&#039;s third goal during the FIFA World Cup 2026 qualifier match between Latvia and England at Daugava Stadium on October 14, 2025 in Riga, Latvia.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LWRdbEnZruhyCeoStbzXYD-1280-80.webp" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>England take on Croatia in a one of the most hotly anticipated games of the <a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams">2026 World Cup</a>'s group stage – and if you're traveling abroad or just away from your usual setup, you don't want to miss it. Streaming services often restrict access based on location, which can leave you locked out of the coverage you'd normally get at home.</p><p>Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> solves this by routing your connection through a server in your home country, letting you access your usual streaming service as if you'd never left. It also encrypts your traffic, which is useful if you're connecting via public Wi-Fi at an airport, hotel, or bar to catch the match.</p><p>We currently rate <a href="https://www.tomsguide.com/computing/vpns/norton-vpn-review">Norton VPN</a> as the <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best VPN for streaming</a>, and there's a sensational deal running right now that makes it an easy choice for World Cup coverage.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-4">How does Norton VPN compare to other top VPNs?</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> remains our top-rated VPN overall, and its testing backs that up: speeds of over 1,249 Mbps locally, a server network spanning more than 8,000 servers across a staggering 167 countries, and a near-flawless streaming unblocking record. In comparison, Norton only offers servers in a measly 65 countries – meaning potentially less choice when it comes to streaming services.</p><p>The catch is price – even on the discounted two-year plan, NordVPN works out to around <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, more than Norton's current World Cup deal. Norton also has the edge when it comes to raw streaming performance, unblocking every major streaming platform in our latest round of testing, despite its smaller network.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> is a budget alternative, with plans starting at a very reasonable <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> and the bonus of unlimited device connections. This is a bonus compared to Norton, which has strict limits on how many devices you can install the VPN on. Surfshark's a capable all-rounder, too, and one of the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. However, its streaming unblocking has been less consistent than Norton's in our reviews, occasionally struggling with certain Netflix regions.</p><p>If your main priority is locking in reliable access to every match without interruption, Norton VPN is the clear choice. What's more, that performance currently comes with competitive pricing against NordVPN and a 60-day guarantee which is double what most competitors offer, giving you the entire tournament to decide if it's right for you. </p><p>NordVPN and Surfshark remain solid options for general use once the World Cup wraps up, but for streaming this tournament specifically, Norton's combination of unblocking power and deal pricing is hard to beat.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Popular Steam app Wallpaper Engine hijacked to spread dangerous malware — how to stay safe ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Hackers are once again targeting gamers on Steam, but this time, instead of using <a href="https://www.tomsguide.com/computing/online-security/new-indie-game-found-spreading-malware-on-steam-how-to-see-if-your-pc-is-infected-and-what-to-do-next">malware-filled games</a> to do so, they’ve switched to hiding malicious code in desktop wallpapers.</p><p>As reported by <a href="https://www.bleepingcomputer.com/news/security/steam-workshop-abused-to-spread-malware-via-wallpaper-engine-app/" target="_blank">BleepingComputer</a>, these infected wallpapers can prove quite dangerous for unsuspecting gamers as they can provide an easy way to install a backdoor on one of the <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs</a> or even to hijack their Steam accounts.</p><p>Any image you download online could contain malware. However, the hackers behind this campaign are leveraging an incredibly popular Steam app to do so instead. With 20 to 50 million installs according to <a href="https://steamspy.com/dev/Wallpaper+Engine+Team" target="_blank">SteamSpy</a>, Wallpaper Engine is one of the most downloaded apps on the platform.</p><p>What makes <a href="https://www.tomsguide.com/opinion/i-test-oled-monitors-for-a-living-this-is-the-one-app-i-use-to-stop-burn-in">Wallpaper Engine</a> so popular, though, is that users can download hundreds of thousands of desktop wallpapers made by other users through Valve’s community hub, Steam Workshop. By abusing this feature, the hackers are easily able to disseminate their infected wallpapers.</p><p>Here’s everything you need to know about the latest malware threat on Steam and how you can keep your account — and your gaming PC — safe from hackers.</p><h2 id="malicious-application-wallpapers">Malicious application wallpapers</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="HCg23n6gHREqAwvUsogpeR" name="MSI MPG 321URXW QD-OLED-09" alt="Tilting the MSI MPG 321URXW QD-OLED monitor on its included stand" src="https://cdn.mos.cms.futurecdn.net/HCg23n6gHREqAwvUsogpeR.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>For those unfamiliar, in addition to static wallpapers, Wallpaper Engine also supports four dynamic wallpaper types that can render videos, interactive scenes, webpages with audio and video, and applications. That last one is incredibly important in this campaign.</p><p>Unlike a JPEG or PNG file, Wallpaper Engine’s application wallpapers are full-on Windows executables that run like any other program on your PC. According to researchers at the cybersecurity firm Kaspersky, not only do they pose a built-in security risk, but they’re also currently being used by hackers to deliver malware to unsuspecting Steam users.</p><p>In a <a href="https://securelist.com/dozens-of-malicious-wallpapers-found-on-steam-workshop/120186/" target="_blank">blog post</a>, Kaspersky’s researchers explained how they discovered dozens of malicious application wallpapers on Steam Workshop, many of which had been downloaded thousands or even tens of thousands of times. By analyzing the application wallpapers in question, the researchers found that the malware is either bundled directly into their installation packages or hidden inside password-protected archives that users are then tricked into opening. Unfortunately, the damage is done immediately after one of these compromised wallpapers is installed.</p><p>After a user installs one such asset posing as a game called NTRaholic, the wallpaper launches as expected. However, in the process, a <a href="https://www.tomsguide.com/computing/malware-adware/hackers-target-job-hunters-with-dangerous-new-windows-backdoor-how-to-stay-safe">backdoor file</a> belonging to the DarkKomet malware is also installed in the background. In order to search for and steal Steam credentials, a custom version of a system library called ‘AggregatorHost.dll’ is installed as well.</p><p>In addition to DarkKomet, Kaspersky’s researchers also found other malware families installed in these malicious wallpapers, like the <a href="https://www.tomsguide.com/news/hackers-are-tricking-discord-users-into-installing-malware-dont-fall-for-this">Lumma</a> and <a href="https://www.tomsguide.com/computing/malware-adware/12-million-people-fooled-by-fake-midjourney-facebook-page-used-to-spread-malware-dont-fall-for-this">Vidar</a> infostealers. They were even used to spread ransomware, too.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OzLJle"></div>                            </div>                            <script src="https://kwizly.com/embed/OzLJle.js" async></script><h2 id="how-to-stay-safe-from-malware">How to stay safe from malware</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="SS5Sx6xLmBVCxFLiCQytxQ" name="GettyImages-2160279257" alt="Computer security protection" src="https://cdn.mos.cms.futurecdn.net/SS5Sx6xLmBVCxFLiCQytxQ.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: Getty Images)</span></figcaption></figure><p>Fortunately, after Kaspersky alerted Valve about this campaign, all of the infected wallpapers in question were removed from the Steam Workshop. Still, this is an excellent reminder to always be careful when downloading files online, even if they come from a trusted platform.</p><p>In order to stay safe from any malware contained within desktop wallpapers, game mods, or games themselves, you definitely want to make sure your gaming PC is protected with the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a>. If you want to be extra careful, you might also consider investing in one of the <a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html">best identity theft protection services</a>. That way, if your credentials are compromised as a result of what you download online, you have a safety net to help monitor your data and recover financial losses from fraud.</p><p>When in doubt, stick to trusted creators when downloading new wallpapers and be extra cautious before running any executable on your gaming PC. This likely won’t be the last time hackers target Steam in their attacks, but Valve has an excellent track record of quickly responding to and dealing with malicious activity on its platform.</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/smart-rings/ultrahuman-data-breach-i-was-affected-and-here-is-exactly-what-hackers-stole-from-my-account">I just got hit by the Ultrahuman data breach — here's what hackers stole from my account</a></li><li><a href="https://www.tomsguide.com/computing/gpus/update-your-nvidia-gpu-drivers-now-to-protect-your-pc-from-9-high-severity-vulnerabilities-heres-whats-at-risk">Update your Nvidia GPU drivers now to protect your PC from 9 "high-severity" vulnerabilities — here's what's at risk</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/asus-rog-xbox-ally-x20-hands-on-review">I just tried Asus’ upgraded Xbox Ally X20 for ROG’s 20th anniversary — and it isn’t just another special edition handheld</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/popular-steam-wallpaper-app-hijacked-to-spread-dangerous-malware-how-to-stay-safe</link>
                                                                            <description>
                            <![CDATA[ Hackers are exploiting Steam Workshop to hide malicious code inside community-made desktop themes for Wallpaper Engine, putting users at risk of account theft. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FSnM8SDcLzFgRMCXHZ7K9K</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/fpSpYYb7kGr39ig4zytbaK-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 16 Jun 2026 22:17:10 +0000</pubDate>                                                                                                                                <updated>Thu, 18 Jun 2026 19:17:33 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/fpSpYYb7kGr39ig4zytbaK-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A magnifying glass on top of the Steam logo in a web browser]]></media:description>                                                            <media:text><![CDATA[A magnifying glass on top of the Steam logo in a web browser]]></media:text>
                                <media:title type="plain"><![CDATA[A magnifying glass on top of the Steam logo in a web browser]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/fpSpYYb7kGr39ig4zytbaK-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Hackers are once again targeting gamers on Steam, but this time, instead of using <a href="https://www.tomsguide.com/computing/online-security/new-indie-game-found-spreading-malware-on-steam-how-to-see-if-your-pc-is-infected-and-what-to-do-next">malware-filled games</a> to do so, they’ve switched to hiding malicious code in desktop wallpapers.</p><p>As reported by <a href="https://www.bleepingcomputer.com/news/security/steam-workshop-abused-to-spread-malware-via-wallpaper-engine-app/" target="_blank">BleepingComputer</a>, these infected wallpapers can prove quite dangerous for unsuspecting gamers as they can provide an easy way to install a backdoor on one of the <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs</a> or even to hijack their Steam accounts.</p><p>Any image you download online could contain malware. However, the hackers behind this campaign are leveraging an incredibly popular Steam app to do so instead. With 20 to 50 million installs according to <a href="https://steamspy.com/dev/Wallpaper+Engine+Team" target="_blank">SteamSpy</a>, Wallpaper Engine is one of the most downloaded apps on the platform.</p><p>What makes <a href="https://www.tomsguide.com/opinion/i-test-oled-monitors-for-a-living-this-is-the-one-app-i-use-to-stop-burn-in">Wallpaper Engine</a> so popular, though, is that users can download hundreds of thousands of desktop wallpapers made by other users through Valve’s community hub, Steam Workshop. By abusing this feature, the hackers are easily able to disseminate their infected wallpapers.</p><p>Here’s everything you need to know about the latest malware threat on Steam and how you can keep your account — and your gaming PC — safe from hackers.</p><h2 id="malicious-application-wallpapers">Malicious application wallpapers</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="HCg23n6gHREqAwvUsogpeR" name="MSI MPG 321URXW QD-OLED-09" alt="Tilting the MSI MPG 321URXW QD-OLED monitor on its included stand" src="https://cdn.mos.cms.futurecdn.net/HCg23n6gHREqAwvUsogpeR.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>For those unfamiliar, in addition to static wallpapers, Wallpaper Engine also supports four dynamic wallpaper types that can render videos, interactive scenes, webpages with audio and video, and applications. That last one is incredibly important in this campaign.</p><p>Unlike a JPEG or PNG file, Wallpaper Engine’s application wallpapers are full-on Windows executables that run like any other program on your PC. According to researchers at the cybersecurity firm Kaspersky, not only do they pose a built-in security risk, but they’re also currently being used by hackers to deliver malware to unsuspecting Steam users.</p><p>In a <a href="https://securelist.com/dozens-of-malicious-wallpapers-found-on-steam-workshop/120186/" target="_blank">blog post</a>, Kaspersky’s researchers explained how they discovered dozens of malicious application wallpapers on Steam Workshop, many of which had been downloaded thousands or even tens of thousands of times. By analyzing the application wallpapers in question, the researchers found that the malware is either bundled directly into their installation packages or hidden inside password-protected archives that users are then tricked into opening. Unfortunately, the damage is done immediately after one of these compromised wallpapers is installed.</p><p>After a user installs one such asset posing as a game called NTRaholic, the wallpaper launches as expected. However, in the process, a <a href="https://www.tomsguide.com/computing/malware-adware/hackers-target-job-hunters-with-dangerous-new-windows-backdoor-how-to-stay-safe">backdoor file</a> belonging to the DarkKomet malware is also installed in the background. In order to search for and steal Steam credentials, a custom version of a system library called ‘AggregatorHost.dll’ is installed as well.</p><p>In addition to DarkKomet, Kaspersky’s researchers also found other malware families installed in these malicious wallpapers, like the <a href="https://www.tomsguide.com/news/hackers-are-tricking-discord-users-into-installing-malware-dont-fall-for-this">Lumma</a> and <a href="https://www.tomsguide.com/computing/malware-adware/12-million-people-fooled-by-fake-midjourney-facebook-page-used-to-spread-malware-dont-fall-for-this">Vidar</a> infostealers. They were even used to spread ransomware, too.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OzLJle"></div>                            </div>                            <script src="https://kwizly.com/embed/OzLJle.js" async></script><h2 id="how-to-stay-safe-from-malware">How to stay safe from malware</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="SS5Sx6xLmBVCxFLiCQytxQ" name="GettyImages-2160279257" alt="Computer security protection" src="https://cdn.mos.cms.futurecdn.net/SS5Sx6xLmBVCxFLiCQytxQ.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: Getty Images)</span></figcaption></figure><p>Fortunately, after Kaspersky alerted Valve about this campaign, all of the infected wallpapers in question were removed from the Steam Workshop. Still, this is an excellent reminder to always be careful when downloading files online, even if they come from a trusted platform.</p><p>In order to stay safe from any malware contained within desktop wallpapers, game mods, or games themselves, you definitely want to make sure your gaming PC is protected with the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a>. If you want to be extra careful, you might also consider investing in one of the <a href="https://www.tomsguide.com/us/best-identity-theft-protection,review-2083.html">best identity theft protection services</a>. That way, if your credentials are compromised as a result of what you download online, you have a safety net to help monitor your data and recover financial losses from fraud.</p><p>When in doubt, stick to trusted creators when downloading new wallpapers and be extra cautious before running any executable on your gaming PC. This likely won’t be the last time hackers target Steam in their attacks, but Valve has an excellent track record of quickly responding to and dealing with malicious activity on its platform.</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/smart-rings/ultrahuman-data-breach-i-was-affected-and-here-is-exactly-what-hackers-stole-from-my-account">I just got hit by the Ultrahuman data breach — here's what hackers stole from my account</a></li><li><a href="https://www.tomsguide.com/computing/gpus/update-your-nvidia-gpu-drivers-now-to-protect-your-pc-from-9-high-severity-vulnerabilities-heres-whats-at-risk">Update your Nvidia GPU drivers now to protect your PC from 9 "high-severity" vulnerabilities — here's what's at risk</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/asus-rog-xbox-ally-x20-hands-on-review">I just tried Asus’ upgraded Xbox Ally X20 for ROG’s 20th anniversary — and it isn’t just another special edition handheld</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Google Chrome's next update could kill ad blockers for good — here's how ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Google Chrome's next update could be the final nail in the coffin for some of the <a href="https://www.tomsguide.com/round-up/best-adblockers-privacy-extensions">best ad blockers</a> like uBlock Origin. As per a <a href="https://cybernews.com/security/chrome-update-disables-adblockers-manifest-v3/" target="_blank">Cybernews report</a>, Chrome is set to finally drop support for Manifest V2 extensions, which would mean the end of support for <a href="https://www.tomsguide.com/how-to/how-to-block-ads-on-chrome">Chrome's ad blockers</a>.</p><p>Google began the shift over to Manifest V3 last year, but the report notes the next iterations of the browser — either version 150 or 151 — will remove the older framework completely.</p><p>“MV2 extensions are no longer allowed in any supported version of Chrome, and we are removing support for them and the associated functionality," Google engineer Devlin Cronin wrote in a <a href="https://chromium-review.googlesource.com/c/chromium/src/+/7813942" target="_blank">Chromium commit</a> confirming the change.</p><p>"We won't be able to provide/maintain this functionality indefinitely due to the complexity and tech debt, as well as the security risks it entails."</p><p>Shifting Chrome fully to Manifest V3 won't stop new ad blockers from being developed (in fact, some services like AdGuard, AdBlock, and Ghostery have been updated for V3), but it does impose restrictions. Manifest V3 will cap the number of filtering rules an extension can apply, which could theoretically foil ad blockers' attempts to respond to the latest ad-deployment technology.</p><p>Of course, there are some benefits to this new system. Many Chrome extensions that seem legitimate are actually loaded with malicious code. Chrome's new, more rigid Manifest V3 system will be better equipped to put a stop to that.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eBjDKe"></div>                            </div>                            <script src="https://kwizly.com/embed/eBjDKe.js" async></script><h2 id="what-does-this-mean-for-those-that-want-to-block-ads">What does this mean for those that want to block ads?</h2><p>The simplest answer for those who want to continue blocking ads after the latest version of Chrome rolls out is to switch browsers. This change will likely affect other Chromium-based browsers like Opera, Edge, and Samsung Browser, albeit not for a while yet.</p><p>However, Mozilla's Firefox browser doesn't use Chromium and has no current plans to remove the MV2 framework extension, so switching over could be a viable option if people want to continue running uBlock Origin. Similarly, the privacy-focused Brave browser could be another way to keep your favorite extensions running.</p><p>Finally, if you're determined not to see ads, you could investigate signing up for a desktop app that will block ads for you — rather than relying on a browser extension. This may be more costly, but it will also likely be more effective at catching those adverts that interrupt your browsing.</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/computing/vpns/a-vpn-will-be-an-essential-part-of-my-summer-vacation-packing-heres-why">A VPN will be an essential part of my summer vacation packing — here's why</a></li><li><a href="https://www.tomsguide.com/ai/3-hidden-chatgpt-settings-most-people-never-turn-on-and-why-you-should">3 hidden ChatGPT settings most people never turn on — and why you should</a></li><li><a href="https://www.tomsguide.com/phones/network-carriers/verizon-mvnos-a-complete-listing-plus-the-best-option-for-your-money">Verizon MVNOs: A complete listing, plus the best option for your money</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/browsers/google-chromes-next-update-could-kill-ad-blockers-for-good-heres-how</link>
                                                                            <description>
                            <![CDATA[ Google Chrome is dropping support for MV2 extensions, including popular ad blockers like uBlock Origin. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QY4hbD2qJD2FCt7PDWqor7</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/W6JjyA6fWc7yvSauu4zdzT-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 16 Jun 2026 15:03:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Browsers]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jeff is U.K. Editor-in-Chief for Tom’s Guide looking after the day-to-day output of the site’s British contingent. &lt;/p&gt;&lt;p&gt;Rising early and heading straight for the coffee machine, Jeff loves nothing more than dialling into the zeitgeist of the day’s tech news. A journalist for over a decade, he&#039;s travelled around the world testing and reviewing any gadget he can get his hands on.&lt;/p&gt;&lt;p&gt;Before joining the team at Tom’s Guide, Jeff covered technology and science for two of the U.K.’s biggest national news sites: Metro.co.uk and the Daily Mirror. Memorable moments include getting lost in Vienna in an electric Audi, touring Lockheed Martin’s mile-long jet factory in Fort Worth and filming a Netflix documentary about Elon Musk in West London.&lt;/p&gt;&lt;p&gt;When not plugged into the current news agenda, editing or commissioning a series of articles or debating the merits of Apple vs Android, Jeff can usually be found out for a run trying to shave precious seconds off his PB. Or lifting weights in a vain attempt to offset the ageing process.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/W6JjyA6fWc7yvSauu4zdzT-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Chrome browser on laptop]]></media:description>                                                            <media:text><![CDATA[Chrome browser on laptop]]></media:text>
                                <media:title type="plain"><![CDATA[Chrome browser on laptop]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/W6JjyA6fWc7yvSauu4zdzT-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Google Chrome's next update could be the final nail in the coffin for some of the <a href="https://www.tomsguide.com/round-up/best-adblockers-privacy-extensions">best ad blockers</a> like uBlock Origin. As per a <a href="https://cybernews.com/security/chrome-update-disables-adblockers-manifest-v3/" target="_blank">Cybernews report</a>, Chrome is set to finally drop support for Manifest V2 extensions, which would mean the end of support for <a href="https://www.tomsguide.com/how-to/how-to-block-ads-on-chrome">Chrome's ad blockers</a>.</p><p>Google began the shift over to Manifest V3 last year, but the report notes the next iterations of the browser — either version 150 or 151 — will remove the older framework completely.</p><p>“MV2 extensions are no longer allowed in any supported version of Chrome, and we are removing support for them and the associated functionality," Google engineer Devlin Cronin wrote in a <a href="https://chromium-review.googlesource.com/c/chromium/src/+/7813942" target="_blank">Chromium commit</a> confirming the change.</p><p>"We won't be able to provide/maintain this functionality indefinitely due to the complexity and tech debt, as well as the security risks it entails."</p><p>Shifting Chrome fully to Manifest V3 won't stop new ad blockers from being developed (in fact, some services like AdGuard, AdBlock, and Ghostery have been updated for V3), but it does impose restrictions. Manifest V3 will cap the number of filtering rules an extension can apply, which could theoretically foil ad blockers' attempts to respond to the latest ad-deployment technology.</p><p>Of course, there are some benefits to this new system. Many Chrome extensions that seem legitimate are actually loaded with malicious code. Chrome's new, more rigid Manifest V3 system will be better equipped to put a stop to that.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eBjDKe"></div>                            </div>                            <script src="https://kwizly.com/embed/eBjDKe.js" async></script><h2 id="what-does-this-mean-for-those-that-want-to-block-ads">What does this mean for those that want to block ads?</h2><p>The simplest answer for those who want to continue blocking ads after the latest version of Chrome rolls out is to switch browsers. This change will likely affect other Chromium-based browsers like Opera, Edge, and Samsung Browser, albeit not for a while yet.</p><p>However, Mozilla's Firefox browser doesn't use Chromium and has no current plans to remove the MV2 framework extension, so switching over could be a viable option if people want to continue running uBlock Origin. Similarly, the privacy-focused Brave browser could be another way to keep your favorite extensions running.</p><p>Finally, if you're determined not to see ads, you could investigate signing up for a desktop app that will block ads for you — rather than relying on a browser extension. This may be more costly, but it will also likely be more effective at catching those adverts that interrupt your browsing.</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/computing/vpns/a-vpn-will-be-an-essential-part-of-my-summer-vacation-packing-heres-why">A VPN will be an essential part of my summer vacation packing — here's why</a></li><li><a href="https://www.tomsguide.com/ai/3-hidden-chatgpt-settings-most-people-never-turn-on-and-why-you-should">3 hidden ChatGPT settings most people never turn on — and why you should</a></li><li><a href="https://www.tomsguide.com/phones/network-carriers/verizon-mvnos-a-complete-listing-plus-the-best-option-for-your-money">Verizon MVNOs: A complete listing, plus the best option for your money</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to set up your Smart TV with a VPN for World Cup 2026 streaming ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.techradar.com/how-to-watch/football/world-cup-2026-live-stream">World Cup</a> only comes around every four years, and whether you're making the trip to the US, Canada, or Mexico, or you're based abroad for work, the last thing you want is to hit a geo-block on match day. Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> solves that by routing your connection through a server back home, giving you access to the same free streams you'd get on your couch – BBC iPlayer, ITV, or whatever your local broadcaster happens to be.</p><p>The good news is that Norton VPN has you covered with a 60-day money-back guarantee on annual plans – double the 30-day industry standard – which means you can sign in, stream every group stage game, knockout round, and the final itself, and still claim a full refund if you're not satisfied. That makes it completely risk-free for the entire tournament.</p><p>Before you dive in, though, there's one thing worth knowing: your smart TV's operating system determines exactly how you set up your VPN. Get that part wrong and you'll be troubleshooting during kick-off.</p><div class="product"><a data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow" data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow" data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="device-matters">Device matters</h2><p>Your TV's operating system dictates how – and whether – you can run a VPN directly on it, so it's worth knowing which camp you're in before kick-off.</p><p>If your TV or streaming device runs Google TV, Android TV, Amazon Fire OS, or Apple's tvOS (tvOS 17 or later), you're in luck. All of these platforms feature native app stores, meaning you can download the Norton VPN app directly, sign in, and be connected within minutes.</p><p>Samsung and LG owners face a different situation. Tizen and webOS – the operating systems powering those TVs respectively – block third-party network configurations entirely and offer no native VPN support. Your options are Smart DNS, which reroutes only your location data without full encryption, or setting up Norton on your router so that every device on your network is covered automatically.</p><p>If none of those options work for you, there's a reliable fallback: connect a laptop to your TV via HDMI. Run Norton VPN on the laptop, set it to your home country, and your stream plays on the big screen just as intended. Two things to sort before kick-off – set your laptop's power settings so it stays awake with the lid closed, and if sound isn't coming through the TV, manually switch your system's audio output to the TV speakers.</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="zmyLJwR3a2PoNUgYdhVJbA" name="World Cup edit" alt="World Cup edit" src="https://cdn.mos.cms.futurecdn.net/zmyLJwR3a2PoNUgYdhVJbA.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: Getty Images)</span></figcaption></figure><h2 id="vpn-limitations">VPN Limitations</h2><p>A VPN adds a layer of encryption to your connection, and during a global event with millions of viewers doing the same thing, that comes with a couple of practical trade-offs worth knowing about.</p><p>The first is resolution. Many broadcasters stream in native 4K, and modern VPNs are fast enough to handle it under normal conditions – but when large numbers of users crowd onto the same VPN server simultaneously, that headroom shrinks quickly. If your stream starts buffering, drop the resolution manually to 1080p. A smooth, uninterrupted match beats a stuttering one in 4K every time.</p><p>The second concerns casting. If you're planning to stream from your phone and cast to the TV via AirPlay or Chromecast, you may run into connectivity issues. A VPN creates an encrypted point-to-point tunnel between your device and the server, which cuts your phone off from the local area network – and casting relies on that local connection. Some VPNs include a "allow local network access" setting that resolves this, but not all do. If yours doesn't, the HDMI + laptop method is your most reliable alternative.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/how-to-set-up-your-smart-tv-with-a-vpn-for-world-cup-2026-streaming</link>
                                                                            <description>
                            <![CDATA[ Not all smart TVs support VPN apps natively – Samsung and LG owners will need a workaround. Here's how to get a VPN running on your device in time for kick-off, whatever hardware you're working with. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oB8Vrnv4joQQyJeTtsJVcP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Labt2Xmf3fE6GcYnZ8QCm4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 15 Jun 2026 15:29:46 +0000</pubDate>                                                                                                                                <updated>Thu, 16 Jul 2026 15:01:25 +0000</updated>
                                                                                                                                            <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Labt2Xmf3fE6GcYnZ8QCm4-1280-80.jpg">
                                                            <media:credit><![CDATA[baona/Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Family watching television and cheering soccer game on TV together in their living room.]]></media:description>                                                            <media:text><![CDATA[Family watching television and cheering soccer game on TV together in their living room.]]></media:text>
                                <media:title type="plain"><![CDATA[Family watching television and cheering soccer game on TV together in their living room.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Labt2Xmf3fE6GcYnZ8QCm4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.techradar.com/how-to-watch/football/world-cup-2026-live-stream">World Cup</a> only comes around every four years, and whether you're making the trip to the US, Canada, or Mexico, or you're based abroad for work, the last thing you want is to hit a geo-block on match day. Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> solves that by routing your connection through a server back home, giving you access to the same free streams you'd get on your couch – BBC iPlayer, ITV, or whatever your local broadcaster happens to be.</p><p>The good news is that Norton VPN has you covered with a 60-day money-back guarantee on annual plans – double the 30-day industry standard – which means you can sign in, stream every group stage game, knockout round, and the final itself, and still claim a full refund if you're not satisfied. That makes it completely risk-free for the entire tournament.</p><p>Before you dive in, though, there's one thing worth knowing: your smart TV's operating system determines exactly how you set up your VPN. Get that part wrong and you'll be troubleshooting during kick-off.</p><div class="product"><a data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow" data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow" data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="device-matters">Device matters</h2><p>Your TV's operating system dictates how – and whether – you can run a VPN directly on it, so it's worth knowing which camp you're in before kick-off.</p><p>If your TV or streaming device runs Google TV, Android TV, Amazon Fire OS, or Apple's tvOS (tvOS 17 or later), you're in luck. All of these platforms feature native app stores, meaning you can download the Norton VPN app directly, sign in, and be connected within minutes.</p><p>Samsung and LG owners face a different situation. Tizen and webOS – the operating systems powering those TVs respectively – block third-party network configurations entirely and offer no native VPN support. Your options are Smart DNS, which reroutes only your location data without full encryption, or setting up Norton on your router so that every device on your network is covered automatically.</p><p>If none of those options work for you, there's a reliable fallback: connect a laptop to your TV via HDMI. Run Norton VPN on the laptop, set it to your home country, and your stream plays on the big screen just as intended. Two things to sort before kick-off – set your laptop's power settings so it stays awake with the lid closed, and if sound isn't coming through the TV, manually switch your system's audio output to the TV speakers.</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="zmyLJwR3a2PoNUgYdhVJbA" name="World Cup edit" alt="World Cup edit" src="https://cdn.mos.cms.futurecdn.net/zmyLJwR3a2PoNUgYdhVJbA.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: Getty Images)</span></figcaption></figure><h2 id="vpn-limitations">VPN Limitations</h2><p>A VPN adds a layer of encryption to your connection, and during a global event with millions of viewers doing the same thing, that comes with a couple of practical trade-offs worth knowing about.</p><p>The first is resolution. Many broadcasters stream in native 4K, and modern VPNs are fast enough to handle it under normal conditions – but when large numbers of users crowd onto the same VPN server simultaneously, that headroom shrinks quickly. If your stream starts buffering, drop the resolution manually to 1080p. A smooth, uninterrupted match beats a stuttering one in 4K every time.</p><p>The second concerns casting. If you're planning to stream from your phone and cast to the TV via AirPlay or Chromecast, you may run into connectivity issues. A VPN creates an encrypted point-to-point tunnel between your device and the server, which cuts your phone off from the local area network – and casting relies on that local connection. Some VPNs include a "allow local network access" setting that resolves this, but not all do. If yours doesn't, the HDMI + laptop method is your most reliable alternative.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've trawled through over 115 EOFY NBN discounts — these 4 are the ones worth switching for ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's officially EOFY season, and there are discounts to be had across everything, including NBN plans. As Tom's Guide's resident broadband expert, I've crunched the numbers and found some seriously cost-friendly options for all kinds of households this June. </p><p>Every month, I analyse monthly pricing data to find the <a href="https://www.tomsguide.com/best-picks/best-nbn-deals" target="_blank">best NBN deals</a>. My selections typically depend on a few key factors: speed tiers, connection types and attractive pricing, particularly introductory offers and low monthly fees. I also check user reviews, typical evening speed (TES) claims and, of course, <a href="https://www.accc.gov.au/by-industry/telecommunications-and-internet/telecommunications-monitoring/measuring-broadband-australia-program/latest-performance-report" target="_blank">quarterly ACCC broadband data reports</a>.</p><p>This June, NBN plans have been slashed across the board, thanks to end-of-financial-year sales. Some of the best broadband discounts I've found include<a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"> Kogan's lengthy introductory offers</a> that extend to a full year, <a href="https://www.originenergy.com.au/internet/plans/?cid=rd:re:futurenet:mktsa_run_home_internet_campaign_fy26:tomsguidearticle" target="_blank" rel="sponsored">Origin's half-price sale</a> and <a href="https://www.superloop.com/internet/nbn/" target="_blank" rel="sponsored">Superloop's buy one, get one modem free deal</a>. </p><p>With all of that in mind, here are my top NBN recommendations for June 2026. </p><h3 class="article-body__section" id="section-best-eofy-nbn-deals"><span>Best EOFY NBN deals</span></h3><div class="product star-deal"><a data-dimension112="41158e90-983b-405a-bc75-3d1fc3d0a415" data-action="Star Deal Block" data-label="Superloop | NBN 500 | AU$69p/m" data-dimension48="Superloop | NBN 500 | AU$69p/m" href="https://www.superloop.com/internet/nbn/" 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="rg9PiUq8RcsYTUB3poe85E" name="superloop-logo.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/rg9PiUq8RcsYTUB3poe85E.jpg" mos="" align="middle" fullscreen="" width="600" height="600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><div><span class="product__star-deal-label">Our top pick</span><p><a href="https://www.superloop.com/internet/nbn/" target="_blank" data-dimension112="41158e90-983b-405a-bc75-3d1fc3d0a415" data-action="Star Deal Block" data-label="Superloop | NBN 500 | AU$69p/m" data-dimension48="Superloop | NBN 500 | AU$69p/m" data-dimension25=""><strong>Superloop | NBN 500 | AU$69p/m</strong></a> (for 6 months, then AU$95p/m)</p><p>With typical evening speeds of 500Mbps downloads and 40Mbps uploads, Superloop's Family Max plan is a top pick if you’re after a popular NBN 500 plan. With a low introductory rate of just AU$69p/m, you'll save AU$156 in total before the price returns to its usual AU$95p/m ongoing rate. Plus, during Superloop's Super Wi-Fi Sale, you can score two Amazon eero 7 routers for the price of one, which is a certified steal. </p><p>As a bonus perk, you can optionally boost your connection to NBN 1000 speeds for up to five days every month, and thanks to Superloop's no-lock-in contract, you can jump up (or down) plans at any time. Do note that, as with NBN 1000, this tier is only available to homes with an FTTP or HFC connection.</p><p><strong>Total minimum cost: AU$69 | Total first year cost: AU$984 | Total yearly cost: AU$1,140</strong><a class="view-deal button" href="https://www.superloop.com/internet/nbn/" target="_blank" rel="nofollow" data-dimension112="41158e90-983b-405a-bc75-3d1fc3d0a415" data-action="Star Deal Block" data-label="Superloop | NBN 500 | AU$69p/m" data-dimension48="Superloop | NBN 500 | AU$69p/m" data-dimension25="">View Deal</a></p></div></div><div class="product"><a data-dimension112="ca5ea252-e7f2-4cc5-8c98-1c3ff1d28ad0" data-action="Deal Block" data-label="Kogan | NBN 100 | AU$69.90p/m" data-dimension48="Kogan | NBN 100 | AU$69.90p/m" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:336px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="gzMMhh9HWxsj4hgjTkvxzd" name="koganinternetlogo.png" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gzMMhh9HWxsj4hgjTkvxzd.png" mos="" align="middle" fullscreen="" width="336" height="336" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="ca5ea252-e7f2-4cc5-8c98-1c3ff1d28ad0" data-action="Deal Block" data-label="Kogan | NBN 100 | AU$69.90p/m" data-dimension48="Kogan | NBN 100 | AU$69.90p/m" data-dimension25=""><strong>Kogan | NBN 100 | AU$69.90p/m</strong></a><strong> </strong>(for 12 months, then AU$85.90p/m)</p><p>Kogan’s Gold Plus NBN 100 clocks in with evening speeds of 99Mbps and 20Mbps uploads, which is pretty typical across the speed tier. However, thanks to this EOFY discount offer, you'll save AU$16p/m over the first 12 months — or a total of AU$192 — before the price increases to AU$85.90p/m ongoing. This makes it the cheapest plan across the 30+ providers I monitor. </p><p>What makes it even better is that Kogan also offers an Internet Price Pledge, so if you find a better price on the same speed NBN plan, the telco will give you back double the difference. And this plan costs the same as <a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0">Kogan's NBN 500 offering</a>, so if you have an FTTP or HFC connection at home, it's worth the upgrade.  </p><p><strong>Total minimum cost: AU$69.90 | Total first year cost: AU$838.80 | Total yearly cost: AU$1,030.80</strong><a class="view-deal button" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="ca5ea252-e7f2-4cc5-8c98-1c3ff1d28ad0" data-action="Deal Block" data-label="Kogan | NBN 100 | AU$69.90p/m" data-dimension48="Kogan | NBN 100 | AU$69.90p/m" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="b311ad88-a6bc-4e35-9c11-1c30e0f5749e" data-action="Deal Block" data-label="Origin | NBN 1000 | AU$72p/m" data-dimension48="Origin | NBN 1000 | AU$72p/m" href="https://www.originenergy.com.au/internet/plans/?cid=rd:re:futurenet:mktsa_run_home_internet_campaign_fy26:tomsguidearticle" target="_blank" rel="sponsored"><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="4AsNqp7Fueth79kgrxWT5h" name="origin-logo.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/4AsNqp7Fueth79kgrxWT5h.jpg" mos="" align="middle" fullscreen="" width="600" height="600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.originenergy.com.au/internet/plans/?cid=rd:re:futurenet:mktsa_run_home_internet_campaign_fy26:tomsguidearticle" target="_blank" rel="sponsored" data-dimension112="b311ad88-a6bc-4e35-9c11-1c30e0f5749e" data-action="Deal Block" data-label="Origin | NBN 1000 | AU$72p/m" data-dimension48="Origin | NBN 1000 | AU$72p/m" data-dimension25=""><strong>Origin | NBN 1000 | AU$72p/m</strong></a><strong> </strong>(for 6 months, then AU$144p/m)</p><p>With typical evening speeds of 860Mbps downloads and 85Mbps uploads, Origin's NBN 1000 deal will save you a massive AU$432 over the first six months before the price increases to AU$144p/m ongoing. That said, this is one of the most expensive plans once this deal is over, so you might want to consider switching plans after the introductory rate ends. </p><p>However, with these fast speeds, you, your whole clan and your accompanying devices will be able to simultaneously go online with minimal to no interruptions – even while gaming, streaming or video calling at the same time. </p><p>Not only that, this bundle deal optionally includes a bonus landline (if you need one) and a free Amazon eero 7 or TP-Link modem-router if you stay connected for 24 months. </p><p><strong>Total minimum cost: AU$72 | Total first year internet cost: AU$1,296 | Yearly cost after discount: AU$1,728</strong><a class="view-deal button" href="https://www.originenergy.com.au/internet/plans/?cid=rd:re:futurenet:mktsa_run_home_internet_campaign_fy26:tomsguidearticle" target="_blank" rel="sponsored" data-dimension112="b311ad88-a6bc-4e35-9c11-1c30e0f5749e" data-action="Deal Block" data-label="Origin | NBN 1000 | AU$72p/m" data-dimension48="Origin | NBN 1000 | AU$72p/m" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="7b577d41-273d-4ba8-8317-eb7d626723aa" data-action="Deal Block" data-label="SpinTel | NBN 1000 | AU$89p/m" data-dimension48="SpinTel | NBN 1000 | AU$89p/m" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=454&gi=1792&pi=13367&ct=0&ci=19596&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:180px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="XRmTWEkCC3FripmJJG5EgV" name="spintel-logo.png" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/XRmTWEkCC3FripmJJG5EgV.png" mos="" align="middle" fullscreen="" width="180" height="180" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=454&gi=1792&pi=13367&ct=0&ci=19596&byo=true&ai=83&ppt=0" data-dimension112="7b577d41-273d-4ba8-8317-eb7d626723aa" data-action="Deal Block" data-label="SpinTel | NBN 1000 | AU$89p/m" data-dimension48="SpinTel | NBN 1000 | AU$89p/m" data-dimension25=""><strong>SpinTel | NBN 1000 | AU$89p/m</strong></a> (for 6 months, then AU$99.95p/m)</p><p>Clocking in a massive 900Mbps over the busy evening hours, SpinTel's speedy ultrafast plan is one of the fastest available. Pair that with the tasty intro offer that knocks AU$65.70 off the first 6 months, and this deal is seriously hard to pass up. </p><p>Do note that you'll need to either BYO modem or pay AU$139.95 to receive one, but make no mistake, SpinTel is your top option for a fuss-free, no-frills ultrafast plan.</p><p><strong>Total minimum cost: AU$89 | Total first year cost: AU$1,133.70 | Yearly cost after discount: AU$1,199.40</strong><a class="view-deal button" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=454&gi=1792&pi=13367&ct=0&ci=19596&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="7b577d41-273d-4ba8-8317-eb7d626723aa" data-action="Deal Block" data-label="SpinTel | NBN 1000 | AU$89p/m" data-dimension48="SpinTel | NBN 1000 | AU$89p/m" data-dimension25="">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/best-picks/best-nbn-deals" target="_blank">Best NBN deals in Australia June 2026</a></li><li><a href="https://www.tomsguide.com/best-picks/nbn-plans">Best NBN plans in June 2026: I've compared the top choices for value, speed, gaming and more</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/internet/ive-trawled-through-over-115-eofy-nbn-discounts-these-4-are-the-ones-worth-switching-for</link>
                                                                            <description>
                            <![CDATA[ Need a new internet plan? Check out my top-rated options for most Aussie households this June. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BMuzgWbnwUuaZfU4P63KCX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Kr6rAQzytGBRo8n2mXQGUS-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 15 Jun 2026 01:31:35 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/UC9ncAYxkmJ5ipHEyX44ri.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, with articles covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Kr6rAQzytGBRo8n2mXQGUS-1280-80.jpg">
                                                            <media:credit><![CDATA[Future / Pexels]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Young woman using a laptop and credit card for online shopping at home.]]></media:description>                                                            <media:text><![CDATA[Young woman using a laptop and credit card for online shopping at home.]]></media:text>
                                <media:title type="plain"><![CDATA[Young woman using a laptop and credit card for online shopping at home.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Kr6rAQzytGBRo8n2mXQGUS-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's officially EOFY season, and there are discounts to be had across everything, including NBN plans. As Tom's Guide's resident broadband expert, I've crunched the numbers and found some seriously cost-friendly options for all kinds of households this June. </p><p>Every month, I analyse monthly pricing data to find the <a href="https://www.tomsguide.com/best-picks/best-nbn-deals" target="_blank">best NBN deals</a>. My selections typically depend on a few key factors: speed tiers, connection types and attractive pricing, particularly introductory offers and low monthly fees. I also check user reviews, typical evening speed (TES) claims and, of course, <a href="https://www.accc.gov.au/by-industry/telecommunications-and-internet/telecommunications-monitoring/measuring-broadband-australia-program/latest-performance-report" target="_blank">quarterly ACCC broadband data reports</a>.</p><p>This June, NBN plans have been slashed across the board, thanks to end-of-financial-year sales. Some of the best broadband discounts I've found include<a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"> Kogan's lengthy introductory offers</a> that extend to a full year, <a href="https://www.originenergy.com.au/internet/plans/?cid=rd:re:futurenet:mktsa_run_home_internet_campaign_fy26:tomsguidearticle" target="_blank" rel="sponsored">Origin's half-price sale</a> and <a href="https://www.superloop.com/internet/nbn/" target="_blank" rel="sponsored">Superloop's buy one, get one modem free deal</a>. </p><p>With all of that in mind, here are my top NBN recommendations for June 2026. </p><h3 class="article-body__section" id="section-best-eofy-nbn-deals"><span>Best EOFY NBN deals</span></h3><div class="product star-deal"><a data-dimension112="41158e90-983b-405a-bc75-3d1fc3d0a415" data-action="Star Deal Block" data-label="Superloop | NBN 500 | AU$69p/m" data-dimension48="Superloop | NBN 500 | AU$69p/m" href="https://www.superloop.com/internet/nbn/" 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="rg9PiUq8RcsYTUB3poe85E" name="superloop-logo.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/rg9PiUq8RcsYTUB3poe85E.jpg" mos="" align="middle" fullscreen="" width="600" height="600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><div><span class="product__star-deal-label">Our top pick</span><p><a href="https://www.superloop.com/internet/nbn/" target="_blank" data-dimension112="41158e90-983b-405a-bc75-3d1fc3d0a415" data-action="Star Deal Block" data-label="Superloop | NBN 500 | AU$69p/m" data-dimension48="Superloop | NBN 500 | AU$69p/m" data-dimension25=""><strong>Superloop | NBN 500 | AU$69p/m</strong></a> (for 6 months, then AU$95p/m)</p><p>With typical evening speeds of 500Mbps downloads and 40Mbps uploads, Superloop's Family Max plan is a top pick if you’re after a popular NBN 500 plan. With a low introductory rate of just AU$69p/m, you'll save AU$156 in total before the price returns to its usual AU$95p/m ongoing rate. Plus, during Superloop's Super Wi-Fi Sale, you can score two Amazon eero 7 routers for the price of one, which is a certified steal. </p><p>As a bonus perk, you can optionally boost your connection to NBN 1000 speeds for up to five days every month, and thanks to Superloop's no-lock-in contract, you can jump up (or down) plans at any time. Do note that, as with NBN 1000, this tier is only available to homes with an FTTP or HFC connection.</p><p><strong>Total minimum cost: AU$69 | Total first year cost: AU$984 | Total yearly cost: AU$1,140</strong><a class="view-deal button" href="https://www.superloop.com/internet/nbn/" target="_blank" rel="nofollow" data-dimension112="41158e90-983b-405a-bc75-3d1fc3d0a415" data-action="Star Deal Block" data-label="Superloop | NBN 500 | AU$69p/m" data-dimension48="Superloop | NBN 500 | AU$69p/m" data-dimension25="">View Deal</a></p></div></div><div class="product"><a data-dimension112="ca5ea252-e7f2-4cc5-8c98-1c3ff1d28ad0" data-action="Deal Block" data-label="Kogan | NBN 100 | AU$69.90p/m" data-dimension48="Kogan | NBN 100 | AU$69.90p/m" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:336px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="gzMMhh9HWxsj4hgjTkvxzd" name="koganinternetlogo.png" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gzMMhh9HWxsj4hgjTkvxzd.png" mos="" align="middle" fullscreen="" width="336" height="336" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="ca5ea252-e7f2-4cc5-8c98-1c3ff1d28ad0" data-action="Deal Block" data-label="Kogan | NBN 100 | AU$69.90p/m" data-dimension48="Kogan | NBN 100 | AU$69.90p/m" data-dimension25=""><strong>Kogan | NBN 100 | AU$69.90p/m</strong></a><strong> </strong>(for 12 months, then AU$85.90p/m)</p><p>Kogan’s Gold Plus NBN 100 clocks in with evening speeds of 99Mbps and 20Mbps uploads, which is pretty typical across the speed tier. However, thanks to this EOFY discount offer, you'll save AU$16p/m over the first 12 months — or a total of AU$192 — before the price increases to AU$85.90p/m ongoing. This makes it the cheapest plan across the 30+ providers I monitor. </p><p>What makes it even better is that Kogan also offers an Internet Price Pledge, so if you find a better price on the same speed NBN plan, the telco will give you back double the difference. And this plan costs the same as <a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0">Kogan's NBN 500 offering</a>, so if you have an FTTP or HFC connection at home, it's worth the upgrade.  </p><p><strong>Total minimum cost: AU$69.90 | Total first year cost: AU$838.80 | Total yearly cost: AU$1,030.80</strong><a class="view-deal button" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=572&gi=2169&pi=13530&ct=0&ci=20286&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="ca5ea252-e7f2-4cc5-8c98-1c3ff1d28ad0" data-action="Deal Block" data-label="Kogan | NBN 100 | AU$69.90p/m" data-dimension48="Kogan | NBN 100 | AU$69.90p/m" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="b311ad88-a6bc-4e35-9c11-1c30e0f5749e" data-action="Deal Block" data-label="Origin | NBN 1000 | AU$72p/m" data-dimension48="Origin | NBN 1000 | AU$72p/m" href="https://www.originenergy.com.au/internet/plans/?cid=rd:re:futurenet:mktsa_run_home_internet_campaign_fy26:tomsguidearticle" target="_blank" rel="sponsored"><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="4AsNqp7Fueth79kgrxWT5h" name="origin-logo.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/4AsNqp7Fueth79kgrxWT5h.jpg" mos="" align="middle" fullscreen="" width="600" height="600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.originenergy.com.au/internet/plans/?cid=rd:re:futurenet:mktsa_run_home_internet_campaign_fy26:tomsguidearticle" target="_blank" rel="sponsored" data-dimension112="b311ad88-a6bc-4e35-9c11-1c30e0f5749e" data-action="Deal Block" data-label="Origin | NBN 1000 | AU$72p/m" data-dimension48="Origin | NBN 1000 | AU$72p/m" data-dimension25=""><strong>Origin | NBN 1000 | AU$72p/m</strong></a><strong> </strong>(for 6 months, then AU$144p/m)</p><p>With typical evening speeds of 860Mbps downloads and 85Mbps uploads, Origin's NBN 1000 deal will save you a massive AU$432 over the first six months before the price increases to AU$144p/m ongoing. That said, this is one of the most expensive plans once this deal is over, so you might want to consider switching plans after the introductory rate ends. </p><p>However, with these fast speeds, you, your whole clan and your accompanying devices will be able to simultaneously go online with minimal to no interruptions – even while gaming, streaming or video calling at the same time. </p><p>Not only that, this bundle deal optionally includes a bonus landline (if you need one) and a free Amazon eero 7 or TP-Link modem-router if you stay connected for 24 months. </p><p><strong>Total minimum cost: AU$72 | Total first year internet cost: AU$1,296 | Yearly cost after discount: AU$1,728</strong><a class="view-deal button" href="https://www.originenergy.com.au/internet/plans/?cid=rd:re:futurenet:mktsa_run_home_internet_campaign_fy26:tomsguidearticle" target="_blank" rel="sponsored" data-dimension112="b311ad88-a6bc-4e35-9c11-1c30e0f5749e" data-action="Deal Block" data-label="Origin | NBN 1000 | AU$72p/m" data-dimension48="Origin | NBN 1000 | AU$72p/m" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="7b577d41-273d-4ba8-8317-eb7d626723aa" data-action="Deal Block" data-label="SpinTel | NBN 1000 | AU$89p/m" data-dimension48="SpinTel | NBN 1000 | AU$89p/m" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=454&gi=1792&pi=13367&ct=0&ci=19596&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:180px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="XRmTWEkCC3FripmJJG5EgV" name="spintel-logo.png" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/XRmTWEkCC3FripmJJG5EgV.png" mos="" align="middle" fullscreen="" width="180" height="180" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=454&gi=1792&pi=13367&ct=0&ci=19596&byo=true&ai=83&ppt=0" data-dimension112="7b577d41-273d-4ba8-8317-eb7d626723aa" data-action="Deal Block" data-label="SpinTel | NBN 1000 | AU$89p/m" data-dimension48="SpinTel | NBN 1000 | AU$89p/m" data-dimension25=""><strong>SpinTel | NBN 1000 | AU$89p/m</strong></a> (for 6 months, then AU$99.95p/m)</p><p>Clocking in a massive 900Mbps over the busy evening hours, SpinTel's speedy ultrafast plan is one of the fastest available. Pair that with the tasty intro offer that knocks AU$65.70 off the first 6 months, and this deal is seriously hard to pass up. </p><p>Do note that you'll need to either BYO modem or pay AU$139.95 to receive one, but make no mistake, SpinTel is your top option for a fuss-free, no-frills ultrafast plan.</p><p><strong>Total minimum cost: AU$89 | Total first year cost: AU$1,133.70 | Yearly cost after discount: AU$1,199.40</strong><a class="view-deal button" href="https://tomsguide.whistleout.com.au/Transact?pai=2&si=454&gi=1792&pi=13367&ct=0&ci=19596&byo=true&ai=83&ppt=0" target="_blank" rel="sponsored" data-dimension112="7b577d41-273d-4ba8-8317-eb7d626723aa" data-action="Deal Block" data-label="SpinTel | NBN 1000 | AU$89p/m" data-dimension48="SpinTel | NBN 1000 | AU$89p/m" data-dimension25="">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/best-picks/best-nbn-deals" target="_blank">Best NBN deals in Australia June 2026</a></li><li><a href="https://www.tomsguide.com/best-picks/nbn-plans">Best NBN plans in June 2026: I've compared the top choices for value, speed, gaming and more</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>