Skip to content

SVG Fingerprinting

SVG fingerprinting renders an SVG scene with filters, text, and shapes, then reads both the serialized SVG string and text bounding box measurements.

How it works

Neoprint creates an SVG element containing:

  • A rectangle with a Gaussian blur filter
  • Text rendered in serif font
  • A semi-transparent circle

The SVG is serialized via XMLSerializer and text bounding box is read via getBBox(). Differences arise from:

  • SVG filter implementation (blur precision)
  • Font metrics for SVG text
  • Serialization format differences

Entropy and stability

PropertyValue
Entropy~7 bits
Stability0.80
Typical duration<1ms

SVG is an alternative to canvas fingerprinting that's less commonly blocked by privacy extensions. Excluded in privacy mode.

Usage

ts
const fp = await neoprint.get({ collectors: ['svg'] })
const svg = fp.components.svg.value

console.log(svg.textBBox)  // { x, y, width, height }

Released under the MIT License.