Zero Signup ToolsFree browser tools

Developer Tools

Stack Trace Beautifier

Parse and clean stack traces from Node, Chrome, Firefox, Python, Java, Ruby, Go, .NET, and PHP. Filter noise, trim paths, copy a tidy version.

Stack Trace Beautifier

A stringified trace with literal \n sequences is unescaped automatically.

Parsed trace

Detected as V8 (Chrome / Node.js / Edge). 9 frames total.

Error

TypeError

Cannot read properties of undefined (reading 'name')

  1. Frame 1

    Your code

    getDisplayName

    /srv/app/lib/users.js:42:18

  2. Frame 2

    Your code

    <anonymous>

    /srv/app/routes/profile.js:17:24

  3. Frame 3

    Third-party

    Layer.handle

    /srv/app/node_modules/express/lib/router/layer.js:95:5

  4. Frame 4

    Third-party

    next

    /srv/app/node_modules/express/lib/router/route.js:144:13

  5. Frame 5

    Third-party

    Route.dispatch

    /srv/app/node_modules/express/lib/router/route.js:114:3

  6. Frame 6

    Third-party

    <anonymous>

    /srv/app/node_modules/express/lib/router/index.js:284:15

  7. Frame 7

    Third-party

    Function.process_params

    /srv/app/node_modules/express/lib/router/index.js:346:12

  8. Frame 8

    Third-party

    next

    /srv/app/node_modules/express/lib/router/index.js:280:10

Filter frames

Show or hide frames by classification. Filters apply to both the rendered list and the cleaned output.

Remove a leading absolute path from every file location so the remaining path is easier to read.

Tip: paste the project root or the deployment directory.

Cleaned output

Plain text version of the visible frames in the canonical "at function (file:line:col)" shape for issues and chat.

TypeError: Cannot read properties of undefined (reading 'name')
  at getDisplayName (/srv/app/lib/users.js:42:18)
  at <anonymous> (/srv/app/routes/profile.js:17:24)
  at Layer.handle (/srv/app/node_modules/express/lib/router/layer.js:95:5)
  at next (/srv/app/node_modules/express/lib/router/route.js:144:13)
  at Route.dispatch (/srv/app/node_modules/express/lib/router/route.js:114:3)
  at <anonymous> (/srv/app/node_modules/express/lib/router/index.js:284:15)
  at Function.process_params (/srv/app/node_modules/express/lib/router/index.js:346:12)
  at next (/srv/app/node_modules/express/lib/router/index.js:280:10)

All parsing runs in your browser. The trace you paste is never uploaded.

How to use

  1. Paste a raw stack trace into the input area, or pick a sample from Node.js, Firefox, Python, Java, or Go to see the formatter in action.
  2. Read the auto-detected language label and the highlighted error type and message card before the frame list.
  3. Toggle the Your code, Third-party, Runtime, and Anonymous checkboxes to focus on the frames that matter for the bug at hand.
  4. Set Trim path prefix to your project root or deployment directory so the remaining paths read as short module names.
  5. Click Copy cleaned to grab the trimmed, classified trace in plain text and paste it into a GitHub issue, Slack message, or Linear ticket.

About this tool

Stack Trace Beautifier turns the wall of error text that runtimes spit out into a readable, scannable list of frames. Paste a stack trace from Node.js or Chrome (V8), Firefox or Safari (SpiderMonkey and JavaScriptCore), Python (CPython tracebacks with File line, function header, and the inline source line), Java, Kotlin, or Scala on the JVM (including frames for Native Method, Unknown Source, and Java reflection wrappers), Ruby (MRI from and call-site frames), Go (panic header plus goroutine stacks with goroutine 1 running and the indented file.go:line entries), .NET (C#, F#, VB stack traces with or without line numbers), or PHP (numbered hash frames with file, line, and class arrow method). The tool auto-detects the format from the text, captures the leading error type and message into a dedicated header card (so the cause stays separated from the location list), and renders every frame with the function or method name, the source file, line and column where available, and a one-tap badge that classifies the frame as Your code, Third party (node_modules, vendor, site-packages, gems), Runtime and native (internal/, java.*, javax.*, sun.*, System.*, Microsoft.*, /usr/lib/python), or Anonymous. Four checkbox filters hide or surface frame classes so the noise from React internals, Express middleware, Webpack runtime, JVM reflection, the .NET base class library, or the Python standard library disappears without losing the trace itself; a Trim path prefix field strips a deployment root or a project directory off every file location so the remaining path is short enough to share. A Cleaned output panel renders the visible frames in the canonical at function (file:line:col) shape that GitHub, Slack, Linear, and Sentry render well, ready to copy into a bug report. Stringified stack traces (the kind that arrive inside a JSON log line with literal backslash n sequences instead of real newlines) are unescaped automatically so they parse the first time. Useful for triaging production logs where the noisy frames hide the actual bug, for sharing a clean repro in a chat or ticket, for teaching new engineers how to read a trace without learning every framework's noise pattern, and for normalising traces from different runtimes into a single comparable shape. All parsing runs locally in your browser. The text you paste is never uploaded.

Free to use. Works in your browser. No signup, no login.

Related tools

You may also like

All tools
All toolsDeveloper Tools