Your code, frame by frame
A LeetCode-style playground where your solution drives a synced visual debugger: trees, graphs, grids, linked structures, and nested maps. JavaScript and Python in the browser, step-by-step replay, and optional timing stats for JS.
How it works
A LeetCode-style playground where your solution drives a synced visual debugger: trees, graphs, grids, linked structures, and nested maps. JavaScript and Python in the browser, step-by-step replay, and optional timing stats for JS.
Write your solution
Use the built-in editor with familiar patterns for each project category.
Run and record
Tracked APIs turn structural work into a callstack of frames—no canned animation.
Scrub the timeline
Step forward and backward, change speed, and inspect each operation in the log.
Built for clarity
See the algorithm, not just output
Replay how your data structures change. Understand and debug with a real execution trace.
Smooth UI while code runs
JavaScript runs in a Web Worker; Python uses Pyodide in its own worker so the page stays responsive.
Time-travel playback
Play, pause, step, replay, and tune playback speed—including keyboard shortcuts.
Benchmark JavaScript
Measure many runs with median, percentiles, and a chart. Benchmark mode is JS-only today.
Two languages, one playground
JavaScript
Runs locally in a worker—no round-trip for visualization. Full benchmark support.
Python
Real CPython via Pyodide in the browser—no install needed. Preloads when you open a Python solution; first visit downloads the runtime (cached afterward). Standard library only.
Try example playgrounds
Jump into a curated example—or open the full project browser.