diff --git src/bp-templates/bp-legacy/buddypress-functions.php src/bp-templates/bp-legacy/buddypress-functions.php
index d933ca9..2511bca 100644
--- src/bp-templates/bp-legacy/buddypress-functions.php
+++ src/bp-templates/bp-legacy/buddypress-functions.php
@@ -82,10 +82,11 @@ class BP_Legacy extends BP_Theme_Compat {
 
 		/** Scripts ***********************************************************/
 
-		add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_styles'   ) ); // Enqueue theme CSS
-		add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_scripts'  ) ); // Enqueue theme JS
-		add_filter( 'bp_enqueue_scripts', array( $this, 'localize_scripts' ) ); // Enqueue theme script localization
-		add_action( 'bp_head',            array( $this, 'head_scripts'     ) ); // Output some extra JS in the <head>
+		add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_styles'   			) ); // Enqueue theme CSS
+		add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_scripts'  			) ); // Enqueue theme JS
+		add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_bp_pages_scripts'  ) ); // Enqueue theme JS on certain pages
+		add_filter( 'bp_enqueue_scripts', array( $this, 'localize_scripts'			) ); // Enqueue theme script localization
+		add_action( 'bp_head',            array( $this, 'head_scripts'     			) ); // Output some extra JS in the <head>
 
 		/** Body no-js Class ********************************************************/
 		add_filter( 'body_class', array( $this, 'add_nojs_body_class' ), 20, 1 );
@@ -254,6 +255,30 @@ class BP_Legacy extends BP_Theme_Compat {
 			wp_enqueue_script( 'comment-reply' );
 		}
 	}
+	
+	/**
+	 * Enqueue the required Javascript files on certain pages of BuddyPress
+	 *
+	 * @since BuddyPress (2.1)
+	 */
+	public function enqueue_bp_pages_scripts() {
+		
+		// Get the BuddyPress pages option
+		$bp_pages = get_option('bp-pages');
+		
+		// Registration page JS scripts
+		if ( is_array( $bp_pages ) && isset( $bp_pages['register'] ) && is_page( $bp_pages['register'] ) ) {
+		
+			$file = "register.js";
+			
+			// Locate the Register Page JS file
+			$asset = $this->locate_asset_in_stack( $file, 'js' );
+			
+			// Enqueue script
+			wp_enqueue_script( 'password-strength-meter' );
+			wp_enqueue_script( $asset['handle'] . '-register', $asset['location'], bp_core_get_js_dependencies(), $this->version, true );
+		}
+	}
 
 	/**
 	 * Get the URL and handle of a web-accessible CSS or JS asset
diff --git src/bp-templates/bp-legacy/buddypress/members/register.php src/bp-templates/bp-legacy/buddypress/members/register.php
index 68b1d05..b674664 100644
--- src/bp-templates/bp-legacy/buddypress/members/register.php
+++ src/bp-templates/bp-legacy/buddypress/members/register.php
@@ -40,6 +40,7 @@
 				<label for="signup_password"><?php _e( 'Choose a Password', 'buddypress' ); ?> <?php _e( '(required)', 'buddypress' ); ?></label>
 				<?php do_action( 'bp_signup_password_errors' ); ?>
 				<input type="password" name="signup_password" id="signup_password" value="" />
+				<div id="pass-strength-result"></div>
 
 				<label for="signup_password_confirm"><?php _e( 'Confirm Password', 'buddypress' ); ?> <?php _e( '(required)', 'buddypress' ); ?></label>
 				<?php do_action( 'bp_signup_password_confirm_errors' ); ?>
diff --git src/bp-templates/bp-legacy/css/buddypress.css src/bp-templates/bp-legacy/css/buddypress.css
index 6441cd3..70977d2 100644
--- src/bp-templates/bp-legacy/css/buddypress.css
+++ src/bp-templates/bp-legacy/css/buddypress.css
@@ -530,6 +530,38 @@ body.activity-permalink #buddypress div.activity-comments div.acomment-content {
 	border: 1px solid #591;
 	color: #250;
 }
+#buddypress #signup_form.standard-form div#pass-strength-result {
+    background-color: #eee;
+    border-color: #ddd;
+    border-style: solid;
+    border-width: 1px;
+    display: none;
+    margin: 5px 5px 5px 0;
+    padding: 5px;
+    text-align: center;
+    width: 200px;
+}
+#buddypress #signup_form.standard-form div#pass-strength-result.error,
+#buddypress #signup_form.standard-form div#pass-strength-result.bad {
+    background-color: #ffb78c;
+    border-color: #ff853c !important;
+	display: block;
+}
+#buddypress #signup_form.standard-form div#pass-strength-result.good {
+    background-color: #ffec8b;
+    border-color: #fc0 !important;
+	display: block;
+}
+#buddypress #signup_form.standard-form div#pass-strength-result.short {
+    background-color: #ffa0a0;
+    border-color: #f04040 !important;
+	display: block;
+}
+#buddypress #signup_form.standard-form div#pass-strength-result.strong {
+    background-color: #c3ff88;
+    border-color: #8dff1c !important;
+	display: block;
+}
 #buddypress .standard-form#signup_form div div.error {
 	background: #faa;
 	color: #a00;
diff --git src/bp-templates/bp-legacy/js/register.js src/bp-templates/bp-legacy/js/register.js
new file mode 100644
index 0000000..b931266
--- /dev/null
+++ src/bp-templates/bp-legacy/js/register.js
@@ -0,0 +1,67 @@
+/**
+ * Register functions file
+ */
+ 
+( function( $ ) {
+	
+    // Bind to trigger the checkPassStrength
+    $( 'body' ).on( 'keyup', 'input[name=signup_password], input[name=signup_password_confirm]',
+        function( event ) {
+            checkPassStrength(
+                $('input[name=signup_password]'),			// Password field
+                $('input[name=signup_password_confirm]'),	// Password Confirmation field
+                $('#pass-strength-result'),					// Strength meter container
+                $('input[type=submit]'),					// Submit button
+                []											// Blacklisted words array
+            );
+        }
+    );
+
+} )( jQuery );
+
+function checkPassStrength(
+	$pass,
+	$pass_confirm,
+	$meterResult,
+	$submitButton,
+	blacklistArray ) {
+    
+	var pass			= $pass.val();
+    var pass_confirm	= $pass_confirm.val();
+ 
+    // Reset the form & meter
+	$meterResult.removeClass( 'short bad good strong' );
+	$meterResult.html('');
+ 
+    // Extend our blacklist array with those from the inputs & site data
+    blacklistArray = blacklistArray.concat( wp.passwordStrength.userInputBlacklist() )
+ 
+    // Get the password strength
+    var strength = wp.passwordStrength.meter( pass, blacklistArray, pass_confirm );
+ 
+    // Add the strength meter results
+    switch ( strength ) {
+ 
+        case 2:
+			$meterResult.addClass( 'bad' ).html( pwsL10n.bad );
+			break;
+		case 3:
+			$meterResult.addClass( 'good' ).html( pwsL10n.good );
+			break;
+		case 4:
+			$meterResult.addClass( 'strong' ).html( pwsL10n.strong );
+			break;
+		case 5:
+			$meterResult.addClass( 'short' ).html( pwsL10n.mismatch );
+			break;
+		default:
+			$meterResult.addClass( 'short' ).html( pwsL10n.short );
+ 
+    }
+ 
+    // This will happen when inserted password is strong.
+    if ( 4 === strength && '' !== pass_confirm.trim() ) {
+    }
+ 
+    return strength;
+}
\ No newline at end of file
diff --git src/bp-xprofile/bp-xprofile-template.php src/bp-xprofile/bp-xprofile-template.php
index 2466104..9da6c87 100644
--- src/bp-xprofile/bp-xprofile-template.php
+++ src/bp-xprofile/bp-xprofile-template.php
@@ -744,7 +744,7 @@ function bp_profile_visibility_radio_buttons( $args = '' ) {
 
 				<?php foreach( bp_xprofile_get_visibility_levels() as $level ) : ?>
 
-					<?php printf( $r['before_radio'], esc_attr( $level['id'] ) ); ?>
+					<?php printf( $r['before_radio'], $level['id'] ); ?>
 
 					<label for="<?php echo esc_attr( 'see-field_' . $r['field_id'] . '_' . $level['id'] ); ?>">
 						<input type="radio" id="<?php echo esc_attr( 'see-field_' . $r['field_id'] . '_' . $level['id'] ); ?>" name="<?php echo esc_attr( 'field_' . $r['field_id'] . '_visibility' ); ?>" value="<?php echo esc_attr( $level['id'] ); ?>" <?php checked( $level['id'], bp_get_the_profile_field_visibility_level() ); ?> />
