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')
Frame 1
Your codegetDisplayName
/srv/app/lib/users.js:42:18
Frame 2
Your code<anonymous>
/srv/app/routes/profile.js:17:24
Frame 3
Third-partyLayer.handle
/srv/app/node_modules/express/lib/router/layer.js:95:5
Frame 4
Third-partynext
/srv/app/node_modules/express/lib/router/route.js:144:13
Frame 5
Third-partyRoute.dispatch
/srv/app/node_modules/express/lib/router/route.js:114:3
Frame 6
Third-party<anonymous>
/srv/app/node_modules/express/lib/router/index.js:284:15
Frame 7
Third-partyFunction.process_params
/srv/app/node_modules/express/lib/router/index.js:346:12
Frame 8
Third-partynext
/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
- 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.
- Read the auto-detected language label and the highlighted error type and message card before the frame list.
- Toggle the Your code, Third-party, Runtime, and Anonymous checkboxes to focus on the frames that matter for the bug at hand.
- Set Trim path prefix to your project root or deployment directory so the remaining paths read as short module names.
- 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
JSON Formatter
Format, minify, and validate JSON in your browser.
Open tool
DeveloperJavaScript Formatter
Beautify minified or dense JavaScript with configurable indent, quotes, and semicolons.
Open tool
DeveloperJWT Decoder
Decode header, payload, and claims of a JWT with expiry checks.
Open tool
DeveloperRegex Tester
Live regex testing with highlights, capture groups, and replacement preview.
Open tool
DeveloperURL Parser
Break a URL into protocol, host, path, query params, and fragment with decoded values.
Open tool
DeveloperJSON Diff Checker
Structural compare with paths for added, removed, and changed values.
Open tool