<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>watchkeeper.net</title>
    <link>https://watchkeeper.net/</link>
    <description>Recent content on watchkeeper.net</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 23 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://watchkeeper.net/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>A Recipe Blog Adds a Data Broker and a Video Ad Network Between Two Visits</title>
      <link>https://watchkeeper.net/a-recipe-blog-adds-a-data-broker-and-a-video-ad-network-between-two-visits/</link>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/a-recipe-blog-adds-a-data-broker-and-a-video-ad-network-between-two-visits/</guid>
      <description>&lt;p&gt;Sites change their trackers all the time, and nobody tells their readers. A new ad deal, a new plug-in or a theme update can add a company to every page overnight. The Last visit section is there to catch that.&lt;/p&gt;&#xA;&lt;p&gt;This case study uses a made-up recipe blog whose page changes between visits. The first time it&amp;rsquo;s opened in Watchkeeper, the panel counts three other sites: an analytics service, an ad pixel and the ad partner the pixel calls. On the next visit the same soup recipe tells five.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Shop Page Calls Five Other Sites Before Anyone Answers Its Cookie Banner</title>
      <link>https://watchkeeper.net/a-shop-page-calls-five-other-sites-before-anyone-answers-its-cookie-banner/</link>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/a-shop-page-calls-five-other-sites-before-anyone-answers-its-cookie-banner/</guid>
      <description>&lt;p&gt;Picture the owner of a small clothing shop. She added a cookie banner because her web designer said the law needed one, and she assumes nothing goes out until a visitor clicks Accept. This case study is built on a made-up shop page that behaves the way many real ones do.&lt;/p&gt;&#xA;&lt;p&gt;Open the product page in Watchkeeper and leave the banner alone. Before you&amp;rsquo;ve read the first line, the panel lists five other sites.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Checking a Staging Site on Localhost Before It Goes Live</title>
      <link>https://watchkeeper.net/checking-a-staging-site-on-localhost-before-it-goes-live/</link>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/checking-a-staging-site-on-localhost-before-it-goes-live/</guid>
      <description>&lt;p&gt;The best time to find out what a page sends is before it&amp;rsquo;s live. Watchkeeper opens a local copy as easily as a public site, so a developer can check a build on their own machine before anyone else loads it.&lt;/p&gt;&#xA;&lt;p&gt;Start the staging server as usual, then point Watchkeeper at it. A local address needs its http:// written out:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;watchkeeper http://localhost:8090/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://watchkeeper.net/images/example-staging-localhost.png&#34; alt=&#34;Watchkeeper on a staging copy of a shop at localhost:8090. The panel lists four other sites: an ad pixel, analytics, the pixel&amp;rsquo;s ad partner and session-replay.example, plus a canvas read by the ad pixel.&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How Watchkeeper Was Tested Against a Page Built to Fool It</title>
      <link>https://watchkeeper.net/how-watchkeeper-was-tested-against-a-page-built-to-fool-it/</link>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/how-watchkeeper-was-tested-against-a-page-built-to-fool-it/</guid>
      <description>&lt;p&gt;A tool that says &amp;ldquo;this page contacted five sites&amp;rdquo; is only worth something if the page really contacted five sites. Watchkeeper&amp;rsquo;s main promise is that nothing a page does gets missed, and that the page can&amp;rsquo;t hide from it or tamper with it. So the tests don&amp;rsquo;t ask Watchkeeper what it saw and trust the answer. They ask the servers.&lt;/p&gt;&#xA;&lt;p&gt;The self-test runs the real app, on the system&amp;rsquo;s own web engine, against two small web servers started on the same machine. One plays the site at 127.0.0.1. The other plays a tracker at localhost, which counts as a different site. Both write down every request they receive, and those logs are the ground truth: whatever reached a server must be in Watchkeeper&amp;rsquo;s report.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How Web Tracking Works and Why You Never See It</title>
      <link>https://watchkeeper.net/how-web-tracking-works-and-why-you-never-see-it/</link>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/how-web-tracking-works-and-why-you-never-see-it/</guid>
      <description>&lt;p&gt;A web page isn&amp;rsquo;t one thing from one place. The article comes from the news site, but the fonts may come from a font service, the ads from an ad network, the share button from a social network and the visitor counter from an analytics company. Your browser fetches each piece from wherever it lives, and every one of those places learns that someone at your internet address just opened that article.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sending a Landing Page Report to the Agency That Built It</title>
      <link>https://watchkeeper.net/sending-a-landing-page-report-to-the-agency-that-built-it/</link>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/sending-a-landing-page-report-to-the-agency-that-built-it/</guid>
      <description>&lt;p&gt;Say a small software company paid an agency to build its sign-up page, and a customer asks a question nobody in the company can answer: which companies does your sign-up page send my visit to? This case study answers it for a made-up landing page.&lt;/p&gt;&#xA;&lt;p&gt;Open the page in Watchkeeper and press Save report. You get two files: an HTML page anyone can open and a JSON file for tools. The HTML version starts like this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Telling a Fingerprinting Script Apart From a Page Saving Its Own Chart</title>
      <link>https://watchkeeper.net/telling-a-fingerprinting-script-apart-from-a-page-saving-its-own-chart/</link>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/telling-a-fingerprinting-script-apart-from-a-page-saving-its-own-chart/</guid>
      <description>&lt;p&gt;Reading back a canvas is the classic first step of a device fingerprint. It&amp;rsquo;s also how a page turns a chart into an image you can download. So a canvas read on its own proves nothing. What matters is who made it.&lt;/p&gt;&#xA;&lt;p&gt;This quiz page draws a bar chart of your answers and offers it as an image, which takes one canvas read by the page&amp;rsquo;s own code. It also loads a script from a fingerprinting vendor.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Watchkeeper Is a Tiny Free Browser That Shows You Who Is Watching</title>
      <link>https://watchkeeper.net/watchkeeper-is-a-tiny-free-browser-that-shows-you-who-is-watching/</link>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/watchkeeper-is-a-tiny-free-browser-that-shows-you-who-is-watching/</guid>
      <description>&lt;p&gt;Open a news article and you see a headline, some text and an ad or two. You don&amp;rsquo;t see the other companies the page told about your visit while it loaded. On many news sites that list runs to a dozen names or more, and nothing in a normal browser window mentions any of them.&lt;/p&gt;&#xA;&lt;p&gt;Watchkeeper is a small browser built to show that list. You type an address and use the page as you would anywhere else. A panel on the right fills in as the page works: the other sites it contacts, the cookies it leaves, the keys it writes to your computer and the scripts that read your device&amp;rsquo;s fingerprint.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why a Browser That Watches Trackers Is Called Watchkeeper</title>
      <link>https://watchkeeper.net/why-a-browser-that-watches-trackers-is-called-watchkeeper/</link>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/why-a-browser-that-watches-trackers-is-called-watchkeeper/</guid>
      <description>&lt;p&gt;On a ship, someone is always on watch. While the rest of the crew sleeps, eats or works below, one officer stays on the bridge, keeps a lookout and notes what passes. That person is the watchkeeper, and watchkeeping is still the word sailors use for the job.&lt;/p&gt;&#xA;&lt;p&gt;The day is cut into watches of about four hours, so nobody has to stay alert for too long. Whoever has the watch looks out for other ships, lights and changes in the weather, and writes what they see in the log. The captain doesn&amp;rsquo;t have to stand there all night. The log says what happened.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://watchkeeper.net/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/about/</guid>
      <description>&lt;p&gt;watchkeeper.net is the home of Watchkeeper, a tiny browser that shows you who&amp;rsquo;s watching. You browse as usual. A panel beside the page lists the other sites the page tells about your visit, the cookies it leaves, what it writes to your computer and which scripts read the features used to fingerprint your device.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-it-exists&#34;&gt;Why It Exists&lt;/h2&gt;&#xA;&lt;p&gt;Tracking is invisible. A news article can call a dozen other companies before you&amp;rsquo;ve read the first line, and nothing on the screen says so. The people who want to see it have browser extensions, developer tools or paid scanners, and all three assume you know what you&amp;rsquo;re looking at. Site owners are often in the dark too: plenty of them don&amp;rsquo;t know what their own pages send out, especially before anyone has answered the cookie banner.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://watchkeeper.net/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/contact/</guid>
      <description>&lt;p&gt;watchkeeper.net would like to hear from:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone trying Watchkeeper out.&lt;/strong&gt; What the panel showed you, what surprised you, and what was hard to follow.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone who found a bug.&lt;/strong&gt; A request you know a page made that the panel missed, a count that looks wrong, or a crash.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Site owners&lt;/strong&gt; who want to know more about what their own pages send out.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Write to &lt;strong&gt;&lt;a href=&#34;mailto:info@watchkeeper.net&#34;&gt;info@watchkeeper.net&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Bug reports are also welcome on &lt;a href=&#34;https://github.com/softdevstudio/watchkeeper/issues&#34;&gt;GitHub&lt;/a&gt;. It helps to include your operating system, the Watchkeeper version from the download page you used, the address of the page and a saved report. A report holds site names and addresses without query strings, so look it over before you send it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Download Watchkeeper</title>
      <link>https://watchkeeper.net/download/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/download/</guid>
      <description>&lt;p&gt;Watchkeeper is one small installer for each system. The links always point to the latest release.&lt;/p&gt;&#xA;&lt;div style=&#34;overflow-x:auto&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;System&lt;/th&gt;&#xA;          &lt;th&gt;Download&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Windows 10 and 11, x86-64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/watchkeeper/releases/latest/download/Watchkeeper-windows-x86_64.msi&#34;&gt;Watchkeeper-windows-x86_64.msi&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Apple silicon&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/watchkeeper/releases/latest/download/Watchkeeper-macos-arm64.dmg&#34;&gt;Watchkeeper-macos-arm64.dmg&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Intel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/watchkeeper/releases/latest/download/Watchkeeper-macos-x86_64.dmg&#34;&gt;Watchkeeper-macos-x86_64.dmg&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, Debian and Ubuntu&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/watchkeeper/releases/latest/download/watchkeeper-linux-x86_64.deb&#34;&gt;watchkeeper-linux-x86_64.deb&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, any distribution&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/watchkeeper/releases/latest/download/Watchkeeper-linux-x86_64.AppImage&#34;&gt;Watchkeeper-linux-x86_64.AppImage&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;em&gt;Checksums are in &lt;a href=&#34;https://github.com/softdevstudio/watchkeeper/releases/latest/download/SHA256SUMS&#34;&gt;SHA256SUMS&lt;/a&gt;. Every release is listed on &lt;a href=&#34;https://github.com/softdevstudio/watchkeeper/releases&#34;&gt;GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;install&#34;&gt;Install&lt;/h2&gt;&#xA;&lt;p&gt;The installers aren&amp;rsquo;t signed yet, so each system asks you to confirm the first time.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Windows.&lt;/strong&gt; Run the .msi. If SmartScreen warns you, choose More info, then Run anyway. Watchkeeper uses the WebView2 engine that comes with Windows 10 and 11; on an older machine the installer fetches it.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;macOS.&lt;/strong&gt; Open the .dmg and drag Watchkeeper to Applications. The first time, right-click Watchkeeper and choose Open, then Open again.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Linux.&lt;/strong&gt; Install the .deb with &lt;code&gt;sudo apt install ./watchkeeper-linux-x86_64.deb&lt;/code&gt;, or make the AppImage executable with &lt;code&gt;chmod +x Watchkeeper-linux-x86_64.AppImage&lt;/code&gt; and run it. Either way you need WebKitGTK 4.1, which current Ubuntu, Debian and Fedora releases have.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Each installer is built by &lt;a href=&#34;https://github.com/softdevstudio/watchkeeper/blob/main/.github/workflows/release.yml&#34;&gt;the release workflow&lt;/a&gt; on GitHub, and each one runs the full self-test on its own system before the release is published.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick Start</title>
      <link>https://watchkeeper.net/quick-start/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/quick-start/</guid>
      <description>&lt;p&gt;Watchkeeper takes a minute to set up. &lt;a href=&#34;https://watchkeeper.net/download/&#34;&gt;Download&lt;/a&gt; the installer for your system, install it, and open it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;open-a-site&#34;&gt;Open a Site&lt;/h2&gt;&#xA;&lt;p&gt;Type an address in the bar at the top and press Enter. You can leave out the &lt;code&gt;https://&lt;/code&gt;, so &lt;code&gt;example.com&lt;/code&gt; works. The page loads on the left, and the panel on the right starts filling in straight away.&lt;/p&gt;&#xA;&lt;p&gt;You can also start Watchkeeper with a site from the command line:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reference</title>
      <link>https://watchkeeper.net/reference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://watchkeeper.net/reference/</guid>
      <description>&lt;p&gt;Everything Watchkeeper records, where it keeps it, and what it can&amp;rsquo;t see. The &lt;a href=&#34;https://github.com/softdevstudio/watchkeeper#readme&#34;&gt;README&lt;/a&gt; on GitHub has the same facts in more detail.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-the-panel-counts&#34;&gt;What the Panel Counts&lt;/h2&gt;&#xA;&lt;div style=&#34;overflow-x:auto&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Line&lt;/th&gt;&#xA;          &lt;th&gt;What it counts&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Other sites told about your visit&lt;/td&gt;&#xA;          &lt;td&gt;Registrable domains, other than the page&amp;rsquo;s own, that the page sent a request to: scripts, images, styles, frames, fetch, XMLHttpRequest, beacons, WebSockets and EventSource&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Addresses requested&lt;/td&gt;&#xA;          &lt;td&gt;Distinct addresses, origin and path only, never the query string&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Cookies for this site&lt;/td&gt;&#xA;          &lt;td&gt;Cookies in the engine&amp;rsquo;s store for the page&amp;rsquo;s site, including HttpOnly ones&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Cookies for those other sites&lt;/td&gt;&#xA;          &lt;td&gt;Cookies for sites the engine itself saw the page contact&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Storage writes&lt;/td&gt;&#xA;          &lt;td&gt;Keys written to localStorage, sessionStorage and IndexedDB, and how many by frames from other sites&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Fingerprinting reads&lt;/td&gt;&#xA;          &lt;td&gt;A drawn canvas read back, WebGL asked for the graphics hardware, an offline audio context made, each with the site whose script did it&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Workers started&lt;/td&gt;&#xA;          &lt;td&gt;Workers and shared workers the page started&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Names only, never values: Watchkeeper doesn&amp;rsquo;t keep cookie contents, storage contents or anything you type. The page&amp;rsquo;s full address appears in the address bar and nowhere else.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
