Skip to content
Grammar
ECMAScript
Deadline
2,000 ms
Runtime
Browser

Inspect JavaScript lexical scopes and bindings

Map parser-derived scopes to their own bindings, references, and constant violations.

Local processingNo sign-upNever executed

Input

Nested functions and blocks make scope relationships easiest to see.

Local

Scope report

Submit the example or replace it with your own input. Source is parsed but never executed.

What this tool proves

Explicit static behavior

Bindings belong to lexical scopes, not simply lines. The report keeps scope parentage and binding facts together so shadowing remains visible.

Lexical binding structure is distinct from runtime state

Bindings belong to lexical scopes, not simply lines. The report keeps scope parentage and binding facts together so shadowing remains visible.

Reference and violation counts come from Babel traversal. They are static facts and do not predict values or control flow.

Static analysis has a deliberate safety boundary

Tool Swim parses source as standard ECMAScript inside a disposable Web Worker with a 2,000 ms deadline. It never calls eval, Function, imported modules, or user code.

Source and results stay in the current browser tab. The public tool makes no API request, stores no preset, and does not require an account or telemetry.

Primary references

Questions and answers

Related JavaScript tools