Source Map Explorer

Paste the source map JSON, then look up a position in the generated code. The result reports the mapped source file, line and column.

Runs locally in your browser
This tool processes all data locally in your browser.
Source map JSONPaste a standard v3 source map. Look up a generated line and column without uploading source files.
Sources
Look up

How to look up a generated position in a source map

Paste a version 3 source map and press Analyze locally. The mappings string is decoded with base64 VLQ inside the page; nothing is fetched, the generated file is not needed, and the map never leaves the browser.

The Source map report shows version, file, sourceRoot, the number of sources, names and decoded mappings, a tile for each count, and one row per source with the size of its embedded sourcesContent.

  1. Paste the map into the Source map JSON box, or press Load example for a five-segment map of src/index.ts with one embedded file and the name "answer".
  2. Press Analyze locally. Load example analyzes the sample right away.
  3. Check the three tiles: how many sources and names the map declares, and how many mappings the VLQ string decodes to.
  4. Type a generated line (starting at 1) and a generated column (starting at 0) in Look up and press Look up: the result names the original file, its line, its column and the name when the segment carries one.
  5. Read the Sources table: one row per source, where Content gives the embedded text size in bytes or "not embedded" when the map carries no sourcesContent. Copy puts the report JSON on the clipboard.

What the report counts and what the lookup returns

What the mappings decode to

Each line of the mappings string is a comma-separated list of base64 VLQ segments, and the values inside a segment are deltas: the generated column restarts on every line, while the source, original line, original column and name keep running across the whole file.

A segment with only a generated column carries no original position: it moves the column forward and does not enter the decoded count. Everything else is shown as written, so the number in the report is the count of segments that really carry a position.

What the lookup returns

The lookup takes the mapping with the greatest generated column that is still less than or equal to the column you typed, on the line you typed. That is the segment a browser devtool would use for the same position.

Lines count from 1 and columns from 0, the same as a browser console and the mappings string itself. When the line has no segment at or before that column, the tool says so instead of guessing a neighbouring line.

Limits

The explorer reads the map text only. It does not download the generated file or the original sources, does not check that a map matches a build, and does not rebuild files from sourcesContent - it shows the strings that are embedded in the map.

Index maps (a sections array) are not decoded: paste one of the section maps instead. sourceRoot is reported but not prepended to the rows, and a map whose mappings string is empty or whose VLQ is malformed is reported rather than repaired.

Recent tools: