deterministic motion-graphics engine

One JSON,
one video.

Write a scene as data. The engine renders it frame by frame, byte-identical every run, at any canvas.

editable · change anything
starting engine…
engine
in your browser
output
1920 × 1080 · 30fps
uploads
none
rendered from one JSONopen the editor →
guarantees

Determinism is enforced, not promised.

There is no rule asking you to avoid a wall clock. A frame is seeked, not played, so anything that runs on real time is refused at boot, by name, before a pixel is drawn. Two things follow from that, and both are worth more than the guarantee itself.

Any render order.

renderFrame(n) is pure in n, so frame 412 comes out the same whether it renders first or last. That is what lets one film shard across parallel tabs, and what makes two renders of the same scene diff-able.

Any canvas.

Pin keywords, a 12-column grid and percentages resolve to pixels per canvas. Compose in those and one source renders 16:9, 9:16, 1:1 and 4:5 in a single pass. Hand-place absolute pixels instead and you have tuned it to one ratio.

the arsenal

No templates. A vocabulary.

Browse the arsenal

You do not pour data into a layout someone else composed. You compose the film from primitives, the way you would write anything else. 559 effects ship today, 255 of them with a rendered preview. Below is one frame from each family that has one.

filmgrainambient shader fields
metallicsheenbackgrounds
pillkaraokecaption styles
slide-upenter exit anims
wavesgenerative paint fx per frame
zoomoutgsap exits
elasticingsap named effects
driftidles ambient hold motion
unfoldkinetic text presets
beam-shine-sheen-sweepper frame accent layers
mandelbulbraymarched surfaces
letterboxscene cuts
dispersionseams 2 scene blends
glitchshader stings
pointcloudthree js scenes real geometry