diff --git src/bp-members/bp-members-screens.php src/bp-members/bp-members-screens.php
index 2377fdc..ebcb53b 100644
--- src/bp-members/bp-members-screens.php
+++ src/bp-members/bp-members-screens.php
@@ -144,7 +144,7 @@ function bp_core_screen_signup() {
 					}
 
 					// Create errors for required fields without values
-					if ( xprofile_check_is_required_field( $field_id ) && empty( $_POST['field_' . $field_id] ) )
+					if ( xprofile_check_is_required_field( $field_id ) && empty( $_POST[ 'field_' . $field_id ] ) && ! bp_current_user_can( 'bp_moderate' ) )
 						$bp->signup->errors['field_' . $field_id] = __( 'This is a required field', 'buddypress' );
 				}
 
diff --git src/bp-xprofile/bp-xprofile-admin.php src/bp-xprofile/bp-xprofile-admin.php
index 1fb255a..136ce88 100644
--- src/bp-xprofile/bp-xprofile-admin.php
+++ src/bp-xprofile/bp-xprofile-admin.php
@@ -852,7 +852,7 @@ class BP_XProfile_User_Admin {
 					}
 				}
 
-				$is_required[ $field_id ] = xprofile_check_is_required_field( $field_id );
+				$is_required[ $field_id ] = xprofile_check_is_required_field( $field_id ) && ! bp_current_user_can( 'bp_moderate' );
 				if ( $is_required[ $field_id ] && empty( $_POST['field_' . $field_id ] ) ) {
 					$redirect_to = add_query_arg( 'error', '2', $redirect_to );
 					bp_core_redirect( $redirect_to );
diff --git src/bp-xprofile/bp-xprofile-functions.php src/bp-xprofile/bp-xprofile-functions.php
index d84f029..77e9e52 100644
--- src/bp-xprofile/bp-xprofile-functions.php
+++ src/bp-xprofile/bp-xprofile-functions.php
@@ -515,12 +515,7 @@ function xprofile_check_is_required_field( $field_id ) {
 	// Define locale variable(s)
 	$retval = false;
 
-	// Super admins can skip required check
-	if ( bp_current_user_can( 'bp_moderate' ) && ! is_admin() ) {
-		$retval = false;
-
-	// All other users will use the field's setting
-	} elseif ( isset( $field->is_required ) ) {
+	if ( isset( $field->is_required ) ) {
 		$retval = $field->is_required;
 	}
 
diff --git src/bp-xprofile/bp-xprofile-screens.php src/bp-xprofile/bp-xprofile-screens.php
index afb4604..de33c66 100644
--- src/bp-xprofile/bp-xprofile-screens.php
+++ src/bp-xprofile/bp-xprofile-screens.php
@@ -101,7 +101,7 @@ function xprofile_screen_edit_profile() {
 
 			}
 
-			$is_required[$field_id] = xprofile_check_is_required_field( $field_id );
+			$is_required[ $field_id ] = xprofile_check_is_required_field( $field_id ) && ! bp_current_user_can( 'bp_moderate' );
 			if ( $is_required[$field_id] && empty( $_POST['field_' . $field_id] ) ) {
 				$errors = true;
 			}
diff --git src/bp-xprofile/bp-xprofile-template.php src/bp-xprofile/bp-xprofile-template.php
index 298b69b..406ab83 100644
--- src/bp-xprofile/bp-xprofile-template.php
+++ src/bp-xprofile/bp-xprofile-template.php
@@ -821,12 +821,7 @@ function bp_the_profile_field_is_required() {
 		// Define locale variable(s)
 		$retval = false;
 
-		// Super admins can skip required check
-		if ( bp_current_user_can( 'bp_moderate' ) && !is_admin() ) {
-			$retval = false;
-
-		// All other users will use the field's setting
-		} elseif ( isset( $field->is_required ) ) {
+		if ( isset( $field->is_required ) ) {
 			$retval = $field->is_required;
 		}
 
