diff --git a/frontend_tests/node_tests/stream_data.js b/frontend_tests/node_tests/stream_data.js
index 91a1147481..d08c276797 100644
--- a/frontend_tests/node_tests/stream_data.js
+++ b/frontend_tests/node_tests/stream_data.js
@@ -119,6 +119,9 @@ test("basics", () => {
         "invite-only-public-history",
     );
     assert.equal(stream_data.get_stream_privacy_policy(web_public_stream.stream_id), "web-public");
+    assert.ok(stream_data.is_web_public_by_stream_name(web_public_stream.name));
+    assert.ok(!stream_data.is_web_public_by_stream_name(social.name));
+    assert.ok(!stream_data.is_web_public_by_stream_name("unknown"));
 
     assert.ok(stream_data.get_invite_only("social"));
     assert.ok(!stream_data.get_invite_only("unknown"));
diff --git a/static/js/stream_bar.js b/static/js/stream_bar.js
index d65ee6b188..cc8200a764 100644
--- a/static/js/stream_bar.js
+++ b/static/js/stream_bar.js
@@ -4,14 +4,21 @@ import * as color_class from "./color_class";
 import * as stream_data from "./stream_data";
 
 function update_compose_stream_icon(stream_name) {
-    const icon = $("#compose-lock-icon");
     const streamfield = $("#stream_message_recipient_stream");
+    const globe_icon = $("#compose-globe-icon");
+    const lock_icon = $("#compose-lock-icon");
+
+    // Reset state
+    globe_icon.hide();
+    lock_icon.hide();
+    streamfield.removeClass("lock-padding");
+
     if (stream_data.get_invite_only(stream_name)) {
-        icon.show();
+        lock_icon.show();
+        streamfield.addClass("lock-padding");
+    } else if (stream_data.is_web_public_by_stream_name(stream_name)) {
+        globe_icon.show();
         streamfield.addClass("lock-padding");
-    } else {
-        icon.hide();
-        streamfield.removeClass("lock-padding");
     }
 }
 
diff --git a/static/js/stream_data.js b/static/js/stream_data.js
index f4978bc385..b96e6e6784 100644
--- a/static/js/stream_data.js
+++ b/static/js/stream_data.js
@@ -581,6 +581,14 @@ export function get_invite_only(stream_name) {
     return sub.invite_only;
 }
 
+export function is_web_public_by_stream_name(stream_name) {
+    const sub = get_sub(stream_name);
+    if (sub === undefined) {
+        return false;
+    }
+    return sub.is_web_public;
+}
+
 export function set_realm_default_streams(realm_default_streams) {
     default_stream_ids.clear();
 
diff --git a/static/styles/compose.css b/static/styles/compose.css
index b1de2de6db..7cfa01d6d2 100644
--- a/static/styles/compose.css
+++ b/static/styles/compose.css
@@ -128,12 +128,19 @@
         font-weight: 600;
     }
 
-    #compose-lock-icon {
+    #compose-lock-icon,
+    #compose-globe-icon {
         position: relative;
         left: 5px;
         width: 0;
     }
 
+    #compose-globe-icon {
+        top: 1px;
+        left: 4.5px;
+        padding-right: 2px;
+    }
+
     .message_header {
         background: none;
         background-color: hsl(0, 0%, 92%);
diff --git a/static/templates/compose.hbs b/static/templates/compose.hbs
index 0a34c82858..39dcb24878 100644
--- a/static/templates/compose.hbs
+++ b/static/templates/compose.hbs
@@ -64,6 +64,9 @@
                             
                                 
                             
+                            
+                                
+