diff --git a/core/modules/user/user.js b/core/modules/user/user.js
index 82d165c..5024d8e 100644
--- a/core/modules/user/user.js
+++ b/core/modules/user/user.js
@@ -81,6 +81,39 @@
     }
   };
 
+  Drupal.behaviors.showPassword = {
+    attach: function (context) {
+      // Create the checkbox.
+      var showPassword = $('<label class="password-toggle"><input type="checkbox" />' + Drupal.t('Show password') + '</label>');
+      // Add click handler to checkboxes.
+      $(':checkbox', showPassword).click(function () {
+        var orig;
+        var copy;
+        var wrap;
+        if ($(this).is(':checked')) {
+          // Copy original field and convert it to a simple textfield.
+          orig = $(this).parent().parent().find(':password');
+          copy = $('<input type="text" />');
+        }
+        else {
+          // Copy original field and convert it to a password field.
+          orig = $(this).parent().parent().find('.show-password');
+          copy = $('<input type="password" />');
+        }
+        // Replace currently displayed field with the modified copy and re-assign
+        // all attributes. Thanks to IE we have to go this way.
+        $(copy).attr('id', $(orig).attr('id'));
+        $(copy).attr('class', $(orig).attr('class'));
+        $(copy).attr('size', $(orig).attr('size'));
+        $(copy).attr('maxlength', $(orig).attr('maxlength'));
+        $(copy).attr('name', $(orig).attr('name'));
+        $(orig).replaceWith($(copy).toggleClass('show-password').val($(orig).val()));
+      });
+      // Add checkbox to all password field on the current page.
+      showPassword.insertAfter($(':password', context));
+    }
+  };
+
   /**
    * Evaluate the strength of a user's password.
    *
