A lightweight web app to stitch Chrome trace filmstrips (DevTools Screenshot events) into a single video — right in your browser.
- Drop multiple DevTools trace JSONs or a single .zip containing them
- Extract
Screenshotframes and true timings - Reorder files, edit frames (remove/restore), set output size, and no cross-fades between frames
- Preview on-canvas, then Export to WebM via
MediaRecorder(no server). You can also export MP4 via ffmpeg.wasm (client-side transcode). Encoding defaults to WebM VP9 for previews/exports in the browser.
For MP4/H.264 exports, consider adding
ffmpeg.wasmlater; WebM is fastest and works great in Chrome/Firefox.
npm install
npm run devdocker build -t traceweaver:local .
docker run --rm -p 8080:80 traceweaver:localservices:
traceweaver:
image: ghcr.io/YOUR_GH_USERNAME/traceweaver:latest
ports: ["8080:80"]
restart: unless-stopped- Create a repo on GitHub and push this code.
- Ensure Actions are enabled. On push to
main, the workflow builds and pushes toghcr.io/<owner>/<repo>. - Pull/run:
docker pull ghcr.io/<owner>/<repo>:latest
docker run -p 8080:80 ghcr.io/<owner>/<repo>:latestThe workflow uses the built-in
GITHUB_TOKENwithpackages: writepermission.
- Input must be Chrome/DevTools performance traces that include
Screenshotevents. You can upload individual.jsonfiles or a.zipcreated by the source tool. - Timestamps (
ts) are microseconds; we preserve relative timing between frames. - Encoding is done with the browser's
MediaRecorderAPI for speed and simplicity.
- MP4 export via
ffmpeg.wasm(toggle) - Per-trace trimming
- Watermark/timestamp overlays
- Variable frame-rate WebM muxing