Stack Trace Formatter

Paste a stack trace from Node, V8 / Chrome, Firefox, Java, Python, Go, or Rust — the page parses every frame, classifies it (call, init, async, eval, global), and re-renders the trace in runtime-native shape or as a Markdown bullet list for chat paste. Live, in your browser, no upload.

unknown 0 frames
Try an example:
How it works

The parser uses per-runtime regex patterns to extract every line into a structured frame — function name, file, line, column — and a runtime tag. Lines that do not match the active runtime's frame pattern are surfaced as a message (e.g. the TypeError: bad input header above a V8 stack).

Runtimes supported

  • Node / V8 / Chrome / Safari (modern) — the canonical at FuncName (file:line:col) shape, including Object.<anonymous>, new Foo, built-in frames like Module._compile (module.js:570:32), and anonymous /path/to.js:5:7 lines.
  • Firefox / SpiderMonkeyfunc@file:line:col, with asyncFunction tagged as async and global code / eval code recognised.
  • Java / JVMat pkg.Cls.method(File.java:N), tagging <init> as init and <clinit> as clinit.
  • Python / CPythonTraceback (most recent call last) followed by File "x.py", line N, in func lines, with the trailing ValueError: … captured as the message.
  • Go panicgoroutine 1 [running]: plus two-line func() / /path:NN +0xoff pairs, including the created by … tail frame.
  • Rust panicthread 'main' panicked at '…', src/main.rs:10:5 followed by stack backtrace: and numbered N: name / at file:line pairs.

Output styles

The Runtime-native text button re-emits the stack in the original runtime's source style (V8 → at Func (file:line:col), Firefox → func@file:line:col, Python → File "x.py", line N, in func, ...). The Markdown list button re-emits each frame as a Markdown bullet list with bold runtime markers and inline-code names — handy for pasting into chat or issues. Trim file paths keeps only the last two path segments in the rendered output for readability. Untick it to see full paths.