MVweb SEO Inspector — Privacy Policy

Effective date: 2026-05-09
Maintainer: MVweb · mvweb.ru

MVweb SEO Inspector is a browser extension that analyzes the on-page SEO setup of the page you currently view. This document explains exactly what data the extension reads, sends, and stores.

What we collect

Nothing. We operate no servers and have no telemetry, analytics, error reporting, or remote logging. The extension reads the DOM of the page you explicitly open it on and renders the result locally inside the popup.

What we store

The extension uses your browser's local extension storage (chrome.storage.local). All stored data lives on your device and is removed when you uninstall the extension. We store:

KeyWhatLifetime
mvwebLinkStatusCacheHTTP-status results from the optional «Check Status» featurePer page load — discarded when the page reloads
mvwebSqi:{hostname}Cached Yandex SQI value (number or PNG badge) — only if you opt-in24 hours
serpNumberingYandex, serpNumberingGoogleSERP numbering preferences (off by default)Until you change them
enableYandexSqi, enableYandexFeaturesYandex feature opt-in flags (off by default in English UI)Until you change them
textStatsTopN, textStatsStopWords, copySummaryTemplateText statistics and Copy summary preferencesUntil you change them

The data never leaves your device.

What network requests we make

When you open the popup on a page, the extension makes the following requests on your behalf, from your browser:

RequestWhyConditions
GET <origin>/robots.txtParse robots.txt to surface Sitemap: directives and check whether the current URL is allowed for crawler UA * and YandexOnly on shareable URLs (skips localhost, 127.x, 10.x, 192.168.x, 172.16-31.x, .local)
HEAD <current-page-url>Read HTTP status code and X-Robots-Tag header of the current pageOnly on shareable URLs
GET https://bar-navig.yandex.ru/... and GET https://yandex.ru/cycounter?...Fetch the Yandex SQI value/badge for the current siteOnly if you opt-in in Settings (enableYandexSqi), cached 24 hours

When you click «Check Status» in the «Links» tab, the extension issues parallel HEAD requests (with GET fallback for servers that respond 405 / 501) to every link visible on the page. We use 12 parallel workers and an 8-second timeout per request. No request body is sent; no custom headers are added. Private/intranet URLs are skipped (no SSRF on local networks).

All requests originate from your browser session and contain whatever your browser would normally send (cookies, user-agent). They are never proxied through any server we control.

Content scripts

The extension registers one content script (serp-numbering.js) that runs only on Google and Yandex search result pages (10 regional domains). It does not collect anything — it only adds visual position numbers (1, 2, 3, ...) next to organic search results, and only if you have enabled it in Settings (off by default). It does not communicate with any server.

Third-party services

The «Tools» tab provides shortcut links to external SEO services (Google PageSpeed Insights, Schema.org Validator, Wayback Machine, SSL Labs, WAVE, Yandex.Webmaster, Yandex Wordstat, etc.). These open in new tabs. Once you click such a link, you are interacting with the third-party service directly, governed by its privacy policy — not this one.

The «Search» tab works the same way — clicking a search operator (e.g. site:domain.ru) opens Yandex or Google in a new tab.

The extension itself does not transmit anything to those services behind the scenes; it only constructs a URL with your current page as a parameter when you click.

Permissions justification

PermissionWhy we need it
activeTabRead the DOM of the page you click the toolbar icon on. Without this, the extension cannot inspect any meta tags, headings, links, or images.
scriptingInject the collector.js script into the active tab via chrome.scripting.executeScript. The script reads the page DOM and sends the result to the popup via runtime.sendMessage.
storagePersist user preferences (Settings) and short-lived caches (Check Status results, Yandex SQI 24-hour cache) in chrome.storage.local. No data is shared off-device.
host_permissions: <all_urls>(a) Keep the toolbar icon active on every page (otherwise Chrome grays it out until interaction), (b) make robots.txt and HEAD requests without CORS errors, (c) make HEAD requests for the «Check Status» feature on links the page contains.
content_scripts (serp-numbering.js on Google/Yandex search)Add position numbers to organic search results, only if you opt-in in Settings. Off by default.

Remote code

The extension ships no remote code. There is no eval, no remote script, no dynamic import(), no fetch-and-eval pattern, and the manifest enforces a strict Content Security Policy:

script-src 'self'; object-src 'none'; base-uri 'none'

All logic lives in the JavaScript files included in the ZIP package shipped to the Chrome Web Store.

Privacy-by-default

Children

The extension does not target children under 13 and does not knowingly collect any personal data about anyone — adult or child.

Changes to this policy

If we change this policy, we will update the Effective date at the top and publish the revision in the extension's repository.

Contact