Skip to content

Privacy

Updated Online Protractor

We keep it simple: no account, no database, no server-side image storage. If analytics are added later, they will be privacy-friendly, disclosed here, and never track image contents.

Exact browser-side workflow

When you use Use image, drag & drop, paste (Ctrl+V) or camera capture:

  1. File pick / drop / paste / capture → the browser gives the tool a File or Blob. No upload starts.
  2. Type & size gate → only image/png, image/jpeg, image/webp and ≤12 MB pass; otherwise an inline error shows.
  3. Local decodeURL.createObjectURL(file) creates a blob: URL; an HTMLImageElement loads it via src=blob:…. The file never leaves your device. Camera uses navigator.mediaDevices.getUserMedia<video> → canvas capture → same blob: path.
  4. Render → the image is drawn in the SVG #image-layer (Astro static, client JS only). Pan/zoom/rotate are CSS/SVG transforms; no network request.
  5. Revoke → on clear, replace or page hide/unload we call URL.revokeObjectURL() — the blob: URL is invalidated and memory freed. Nothing persists in localStorage or IndexedDB.
  6. Export → PNG export uses canvas.toBlob locally; JSON/CSV are text dumps of your points — also local.
Verification: open DevTools → Network, then upload an image. You will see no image POST, no fetch to a server — only a blob: load. Close the image and the blob: entry disappears.

What we don't collect

Analytics — privacy-aware

We use minimal, privacy-friendly analytics only with allowed events. No image contents, filenames, or exact image data are ever sent. We respect Do Not Track and Global Privacy Control.

Payload is {event, path, locale, ts} plus low-cardinality fields above. No cookies, no image bytes, no filenames. Endpoint is disabled by default (window.__ANALYTICS_ENDPOINT unset); when configured it uses navigator.sendBeacon with keepalive. Localhost logs to console only.

Camera permission

Camera requires HTTPS and your explicit permission. Deny leaves the tool fully usable via file → we show a local error and never retry without your click. See image guide.

About → · Accuracy → · Contact →