Index: trunk/src/includes/common/formatting.php
===================================================================
--- trunk/src/includes/common/formatting.php	(revision 7055)
+++ trunk/src/includes/common/formatting.php	(working copy)
@@ -294,10 +294,32 @@
  * @return string $text Text with rel=nofollow added to any links
  */
 function bbp_rel_nofollow( $text = '' ) {
-	return preg_replace_callback( '|<a (.+?)>|i', 'bbp_rel_nofollow_callback', $text );
+	return preg_replace_callback(
+		'|<a (.+?)>|i',
+		function( $matches ) {
+			bbp_rel_callback( $matches, 'nofollow' );
+		},
+		$text
+	);
 }
 
 /**
+ * Catches links so rel="nofollow ugc" can be added (on output, not save)
+ *
+ * @param string $text Post text
+ * @return string $text Text with rel="nofollow ugc" added to any links
+ */
+function bbp_rel_ugc( $text = '' ) {
+	return preg_replace_callback(
+		'|<a (.+?)>|i',
+		function( $matches ) {
+			return bbp_rel_callback( $matches, 'nofollow ugc' );
+		},
+		$text
+	);
+}
+
+/**
  * Adds rel=nofollow to a link
  *
  * @since 2.3.0 bbPress (r4865)
@@ -306,9 +328,19 @@
  * @return string $text Link with rel=nofollow added
  */
 function bbp_rel_nofollow_callback( $matches = array() ) {
+	return bbp_rel_callback( $matches, 'nofollow' );
+}
+
+/**
+ * Adds a rel attribute to a link
+ * 
+ * @param array $matches
+ * @param string $rel
+ * @return string $text Link with the added rel attribute
+ */
+function bbp_rel_callback( $matches, $rel ) {
 	$text     = $matches[1];
 	$atts     = shortcode_parse_atts( $matches[1] );
-	$rel      = 'nofollow';
 	$home_url = home_url();
 
 	// Bail on links that match the current domain
@@ -320,12 +352,10 @@
 
 	// Avoid collisions with existing "rel" attribute
 	if ( ! empty( $atts['rel'] ) ) {
-		$parts = array_map( 'trim', explode( ' ', $atts['rel'] ) );
-		if ( false === array_search( 'nofollow', $parts ) ) {
-			$parts[] = 'nofollow';
-		}
-
-		$rel = implode( ' ', $parts );
+		$parts     = array_map( 'trim', explode( ' ', $atts['rel'] ) );
+		$rel_array = array_map( 'trim', explode( ' ', $rel ) );
+		$parts     = array_unique( array_merge( $parts, $rel_array ) );
+		$rel       = implode( ' ', $parts );
 		unset( $atts['rel'] );
 
 		$html = '';
Index: trunk/src/includes/core/filters.php
===================================================================
--- trunk/src/includes/core/filters.php	(revision 7055)
+++ trunk/src/includes/core/filters.php	(working copy)
@@ -168,7 +168,7 @@
 add_filter( 'bbp_get_reply_content', 'force_balance_tags', 30 );
 add_filter( 'bbp_get_reply_content', 'bbp_make_clickable', 40 );
 add_filter( 'bbp_get_reply_content', 'wpautop',            50 );
-add_filter( 'bbp_get_reply_content', 'bbp_rel_nofollow',   60 );
+add_filter( 'bbp_get_reply_content', 'bbp_rel_ugc',        60 );
 
 // Run filters on topic content
 add_filter( 'bbp_get_topic_content', 'wptexturize',        6  );
@@ -178,7 +178,7 @@
 add_filter( 'bbp_get_topic_content', 'force_balance_tags', 30 );
 add_filter( 'bbp_get_topic_content', 'bbp_make_clickable', 40 );
 add_filter( 'bbp_get_topic_content', 'wpautop',            50 );
-add_filter( 'bbp_get_topic_content', 'bbp_rel_nofollow',   60 );
+add_filter( 'bbp_get_topic_content', 'bbp_rel_ugc',        60 );
 
 // Admin-only
 if ( is_admin() ) {
Index: trunk/src/templates/default/bbpress/user-profile.php
===================================================================
--- trunk/src/templates/default/bbpress/user-profile.php	(revision 7055)
+++ trunk/src/templates/default/bbpress/user-profile.php	(working copy)
@@ -20,13 +20,13 @@
 
 		<?php if ( bbp_get_displayed_user_field( 'description' ) ) : ?>
 
-			<p class="bbp-user-description"><?php echo bbp_rel_nofollow( bbp_get_displayed_user_field( 'description' ) ); ?></p>
+			<p class="bbp-user-description"><?php echo bbp_rel_ugc( bbp_get_displayed_user_field( 'description' ) ); ?></p>
 
 		<?php endif; ?>
 
 		<?php if ( bbp_get_displayed_user_field( 'user_url' ) ) : ?>
 
-			<p class="bbp-user-website"><?php printf( esc_html__( 'Website: %s', 'bbpress' ), bbp_rel_nofollow( bbp_make_clickable( bbp_get_displayed_user_field( 'user_url' ) ) ) ); ?></p>
+			<p class="bbp-user-website"><?php printf( esc_html__( 'Website: %s', 'bbpress' ), bbp_rel_ugc( bbp_make_clickable( bbp_get_displayed_user_field( 'user_url' ) ) ) ); ?></p>
 
 		<?php endif; ?>
 
