Framework-agnostic, micro-library for getting stack traces in all web browsers


A JavaScript tool that allows you to debug your JavaScript by giving you a stack trace of function calls leading to an error (or any condition you specify)


Just include stacktrace.js file on your page, and call it like so:

<script type="text/javascript" src=""></script>
<script type="text/javascript">
    // your code...
    var trace = printStackTrace();
    alert(trace.join('\n\n')); // Output however you want!
    // more code of yours...

You can also pass in your own Error to get a stacktrace not available in IE or Safari 5-

<script type="text/javascript" src=""></script>
<script type="text/javascript">
    try {
        // error producing code
    } catch(e) {
        var trace = printStackTrace({e: e});
        alert('Error!\n' + 'Message: ' + e.message + '\nStack trace:\n' + trace.join('\n'));
        // do something else with error

Note that error message is not included in stack trace.

Bookmarklet available on the project home page.

Function Instrumentation

You can now have any (public or privileged) function give you a stacktrace when it is called:

function logStackTrace(stack) {
var p = new printStackTrace.implementation();
p.instrumentFunction(this, 'baz', logStackTrace);

function foo() {
    var a = 1;
function bar() {
foo(); //Will log a stacktrace when 'baz()' is called containing 'foo()'!

p.deinstrumentFunction(this, 'baz'); //Remove function instrumentation

Get stacktrace.js

npm install stacktrace-js
bower install stacktrace-js
component install stacktrace.js

Browser Support

It is currently tested and working on:


This project is made possible due to the efforts of these fine people: