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 you can decline. This page lists the capture fields, shows your analytics id when available, and gives you switches for both opt-outs. 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, or unknown_error.
  • 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.

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. By default a durable first-party id lives in this browser so sessions can be stitched; decline drops the id to memory-only while in-memory analytics continues. See the privacy policy § 9.

This browser's analytics id

When checked, product analytics uses an in-memory id only (not written to localStorage or a cookie). Usage events may still be sent for the current session. Uncheck to allow the durable id again. Storage key: line9_analytics_consent.

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