Index: src/wp-admin/css/forms.css
===================================================================
--- src/wp-admin/css/forms.css	(revision 32902)
+++ src/wp-admin/css/forms.css	(working copy)
@@ -401,6 +401,11 @@
 	color: #777;
 }
 
+button.wp-hide-pw > .dashicons {
+	position: relative;
+	top: 3px;
+}
+
 label,
 #your-profile label + a {
 	vertical-align: middle;
@@ -434,34 +439,58 @@
 #pass-strength-result {
 	background-color: #eee;
 	border: 1px solid #ddd;
-	float: left;
-	margin: 13px 5px 5px 1px;
+	margin: -2px 5px 5px 1px;
 	padding: 3px 5px;
 	text-align: center;
-	width: 200px;
-	display: none;
+	width: 25em;
+	box-sizing: border-box;
+	opacity: 0;
 }
 
 #pass-strength-result.short {
+	opacity: 1;
 	background-color: #ffa0a0;
 	border-color: #f04040;
 }
 
 #pass-strength-result.bad {
+	opacity: 1;
 	background-color: #ffb78c;
 	border-color: #ff853c;
 }
 
 #pass-strength-result.good {
+	opacity: 1;
 	background-color: #ffec8b;
 	border-color: #fc0;
 }
 
 #pass-strength-result.strong {
+	opacity: 1;
 	background-color: #c3ff88;
 	border-color: #8dff1c;
 }
 
+#pass1.short {
+	border-color: #f04040;
+}
+
+#pass1.bad {
+	border-color: #ff853c;
+}
+
+#pass1.good {
+	border-color: #fc0;
+}
+
+#pass1.strong {
+	border-color: #8dff1c;
+}
+
+.pw-weak{
+	display:none;
+}
+
 .indicator-hint {
 	padding-top: 8px;
 }
Index: src/wp-admin/js/user-profile.js
===================================================================
--- src/wp-admin/js/user-profile.js	(revision 32902)
+++ src/wp-admin/js/user-profile.js	(working copy)
@@ -1,6 +1,104 @@
 /* global ajaxurl, pwsL10n */
 (function($){
+	$(function(){
+		var pw_new = $('.user-pass1-wrap'),
+			pw_line = pw_new.find('.wp-pwd'),
+			pw_field = $('#pass1'),
+			pw_field2 = $('#pass2'),
+			pw_togglebtn = pw_new.find('.wp-hide-pw'),
+			pw_generatebtn = pw_new.find('button.wp-generate-pw'),
+			pw_2 = $('.user-pass2-wrap'),
+			parentform = pw_new.closest('form'),
+			pw_strength = $('#pass-strength-result'),
+			pw_submitbtn_edit = $('#submit'),
+			pw_submitbtn_new = $( '#createusersub' ),
+			pw_checkbox = $('.pw-checkbox'),
+			pw_weak = $('.pw-weak')
+		;
 
+		pw_2.hide();
+		pw_line.hide();
+		pw_togglebtn.show();
+		pw_generatebtn.show();
+
+		parentform.on('submit', function(){
+			pw_field2.val( pw_field.val() );
+			pw_field.attr('type', 'password');
+		});
+
+
+		pw_field.on('input propertychange', function(){
+			setTimeout( function(){
+				var cssClass = pw_strength.attr('class');
+				console.log( cssClass );
+				pw_field.removeClass( 'short bad good strong' );
+				if ( 'undefined' !== typeof cssClass ) {
+					pw_field.addClass( cssClass );
+					if ( cssClass == 'short' || cssClass == 'bad' ) {
+						if ( ! pw_checkbox.attr( 'checked' ) ) {
+							pw_submitbtn_new.attr( 'disabled','disabled' );
+							pw_submitbtn_edit.attr( 'disabled','disabled' );
+						}
+						pw_weak.show();
+					} else {
+						pw_submitbtn_new.removeAttr( 'disabled' );
+						pw_submitbtn_edit.removeAttr( 'disabled' );
+						pw_weak.hide();
+					}
+				}
+			}, 1 );
+		} );
+
+		pw_checkbox.change( function() {
+			if ( pw_checkbox.attr( 'checked' ) ) {
+				pw_submitbtn_new.removeAttr( 'disabled' );
+				pw_submitbtn_edit.removeAttr( 'disabled' );
+			} else {
+				pw_submitbtn_new.attr( 'disabled','disabled' );
+				pw_submitbtn_edit.attr( 'disabled','disabled' );
+			}
+		} );
+
+		/**
+		 * Fix a LastPass mismatch issue, LastPass only changes pass2.
+		 *
+		 * This fixes the issue by copying any changes from the hidden
+		 * pass2 field to the pass1 field.
+		 */
+		pw_field2.on( 'input propertychange', function() {
+			pw_field.val( pw_field2.val() );
+			pw_field.trigger( 'propertychange' );
+		} );
+
+		pw_new.on( 'click', 'button.wp-generate-pw', function() {
+			pw_generatebtn.hide();
+			pw_line.show();
+			pw_field.val( pw_field.data( 'pw' ) ).attr( 'type', 'text' );
+			pw_field.trigger( 'propertychange' );
+			pw_field.focus();
+			pw_field[0].setSelectionRange(100, 100);
+		});
+
+		pw_togglebtn.on( 'click', function() {
+			var show = pw_togglebtn.attr( 'data-toggle' );
+			if ( show == 1 ) {
+				pw_field.attr( 'type', 'text' );
+				pw_togglebtn.attr( 'data-toggle', 0 )
+					.find( '.text' )
+						.text( 'hide' )
+				;
+			} else {
+				pw_field.attr( 'type', 'password' );
+				pw_togglebtn.attr( 'data-toggle', 1 )
+					.find( '.text' )
+						.text( 'show' )
+				;
+			}
+			pw_field.focus();
+			pw_field[0].setSelectionRange(100, 100);
+		});
+	});
+
 	function check_pass_strength() {
 		var pass1 = $('#pass1').val(), pass2 = $('#pass2').val(), strength;
 
Index: src/wp-admin/user-edit.php
===================================================================
--- src/wp-admin/user-edit.php	(revision 32902)
+++ src/wp-admin/user-edit.php	(working copy)
@@ -462,28 +462,34 @@
 	<th><label for="pass1"><?php _e( 'New Password' ); ?></label></th>
 	<td>
 		<input class="hidden" value=" " /><!-- #24364 workaround -->
-		<input type="password" name="pass1" id="pass1" class="regular-text" size="16" value="" autocomplete="off" />
-		<p class="description"><?php _e( 'If you would like to change the password type a new one. Otherwise leave this blank.' ); ?></p>
+		<button type="button" class="button button-secondary wp-generate-pw hide-if-no-js"><?php _e( 'Generate new password' ); ?></button>
+		<div class="wp-pwd hide-if-js">
+			<input type="password" name="pass1" id="pass1" class="regular-text" value="" autocomplete="off" data-pw="<?php echo esc_attr( wp_generate_password( 24 ) ); ?>" /> 
+			<button type="button" class="button button-secondary wp-hide-pw hide-if-no-js" data-toggle="0">
+				<span class="dashicons dashicons-visibility"></span>
+				<span class="text">hide</span>
+			</button>
+			<div style="display:none" id="pass-strength-result"></div>
+		</div>
 	</td>
 </tr>
-<tr class="user-pass2-wrap">
+<tr class="user-pass2-wrap hide-if-js">
 	<th scope="row"><label for="pass2"><?php _e( 'Repeat New Password' ); ?></label></th>
 	<td>
-	<input name="pass2" type="password" id="pass2" class="regular-text" size="16" value="" autocomplete="off" />
+	<input name="pass2" type="password" id="pass2" class="regular-text" value="" autocomplete="off" />
 	<p class="description"><?php _e( 'Type your new password again.' ); ?></p>
-	<br />
-	<div id="pass-strength-result"><?php _e( 'Strength indicator' ); ?></div>
-	<p class="description indicator-hint"><?php echo wp_get_password_hint(); ?></p>
 	</td>
 </tr>
+<tr class="pw-weak">
+	<th><label for="pw-weak"><?php _e( 'Confirm Password' ); ?></label></th>
+	<td>
+	<input type="checkbox" name="pw-weak" class="pw-checkbox" />
+	<?php _e( 'Confirm use of weak password.' ); ?>
+	</td>
+</tr>
 <?php endif; ?>
 
 <?php
-// This is a temporary hook for WordPress 4.3 development. Do not use it or document it.
-do_action( '__temp_password_field', $profileuser );
-?>
-
-<?php
 if ( IS_PROFILE_PAGE && count( $sessions->get_all() ) === 1 ) : ?>
 	<tr class="user-sessions-wrap hide-if-no-js">
 		<th>&nbsp;</th>
Index: src/wp-admin/user-new.php
===================================================================
--- src/wp-admin/user-new.php	(revision 32902)
+++ src/wp-admin/user-new.php	(working copy)
@@ -190,7 +190,7 @@
 );
 
 wp_enqueue_script('wp-ajax-response');
-wp_enqueue_script('user-profile');
+wp_enqueue_script( 'user-profile' );
 
 /**
  * Filter whether to enable user auto-complete for non-super admins in Multisite.
@@ -390,26 +390,44 @@
  * @param bool $show Whether to show the password fields. Default true.
  */
 if ( apply_filters( 'show_password_fields', true ) ) : ?>
-	<tr class="form-field form-required">
-		<th scope="row"><label for="pass1"><?php _e('Password'); ?> <span class="description"><?php /* translators: password input field */_e('(required)'); ?></span></label></th>
+	<tr class="form-field form-required user-pass1-wrap">
+		<th scope="row">
+			<label for="pass1">
+				<?php _e( 'Password' ); ?>
+				<span class="description"><?php /* translators: password input field */_e( '(required)' ); ?></span>
+			</label>
+		</th>
 		<td>
 			<input class="hidden" value=" " /><!-- #24364 workaround -->
-			<input name="pass1" type="password" id="pass1" autocomplete="off" />
+			<button type="button" class="button button-secondary wp-generate-pw hide-if-no-js"><?php _e( 'Show password' ); ?></button>
+			<div class="wp-pwd hide-if-js">
+				<?php $initial_password = wp_generate_password( 24 ); ?>
+				<input type="password" name="pass1" id="pass1" class="regular-text" value="<?php echo esc_attr( $initial_password ); ?>" autocomplete="off" data-pw="<?php echo esc_attr( $initial_password ); ?>" />
+				<button type="button" class="button button-secondary wp-hide-pw hide-if-no-js" data-toggle="0">
+					<span class="dashicons dashicons-visibility"></span>
+					<span class="text">hide</span>
+				</button>
+				<div style="display:none" id="pass-strength-result"></div> 
+			</div>
 		</td>
 	</tr>
-	<tr class="form-field form-required">
-		<th scope="row"><label for="pass2"><?php _e('Repeat Password'); ?> <span class="description"><?php /* translators: password input field */_e('(required)'); ?></span></label></th>
+	<tr class="form-field form-required user-pass2-wrap hide-if-js">
+		<th scope="row"><label for="pass2"><?php _e( 'Repeat Password' ); ?> <span class="description"><?php /* translators: password input field */_e('(required)'); ?></span></label></th>
 		<td>
 		<input name="pass2" type="password" id="pass2" autocomplete="off" />
-		<br />
-		<div id="pass-strength-result"><?php _e('Strength indicator'); ?></div>
-		<p class="description indicator-hint"><?php echo wp_get_password_hint(); ?></p>
 		</td>
 	</tr>
+	<tr class="pw-weak"> 
+		<th><label for="pw-weak"><?php _e( 'Confirm Password' ); ?></label></th> 
+		<td> 
+			<input type="checkbox" name="pw-weak" class="pw-checkbox" /> 
+			<?php _e( 'Confirm use of weak password.' ); ?> 
+		</td> 
+	</tr>
 	<tr>
-		<th scope="row"><?php _e('Send Password?') ?></th>
-		<td><label for="send_password"><input type="checkbox" name="send_password" id="send_password" value="1" <?php checked( $new_user_send_password ); ?> /> <?php _e('Send this password to the new user by email.'); ?></label></td>
-	</tr>
+		<th scope="row"><?php _e( 'Send Reset Link?' ) ?></th>
+		<td><label for="send_password"><input type="checkbox" name="send_password" id="send_password" value="1" <?php checked( $new_user_send_password ); ?> /> <?php _e( 'Send a password reset link to the new user by email.' ); ?></label>
+	</td>
 <?php endif; ?>
 <?php } // !is_multisite ?>
 	<tr class="form-field">
Index: src/wp-includes/default-constants.php
===================================================================
--- src/wp-includes/default-constants.php	(revision 32902)
+++ src/wp-includes/default-constants.php	(working copy)
@@ -80,6 +80,9 @@
 	if ( !defined('SHORTINIT') )
 		define('SHORTINIT', false);
 
+	// Constants for features added to WP that should short-circuit their plugin implementations
+	define( 'WP_FEATURE_BETTER_PASSWORDS', true );
+
 	// Constants for expressing human-readable intervals
 	// in their respective number of seconds.
 	define( 'MINUTE_IN_SECONDS', 60 );
Index: src/wp-includes/script-loader.php
===================================================================
--- src/wp-includes/script-loader.php	(revision 32902)
+++ src/wp-includes/script-loader.php	(working copy)
@@ -365,7 +365,7 @@
 
 	$scripts->add( 'password-strength-meter', "/wp-admin/js/password-strength-meter$suffix.js", array( 'jquery', 'zxcvbn-async' ), false, 1 );
 	did_action( 'init' ) && $scripts->localize( 'password-strength-meter', 'pwsL10n', array(
-		'empty' => __('Strength indicator'),
+		'empty' => __('&nbsp;'),
 		'short' => __('Very weak'),
 		'bad' => __('Weak'),
 		/* translators: password strength */
