diff --git a/pd/nw/index.js b/pd/nw/index.js
index 5554311c1dd87fe80011f7776f16cf7b4199b833..16b78edc635fc2832edce57588b627f96b4b932e 100644
--- a/pd/nw/index.js
+++ b/pd/nw/index.js
@@ -445,6 +445,10 @@ function nw_create_pd_window_menus(gui, w) {
             }
         }
     });
+    minit(m.edit.clear_console, {
+        enabled: true,
+        click: pdgui.clear_console
+    });
     if (osx) {
         minit(m.edit.reselect, { enabled: false });
     }
@@ -455,12 +459,6 @@ function nw_create_pd_window_menus(gui, w) {
         minit(m.edit.font, { enabled: false });
         minit(m.edit.cordinspector, { enabled: false });
     }
-    minit(m.edit.clear_console, {
-        click: function() {
-            var container = w.document.getElementById("p1");
-            container.textContent = "";
-        }
-    });
     minit(m.edit.find, {
         click: function () {
             var find_bar = w.document.getElementById("console_find"),
diff --git a/pd/nw/pd_canvas.js b/pd/nw/pd_canvas.js
index a6d5dc94e5835bf1fb32d50eda30656faf2c6983..33b29c9fccfbddf312c5063c2fd9e55c974b687a 100644
--- a/pd/nw/pd_canvas.js
+++ b/pd/nw/pd_canvas.js
@@ -822,9 +822,13 @@ function nw_create_patch_window_menus(gui, w, name) {
             }
         }
     });
+    minit(m.edit.clear_console, {
+        enabled: true,
+        click: pdgui.clear_console
+    });
     minit(m.edit.reselect, {
         enabled: true,
-        click: function () { pdgui.pdsend(name, "reselect"); }
+        click: function() { pdgui.pdsend(name, "reselect"); }
     });
     minit(m.edit.tidyup, {
         enabled: true,
diff --git a/pd/nw/pd_menus.js b/pd/nw/pd_menus.js
index 9f7b76f76492ad1c22fee4295751042439c56546..17701b5678d256a194796775776451b709748455 100644
--- a/pd/nw/pd_menus.js
+++ b/pd/nw/pd_menus.js
@@ -158,13 +158,13 @@ function create_menu(gui, type) {
         }));
     }
     editMenu.append(new gui.MenuItem({ type: "separator" }));
-    if (!canvas_menu) {
-        editMenu.append(m.edit.clear_console = new gui.MenuItem({
-            label: l("menu.clear_console"),
-            tooltip: l("menu.clear_console")
-        }));
+    editMenu.append(m.edit.clear_console = new gui.MenuItem({
+        label: l("menu.clear_console"),
+        tooltip: l("menu.clear_console"),
+        key: "l",
+        modifiers: "shift+" + cmd_or_ctrl
+    }));
         editMenu.append(new gui.MenuItem({ type: "separator" }));
-    }
     if (canvas_menu) {
         editMenu.append(m.edit.tidyup = new gui.MenuItem({
             label: l("menu.tidyup"),
diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js
index c14f280d0422303202694cf2e105ccf140596d15..89c1bd3dc6fbf7a8c65554680f7e72d4bcc10fcd 100644
--- a/pd/nw/pdgui.js
+++ b/pd/nw/pdgui.js
@@ -315,6 +315,13 @@ function gui_post_error(objectid, loglevel, errormsg) {
     }
 }
 
+function clear_console() {
+    var container = pd_window.document.getElementById("p1");
+    container.textContent = "";
+}
+
+exports.clear_console = clear_console;
+
 // convert canvas dimensions to old tcl/tk geometry
 // string format. Unfortunately this is exposed (and
 // documented) to the user with the "relocate" message