1<!DOCTYPE html><html lang="en" data-scroll-behavior="smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logos/light-logo.svg"/><link rel="preload" as="image" href="/logos/dark-logo.svg"/><link rel="stylesheet" href="/_next/static/chunks/2nwp9ejea3tl4.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2p1qfs5hp8lju.js"/>
1<script src="/_next/static/chunks/34i312no6w2t5.js" async=""></script>
1<script src="/_next/static/chunks/2doesmj8uwy66.js" async=""></script>
1<script src="/_next/static/chunks/2bai-v2a27jr9.js" async=""></script>
1<script src="/_next/static/chunks/turbopack-3m6jidlzwl7xh.js" async=""></script>
1<script src="/_next/static/chunks/00uitplbttn_1.js" async=""></script>
1<script src="/_next/static/chunks/1124ddmj5g_p8.js" async=""></script>
1<script src="/_next/static/chunks/3o6_4pjutbr1n.js" async=""></script>
1<link rel="preload" href="https://d.getpagelens.com/script.js" as="script"/><meta name="next-size-adjust" content=""/><title>Privacy Policy | Page Lens â Page Lens</title><meta name="description" content="Privacy Policy for Page Lens, the Chrome extension for Google Search Console. How we collect, use, store, and protect your data."/><meta name="robots" content="noindex"/><link rel="canonical" href="https://getpagelens.com/privacy"/><meta property="og:title" content="Privacy Policy | Page Lens"/><meta property="og:description" content="Read how Page Lens handles your dataâincluding Google Search Console access, local storage, and subscription billingâfor the Chrome extension and this site."/><meta property="og:url" content="https://getpagelens.com/privacy"/><meta property="og:site_name" content="Page Lens"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://getpagelens.com/og.webp"/><meta property="og:image:width" content="1600"/><meta property="og:image:height" content="900"/><meta property="og:image:alt" content="Page Lens â Google Search Console sidebar overlay in the browser"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="@ctnavan"/><meta name="twitter:title" content="Privacy Policy | Page Lens"/><meta name="twitter:description" content="How Page Lens collects, uses, and protects your data. Privacy policy for the Google Search Console Chrome extension."/><meta name="twitter:image" content="https://getpagelens.com/og.webp"/><link rel="icon" href="/favicons_light/favicon.ico" sizes="any"/><link rel="icon" href="/favicons_light/favicon-16x16.png" sizes="16x16" type="image/png"/><link rel="icon" href="/favicons_light/favicon-32x32.png" sizes="32x32" type="image/png"/><link rel="apple-touch-icon" href="/favicons_light/apple-touch-icon.png"/>
1<script>(function(){try{var t=localStorage.getItem("theme");var d;if(t==="dark")d=true;else if(t==="light")d=false;else d=window.matchMedia("(prefers-color-scheme: dark)").matches;var r=document.documentElement;r.classList.toggle("dark",d);r.style.colorScheme=d?"dark":"light";var f="/favicons_light";function fl(id,rel,href,sizes,type){var e=document.getElementById(id);if(!e){e=document.createElement("link");e.id=id;e.rel=rel;if(sizes)e.sizes=sizes;if(type)e.type=type;document.head.appendChild(e);}e.href=href;}fl("pl-favicon","icon",f+"/favicon.ico","any");fl("pl-favicon-16","icon",f+"/favicon-16x16.png","16x16","image/png");fl("pl-favicon-32","icon",f+"/favicon-32x32.png","32x32","image/png");fl("pl-apple-touch-icon","apple-touch-icon",f+"/apple-touch-icon.png");}catch(e){}})();</script>
1<script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script>
1</head><body><div hidden=""><!--$--><!--/$--></div><header class="fixed inset-x-0 top-0 z-50 px-2 pt-3 sm:px-2 md:pt-4"><div class="site-header-bar mx-auto flex max-w-5xl items-center justify-between gap-3 rounded-full border px-3 py-2 transition-all duration-300 md:gap-4 md:px-5 md:py-2.5 border-border bg-card shadow-header backdrop-blur-xl backdrop-saturate-150"><a class="site-header-brand flex min-w-0 shrink-0 items-center gap-2.5 font-display text-base font-bold tracking-tight text-primary md:text-lg" aria-label="Page Lens home" href="/"><span class="relative inline-flex shrink-0"><img alt="" width="32" height="32" decoding="async" data-nimg="1" class="shrink-0 rounded-lg md:h-9 md:w-9 dark:hidden" style="color:transparent" src="/logos/light-logo.svg"/><img alt="" width="32" height="32" decoding="async" data-nimg="1" class="shrink-0 rounded-lg md:h-9 md:w-9 hidden dark:block" style="color:transparent" src="/logos/dark-logo.svg"/></span><span class="truncate">Page Lens</span></a><nav class="hidden items-center gap-6 md:flex"><a class="site-header-nav text-sm font-medium text-neutral-600 transition-colors hover:text-neutral-900" href="/#features">Features</a><a class="site-header-nav text-sm font-medium text-neutral-600 transition-colors hover:text-neutral-900" href="/#faq">FAQ</a><a class="site-header-nav text-sm font-medium text-neutral-600 transition-colors hover:text-neutral-900" href="/blog">Blog</a></nav><a href="https://chromewebstore.google.com/detail/page-lens-google-search-c/fdlkibkmmlafkajgnopepcmnpjlkaldc" target="_blank" rel="noopener noreferrer" class="site-header-cta hidden shrink-0 items-center gap-2 rounded-full bg-primary px-5 py-2 text-sm font-semibold text-white transition-opacity hover:opacity-90 md:inline-flex"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="shrink-0 text-white" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="21.17" y1="8" x2="12" y2="8"></line><line x1="3.95" y1="6.06" x2="8.54" y2="14"></line><line x1="10.88" y1="21.94" x2="15.46" y2="14"></line></svg>Add to Chrome</a><button type="button" class="site-header-icon flex size-9 shrink-0 items-center justify-center rounded-full text-neutral-600 transition-colors hover:text-neutral-900 md:hidden" aria-label="Menu" aria-expanded="false"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M4 8h16M4 16h16" stroke-linecap="round"></path></svg></button></div></header><div data-agent-markdown-root="true"><main class="flex flex-col gap-3 px-2 pb-3 pt-2 sm:px-2"><section class=""><div class="section-block w-full rounded-3xl border border-border bg-cream px-6 pb-8 pt-[4.75rem] md:px-10 md:pb-10 md:pt-24"><div class="mx-auto w-full max-w-2xl"><div class="blog-prose"><h1>Page Lens Privacy Policy</h1> 2<p><strong>Effective date:</strong> 4 June 2026 (<strong>Last updated:</strong> 5 June 2026).</p> 3<hr/> 4<p>This Privacy Policy describes how Page Lens (the Extension), developed by the Page Lens Team, collects, uses, stores, and protects information when you use the Extension. Installing or using it means you agree to these practices.</p> 5<p>The Extension is a Google Chrome browser extension displaying Google Search Console performance data as a sidebar overlay. It is built privacy-first: your Search Console data stays on your device. Requests go directly from your browser to Google, with results cached locally. Beyond Google, the Extension talks to a single service of our own: an integrity service that records when your free trial began and, once you activate a license, which Google account a license key belongs to. It stores your trial start timestamp, an opaque Google account identifier, and (for license holders) your license key, but never any Google Search Console data. Purchases are handled by Dodo Payments on a separate checkout page; the Extension itself never connects to Dodo.</p> 6<hr/> 7<h2>1. Information the Extension Accesses</h2> 8<h3>1.1 Google Search Console Data</h3> 9<p>When activated, the Extension fetches:</p> 10<ul> 11<li>Page-level performance metrics: clicks, impressions, CTR, average search position</li> 12<li>Top search queries driving traffic</li> 13<li>Page indexing status</li> 14</ul> 15<p>Data comes directly from Google's servers via your authenticated account, cached locally in your browser, never sent to us or third parties.</p> 16<h3>1.2 Page URL</h3> 17<p>The Extension reads your current page's URL to query Search Console API for page-specific data. This URL goes only to Google's API; it is not collected, logged, or transmitted to us or third parties.</p> 18<p>To render the sidebar on demand, the Extension runs a small content script on the pages you open. It reads the page URL only when you activate the sidebar, and never reads, stores, or transmits the page's content.</p> 19<h3>1.3 Google Search Console Property List</h3> 20<p>The Extension retrieves web properties (domains/URL prefixes) from your Search Console account, determining whether your current page belongs to a verified property. This list is cached locally.</p> 21<h3>
211.4 Google Account Identifier (Trial and License Anchoring)</h3> 22<p>To run the free trial fairly and to tie a paid license to one account, the Extension sends your Google access token to our integrity service, which verifies it with Google and obtains a stable, opaque Google account identifier. The service uses this identifier to anchor your trial start and, if you activate a license, to bind that license key to your account. The data stored server-side is this opaque identifier, your trial start timestamp, and (for license holders) your license key; the access token itself is never stored. No name, email, profile data, or Search Console data is collected for this purpose. Other than Google's own APIs, this is the only place your access token is sent. See the <em>Third-Party Services</em> and <em>Data Storage</em> sections for how it is handled and retained.</p> 23<hr/> 24<h2>2. Information the Extension Does Not Collect</h2> 25<p>The Extension does not collect, record, or transmit:</p> 26<ul> 27<li>Personal details such as your name, email address, phone number, or physical address</li> 28<li>Browsing history, or any record of the pages you visit (the current page's URL is sent only to Google to run that page's query, as described under <em>Page URL</em> above)</li> 29<li>Analytics, telemetry, or usage tracking</li> 30<li>
30Cookies or tracking identifiers</li> 31<li>Web page content</li> 32</ul> 33<p>The only data we store on our servers is the opaque Google account identifier described under <em>Google Account Identifier</em> above, your trial start timestamp, and (if you activate a license) your license key bound to that identifier. None of it is linked to your name or email. We use no analytics SDK or tracking pixel, and we keep no server-side logs or profiles of your browsing or Search Console activity.</p> 34<hr/> 35<h2>3. Google Account Authentication</h2> 36<p>The Extension uses Google OAuth 2.0 via Chrome's built-in <code>chrome.identity</code> API. Chrome and Google manage this entirely; the Extension never sees, stores, or accesses your Google password.</p> 37<p><strong>OAuth scopes requested:</strong></p> 38<div class="blog-table-wrap"><table><thead><tr><th>Scope</th><th>Purpose</th></tr></thead><tbody><tr><td><code>openid</code></td><td>Provides a stable, opaque Google account identifier used to anchor your free trial and bind your license to your account, as described under <em>Google Account Identifier</em> above. No name, email, or profile data is requested or stored.</td></tr><tr><td><code>webmasters.readonly</code></td><td>Read-only access to your Search Console performance and inspection data (metrics, queries, indexing status)</td></tr></tbody></table></div> 39<p>The Extension never writes, modifies, or deletes Search Console data.</p> 40<p>When you choose <strong>Disconnect Google account</strong> inside the Extension, it sends your access token once to Google's OAuth revocation endpoint (<code>accounts.google.com</code>) to invalidate the grant, then clears the locally cached token. This is a Google endpoint and remains within the "Google's own APIs" exception described under <em>Google Account Identifier</em> above.</p> 41<p>Revoke access anytime via your <a href="https://myaccount.google.com/permissions">Google Account Permissions</a> page.</p> 42<hr/> 43<h2>4. Google API Services User Data Policy</h2> 44<p>Page Lens complies with the <a href="https://developers.google.com/terms/api-services-user-data-policy">Google API Services User Data Policy</a>, including Limited Use requirements:</p> 45<ol> 46<li>Google user data is used only to provide user-facing features (displaying Search Console data as overlay)</li> 47<li>Google user data is not transferred to third parties except for core functionality, legal compliance, or explicit user consent</li> 48<li>Google user data is not used for advertising, retargeting, or personalized ads</li> 49<li>No human reads Google user data unless: (a) explicit user consent, (b) security purposes, or (c) legal compliance</li> 50</ol> 51<hr/> 52<h2>5. Data Storage</h2> 53<p>Search Console data and cached API responses are stored locally using Chrome's extension storage APIs.</p> 54<div class="blog-table-wrap"><table><thead><tr><th>Storage Mechanism</th><th>Contents</th><th>Synced Across Devices</th></tr></thead><tbody><tr><td><code>chrome.storage.sync</code></td><td>License key, sidebar width</td><td>Yes (across signed-in browsers)</td></tr><tr><td><code>chrome.storage.local</code></td><td>Cached API responses, property list</td><td>No (current device only)</td></tr></tbody></table></div> 55<p>Your free-trial start timestamp is <strong>not</strong> stored on your device. It is held server-side by our integrity service, keyed to your opaque Google account identifier, so the trial can't be reset by clearing local data. The same service also stores, against that identifier, the license key you've activated, so a key can be tied to one Google account and can't be shared. On your device the license key string is kept in <code>chrome.storage.sync</code>; whether it's valid and whose it is are checked with the server, never stored locally.</p> 56<p>Cached data follows a time-to-live (TTL) policy and auto-refreshes upon expiration.</p> 57<hr/> 58<h2>6. Data Security</h2> 59<p>Communication between the Extension and Google's APIs, and between the Extension and our integrity service, uses HTTPS encryption, as does our integrity service's server-side call to Dodo Payments when it validates a license. Locally stored data is protected by Chrome's extension storage security model, isolating extension data from other extensions and web pages.</p> 60<hr/> 61<h2>7. Third-Party Services</h2> 62<div class="blog-table-wrap"><table><thead><tr><th>
62Service</th><th>Purpose</th><th>Data Shared</th></tr></thead><tbody><tr><td><strong>Google Search Console API</strong></td><td>Fetch performance metrics, queries, indexing status</td><td>Current page URL and OAuth token (Chrome-managed). Governed by <a href="https://policies.google.com/privacy">Google's Privacy Policy</a></td></tr><tr><td><strong>Chrome Identity API</strong></td><td>Authenticate via OAuth 2.0</td><td>Managed by Chrome/Google; Extension doesn't access credentials</td></tr><tr><td><strong>Page Lens integrity service</strong></td><td>Verify your Google identity, record your free-trial start, and bind a license key to your account</td><td>Your Google access token (sent over HTTPS, verified with Google, never stored). The opaque Google account identifier, trial start timestamp, and (for license holders) the license key are stored. No Search Console, browsing, or profile data</td></tr><tr><td><strong>Dodo Payments</strong></td><td>Process your purchase (on Dodo's own checkout page) and confirm a license key is valid (server-side, at our integrity service's request)</td><td>Payment and purchase details you enter on Dodo's checkout page; your license key, which our integrity service passes to Dodo to confirm it's valid. The Extension never connects to Dodo directly, and no Search Console or browsing data is shared. Governed by <a href="https://dodopayments.com/legal/privacy-policy">Dodo Payments' Privacy Policy</a></td></tr></tbody></table></div> 63<p>No analytics SDKs, tracking pixels, or third-party data collection tools are used.</p> 64<p>Because every web request carries it, our integrity service (like Google) receives your device's IP address. Our integrity service uses it only to handle the request; we do not store it or retain it in our own logs (our hosting provider may process it transiently at the network edge under its own policies). Dodo Payments receives your IP only when you open its checkout page to make a purchase (not during the Extension'
64s normal use), and handles any IP data under its own privacy policy.</p> 65<hr/> 66<h2>8. Chrome Extension Permissions</h2> 67<div class="blog-table-wrap"><table><thead><tr><th>Permission</th><th>Purpose</th></tr></thead><tbody><tr><td><code>activeTab</code></td><td>Open and toggle the sidebar on the current tab when you click the extension icon</td></tr><tr><td><code>identity</code></td><td>Authenticate via Chrome's OAuth flow</td></tr><tr><td><code>storage</code></td><td>Cache API responses and persist user preferences</td></tr><tr><td><code>alarms</code></td><td>Schedule periodic license revalidation and deferred data fetches</td></tr><tr><td><code>scripting</code></td><td>Inject the sidebar UI into the current page</td></tr></tbody></table></div> 68<p>The Extension also declares host access to Google Search Console (<code>searchconsole.googleapis.com</code>) and our integrity service (<code>trials.pagelens.workers.dev</code>) so it can make these HTTPS requests. It declares no host access to Dodo Payments, because it never connects to Dodo directly.</p> 69<hr/> 70<h2>9. Data Retention and Deletion</h2> 71<ul> 72<li><strong>Uninstalling</strong> deletes locally cached data in <code>chrome.storage.local</code> (API responses, property list). Data in <code>chrome.storage.sync</code> (license key, sidebar width) may persist in your Google account after uninstall</li> 73<li><strong>Cached API responses</strong> auto-refresh when exceeding TTL</li> 74<li><strong>Our integrity service</strong> retains your opaque Google account identifier, your trial start timestamp, and (if you've activated a license) your license key bound to that identifier, to enforce the one-time free trial and the one-account-per-license rule. This record holds no Search Console data, name, email, or browsing information, and persists independently of uninstalling the Extension</li> 75<li><strong>Revoking access</strong> through <a href="https://myaccount.google.com/permissions">Google Account Permissions</a> revokes the OAuth token</li> 76</ul> 77<p>Search Console data is never stored on our servers. Dodo Payments remains the authority on whether a license is valid and handles your payment-card details; our integrity service stores the license key only to bind it to your Google account.</p> 78<hr/> 79<h2>10. Children's Privacy</h2> 80<p>The Extension is not directed at children under 13 (or applicable age of digital consent in your jurisdiction). We don't knowingly collect personal information from children.</p> 81<hr/> 82<h2>11. Your Rights</h2> 83<p>Because we store no Search Console or browsing data on our servers, your data rights are exercised largely through local browser control. The one exception is your server-side record (your trial start and, for license holders, your license binding), which you can ask us to delete:</p> 84<ul> 85<li><strong>Access:</strong> Locally stored data is viewable in your browser's extension storage via Chrome developer tools; for the server-side record, you can request a copy by email</li> 86<li><strong>Deletion:</strong> Uninstall the Extension to clear local data, then email us at the address in the <em>Contact</em> section below to delete your server-side record</li> 87<li><strong>Revocation:</strong> Use <strong>Disconnect Google account</strong> within the extension to revoke its Google access and clear locally cached data, or revoke access anytime via your <a href="https://myaccount.google.com/permissions">Google Account Permissions</a> page</li> 88</ul> 89<hr/> 90<h2>12. Changes to This Policy</h2> 91<p>This Privacy Policy may be updated periodically. Material changes will update the "Last updated" date at the top.</p> 92<hr/> 93<h2>13. Governing Law</h2> 94<p>This Privacy Policy is governed by the laws of India. Disputes are subject to exclusive jurisdiction of Indian courts.</p> 95<hr/> 96<h2>14. Contact</h2> 97<p>Questions or concerns regarding this policy or the Extension'
97s data practices:</p> 98<p><strong>Page Lens Team</strong> 99Email: <a href="mailto:[email protected]">[email protected]</a></p></div></div></div></section></main><!--$--><!--/$--></div><footer class="mb-2 px-2 sm:px-2"><section class="text-center"><div class="section-block w-full rounded-3xl border border-border bg-cream px-6 py-24 md:px-10 md:py-32"><div class="mx-auto w-full max-w-2xl"><span class="relative inline-flex shrink-0"><img alt="" loading="lazy" width="72" height="72" decoding="async" data-nimg="1" class="shrink-0 mx-auto mb-8 rounded-2xl dark:hidden" style="color:transparent" src="/logos/light-logo.svg"/><img alt="" loading="lazy" width="72" height="72" decoding="async" data-nimg="1" class="shrink-0 mx-auto mb-8 rounded-2xl hidden dark:block" style="color:transparent" src="/logos/dark-logo.svg"/></span><h2 class="section-headline">Install <!-- -->Page Lens</h2><p class="mt-3 text-neutral-600">7-day trial · <span class=""><span class="text-neutral-400 line-through">$<!-- -->30</span> <span class="font-semibold text-neutral-900">$<!-- -->20</span></span> one-time after</p><div class="mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row sm:gap-4"><a href="https://chromewebstore.google.com/detail/page-lens-google-search-c/fdlkibkmmlafkajgnopepcmnpjlkaldc" class="inline-flex h-12 cursor-pointer items-center justify-center gap-2 rounded-full px-8 text-[15px] font-semibold transition-opacity hover:opacity-90 bg-primary text-white " target="_blank" rel="noopener noreferrer"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="shrink-0 " aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="21.17" y1="8" x2="12" y2="8"></line><line x1="3.95" y1="6.06" x2="8.54" y2="14"></line><line x1="10.88" y1="21.94" x2="15.46" y2="14"></line></svg>Try Page Lens for Free</a><button type="button" class="inline-flex h-12 cursor-pointer items-center justify-center gap-2 rounded-full px-8 text-[15px] font-semibold transition-opacity hover:opacity-90 bg-primary text-white "><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="" aria-hidden="true"><path d="M12 12c-2.67-2.67-4.5-4-6.75-4a4.25 4.25 0 1 0 0 8.5c2.25 0 4.08-1.33 6.75-4"></path><path d="M12 12c2.67 2.67 4.5 4 6.75 4a4.25 4.25 0 1 0 0-8.5c-2.25 0-4.08 1.33-6.75 4"></path></svg>Get Lifetime License</button></div><nav class="mt-12 flex flex-wrap justify-center gap-x-8 gap-y-2 text-sm text-neutral-500 dark:text-neutral-600"><a class="transition-colors hover:text-neutral-900 dark:hover:text-neutral-900" href="/blog">Blog</a><a class="transition-colors hover:text-neutral-900 dark:hover:text-neutral-900" href="/terms">Terms</a><a class="transition-colors hover:text-neutral-900 dark:hover:text-neutral-900" href="/privacy">Privacy</a><a class="transition-colors hover:text-neutral-900 dark:hover:text-neutral-900" href="/support">Support</a><a href="https://www.linkedin.com/company/page-lens/" target="_blank" rel="noopener noreferrer" class="transition-colors hover:text-neutral-900 dark:hover:text-neutral-900">LinkedIn</a></nav><div class="mt-6 flex justify-center"><div class="inline-flex rounded-full border border-border bg-cream-dark/40 p-0.5" role="group" aria-label="Color theme"><button type="button" class="inline-flex items-center gap-1 rounded-full px-2.5 py-1 text-xs font-medium transition-colors text-neutral-600 hover:text-neutral-900 dark:text-neutral-700 dark:hover:text-neutral-900" aria-pressed="false"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"><rect x="3" y="4" width="18" height="13" rx="2" stroke="currentColor" stroke-width="2"></rect><path d="M8 20h8" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>System</button><button type="button" class="inline-flex items-center gap-1 rounded-full px-2.5 py-1 text-xs font-medium transition-colors text-neutral-600 hover:text-neutral-900 dark:text-neutral-700 dark:hover:text-neutral-900" aria-pressed="false"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"><circle cx="12" cy="12" r="4" stroke="currentColor" stroke-width="2"></circle><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41
99M17.66 6.34l1.41-1.41" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>Light</button><button type="button" class="inline-flex items-center gap-1 rounded-full px-2.5 py-1 text-xs font-medium transition-colors text-neutral-600 hover:text-neutral-900 dark:text-neutral-700 dark:hover:text-neutral-900" aria-pressed="false"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M21 14.5A8.5 8.5 0 0 1 9.5 3 7 7 0 1 0 21 14.5z" stroke="currentColor" stroke-width="2" stroke-linejoin="round"></path></svg>Dark</button></div></div><div class="mt-8 space-y-1.5 text-xs text-neutral-500"><p>© 2026 <!-- -->Page Lens</p><p class="mx-auto max-w-md leading-relaxed text-neutral-500/90">Google Search Console (GSC) is a product of Google. <br/>Page Lens<!-- --> is not affiliated with or endorsed by Google.</p></div></div></div></section></footer>
99<script src="/_next/static/chunks/2p1qfs5hp8lju.js" id="_R_" async=""></script>
99<script>(self.__next_f=self.__next_f||[]).push([0])</script>
99<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[54963,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"ThemeProvider\"]\n3:I[79111,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"CheckoutProvider\"]\n4:I[45745,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"Header\"]\n5:I[55587,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"default\"]\n6:I[58256,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"default\"]\n7:I[4409,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"\"]\n8:I[75339,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"Image\"]\n14:I[91770,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/2nwp9ejea3tl4.css\",\"style\"]\n"])</script>
99<script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"privacy\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"privacy\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2nwp9ejea3tl4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/00uitplbttn_1.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/1124ddmj5g_p8.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/3o6_4pjutbr1n.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-scroll-behavior\":\"smooth\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem(\\\"theme\\\");var d;if(t===\\\"dark\\\")d=true;else if(t===\\\"light\\\")d=false;else d=window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches;var r=document.documentElement;r.classList.toggle(\\\"dark\\\",d);r.style.colorScheme=d?\\\"dark\\\":\\\"light\\\";var f=\\\"/favicons_light\\\";function fl(id,rel,href,sizes,type){var e=document.getElementById(id);if(!e){e=document.createElement(\\\"link\\\");e.id=id;e.rel=rel;if(sizes)e.sizes=sizes;if(type)e.type=type;document.head.appendChild(e);}e.href=href;}fl(\\\"pl-favicon\\\",\\\"icon\\\",f+\\\"/favicon.ico\\\",\\\"any\\\");fl(\\\"pl-favicon-16\\\",\\\"icon\\\",f+\\\"/favicon-16x16.png\\\",\\\"16x16\\\",\\\"image/png\\\");fl(\\\"pl-favicon-32\\\",\\\"icon\\\",f+\\\"/favicon-32x32.png\\\",\\\"32x32\\\",\\\"image/png\\\");fl(\\\"pl-apple-touch-icon\\\",\\\"apple-touch-icon\\\",f+\\\"/apple-touch-icon.png\\\");}catch(e){}})();\"}}]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"div\",null,{\"data-agent-markdown-root\":true,\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"className\":\"flex flex-col gap-3 px-2 pb-3 pt-2 sm:px-2\",\"children\":[\"$\",\"section\",null,{\"id\":\"$undefined\",\"className\":\"text-center\",\"children\":[\"$\",\"div\",null,{\"className\":\"section-block w-full rounded-3xl border border-border bg-cream px-6 pb-8 pt-[4.75rem] md:px-10 md:pb-10 md:pt-24\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto w-full max-w-2xl\",\"children\":[\"$\",\"div\",null,{\"className\":\"py-10 md:py-14\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-semibold tracking-wide text-primary\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"mt-3 font-display text-3xl font-extrabold tracking-tight md:text-4xl\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-base leading-relaxed text-neutral-600 md:text-lg\",\"children\":\"This page doesn't exist or may have moved. Try the home page or blog instead.\"}],[\"$\",\"div\",null,{\"className\":\"mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row sm:gap-4\",\"children\":[[\"$\",\"$L7\",null,{\"href\":\"/\",\"className\":\"inline-flex h-12 items-center justify-center rounded-full bg-primary px-8 text-[15px] font-semibold text-white transition-opacity hover:opacity-90\",\"children\":\"Back to home\"}],[\"$\",\"$L7\",null,{\"href\":\"/blog\",\"className\":\"inline-flex h-12 items-center justify-center rounded-full border-2 border-primary bg-transparent px-8 text-[15px] font-semibold text-neutral-900 transition-opacity hover:opacity-90\",\"children\":\"Read the blog\"}]]}]]}]}]}]}]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"footer\",null,{\"className\":\"mb-2 px-2 sm:px-2\",\"children\":[\"$\",\"section\",null,{\"id\":\"$undefined\",\"className\":\"text-center\",\"children\":[\"$\",\"div\",null,{\"className\":\"section-block w-full rounded-3xl border border-border bg-cream px-6 py-24 md:px-10 md:py-32\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto w-full max-w-2xl\",\"children\":[[\"$\",\"span\",null,{\"className\":\"relative inline-flex shrink-0\",\"children\":[[\"$\",\"$L8\",null,{\"src\":\"/logos/light-logo.svg\",\"alt\":\"\",\"width\":72,\"height\"
99:72,\"priority\":false,\"className\":\"shrink-0 mx-auto mb-8 rounded-2xl dark:hidden\"}],[\"$\",\"$L8\",null,{\"src\":\"/logos/dark-logo.svg\",\"alt\":\"\",\"width\":72,\"height\":72,\"priority\":false,\"className\":\"shrink-0 mx-auto mb-8 rounded-2xl hidden dark:block\"}]]}],[\"$\",\"h2\",null,{\"className\":\"section-headline\",\"children\":[\"Install \",\"Page Lens\"]}],\"$L9\",\"$La\",\"$Lb\",\"$Lc\",\"$Ld\"]}]}]}]}],\"$Le\"]}]}],\"$Lf\"]}]]}]]}],{\"children\":[\"$L10\",{\"children\":[\"$L11\",{},null,false,null]},null,false,\"$@12\"]},null,false,null],\"$L13\",false]],\"m\":\"$undefined\",\"G\":[\"$14\",[\"$L15\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"I9poRHFgmGE6ItdaoTU0m\"}\n"])</script>
99<script>self.__next_f.push([1,"16:I[64204,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"FooterCtaButtons\"]\n17:I[50802,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"ThemeToggle\"]\n18:I[55271,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"ScrollAnimations\"]\n19:I[51240,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"\"]\n56:I[26924,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"ViewportBoundary\"]\n58:I[26924,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"MetadataBoundary\"]\n59:\"$Sreact.suspense\"\n9:[\"$\",\"p\",null,{\"className\":\"mt-3 text-neutral-600\",\"children\":[\"7-day trial · \",[\"$\",\"span\",null,{\"className\":\"\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-neutral-400 line-through\",\"children\":[\"$$\",30]}],\" \",[\"$\",\"span\",null,{\"className\":\"font-semibold text-neutral-900\",\"children\":[\"$$\",20]}]]}],\" one-time after\"]}]\na:[\"$\",\"$L16\",null,{}]\nb:[\"$\",\"nav\",null,{\"className\":\"mt-12 flex flex-wrap justify-center gap-x-8 gap-y-2 text-sm text-neutral-500 dark:text-neutral-600\",\"children\":[[\"$\",\"$L7\",null,{\"href\":\"/blog\",\"className\":\"transition-colors hover:text-neutral-900 dark:hover:text-neutral-900\",\"children\":\"Blog\"}],[\"$\",\"$L7\",null,{\"href\":\"/terms\",\"className\":\"transition-colors hover:text-neutral-900 dark:hover:text-neutral-900\",\"children\":\"Terms\"}],[\"$\",\"$L7\",null,{\"href\":\"/privacy\",\"className\":\"transition-colors hover:text-neutral-900 dark:hover:text-neutral-900\",\"children\":\"Privacy\"}],[\"$\",\"$L7\",null,{\"href\":\"/support\",\"className\":\"transition-colors hover:text-neutral-900 dark:hover:text-neutral-900\",\"children\":\"Support\"}],[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/company/page-lens/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"transition-colors hover:text-neutral-900 dark:hover:text-neutral-900\",\"children\":\"LinkedIn\"}]]}]\nc:[\"$\",\"div\",null,{\"className\":\"mt-6 flex justify-center\",\"children\":[\"$\",\"$L17\",null,{}]}]\nd:[\"$\",\"div\",null,{\"className\":\"mt-8 space-y-1.5 text-xs text-neutral-500\",\"children\":[[\"$\",\"p\",null,{\"children\":[\"© 2026 \",\"Page Lens\"]}],[\"$\",\"p\",null,{\"className\":\"mx-auto max-w-md leading-relaxed text-neutral-500/90\",\"children\":[\"Google Search Console (GSC) is a product of Google. \",[\"$\",\"br\",null,{}],\"Page Lens\",\" is not affiliated with or endorsed by Google.\"]}]]}]\ne:[\"$\",\"$L18\",null,{}]\nf:[\"$\",\"$L19\",null,{\"defer\":true,\"src\":\"https://d.getpagelens.com/script.js\",\"data-website-id\":\"10577175-8bd4-4443-8072-d4d1c0b0757a\",\"strategy\":\"afterInteractive\"}]\n10:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script>
99<script>self.__next_f.push([1,"11:[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"main\",null,{\"className\":\"flex flex-col gap-3 px-2 pb-3 pt-2 sm:px-2\",\"children\":[\"$\",\"section\",null,{\"id\":\"$undefined\",\"className\":\"\",\"children\":[\"$\",\"div\",null,{\"className\":\"section-block w-full rounded-3xl border border-border bg-cream px-6 pb-8 pt-[4.75rem] md:px-10 md:pb-10 md:pt-24\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto w-full max-w-2xl\",\"children\":[\"$\",\"div\",null,{\"className\":\"blog-prose\",\"children\":[[\"$\",\"h1\",\"h1-0\",{\"children\":\"Page Lens Privacy Policy\"}],\"\\n\",[\"$\",\"p\",\"p-0\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"Effective date:\"}],\" 4 June 2026 (\",[\"$\",\"strong\",\"strong-1\",{\"children\":\"Last updated:\"}],\" 5 June 2026).\"]}],\"\\n\",[\"$\",\"hr\",\"hr-0\",{}],\"\\n\",[\"$\",\"p\",\"p-1\",{\"children\":\"This Privacy Policy describes how Page Lens (the Extension), developed by the Page Lens Team, collects, uses, stores, and protects information when you use the Extension. Installing or using it means you agree to these practices.\"}],\"\\n\",[\"$\",\"p\",\"p-2\",{\"children\":\"The Extension is a Google Chrome browser extension displaying Google Search Console performance data as a sidebar overlay. It is built privacy-first: your Search Console data stays on your device. Requests go directly from your browser to Google, with results cached locally. Beyond Google, the Extension talks to a single service of our own: an integrity service that records when your free trial began and, once you activate a license, which Google account a license key belongs to. It stores your trial start timestamp, an opaque Google account identifier, and (for license holders) your license key, but never any Google Search Console data. Purchases are handled by Dodo Payments on a separate checkout page; the Extension itself never connects to Dodo.\"}],\"\\n\",[\"$\",\"hr\",\"hr-1\",{}],\"\\n\",[\"$\",\"h2\",\"h2-0\",{\"children\":\"1. Information the Extension Accesses\"}],\"\\n\",[\"$\",\"h3\",\"h3-0\",{\"children\":\"1.1 Google Search Console Data\"}],\"\\n\",[\"$\",\"p\",\"p-3\",{\"children\":\"When activated, the Extension fetches:\"}],\"\\n\",[\"$\",\"ul\",\"ul-0\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"Page-level performance metrics: clicks, impressions, CTR, average search position\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":\"Top search queries driving traffic\"}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":\"Page indexing status\"}],\"\\n\"]}],\"\\n\",[\"$\",\"p\",\"p-4\",{\"children\":\"Data comes directly from Google's servers via your authenticated account, cached locally in your browser, never sent to us or third parties.\"}],\"\\n\",[\"$\",\"h3\",\"h3-1\",{\"children\":\"1.2 Page URL\"}],\"\\n\",[\"$\",\"p\",\"p-5\",{\"children\":\"The Extension reads your current page's URL to query Search Console API for page-specific data. This URL goes only to Google's API; it is not collected, logged, or transmitted to us or third parties.\"}],\"\\n\",[\"$\",\"p\",\"p-6\",{\"children\":\"To render the sidebar on demand, the Extension runs a small content script on the pages you open. It reads the page URL only when you activate the sidebar, and never reads, stores, or transmits the page's content.\"}],\"\\n\",[\"$\",\"h3\",\"h3-2\",{\"children\":\"1.3 Google Search Console Property List\"}],\"\\n\",[\"$\",\"p\",\"p-7\",{\"children\":\"The Extension retrieves web properties (domains/URL prefixes) from your Search Console account, determining whether your current page belongs to a verified property. This list is cached locally.\"}],\"\\n\",[\"$\",\"h3\",\"h3-3\",{\"children\":\"1.4 Google Account Identifier (Trial and License Anchoring)\"}],\"\\n\",[\"$\",\"p\",\"p-8\",{\"children\":[\"To run the free trial fairly and to tie a paid license to one account, the Extension sends your Google access token to our integrity service, which verifies it with Google and obtains a stable, opaque Google account identifier. The service uses this identifier to anchor your trial start and, if you activate a license, to bind that license key to your account. The data stored server-side is this opaque identifier, your trial start timestamp, and (for license holders) your license key; the access token itself is never stored. No name, email, profile data, or Search Console data is collected for this purpose. Other than Google's own APIs, this is the only place your access token is sent. See the \",\"$L1a\",\" and \",\"$L1b\",\" sections for how it is handled and retained.\"]}],\"\\n\",\"$L1c\",\"\\n\",\"$L1d\",\"\\n\",\"$L1e\",\"\\n\",\"$L1f\",\"\\n\",\"$L20\",\"\\n\",\"$L21\",\"\\n\",\"$L22\",\"\\n\",\"$L23\",\"\\n\",\"$L24\",\"\\n\",\"$L25\",\"\\n\",\"$L26\",\"\\n\",\"$L27\",\"\\n\",\"$L28\",\"\\n\",\"$L29\",\"\\n\",\"$L2a\",\"\\n\",\"$L2b\",\"\\n\",\"$L2c\",\"\\n\",\"$L2d\",\"\\n\",\"$L2e\",\"\\n\",\"$L2f\",\"\\n\",\"$L30\",\"\\n\",\"$L31\",\"\\n\",\"$L32\",\"\\n\",\"$L33\",\"\\n\",\"$L34\",\"\\n\",\"$L35\",\"\\n\",\"$L36\",\"\\n\",\"$L37\",\"\\n\",\"$L38\",\"\\n\",\"$L39\",\"\\n\",\"$L3a\",\"\\n\",\"$L3b\",\"\\n\",\"$L3c\",\"\\n\",\"$L3d\",\"\\n\",\"$L3e\",\"\\n\",\"$L3f\",\"\\n\",\"$L40\",\"\\n\",\"$L41\",\"\\n\",\"$L42\",\"\\n\",\"$L43\",\"\\n\",\"$L44\",\"\\n\",\"$L45\",\"\\n\",\"$L46\",\"\\n\",\"$L47\",\"\\n\",\"$L48\",\"\\n\",\"$L49\",\"\\n\",\"$L4a\",\"\\n\",\"$L4b\",\"\\n\",\"$L4c\",\"\\n\",\"$L4d\",\"\\n\",\"$L4e\",\"\\n\",\"$L4f\",\"\\n\",\"$L50\",\"\\n\",\"$L51\",\"\\n\",\"$L52\",\"\\n\",\"$L53\"]}]}]}]}]}],null,\"$L54\"]}]\n"])</script>
99<script>self.__next_f.push([1,"55:[]\n12:\"$W55\"\n13:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L56\",null,{\"children\":\"$L57\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L58\",null,{\"children\":[\"$\",\"$59\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L5a\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n15:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2nwp9ejea3tl4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script>
99<script>self.__next_f.push([1,"5b:I[26924,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"OutletBoundary\"]\n1a:[\"$\",\"em\",\"em-0\",{\"children\":\"Third-Party Services\"}]\n1b:[\"$\",\"em\",\"em-1\",{\"children\":\"Data Storage\"}]\n1c:[\"$\",\"hr\",\"hr-2\",{}]\n1d:[\"$\",\"h2\",\"h2-1\",{\"children\":\"2. Information the Extension Does Not Collect\"}]\n1e:[\"$\",\"p\",\"p-9\",{\"children\":\"The Extension does not collect, record, or transmit:\"}]\n1f:[\"$\",\"ul\",\"ul-1\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"Personal details such as your name, email address, phone number, or physical address\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":[\"Browsing history, or any record of the pages you visit (the current page's URL is sent only to Google to run that page's query, as described under \",[\"$\",\"em\",\"em-0\",{\"children\":\"Page URL\"}],\" above)\"]}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":\"Analytics, telemetry, or usage tracking\"}],\"\\n\",[\"$\",\"li\",\"li-3\",{\"children\":\"Cookies or tracking identifiers\"}],\"\\n\",[\"$\",\"li\",\"li-4\",{\"children\":\"Web page content\"}],\"\\n\"]}]\n20:[\"$\",\"p\",\"p-10\",{\"children\":[\"The only data we store on our servers is the opaque Google account identifier described under \",[\"$\",\"em\",\"em-0\",{\"children\":\"Google Account Identifier\"}],\" above, your trial start timestamp, and (if you activate a license) your license key bound to that identifier. None of it is linked to your name or email. We use no analytics SDK or tracking pixel, and we keep no server-side logs or profiles of your browsing or Search Console activity.\"]}]\n21:[\"$\",\"hr\",\"hr-3\",{}]\n22:[\"$\",\"h2\",\"h2-2\",{\"children\":\"3. Google Account Authentication\"}]\n23:[\"$\",\"p\",\"p-11\",{\"children\":[\"The Extension uses Google OAuth 2.0 via Chrome's built-in \",[\"$\",\"code\",\"code-0\",{\"children\":\"chrome.identity\"}],\" API. Chrome and Google manage this entirely; the Extension never sees, stores, or accesses your Google password.\"]}]\n24:[\"$\",\"p\",\"p-12\",{\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"OAuth scopes requested:\"}]}]\n25:[\"$\",\"div\",\"table-0\",{\"className\":\"blog-table-wrap\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",\"thead-0\",{\"children\":[\"$\",\"tr\",\"tr-0\",{\"children\":[[\"$\",\"th\",\"th-0\",{\"children\":\"Scope\"}],[\"$\",\"th\",\"th-1\",{\"children\":\"Purpose\"}]]}]}],[\"$\",\"tbody\",\"tbody-0\",{\"children\":[[\"$\",\"tr\",\"tr-0\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"code\",\"code-0\",{\"children\":\"openid\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":[\"Provides a stable, opaque Google account identifier used to anchor your free trial and bind your license to your account, as described under \",[\"$\",\"em\",\"em-0\",{\"children\":\"Google Account Identifier\"}],\" above. No name, email, or profile data is requested or stored.\"]}]]}],[\"$\",\"tr\",\"tr-1\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"code\",\"code-0\",{\"children\":\"webmasters.readonly\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Read-only access to your Search Console performance and inspection data (metrics, queries, indexing status)\"}]]}]]}]]}]}]\n26:[\"$\",\"p\",\"p-13\",{\"children\":\"The Extension never writes, modifies, or deletes Search Console data.\"}]\n27:[\"$\",\"p\",\"p-14\",{\"children\":[\"When you choose \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"Disconnect Google account\"}],\" inside the Extension, it sends your access token once to Google's OAuth revocation endpoint (\",[\"$\",\"code\",\"code-0\",{\"children\":\"accounts.google.com\"}],\") to invalidate the grant, then clears the locally cached token. This is a Google endpoint and remains within the \\\"Google's own APIs\\\" exception described under \",[\"$\",\"em\",\"em-0\",{\"children\":\"Google Account Identifier\"}],\" above.\"]}]\n28:[\"$\",\"p\",\"p-15\",{\"children\":[\"Revoke access anytime via your \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://myaccount.google.com/permissions\",\"children\":\"Google Account Permissions\"}],\" page.\"]}
99]\n29:[\"$\",\"hr\",\"hr-4\",{}]\n2a:[\"$\",\"h2\",\"h2-3\",{\"children\":\"4. Google API Services User Data Policy\"}]\n2b:[\"$\",\"p\",\"p-16\",{\"children\":[\"Page Lens complies with the \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://developers.google.com/terms/api-services-user-data-policy\",\"children\":\"Google API Services User Data Policy\"}],\", including Limited Use requireme"])</script>
99<script>self.__next_f.push([1,"nts:\"]}]\n2c:[\"$\",\"ol\",\"ol-0\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"Google user data is used only to provide user-facing features (displaying Search Console data as overlay)\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":\"Google user data is not transferred to third parties except for core functionality, legal compliance, or explicit user consent\"}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":\"Google user data is not used for advertising, retargeting, or personalized ads\"}],\"\\n\",[\"$\",\"li\",\"li-3\",{\"children\":\"No human reads Google user data unless: (a) explicit user consent, (b) security purposes, or (c) legal compliance\"}],\"\\n\"]}]\n2d:[\"$\",\"hr\",\"hr-5\",{}]\n2e:[\"$\",\"h2\",\"h2-4\",{\"children\":\"5. Data Storage\"}]\n2f:[\"$\",\"p\",\"p-17\",{\"children\":\"Search Console data and cached API responses are stored locally using Chrome's extension storage APIs.\"}]\n30:[\"$\",\"div\",\"table-1\",{\"className\":\"blog-table-wrap\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",\"thead-0\",{\"children\":[\"$\",\"tr\",\"tr-0\",{\"children\":[[\"$\",\"th\",\"th-0\",{\"children\":\"Storage Mechanism\"}],[\"$\",\"th\",\"th-1\",{\"children\":\"Contents\"}],[\"$\",\"th\",\"th-2\",{\"children\":\"Synced Across Devices\"}]]}]}],[\"$\",\"tbody\",\"tbody-0\",{\"children\":[[\"$\",\"tr\",\"tr-0\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"code\",\"code-0\",{\"children\":\"chrome.storage.sync\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"License key, sidebar width\"}],[\"$\",\"td\",\"td-2\",{\"children\":\"Yes (across signed-in browsers)\"}]]}],[\"$\",\"tr\",\"tr-1\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"code\",\"code-0\",{\"children\":\"chrome.storage.local\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Cached API responses, property list\"}],[\"$\",\"td\",\"td-2\",{\"children\":\"No (current device only)\"}]]}]]}]]}]}]\n31:[\"$\",\"p\",\"p-18\",{\"children\":[\"Your free-trial start timestamp is \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"not\"}],\" stored on your device. It is held server-side by our integrity service, keyed to your opaque Google account identifier, so the trial can't be reset by clearing local data. The same service also stores, against that identifier, the license key you've activated, so a key can be tied to one Google account and can't be shared. On your device the license key string is kept in \",[\"$\",\"code\",\"code-0\",{\"children\":\"chrome.storage.sync\"}],\"; whether it's valid and whose it is are checked with the server, never stored locally.\"]}]\n32:[\"$\",\"p\",\"p-19\",{\"children\":\"Cached data follows a time-to-live (TTL) policy and auto-refreshes upon expiration.\"}]\n33:[\"$\",\"hr\",\"hr-6\",{}]\n34:[\"$\",\"h2\",\"h2-5\",{\"children\":\"6. Data Security\"}]\n35:[\"$\",\"p\",\"p-20\",{\"children\":\"Communication between the Extension and Google's APIs, and between the Extension and our integrity service, uses HTTPS encryption, as does our integrity service's server-side call to Dodo Payments when it validates a license. Locally stored data is protected by Chrome's extension storage security model, isolating extension data from other extensions and web pages.\"}]\n36:[\"$\",\"hr\",\"hr-7\",{}]\n37:[\"$\",\"h2\",\"h2-6\",{\"children\":\"7. Third-Party Services\"}]\n"])</script>
99<script>self.__next_f.push([1,"38:[\"$\",\"div\",\"table-2\",{\"className\":\"blog-table-wrap\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",\"thead-0\",{\"children\":[\"$\",\"tr\",\"tr-0\",{\"children\":[[\"$\",\"th\",\"th-0\",{\"children\":\"Service\"}],[\"$\",\"th\",\"th-1\",{\"children\":\"Purpose\"}],[\"$\",\"th\",\"th-2\",{\"children\":\"Data Shared\"}]]}]}],[\"$\",\"tbody\",\"tbody-0\",{\"children\":[[\"$\",\"tr\",\"tr-0\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Google Search Console API\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Fetch performance metrics, queries, indexing status\"}],[\"$\",\"td\",\"td-2\",{\"children\":[\"Current page URL and OAuth token (Chrome-managed). Governed by \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://policies.google.com/privacy\",\"children\":\"Google's Privacy Policy\"}]]}]]}],[\"$\",\"tr\",\"tr-1\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Chrome Identity API\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Authenticate via OAuth 2.0\"}],[\"$\",\"td\",\"td-2\",{\"children\":\"Managed by Chrome/Google; Extension doesn't access credentials\"}]]}],[\"$\",\"tr\",\"tr-2\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Page Lens integrity service\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Verify your Google identity, record your free-trial start, and bind a license key to your account\"}],[\"$\",\"td\",\"td-2\",{\"children\":\"Your Google access token (sent over HTTPS, verified with Google, never stored). The opaque Google account identifier, trial start timestamp, and (for license holders) the license key are stored. No Search Console, browsing, or profile data\"}]]}],[\"$\",\"tr\",\"tr-3\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Dodo Payments\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Process your purchase (on Dodo's own checkout page) and confirm a license key is valid (server-side, at our integrity service's request)\"}],[\"$\",\"td\",\"td-2\",{\"children\":[\"Payment and purchase details you enter on Dodo's checkout page; your license key, which our integrity service passes to Dodo to confirm it's valid. The Extension never connects to Dodo directly, and no Search Console or browsing data is shared. Governed by \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://dodopayments.com/legal/privacy-policy\",\"children\":\"Dodo Payments' Privacy Policy\"}]]}]]}]]}]]}]}]\n"])</script>
99<script>self.__next_f.push([1,"39:[\"$\",\"p\",\"p-21\",{\"children\":\"No analytics SDKs, tracking pixels, or third-party data collection tools are used.\"}]\n3a:[\"$\",\"p\",\"p-22\",{\"children\":\"Because every web request carries it, our integrity service (like Google) receives your device's IP address. Our integrity service uses it only to handle the request; we do not store it or retain it in our own logs (our hosting provider may process it transiently at the network edge under its own policies). Dodo Payments receives your IP only when you open its checkout page to make a purchase (not during the Extension's normal use), and handles any IP data under its own privacy policy.\"}]\n3b:[\"$\",\"hr\",\"hr-8\",{}]\n3c:[\"$\",\"h2\",\"h2-7\",{\"children\":\"8. Chrome Extension Permissions\"}]\n3d:[\"$\",\"div\",\"table-3\",{\"className\":\"blog-table-wrap\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",\"thead-0\",{\"children\":[\"$\",\"tr\",\"tr-0\",{\"children\":[[\"$\",\"th\",\"th-0\",{\"children\":\"Permission\"}],[\"$\",\"th\",\"th-1\",{\"children\":\"Purpose\"}]]}]}],[\"$\",\"tbody\",\"tbody-0\",{\"children\":[[\"$\",\"tr\",\"tr-0\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"code\",\"code-0\",{\"children\":\"activeTab\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Open and toggle the sidebar on the current tab when you click the extension icon\"}]]}],[\"$\",\"tr\",\"tr-1\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"code\",\"code-0\",{\"children\":\"identity\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Authenticate via Chrome's OAuth flow\"}]]}],[\"$\",\"tr\",\"tr-2\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"code\",\"code-0\",{\"children\":\"storage\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Cache API responses and persist user preferences\"}]]}],[\"$\",\"tr\",\"tr-3\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"code\",\"code-0\",{\"children\":\"alarms\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Schedule periodic license revalidation and deferred data fetches\"}]]}],[\"$\",\"tr\",\"tr-4\",{\"children\":[[\"$\",\"td\",\"td-0\",{\"children\":[\"$\",\"code\",\"code-0\",{\"children\":\"scripting\"}]}],[\"$\",\"td\",\"td-1\",{\"children\":\"Inject the sidebar UI into the current page\"}]]}]]}]]}]}]\n3e:[\"$\",\"p\",\"p-23\",{\"children\":[\"The Extension also declares host access to Google Search Console (\",[\"$\",\"code\",\"code-0\",{\"children\":\"searchconsole.googleapis.com\"}],\") and our integrity service (\",[\"$\",\"code\",\"code-1\",{\"children\":\"trials.pagelens.workers.dev\"}],\") so it can make these HTTPS requests. It declares no host access to Dodo Payments, because it never connects to Dodo directly.\"]}]\n3f:[\"$\",\"hr\",\"hr-9\",{}]\n40:[\"$\",\"h2\",\"h2-8\",{\"children\":\"9. Data Retention and Deletion\"}]\n41:[\"$\",\"ul\",\"ul-2\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"Uninstalling\"}],\" deletes locally cached data in \",[\"$\",\"code\",\"code-0\",{\"children\":\"chrome.storage.local\"}],\" (API responses, property list). Data in \",[\"$\",\"code\",\"code-1\",{\"children\":\"chrome.storage.sync\"}],\" (license key, sidebar width) may persist in your Google account after uninstall\"]}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"Cached API responses\"}],\" auto-refresh when exceeding TTL\"]}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"Our integrity service\"}],\" retains your opaque Google account identifier, your trial start timestamp, and (if you've activated a license) your license key bound to that identifier, to enforce the one-time free trial and the one-account-per-license rule. This record holds no Search Console data, name, email, or browsing information, and persists independently of uninstalling the Extension\"]}],\"\\n\",[\"$\",\"li\",\"li-3\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"Revoking access\"}],\" through \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://myaccount.google.com/permissions\",\"children\":\"Google Account Permissions\"}],\" revokes the OAuth token\"]}],\"\\n\"]}]\n42:[\"$\",\"p\",\"p-24\",{\"children\":\"Search Console data is never stored on our servers. Dodo Payments remains the authority on whether a license is valid and handles your payment-card details; our integrity service stores the license key only to bind it to your Google account.\"}]\n43:[\"$\",\"hr\",\"hr-10\",{}]\n44:[\"$\",\"h2\",\"h2-9\",{\"childre"])</script>
99<script>self.__next_f.push([1,"n\":\"10. Children's Privacy\"}]\n45:[\"$\",\"p\",\"p-25\",{\"children\":\"The Extension is not directed at children under 13 (or applicable age of digital consent in your jurisdiction). We don't knowingly collect personal information from children.\"}]\n46:[\"$\",\"hr\",\"hr-11\",{}]\n47:[\"$\",\"h2\",\"h2-10\",{\"children\":\"11. Your Rights\"}]\n48:[\"$\",\"p\",\"p-26\",{\"children\":\"Because we store no Search Console or browsing data on our servers, your data rights are exercised largely through local browser control. The one exception is your server-side record (your trial start and, for license holders, your license binding), which you can ask us to delete:\"}]\n49:[\"$\",\"ul\",\"ul-3\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"Access:\"}],\" Locally stored data is viewable in your browser's extension storage via Chrome developer tools; for the server-side record, you can request a copy by email\"]}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"Deletion:\"}],\" Uninstall the Extension to clear local data, then email us at the address in the \",[\"$\",\"em\",\"em-0\",{\"children\":\"Contact\"}],\" section below to delete your server-side record\"]}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"Revocation:\"}],\" Use \",[\"$\",\"strong\",\"strong-1\",{\"children\":\"Disconnect Google account\"}],\" within the extension to revoke its Google access and clear locally cached data, or revoke access anytime via your \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://myaccount.google.com/permissions\",\"children\":\"Google Account Permissions\"}],\" page\"]}],\"\\n\"]}]\n4a:[\"$\",\"hr\",\"hr-12\",{}]\n4b:[\"$\",\"h2\",\"h2-11\",{\"children\":\"12. Changes to This Policy\"}]\n4c:[\"$\",\"p\",\"p-27\",{\"children\":\"This Privacy Policy may be updated periodically. Material changes will update the \\\"Last updated\\\" date at the top.\"}]\n4d:[\"$\",\"hr\",\"hr-13\",{}]\n4e:[\"$\",\"h2\",\"h2-12\",{\"children\":\"13. Governing Law\"}]\n4f:[\"$\",\"p\",\"p-28\",{\"children\":\"This Privacy Policy is governed by the laws of India. Disputes are subject to exclusive jurisdiction of Indian courts.\"}]\n50:[\"$\",\"hr\",\"hr-14\",{}]\n51:[\"$\",\"h2\",\"h2-13\",{\"children\":\"14. Contact\"}]\n52:[\"$\",\"p\",\"p-29\",{\"children\":\"Questions or concerns regarding this policy or the Extension's data practices:\"}]\n53:[\"$\",\"p\",\"p-30\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"Page Lens Team\"}],\"\\nEmail: \",[\"$\",\"a\",\"a-0\",{\"href\":\"mailto:[email protected]\",\"children\":\"[email protected]\"}]]}]\n54:[\"$\",\"$L5b\",null,{\"children\":[\"$\",\"$59\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@5c\"}]}]\n"])</script>
99<script>self.__next_f.push([1,"57:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
99<script>self.__next_f.push([1,"5d:I[44704,[\"/_next/static/chunks/00uitplbttn_1.js\",\"/_next/static/chunks/1124ddmj5g_p8.js\",\"/_next/static/chunks/3o6_4pjutbr1n.js\"],\"IconMark\"]\n"])</script>
99<script>self.__next_f.push([1,"5a:[[\"$\",\"title\",\"0\",{\"children\":\"Privacy Policy | Page Lens â Page Lens\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Privacy Policy for Page Lens, the Chrome extension for Google Search Console. How we collect, use, store, and protect your data.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"link\",\"3\",{\"rel\":\"canonical\",\"href\":\"https://getpagelens.com/privacy\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:title\",\"content\":\"Privacy Policy | Page Lens\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:description\",\"content\":\"Read how Page Lens handles your dataâincluding Google Search Console access, local storage, and subscription billingâfor the Chrome extension and this site.\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:url\",\"content\":\"https://getpagelens.com/privacy\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:site_name\",\"content\":\"Page Lens\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://getpagelens.com/og.webp\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1600\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"900\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Page Lens â Google Search Console sidebar overlay in the browser\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:creator\",\"content\":\"@ctnavan\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:title\",\"content\":\"Privacy Policy | Page Lens\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:description\",\"content\":\"How Page Lens collects, uses, and protects your data. Privacy policy for the Google Search Console Chrome extension.\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:image\",\"content\":\"https://getpagelens.com/og.webp\"}],[\"$\",\"link\",\"19\",{\"rel\":\"icon\",\"href\":\"/favicons_light/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"20\",{\"rel\":\"icon\",\"href\":\"/favicons_light/favicon-16x16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"21\",{\"rel\":\"icon\",\"href\":\"/favicons_light/favicon-32x32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"22\",{\"rel\":\"apple-touch-icon\",\"href\":\"/favicons_light/apple-touch-icon.png\"}],[\"$\",\"$L5d\",\"23\",{}]]\n"])</script>
99<script>self.__next_f.push([1,"5c:null\n"])</script>
99</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.