diff --git src/wp-admin/css/login.css src/wp-admin/css/login.css
index 5da174cadc..002b931922 100644
--- src/wp-admin/css/login.css
+++ src/wp-admin/css/login.css
@@ -74,7 +74,8 @@ p {
 }
 
 .login .password-input-wrapper {
-    display: table;
+	display: table;
+	margin: 2px 0 16px 0;
 }
 
 .login .input.password-input {
@@ -87,9 +88,21 @@ p {
 }
 
 .login .button.button-secondary {
-    display: table-cell;
-    border-radius: 0;
-    vertical-align: middle;
+	display: table-cell;
+	border-radius: 0;
+	box-shadow: none;
+	height: 100%;
+	vertical-align: middle;
+}
+
+.login .wp-hide-pw-wrap {
+	display: table-cell;
+	vertical-align: middle;
+	height: 28px;
+}
+
+.no-js .hide-if-no-js{
+	display: none;
 }
 
 .login form {
@@ -220,7 +233,7 @@ p {
 
 .login #pass-strength-result {
 	font-weight: 600;
-	margin: -1px 5px 16px 0;
+	margin: -17px 5px 16px 0;
 	padding: 6px 5px;
 	text-align: center;
 	width: 100%;
diff --git src/wp-admin/js/user-profile.js src/wp-admin/js/user-profile.js
index e95a42844e..adb1ba7d36 100644
--- src/wp-admin/js/user-profile.js
+++ src/wp-admin/js/user-profile.js
@@ -5,8 +5,6 @@
 		$pass1Row,
 		$pass1Wrap,
 		$pass1,
-		$pass1Text,
-		$pass1Label,
 		$pass2,
 		$weakRow,
 		$weakCheckbox,
@@ -44,7 +42,7 @@
 		}
 
 		if ( 1 !== parseInt( $toggleButton.data( 'start-masked' ), 10 ) ) {
-			$pass1Wrap.addClass( 'show-password' );
+			$pass1.attr( 'type', 'text' );
 		} else {
 			$toggleButton.trigger( 'click' );
 		}
@@ -58,26 +56,6 @@
 
 		$pass1Wrap = $pass1.parent();
 
-		$pass1Text = $( '<input type="text"/>' )
-			.attr( {
-				'id':           'pass1-text',
-				'name':         'pass1-text',
-				'autocomplete': 'off'
-			} )
-			.addClass( $pass1[0].className )
-			.data( 'pw', $pass1.data( 'pw' ) )
-			.val( $pass1.val() )
-			.on( inputEvent, function () {
-				if ( $pass1Text.val() === currentPass ) {
-					return;
-				}
-				$pass2.val( $pass1Text.val() );
-				$pass1.val( $pass1Text.val() ).trigger( 'pwupdate' );
-				currentPass = $pass1Text.val();
-			} );
-
-		$pass1.after( $pass1Text );
-
 		if ( 1 === parseInt( $pass1.data( 'reveal' ), 10 ) ) {
 			generatePassword();
 		}
@@ -88,47 +66,30 @@
 			}
 
 			currentPass = $pass1.val();
-			if ( $pass1Text.val() !== currentPass ) {
-				$pass1Text.val( currentPass );
-			}
-			$pass1.add( $pass1Text ).removeClass( 'short bad good strong' );
+
+			$pass1.removeClass( 'short bad good strong' );
 			showOrHideWeakPasswordCheckbox();
 		} );
 	}
 
-	function resetToggle() {
-		$toggleButton
-			.data( 'toggle', 0 )
-			.attr({
-				'aria-label': userProfileL10n.ariaHide
-			})
-			.find( '.text' )
-				.text( userProfileL10n.hide )
-			.end()
-			.find( '.dashicons' )
-				.removeClass( 'dashicons-visibility' )
-				.addClass( 'dashicons-hidden' );
-
-		$pass1Text.focus();
-
-		$pass1Label.attr( 'for', 'pass1-text' );
-	}
-
 	function bindToggleButton() {
 		$toggleButton = $pass1Row.find('.wp-hide-pw');
 		$toggleButton.show().on( 'click', function () {
-			if ( 1 === parseInt( $toggleButton.data( 'toggle' ), 10 ) ) {
-				$pass1Wrap.addClass( 'show-password' );
-
-				resetToggle();
-
-				if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) {
-					$pass1Text[0].setSelectionRange( 0, 100 );
-				}
+			if ( 'password' === $pass1.attr( 'type' ) ) {
+				$pass1.attr( 'type', 'text' );
+				$toggleButton
+					.attr({
+						'aria-label': userProfileL10n.ariaHide
+					})
+					.find( '.text' )
+						.text( userProfileL10n.hide )
+					.end()
+					.find( '.dashicons' )
+						.removeClass( 'dashicons-visibility' )
+						.addClass( 'dashicons-hidden' );
 			} else {
-				$pass1Wrap.removeClass( 'show-password' );
+				$pass1.attr( 'type', 'password' );
 				$toggleButton
-					.data( 'toggle', 1 )
 					.attr({
 						'aria-label': userProfileL10n.ariaShow
 					})
@@ -139,14 +100,11 @@
 						.removeClass('dashicons-hidden')
 						.addClass('dashicons-visibility');
 
-				$pass1.focus();
-
-				$pass1Label.attr( 'for', 'pass1' );
-
 				if ( ! _.isUndefined( $pass1[0].setSelectionRange ) ) {
 					$pass1[0].setSelectionRange( 0, 100 );
 				}
 			}
+			$pass1.focus();
 		});
 	}
 
@@ -155,8 +113,7 @@
 			$generateButton,
 			$cancelButton;
 
-		$pass1Row = $('.user-pass1-wrap');
-		$pass1Label = $pass1Row.find('th label').attr( 'for', 'pass1-text' );
+		$pass1Row = $('.user-pass1-wrap, .user-pass-wrap');
 
 		// hide this
 		$('.user-pass2-wrap').hide();
@@ -176,6 +133,9 @@
 		$pass1 = $('#pass1');
 		if ( $pass1.length ) {
 			bindPass1();
+		} else {
+			// Password field for the login form
+			$pass1 = $('#user_pass');
 		}
 
 		/**
@@ -197,7 +157,6 @@
 		if ( $pass1.is( ':hidden' ) ) {
 			$pass1.prop( 'disabled', true );
 			$pass2.prop( 'disabled', true );
-			$pass1Text.prop( 'disabled', true );
 		}
 
 		$passwordWrapper = $pass1Row.find( '.wp-pwd' );
@@ -219,27 +178,13 @@
 			// Enable the inputs when showing.
 			$pass1.attr( 'disabled', false );
 			$pass2.attr( 'disabled', false );
-			$pass1Text.attr( 'disabled', false );
-
-			if ( $pass1Text.val().length === 0 ) {
-				generatePassword();
-			}
 
-			_.defer( function() {
-				$pass1Text.focus();
-				if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) {
-					$pass1Text[0].setSelectionRange( 0, 100 );
-				}
-			}, 0 );
 		} );
 
 		$cancelButton = $pass1Row.find( 'button.wp-cancel-pw' );
 		$cancelButton.on( 'click', function () {
 			updateLock = false;
 
-			// Clear any entered password.
-			$pass1Text.val( '' );
-
 			// Generate a new password.
 			wp.ajax.post( 'generate-password' )
 				.done( function( data ) {
@@ -256,7 +201,6 @@
 			// Disable the inputs when hiding to prevent autofill and submission.
 			$pass1.prop( 'disabled', true );
 			$pass2.prop( 'disabled', true );
-			$pass1Text.prop( 'disabled', true );
 
 			resetToggle();
 
@@ -273,7 +217,6 @@
 			$pass1.prop( 'disabled', false );
 			$pass2.prop( 'disabled', false );
 			$pass2.val( $pass1.val() );
-			$pass1Wrap.removeClass( 'show-password' );
 		});
 	}
 
@@ -313,7 +256,7 @@
 		var passStrength = $('#pass-strength-result')[0];
 
 		if ( passStrength.className ) {
-			$pass1.add( $pass1Text ).addClass( passStrength.className );
+			$pass1.addClass( passStrength.className );
 			if ( $( passStrength ).is( '.short, .bad' ) ) {
 				if ( ! $weakCheckbox.prop( 'checked' ) ) {
 					$submitButtons.prop( 'disabled', true );
diff --git src/wp-login.php src/wp-login.php
index 6415b1544a..4174851c56 100644
--- src/wp-login.php
+++ src/wp-login.php
@@ -175,7 +175,10 @@ function login_header( $title = 'Log In', $message = '', $wp_error = '' ) {
 
 	?>
 	</head>
-	<body class="login <?php echo esc_attr( implode( ' ', $classes ) ); ?>">
+	<body class="login no-js <?php echo esc_attr( implode( ' ', $classes ) ); ?>">
+	<script type="text/javascript">
+		document.body.className = document.body.className.replace('no-js','js');
+	</script>
 	<?php
 	/**
 	 * Fires in the login page header after the body tag is opened.
@@ -601,10 +604,10 @@ switch ( $action ) {
 	?>
 
 	<form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post">
-	<p>
-		<label for="user_login" ><?php _e( 'Username or Email Address' ); ?><br />
-		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" /></label>
-	</p>
+	<div>
+		<label for="user_login" ><?php _e( 'Username or Email Address' ); ?></label>
+		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" />
+	</div>
 	<?php
 	/**
 	 * Fires inside the lostpassword form tags, before the hidden fields.
@@ -614,22 +617,22 @@ switch ( $action ) {
 	do_action( 'lostpassword_form' );
 	?>
 		<input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
-		<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Get New Password' ); ?>" /></p>
+		<div class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Get New Password' ); ?>" /></div>
 	</form>
 
-	<p id="nav">
-	<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
-	<?php
-	if ( get_option( 'users_can_register' ) ) :
-		$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
+	<div id="nav">
+		<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
+		<?php
+		if ( get_option( 'users_can_register' ) ) :
+			$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
 
-		echo esc_html( $login_link_separator );
+			echo esc_html( $login_link_separator );
 
-		/** This filter is documented in wp-includes/general-template.php */
-		echo apply_filters( 'register', $registration_url );
-	endif;
-	?>
-	</p>
+			/** This filter is documented in wp-includes/general-template.php */
+			echo apply_filters( 'register', $registration_url );
+		endif;
+		?>
+	</div>
 
 	<?php
 	login_footer( 'user_login' );
@@ -705,16 +708,20 @@ switch ( $action ) {
 	<input type="hidden" id="user_login" value="<?php echo esc_attr( $rp_login ); ?>" autocomplete="off" />
 
 	<div class="user-pass1-wrap">
-		<p>
-			<label for="pass1"><?php _e( 'New password' ); ?></label>
-		</p>
+
+		<label for="pass1"><?php _e( 'New password' ); ?></label>
 
 		<div class="wp-pwd">
 			<div class="password-input-wrapper">
 				<input type="password" data-reveal="1" data-pw="<?php echo esc_attr( wp_generate_password( 16 ) ); ?>" name="pass1" id="pass1" class="input password-input" size="24" value="" autocomplete="off" aria-describedby="pass-strength-result" />
-				<span class="button button-secondary wp-hide-pw hide-if-no-js">
-					<span class="dashicons dashicons-hidden"></span>
-				</span>
+
+				<div class="wp-hide-pw-wrap hide-if-no-js">
+					<button type="button" class="button button-secondary wp-hide-pw" data-toggle="0" aria-label="<?php esc_attr_e( 'Hide password' ); ?>">
+						<span class="dashicons dashicons-hidden"></span>
+						<span class="text"><?php _e( 'Hide' ); ?></span>
+					</button>
+				</div>
+
 			</div>
 			<div id="pass-strength-result" class="hide-if-no-js" aria-live="polite"><?php _e( 'Strength indicator' ); ?></div>
 		</div>
@@ -726,10 +733,10 @@ switch ( $action ) {
 		</div>
 	</div>
 
-	<p class="user-pass2-wrap">
-		<label for="pass2"><?php _e( 'Confirm new password' ); ?></label><br />
+	<div class="user-pass2-wrap">
+		<label for="pass2"><?php _e( 'Confirm new password' ); ?></label>
 		<input type="password" name="pass2" id="pass2" class="input" size="20" value="" autocomplete="off" />
-	</p>
+	</div>
 
 	<p class="description indicator-hint"><?php echo wp_get_password_hint(); ?></p>
 	<br class="clear" />
@@ -745,22 +752,22 @@ switch ( $action ) {
 	do_action( 'resetpass_form', $user );
 	?>
 	<input type="hidden" name="rp_key" value="<?php echo esc_attr( $rp_key ); ?>" />
-	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Reset Password' ); ?>" /></p>
+	<div class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Reset Password' ); ?>" /></div>
 	</form>
 
-	<p id="nav">
-	<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
-	<?php
-	if ( get_option( 'users_can_register' ) ) :
-		$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
+	<div id="nav">
+		<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
+		<?php
+		if ( get_option( 'users_can_register' ) ) :
+			$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
 
-		echo esc_html( $login_link_separator );
+			echo esc_html( $login_link_separator );
 
-		/** This filter is documented in wp-includes/general-template.php */
-		echo apply_filters( 'register', $registration_url );
-	endif;
-	?>
-	</p>
+			/** This filter is documented in wp-includes/general-template.php */
+			echo apply_filters( 'register', $registration_url );
+		endif;
+		?>
+	</div>
 
 	<?php
 	login_footer( 'user_pass' );
@@ -821,14 +828,14 @@ switch ( $action ) {
 		login_header( __( 'Registration Form' ), '<p class="message register">' . __( 'Register For This Site' ) . '</p>', $errors );
 	?>
 	<form name="registerform" id="registerform" action="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login_post' ) ); ?>" method="post" novalidate="novalidate">
-	<p>
-		<label for="user_login"><?php _e( 'Username' ); ?><br />
-		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( wp_unslash( $user_login ) ); ?>" size="20" autocapitalize="off" /></label>
-	</p>
-	<p>
-		<label for="user_email"><?php _e( 'Email' ); ?><br />
-		<input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( wp_unslash( $user_email ) ); ?>" size="25" /></label>
-	</p>
+	<div>
+		<label for="user_login"><?php _e( 'Username' ); ?></label>
+		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( wp_unslash( $user_login ) ); ?>" size="20" autocapitalize="off" />
+	</div>
+	<div>
+		<label for="user_email"><?php _e( 'Email' ); ?></label>
+		<input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( wp_unslash( $user_email ) ); ?>" size="25" />
+	</div>
 	<?php
 	/**
 	 * Fires following the 'Email' field in the user registration form.
@@ -840,14 +847,14 @@ switch ( $action ) {
 	<p id="reg_passmail"><?php _e( 'Registration confirmation will be emailed to you.' ); ?></p>
 	<br class="clear" />
 	<input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
-	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Register' ); ?>" /></p>
+	<div class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Register' ); ?>" /></div>
 	</form>
 
-	<p id="nav">
-	<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
-	<?php echo esc_html( $login_link_separator ); ?>
-	<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?' ); ?></a>
-	</p>
+	<div id="nav">
+		<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
+		<?php echo esc_html( $login_link_separator ); ?>
+		<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?' ); ?></a>
+	</div>
 
 	<?php
 	login_footer( 'user_login' );
@@ -1020,17 +1027,33 @@ switch ( $action ) {
 		} else {
 			$aria_describedby_error = '';
 		}
+
+		wp_enqueue_script( 'user-profile' );
 	?>
 
 	<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
-	<p>
-		<label for="user_login"><?php _e( 'Username or Email Address' ); ?><br />
-		<input type="text" name="log" id="user_login"<?php echo $aria_describedby_error; ?> class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" /></label>
-	</p>
-	<p>
-		<label for="user_pass"><?php _e( 'Password' ); ?><br />
-		<input type="password" name="pwd" id="user_pass"<?php echo $aria_describedby_error; ?> class="input" value="" size="20" /></label>
-	</p>
+	<div>
+		<label for="user_login"><?php _e( 'Username or Email Address' ); ?></label>
+		<input type="text" name="log" id="user_login"<?php echo $aria_describedby_error; ?> class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" />
+	</div>
+	<div class="user-pass-wrap">
+		<label for="user_pass"><?php _e( 'Password' ); ?></label>
+		<div class="wp-pwd">
+			<div class="password-input-wrapper">
+				<input type="password" name="pwd" id="user_pass"<?php echo $aria_describedby_error; ?> class="input password-input" value="" size="20" />
+				<div class="wp-hide-pw-wrap hide-if-no-js" style="
+				">
+					<button type="button" class="button button-secondary wp-hide-pw" data-toggle="0" aria-label="<?php esc_attr_e( 'Show password' ); ?>">
+						<span class="dashicons dashicons-visibility"></span>
+						<span class="text"><?php _e( 'Show' ); ?></span>
+					</button>
+				</div>
+
+			</div>
+		</div>
+
+	</div>
+
 	<?php
 	/**
 	 * Fires following the 'Password' field in the login form.
@@ -1039,8 +1062,8 @@ switch ( $action ) {
 	 */
 	do_action( 'login_form' );
 	?>
-	<p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" <?php checked( $rememberme ); ?> /> <?php esc_html_e( 'Remember Me' ); ?></label></p>
-	<p class="submit">
+	<div class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" <?php checked( $rememberme ); ?> /> <?php esc_html_e( 'Remember Me' ); ?></label></div>
+	<div class="submit">
 		<input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Log In' ); ?>" />
 	<?php	if ( $interim_login ) { ?>
 		<input type="hidden" name="interim-login" value="1" />
@@ -1051,25 +1074,25 @@ switch ( $action ) {
 		<input type="hidden" name="customize-login" value="1" />
 	<?php endif; ?>
 		<input type="hidden" name="testcookie" value="1" />
-	</p>
+	</div>
 	</form>
 
 	<?php if ( ! $interim_login ) { ?>
-	<p id="nav">
-	<?php
-	if ( ! isset( $_GET['checkemail'] ) || ! in_array( $_GET['checkemail'], array( 'confirm', 'newpass' ) ) ) :
-		if ( get_option( 'users_can_register' ) ) :
-			$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
+	<div id="nav">
+		<?php
+		if ( ! isset( $_GET['checkemail'] ) || ! in_array( $_GET['checkemail'], array( 'confirm', 'newpass' ) ) ) :
+			if ( get_option( 'users_can_register' ) ) :
+				$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
 
-			/** This filter is documented in wp-includes/general-template.php */
-			echo apply_filters( 'register', $registration_url );
+				/** This filter is documented in wp-includes/general-template.php */
+				echo apply_filters( 'register', $registration_url );
 
-			echo esc_html( $login_link_separator );
-		endif;
-		?>
-		<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?' ); ?></a>
-	<?php endif; ?>
-	</p>
+				echo esc_html( $login_link_separator );
+			endif;
+			?>
+			<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?' ); ?></a>
+		<?php endif; ?>
+	</div>
 	<?php } ?>
 
 	<script type="text/javascript">
