# PageViewLens > PageViewLens is self-hosted, cookieless web analytics by Marc Hildmann, an independent software engineer in Gehrden near Hannover, Germany. Tracker, dashboard and API live in one PHP file that writes to one SQLite database, so it runs on ordinary shared PHP hosting (PHP 8.2 or newer with pdo_sqlite). ## How it counts - No cookies and nothing stored in the visitor's browser; no fingerprinting. - A visitor is sha256(daily salt | site | IP | user agent), truncated to 32 hex characters. The salt is random per local day and deleted afterwards, so hashes cannot be linked across days or sites. The IP address is never stored. - Paths are stored without query strings, referrers as host names only, countries as ISO codes (via the PHP geoip extension, if present). - Sessions split after 30 minutes of inactivity. A bounce is one pageview without interaction. - Raw pageviews and events are deleted after 13 months. - Do Not Track and Global Privacy Control disable tracking. Bot user agents, headless and automated browsers (navigator.webdriver) are dropped. ## Features - Visitors, pageviews, bounce rate and visit duration, each compared with the previous period. - Pages, referrers, countries, browsers, operating systems and devices, with filters. - Channels: AI (ChatGPT, Perplexity, Claude, Gemini, Copilot and others), Search, Social, Email, Referral, Direct. utm_source is read when no referrer is sent. - Automatic events for outbound links, downloads, anchors and buttons; named events via data-pvl (click) and data-pvl-view (became visible); window.pvlens('name') from JavaScript. - Goals on pages or events, with prefix matching (a target ending in *). - User journeys, realtime view, CSV export. - Security: database outside the web root, strict Content Security Policy, CSRF protection, login rate limiting, fail-closed start when the database is missing. ## Integration One script tag before : The tracker pvl.js is 8,399 bytes (2,920 bytes gzipped) and follows single-page-app navigation via pushState. ## Compared with other tools - Google Analytics 4: not self-hostable, uses cookies, data goes to Google. - Plausible Community Edition: cookieless; self-hosting needs Elixir, PostgreSQL and ClickHouse, usually in Docker. - Umami: cookieless; self-hosting needs Node.js and PostgreSQL. - Matomo: PHP with MySQL/MariaDB; uses cookies by default (can be disabled). - PageViewLens: cookieless; PHP 8.2 and SQLite on shared hosting. ## Availability - PageViewLens is available on request, as a service. There is no public download and no self-service signup. - Marc Hildmann sets it up on the customer's PHP hosting and configures sites, goals and events. Scope and price are agreed per request. - Requests: https://marchildmann.com/#contact ## Links - [PageViewLens](https://pageviewlens.com/): Product page with FAQ. - [Marc Hildmann](https://marchildmann.com/): The maker. Contact form for PageViewLens requests: https://marchildmann.com/#contact - [Impressum](https://marchildmann.com/impressum/): Legal notice (German).