What this site stores

A URL you enter is never connected to you unless you type an email address into the diagnostic form yourself. Readings are stored anonymously for 90 days so a share link works, then deleted. No analytics script, no advertising pixel, no tracker.

When you take a reading

Your URL is fetched by this server and read. The result is written to a file named after a random 16 character token, and that token is the only way to reach it. It contains the URL, the temperature, the four readings, and the strengths and problems you were shown. It does not contain your IP address, your browser, your referrer, or any identifier of any kind.

Those files are deleted after 90 days. A share link past that date renders an honest expiry message rather than the reading.

The share link is unlisted, not secret. It is not indexed, it is not linked from anywhere, and the token cannot be guessed, but anyone you send it to can open it. Treat it the way you would treat any unlisted link.

What the reading does not include

The full signal list and its remedies never leave the server, which means a stored reading and a shared link contain only what you were shown on screen. That boundary exists for product reasons rather than privacy ones, but it has the useful side effect that a stolen token is worth exactly what the person who generated it already had.

Rate limiting

To stop this becoming somebody else's scraping tool, readings are limited per IP address per hour. The counter is stored as a SHA-256 hash of the address, not the address, and it is swept after two hours. There is no way to reverse it into an IP, and nothing else is recorded against it.

When you ask for a diagnostic

This is the only place an email address is collected, and it is the only place a URL gets connected to a person. You type both yourself, having read this sentence on the form above the field.

What happens to it: the request is written to a file on this server, then sent to Brevo, which is the email service this portfolio uses, so a reply can be sent and so the request does not get lost in a mailbox. The attributes recorded alongside your address are which site the request came from, which form, and the temperature that was on screen when you asked. Nothing is sold, nothing is shared with advertisers, and nothing is used to build a profile.

Ask and it is deleted, from here and from Brevo. Use the same form.

What this site does not run

  • No Google Analytics, and no analytics script of any kind.
  • No advertising pixel, no remarketing tag, no social tracker.
  • No cookies set by this site. None. The reading widget keeps nothing between visits.
  • No fonts or scripts loaded from a third party, so no other company sees that you were here.

What gets logged on the server

The web server keeps ordinary access logs, as every web server does, and they are rotated on the host's normal schedule. The Brevo integration writes a log of its own API calls with HTTP status codes, so a silently failing email sync is visible rather than invisible. That log records what was attempted and whether it worked, not the contents.

Sites you take readings of

A reading is a single fetch of a public page, identifying itself honestly in its user agent, respecting a nine second timeout, and downloading no more than 1.5 MB. It is one request, the same as opening the page in a browser. It does not crawl the rest of the site and it never ignores a refusal.

If your site appears in the published readings dataset and you would rather it did not, say so on the contact form and it comes down. No argument, no retention period.

Changes

This page is dated. If what the site stores changes, this page changes in the same deploy, because a privacy page describing a version of the code that no longer runs is worse than not having one.