Drive this engine live: open the SVG seat on the Test Bench →

SVG

svg Medium — a normal phone is fine

A procedurally generated character drawn as real vector shapes — head and torso, built from a seed, scaling to any screen without ever blurring.

Builds live SVG DOM elements, not pixels. It owns its own engine and render loop; the mount here is a thin uniform wrapper around it.

What it can express

Moods: 25 protocol moods folded onto the engine's own four expressions plus neutral — the honest nearest of four, weighted by intensity. This card will not claim 25 distinct faces: there are four.

What it costs a device

measured on this box375×6671440×900
cold mount → first frame435 ms390 ms
rAF fps — idle6057
rAF fps — speaking5956
CPU cores busy — idle0.411.12
CPU cores busy — speaking0.841.67
worst frame gap (p95)16.7 ms16.8 ms
over the wire299 KB299 KB
JS heap10 MB10 MB

The most viewport-sensitive 2D engine by a wide margin: 0.41 → 1.12 cores idle just from 375 to 1440, and 1.67 cores while speaking — the only 2D engine measured above one full core. Speaking doubles its cost, unlike every other 2D engine here.

Why medium: Vector shapes are rasterized by the browser at display resolution, so cost climbs with screen area, and speaking doubles it again. It stays smooth, but it is the 2D engine most likely to warm a phone on a large screen.

Dials it really exposes today

seedgenerates the whole character; the same seed always yields the same personany string or number; default 'niko'
framinghow much of the body is in frame'bust' or 'half' — anything else is forced to 'half'
detail levelhow much fine geometry is drawn — the engine's own quality dial'low' · 'medium' · 'high'
motionIntensityscales all idle and gesture motion0–1, clamped; default 1
reducedMotionforce the calm profile regardless of the OS settingboolean
setExpression(name, weight)the full engine API is exposed on the mount for advanced hostsone of the four + neutral, with a 0–1 weight
seal → .alive.jsonexports the character as a portable packagespec/seed section

Try it

SVG Master — presets, dice, HUD, second avatar, SVG exportopen/alive-site/svg-body.html Universal Stage — SVG beside the other fouropen/alive-site/universal-stage.html

Honest limits

Numbers are software-renderer numbers. Measured 2026-08-04 on the estate box (18 vCPU, load 2.8–5.3 during the run) under chromium_headless_shell-1232 + SwiftShader, 3 runs per cell, median reported. SwiftShader rasterizes on the CPU, so a real phone GPU changes the picture — most of all for 3D. Read the ordering between engines, not the absolute figures. Evidence for every claim: CARD-FACTS.md. Harness: work/measure-engines.mjs.