Line9 · privacy

What we capture, and what we don't.

The diagram viewer records the structural shape of each diagram you render — anonymous topology, no source text — so the renderer can be improved against the diagrams people actually draw. Product analytics (PostHog EU) separately measures usage metadata with a first-party id we set only if you accept. This page lists the capture fields, shows your analytics id when available, and gives you switches for both. Full legal detail lives in the privacy policy.

§ 1
What capture does

When Line9 successfully parses a diagram, the canonicaliser produces a structural fingerprint: nodes relabelled in canonical order, edges with directions and endpoints, node shape categories, and subgraph nesting. That fingerprint is written to a private corpus so the project owner can re-render entries against the current Line9 and find layouts that need work. Separately, a small render event is recorded — outcome, timing, viewport, theme — so error rates and performance are visible.

§ 2
What never leaves the browser

The Mermaid source you type, all node and edge labels, your node IDs, comments, colours, and any other free-form content stay on your device. The wire format structurally cannot carry them — there is no source field, no labels field, no free-text error message.

§ 3
Topology corpus fields

Each topology write is a JSON document with exactly these fields:

  • topology_key Content hash of the canonical structural form.
  • topology_key_version Version of the canonicalisation algorithm that produced the key.
  • canonical_graph Anonymous graph: vertices in canonical order, edges with directions and endpoints, node shape categories, subgraph nesting.
§ 4
Render event fields

Dimensions:

  • render_status success, layout_error, unknown_error, or parse_error (whole-source arrivals only).
  • render_error_code Enumerated failure category from @line9/core when status is not success.
  • diagram_type Parsed diagram kind (e.g. flowchart, sequenceDiagram).
  • theme Selected diagram theme.
  • orientation portrait or landscape, as the viewer rendered it.
  • line9_version Version string of @line9/core at render time.
  • topology_key Structural identifier; absent for diagram kinds the canonicaliser does not yet handle.
  • topology_key_version Canonicaliser version; present whenever topology_key is.
  • referrer_host Hostname of document.referrer only — no path, no query.
  • arrival_origin How the source arrived (paste, share_hash, published, example). Present only on parse_error.

Metrics:

  • render_duration_ms Wall-clock time from parse start to render end.
  • viewport_width CSS pixels of the rendering viewport.
  • viewport_height CSS pixels of the rendering viewport.
  • spacing_scale Multiplier on inter-node and edge spacing.
  • node_scale Multiplier on node size.
§ 5
Topology corpus opt-out

Render events and Cloudflare operational analytics continue regardless, because they carry no user content and no per-user identifiers; they are operational signal needed to manage the service. Product analytics (below) is a separate control.

§ 6
Product analytics id

Line9 uses PostHog (EU cloud, first-party proxy) for product usage — page views and curated events such as render/export/share. Diagram source and labels never leave the browser for this path. We ask before setting a durable first-party id. Accepting lets us stitch sessions across visits; declining, or not choosing, keeps the id memory-only while in-memory analytics continues. See the privacy policy § 9.

This browser's analytics id

When checked, a first-party analytics id is stored in this browser (localStorage + cookie) so visits can be stitched. Leave it unchecked — or reject on the banner — to keep the id memory-only. Usage events may still be sent for the current session either way. Storage key: line9_analytics_consent.

scope · this browser storage · localStorage spec · diagram-capture · analytics