diff --git a/src/App.js b/src/App.js
index 231c6ae1a7ed226bd44d47b56a95025f8a67819b..fe4c30cb254b0be8e4a279a285c3edf1834ddf0c 100644
--- a/src/App.js
+++ b/src/App.js
@@ -4,7 +4,7 @@ import Notifications from './components/notifications/notifications.vue'
 import InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'
 import FeaturesPanel from './components/features_panel/features_panel.vue'
 import WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'
-import ChatPanel from './components/chat_panel/chat_panel.vue'
+import ShoutPanel from './components/shout_panel/shout_panel.vue'
 import SettingsModal from './components/settings_modal/settings_modal.vue'
 import MediaModal from './components/media_modal/media_modal.vue'
 import SideDrawer from './components/side_drawer/side_drawer.vue'
@@ -26,7 +26,7 @@ export default {
     InstanceSpecificPanel,
     FeaturesPanel,
     WhoToFollowPanel,
-    ChatPanel,
+    ShoutPanel,
     MediaModal,
     SideDrawer,
     MobilePostStatusButton,
@@ -65,7 +65,7 @@ export default {
         }
       }
     },
-    chat () { return this.$store.state.chat.channel.state === 'joined' },
+    shout () { return this.$store.state.shout.channel.state === 'joined' },
     suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },
     showInstanceSpecificPanel () {
       return this.$store.state.instance.showInstanceSpecificPanel &&
diff --git a/src/App.vue b/src/App.vue
index 1a1667788d1cba17870fb0167ca7a6cffd5ff401..6c582c0342fa11b901bb3d0ed65f84aed2e81fed 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -49,10 +49,10 @@
       </div>
       <media-modal />
     </div>
-    <chat-panel
-      v-if="currentUser && chat"
+    <shout-panel
+      v-if="currentUser && shout"
       :floating="true"
-      class="floating-chat mobile-hidden"
+      class="floating-shout mobile-hidden"
     />
     <MobilePostStatusButton />
     <UserReportingModal />
diff --git a/src/boot/after_store.js b/src/boot/after_store.js
index 45090e5d7a3e133b44a8e2b97feed384f3861f92..cc0c7c5e2fc4448f2fdf907751d5e403deae27bb 100644
--- a/src/boot/after_store.js
+++ b/src/boot/after_store.js
@@ -240,7 +240,7 @@ const getNodeInfo = async ({ store }) => {
       store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })
       store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })
       store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })
-      store.dispatch('setInstanceOption', { name: 'chatAvailable', value: features.includes('chat') })
+      store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })
       store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })
       store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })
       store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })
diff --git a/src/boot/routes.js b/src/boot/routes.js
index b5d3c6315c27ae3c3355bc8e91637e4e25ea7819..1bc1f9f7da9e192d65b5b962f757f947ec3d2689 100644
--- a/src/boot/routes.js
+++ b/src/boot/routes.js
@@ -16,7 +16,7 @@ import FollowRequests from 'components/follow_requests/follow_requests.vue'
 import OAuthCallback from 'components/oauth_callback/oauth_callback.vue'
 import Notifications from 'components/notifications/notifications.vue'
 import AuthForm from 'components/auth_form/auth_form.js'
-import ChatPanel from 'components/chat_panel/chat_panel.vue'
+import ShoutPanel from 'components/shout_panel/shout_panel.vue'
 import WhoToFollow from 'components/who_to_follow/who_to_follow.vue'
 import About from 'components/about/about.vue'
 import RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'
@@ -64,7 +64,7 @@ export default (store) => {
     { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },
     { name: 'notifications', path: '/:username/notifications', component: Notifications, beforeEnter: validateAuthenticatedRoute },
     { name: 'login', path: '/login', component: AuthForm },
-    { name: 'chat-panel', path: '/chat-panel', component: ChatPanel, props: () => ({ floating: false }) },
+    { name: 'shout-panel', path: '/shout-panel', component: ShoutPanel, props: () => ({ floating: false }) },
     { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },
     { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },
     { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },
diff --git a/src/components/features_panel/features_panel.js b/src/components/features_panel/features_panel.js
index 8b142d08308dedb37095c871557706b673d4380e..d177efebe28a301aedd82142843ddba980f611de 100644
--- a/src/components/features_panel/features_panel.js
+++ b/src/components/features_panel/features_panel.js
@@ -2,7 +2,7 @@ import fileSizeFormatService from '../../services/file_size_format/file_size_for
 
 const FeaturesPanel = {
   computed: {
-    chat: function () { return this.$store.state.instance.chatAvailable },
+    shout: function () { return this.$store.state.instance.shoutAvailable },
     pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },
     gopher: function () { return this.$store.state.instance.gopherAvailable },
     whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },
diff --git a/src/components/features_panel/features_panel.vue b/src/components/features_panel/features_panel.vue
index 9605d09d07185e0a158042855b736ee0f97bdf1a..a58a99afe24f44936f7ada05665a6394f7a90f21 100644
--- a/src/components/features_panel/features_panel.vue
+++ b/src/components/features_panel/features_panel.vue
@@ -8,8 +8,8 @@
       </div>
       <div class="panel-body features-panel">
         <ul>
-          <li v-if="chat">
-            {{ $t('features_panel.chat') }}
+          <li v-if="shout">
+            {{ $t('features_panel.shout') }}
           </li>
           <li v-if="pleromaChatMessages">
             {{ $t('features_panel.pleroma_chat_messages') }}
diff --git a/src/components/chat_panel/chat_panel.js b/src/components/shout_panel/shout_panel.js
similarity index 86%
rename from src/components/chat_panel/chat_panel.js
rename to src/components/shout_panel/shout_panel.js
index 556694aef27e6e723041fc68d4e05c8496b00bb6..a6168971813bd6fea6a7f35f11b5bf4b62fbe998 100644
--- a/src/components/chat_panel/chat_panel.js
+++ b/src/components/shout_panel/shout_panel.js
@@ -10,7 +10,7 @@ library.add(
   faTimes
 )
 
-const chatPanel = {
+const shoutPanel = {
   props: [ 'floating' ],
   data () {
     return {
@@ -21,12 +21,12 @@ const chatPanel = {
   },
   computed: {
     messages () {
-      return this.$store.state.chat.messages
+      return this.$store.state.shout.messages
     }
   },
   methods: {
     submit (message) {
-      this.$store.state.chat.channel.push('new_msg', { text: message }, 10000)
+      this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)
       this.currentMessage = ''
     },
     togglePanel () {
@@ -50,4 +50,4 @@ const chatPanel = {
   }
 }
 
-export default chatPanel
+export default shoutPanel
diff --git a/src/components/chat_panel/chat_panel.vue b/src/components/shout_panel/shout_panel.vue
similarity index 78%
rename from src/components/chat_panel/chat_panel.vue
rename to src/components/shout_panel/shout_panel.vue
index 8a829115b28f17cda1a4eb0d34847a194a506004..f90baf80e09ecbbf3eeea72c4779d4f346ed2da1 100644
--- a/src/components/chat_panel/chat_panel.vue
+++ b/src/components/shout_panel/shout_panel.vue
@@ -1,12 +1,12 @@
 <template>
   <div
     v-if="!collapsed || !floating"
-    class="chat-panel"
+    class="shout-panel"
   >
     <div class="panel panel-default">
       <div
         class="panel-heading timeline-heading"
-        :class="{ 'chat-heading': floating }"
+        :class="{ 'shout-heading': floating }"
         @click.stop.prevent="togglePanel"
       >
         <div class="title">
@@ -18,33 +18,33 @@
           />
         </div>
       </div>
-      <div class="chat-window">
+      <div class="shout-window">
         <div
           v-for="message in messages"
           :key="message.id"
-          class="chat-message"
+          class="shout-message"
         >
-          <span class="chat-avatar">
+          <span class="shout-avatar">
             <img :src="message.author.avatar">
           </span>
-          <div class="chat-content">
+          <div class="shout-content">
             <router-link
-              class="chat-name"
+              class="shout-name"
               :to="userProfileLink(message.author)"
             >
               {{ message.author.username }}
             </router-link>
             <br>
-            <span class="chat-text">
+            <span class="shout-text">
               {{ message.text }}
             </span>
           </div>
         </div>
       </div>
-      <div class="chat-input">
+      <div class="shout-input">
         <textarea
           v-model="currentMessage"
-          class="chat-input-textarea"
+          class="shout-input-textarea"
           rows="1"
           @keyup.enter="submit(currentMessage)"
         />
@@ -53,11 +53,11 @@
   </div>
   <div
     v-else
-    class="chat-panel"
+    class="shout-panel"
   >
     <div class="panel panel-default">
       <div
-        class="panel-heading stub timeline-heading chat-heading"
+        class="panel-heading stub timeline-heading shout-heading"
         @click.stop.prevent="togglePanel"
       >
         <div class="title">
@@ -72,12 +72,12 @@
   </div>
 </template>
 
-<script src="./chat_panel.js"></script>
+<script src="./shout_panel.js"></script>
 
 <style lang="scss">
 @import '../../_variables.scss';
 
-.floating-chat {
+.floating-shout {
   position: fixed;
   right: 0px;
   bottom: 0px;
@@ -85,8 +85,8 @@
   max-width: 25em;
 }
 
-.chat-panel {
-  .chat-heading {
+.shout-panel {
+  .shout-heading {
     cursor: pointer;
 
     .icon {
@@ -102,22 +102,22 @@
     }
   }
 
-  .chat-window {
+  .shout-window {
     overflow-y: auto;
     overflow-x: hidden;
     max-height: 20em;
   }
 
-  .chat-window-container {
+  .shout-window-container {
     height: 100%;
   }
 
-  .chat-message {
+  .shout-message {
     display: flex;
     padding: 0.2em 0.5em
   }
 
-  .chat-avatar {
+  .shout-avatar {
     img {
       height: 24px;
       width: 24px;
@@ -128,7 +128,7 @@
     }
   }
 
-  .chat-input {
+  .shout-input {
     display: flex;
     textarea {
       flex: 1;
@@ -138,7 +138,7 @@
     }
   }
 
-  .chat-panel {
+  .shout-panel {
     .title {
       display: flex;
       justify-content: space-between;
diff --git a/src/components/side_drawer/side_drawer.js b/src/components/side_drawer/side_drawer.js
index fe73616808744b5bc889770f362f0f6bc324d6fb..0faf3b9eebdc7d49a8cf03b0c26d450b7a9d8e60 100644
--- a/src/components/side_drawer/side_drawer.js
+++ b/src/components/side_drawer/side_drawer.js
@@ -49,7 +49,6 @@ const SideDrawer = {
     currentUser () {
       return this.$store.state.users.currentUser
     },
-    chat () { return this.$store.state.chat.channel.state === 'joined' },
     unseenNotifications () {
       return unseenNotificationsFromStore(this.$store)
     },
diff --git a/src/main.js b/src/main.js
index e1cac748fce14cd564edf82fcd6b0da0c06558e8..3895da89b8cea1462ea2ed77d341ffcf0dd28a55 100644
--- a/src/main.js
+++ b/src/main.js
@@ -11,7 +11,7 @@ import statusesModule from './modules/statuses.js'
 import usersModule from './modules/users.js'
 import apiModule from './modules/api.js'
 import configModule from './modules/config.js'
-import chatModule from './modules/chat.js'
+import shoutModule from './modules/shout.js'
 import oauthModule from './modules/oauth.js'
 import authFlowModule from './modules/auth_flow.js'
 import mediaViewerModule from './modules/media_viewer.js'
@@ -88,7 +88,7 @@ const persistedStateOptions = {
       users: usersModule,
       api: apiModule,
       config: configModule,
-      chat: chatModule,
+      shout: shoutModule,
       oauth: oauthModule,
       authFlow: authFlowModule,
       mediaViewer: mediaViewerModule,
diff --git a/src/modules/api.js b/src/modules/api.js
index 8654b90a599d136043b0653924915f105123847a..54f943564fe4c90414b61b647f9833ab4e5b0ac9 100644
--- a/src/modules/api.js
+++ b/src/modules/api.js
@@ -255,12 +255,12 @@ const api = {
     initializeSocket ({ dispatch, commit, state, rootState }) {
       // Set up websocket connection
       const token = state.wsToken
-      if (rootState.instance.chatAvailable && typeof token !== 'undefined' && state.socket === null) {
+      if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {
         const socket = new Socket('/socket', { params: { token } })
         socket.connect()
 
         commit('setSocket', socket)
-        dispatch('initializeChat', socket)
+        dispatch('initializeShout', socket)
       }
     },
     disconnectFromSocket ({ commit, state }) {
diff --git a/src/modules/instance.js b/src/modules/instance.js
index 96de73ca1555eabe2b566b52644304aa639954bd..539b9c66f92c31c480e126ca7848cc794d47359f 100644
--- a/src/modules/instance.js
+++ b/src/modules/instance.js
@@ -19,7 +19,6 @@ const defaultState = {
   defaultBanner: '/images/banner.png',
   background: '/static/aurora_borealis.jpg',
   collapseMessageWithSubject: false,
-  disableChat: false,
   greentext: false,
   hideFilteredStatuses: false,
   hideMutedPosts: false,
@@ -57,7 +56,7 @@ const defaultState = {
   knownDomains: [],
 
   // Feature-set, apparently, not everything here is reported...
-  chatAvailable: false,
+  shoutAvailable: false,
   pleromaChatMessagesAvailable: false,
   gopherAvailable: false,
   mediaProxyAvailable: false,
@@ -107,7 +106,7 @@ const instance = {
         case 'name':
           dispatch('setPageTitle')
           break
-        case 'chatAvailable':
+        case 'shoutAvailable':
           if (value) {
             dispatch('initializeSocket')
           }
diff --git a/src/modules/chat.js b/src/modules/shout.js
similarity index 90%
rename from src/modules/chat.js
rename to src/modules/shout.js
index ffeb272b673a18ed4998e6bf4aa9632d5255081f..507a4d835ac1641eea0e91c122aff908c8ad96c6 100644
--- a/src/modules/chat.js
+++ b/src/modules/shout.js
@@ -1,4 +1,4 @@
-const chat = {
+const shout = {
   state: {
     messages: [],
     channel: { state: '' }
@@ -16,9 +16,8 @@ const chat = {
     }
   },
   actions: {
-    initializeChat (store, socket) {
+    initializeShout (store, socket) {
       const channel = socket.channel('chat:public')
-
       channel.on('new_msg', (msg) => {
         store.commit('addMessage', msg)
       })
@@ -31,4 +30,4 @@ const chat = {
   }
 }
 
-export default chat
+export default shout
diff --git a/src/modules/users.js b/src/modules/users.js
index 8a764a16024579a6933857cde3672972f8eb73ef..2b416f94f445b2afcd84d0389b7d4c86d4d2ba12 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -531,7 +531,7 @@ const users = {
               if (user.token) {
                 store.dispatch('setWsToken', user.token)
 
-                // Initialize the chat socket.
+                // Initialize the shout socket.
                 store.dispatch('initializeSocket')
               }
 
diff --git a/static/config.json b/static/config.json
index f59e645ac65ad316d437ea9c8296a92ec4f37372..53a4be8236f5d894671b2bd5213cf2e9c0fd24f8 100644
--- a/static/config.json
+++ b/static/config.json
@@ -2,7 +2,6 @@
   "alwaysShowSubjectInput": true,
   "background": "/static/aurora_borealis.jpg",
   "collapseMessageWithSubject": false,
-  "disableChat": false,
   "greentext": false,
   "hideFilteredStatuses": false,
   "hideMutedPosts": false,