diff --git a/src/components/extra_buttons/extra_buttons.js b/src/components/extra_buttons/extra_buttons.js
index 528da301..56b2c41e 100644
--- a/src/components/extra_buttons/extra_buttons.js
+++ b/src/components/extra_buttons/extra_buttons.js
@@ -34,6 +34,18 @@ const ExtraButtons = {
         .then(() => this.$emit('onSuccess'))
         .catch(err => this.$emit('onError', err.error.error))
     },
+    muteConversation () {
+      this.refreshPopper()
+      this.$store.dispatch('muteConversation', this.status.id)
+        .then(() => this.$emit('onSuccess'))
+        .catch(err => this.$emit('onError', err.error.error))
+    },
+    unmuteConversation () {
+      this.refreshPopper()
+      this.$store.dispatch('unmuteConversation', this.status.id)
+        .then(() => this.$emit('onSuccess'))
+        .catch(err => this.$emit('onError', err.error.error))
+    },
     refreshPopper () {
       this.showPopper = false
       this.showDropDown = false
@@ -54,9 +66,6 @@ const ExtraButtons = {
     },
     canPin () {
       return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')
-    },
-    enabled () {
-      return this.canPin || this.canDelete
     }
   }
 }
diff --git a/src/components/extra_buttons/extra_buttons.vue b/src/components/extra_buttons/extra_buttons.vue
index 8e24e9a5..5027be1b 100644
--- a/src/components/extra_buttons/extra_buttons.vue
+++ b/src/components/extra_buttons/extra_buttons.vue
@@ -1,6 +1,6 @@
 <template>
   <Popper
-    v-if="enabled && showPopper"
+    v-if="showPopper"
     trigger="click"
     append-to-body
     :options="{
@@ -14,6 +14,20 @@
   >
     <div class="popper-wrapper">
       <div class="dropdown-menu">
+        <button
+          v-if="!status.muted"
+          class="dropdown-item dropdown-item-icon"
+          @click.prevent="muteConversation"
+        >
+          <i class="icon-eye-off" /><span>{{ $t("status.mute_conversation") }}</span>
+        </button>
+        <button
+          v-if="status.muted"
+          class="dropdown-item dropdown-item-icon"
+          @click.prevent="unmuteConversation"
+        >
+          <i class="icon-eye-off" /><span>{{ $t("status.unmute_conversation") }}</span>
+        </button>
         <button
           v-if="!status.pinned && canPin"
           class="dropdown-item dropdown-item-icon"
diff --git a/src/i18n/en.json b/src/i18n/en.json
index dd34a95d..0875ae78 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -504,7 +504,9 @@
     "pinned": "Pinned",
     "delete_confirm": "Do you really want to delete this status?",
     "reply_to": "Reply to",
-    "replies_list": "Replies:"
+    "replies_list": "Replies:",
+    "mute_conversation": "Mute conversation",
+    "unmute_conversation": "Unmute conversation"
   },
   "user_card": {
     "approve": "Approve",
diff --git a/src/i18n/fi.json b/src/i18n/fi.json
index f4179495..e7ed5408 100644
--- a/src/i18n/fi.json
+++ b/src/i18n/fi.json
@@ -278,8 +278,15 @@
   "status": {
     "favorites": "Tykkäykset",
     "repeats": "Toistot",
+    "delete": "Poista",
+    "pin": "Kiinnitä profiiliisi",
+    "unpin": "Poista kiinnitys",
+    "pinned": "Kiinnitetty",
+    "delete_confirm": "Haluatko varmasti postaa viestin?",
     "reply_to": "Vastaus",
-    "replies_list": "Vastaukset:"
+    "replies_list": "Vastaukset:",
+    "mute_conversation": "Hiljennä keskustelu",
+    "unmute_conversation": "Poista hiljennys"
   },
   "user_card": {
     "approve": "Hyväksy",
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index cf65c9f4..8bf13d44 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -430,6 +430,10 @@ export const mutations = {
     const newStatus = state.allStatusesObject[status.id]
     newStatus.pinned = status.pinned
   },
+  setMuted (state, status) {
+    const newStatus = state.allStatusesObject[status.id]
+    newStatus.muted = status.muted
+  },
   setRetweeted (state, { status, value }) {
     const newStatus = state.allStatusesObject[status.id]
 
@@ -555,6 +559,14 @@ const statuses = {
       rootState.api.backendInteractor.unpinOwnStatus(statusId)
         .then((status) => commit('setPinned', status))
     },
+    muteConversation ({ rootState, commit }, statusId) {
+      return rootState.api.backendInteractor.muteConversation(statusId)
+        .then((status) => commit('setMuted', status))
+    },
+    unmuteConversation ({ rootState, commit }, statusId) {
+      return rootState.api.backendInteractor.unmuteConversation(statusId)
+        .then((status) => commit('setMuted', status))
+    },
     retweet ({ rootState, commit }, status) {
       // Optimistic retweeting...
       commit('setRetweeted', { status, value: true })
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index 22db671e..5bce85a3 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -65,6 +65,8 @@ const MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'
 const MASTODON_REPORT_USER_URL = '/api/v1/reports'
 const MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`
 const MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`
+const MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`
+const MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`
 
 const oldfetch = window.fetch
 
@@ -244,6 +246,16 @@ const unpinOwnStatus = ({ id, credentials }) => {
     .then((data) => parseStatus(data))
 }
 
+const muteConversation = ({ id, credentials }) => {
+  return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })
+    .then((data) => parseStatus(data))
+}
+
+const unmuteConversation = ({ id, credentials }) => {
+  return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })
+    .then((data) => parseStatus(data))
+}
+
 const blockUser = ({ id, credentials }) => {
   return fetch(MASTODON_BLOCK_USER_URL(id), {
     headers: authHeaders(credentials),
@@ -850,6 +862,8 @@ const apiService = {
   unfollowUser,
   pinOwnStatus,
   unpinOwnStatus,
+  muteConversation,
+  unmuteConversation,
   blockUser,
   unblockUser,
   fetchUser,
diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js
index 3550aafd..46c097a3 100644
--- a/src/services/backend_interactor_service/backend_interactor_service.js
+++ b/src/services/backend_interactor_service/backend_interactor_service.js
@@ -115,6 +115,8 @@ const backendInteractorService = credentials => {
   const fetchPinnedStatuses = (id) => apiService.fetchPinnedStatuses({ credentials, id })
   const pinOwnStatus = (id) => apiService.pinOwnStatus({ credentials, id })
   const unpinOwnStatus = (id) => apiService.unpinOwnStatus({ credentials, id })
+  const muteConversation = (id) => apiService.muteConversation({ credentials, id })
+  const unmuteConversation = (id) => apiService.unmuteConversation({ credentials, id })
 
   const getCaptcha = () => apiService.getCaptcha()
   const register = (params) => apiService.register({ credentials, params })
@@ -171,6 +173,8 @@ const backendInteractorService = credentials => {
     fetchPinnedStatuses,
     pinOwnStatus,
     unpinOwnStatus,
+    muteConversation,
+    unmuteConversation,
     tagUser,
     untagUser,
     addRight,
diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js
index df6747a6..6a5f1408 100644
--- a/src/services/entity_normalizer/entity_normalizer.service.js
+++ b/src/services/entity_normalizer/entity_normalizer.service.js
@@ -239,6 +239,7 @@ export const parseStatus = (data) => {
     output.external_url = data.url
     output.poll = data.poll
     output.pinned = data.pinned
+    output.muted = data.muted
   } else {
     output.favorited = data.favorited
     output.fave_num = data.fave_num