Index: src/bp-blogs/bp-blogs-filters.php
===================================================================
--- src/bp-blogs/bp-blogs-filters.php
+++ src/bp-blogs/bp-blogs-filters.php
@@ -121,3 +121,37 @@
 }
 add_filter( 'bp_activity_post_pre_publish', 'bp_blogs_post_pre_publish', 10, 4 );
 add_filter( 'bp_activity_post_pre_comment', 'bp_blogs_post_pre_publish', 10, 4 );
+
+/**
+ * Registers our custom thumb size with WP's Site Icon feature.
+ *
+ * @since 2.7.0
+ *
+ * @param  array $sizes Current array of custom site icon sizes.
+ * @return array
+ */
+function bp_blogs_register_custom_site_icon_size( $sizes ) {
+	$sizes[] = bp_core_avatar_thumb_width();
+	return $sizes;
+}
+add_filter( 'site_icon_image_sizes', 'bp_blogs_register_custom_site_icon_size' );
+
+/**
+ * Syncs site icon URLs to blogmeta.
+ *
+ * @since 2.7.0
+ *
+ * @param int|string $old_value Old value
+ * @param int|string $new_value New value
+ */
+function bp_blogs_sync_site_icon_info( $old_value, $new_value ) {
+	if ( 0 === $new_value ) {
+		bp_blogs_delete_blogmeta( get_current_blog_id(), 'site_icon_url_thumb' );
+		bp_blogs_delete_blogmeta( get_current_blog_id(), 'site_icon_url_full' );
+	} else {
+		// Save site icon URL as blogmeta.
+		bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_thumb', get_site_icon_url( bp_core_avatar_thumb_width() ) );
+		bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_full',  get_site_icon_url( bp_core_avatar_full_width()  ) );
+	}
+}
+add_action( 'update_option_site_icon', 'bp_blogs_sync_site_icon_info', 10, 2 );
Index: src/bp-blogs/bp-blogs-template.php
===================================================================
--- src/bp-blogs/bp-blogs-template.php
+++ src/bp-blogs/bp-blogs-template.php
@@ -345,19 +345,33 @@
 			'no_grav' => true,
 		) );
 
-		// Fetch the avatar.
-		$avatar = bp_core_fetch_avatar( array(
-			'item_id'    => $blogs_template->blog->admin_user_id,
-			'title'      => $r['title'],
-			// 'avatar_dir' => 'blog-avatars',
-			// 'object'     => 'blog',
-			'type'       => $r['type'],
-			'alt'        => $r['alt'],
-			'css_id'     => $r['id'],
-			'class'      => $r['class'],
-			'width'      => $r['width'],
-			'height'     => $r['height']
-		) );
+		// Use site icon if available.
+		$site_icon = bp_blogs_get_blogmeta( bp_get_blog_id(), "site_icon_url_{$r['type']}" );
+		if ( ! empty( $site_icon ) ) {
+			$avatar = sprintf( '<img src="%1$s" class="%2$s" alt="%3$s" title="%4$s" height="%5$s" width="%6$s" />',
+				esc_url( $site_icon ),
+				sanitize_html_class( $r['class'] ),
+				sprintf( esc_attr__( 'Site icon for %s', 'buddypress' ), bp_get_blog_name() ),
+				sprintf( esc_attr__( 'Site icon for %s', 'buddypress' ), bp_get_blog_name() ),
+				esc_attr( $r['height'] ),
+				esc_attr( $r['width'] )
+			);
+
+		// Fallback to user ID avatar.
+		} else {
+			$avatar = bp_core_fetch_avatar( array(
+				'item_id'    => $blogs_template->blog->admin_user_id,
+				'title'      => $r['title'],
+				// 'avatar_dir' => 'blog-avatars',
+				// 'object'     => 'blog',
+				'type'       => $r['type'],
+				'alt'        => $r['alt'],
+				'css_id'     => $r['id'],
+				'class'      => $r['class'],
+				'width'      => $r['width'],
+				'height'     => $r['height']
+			) );
+		}
 
 		/**
 		 * In future BuddyPress versions you will be able to set the avatar for a blog.
