diff --git a/src/_variables.scss b/src/_variables.scss
index c317fd32..d2b7065d 100644
--- a/src/_variables.scss
+++ b/src/_variables.scss
@@ -3,4 +3,5 @@ $main-background: white;
 $darkened-background: whitesmoke;
 $green: #0fa00f;
 $blue: #0095ff;
+$red: #ff0000;
 
diff --git a/src/components/status/status.js b/src/components/status/status.js
index 0bf2ecde..8b2561cf 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -20,7 +20,9 @@ const Status = {
     },
     loggedIn () {
       return !!this.$store.state.users.currentUser
-    }
+    },
+    deleted () { return this.statusoid.deleted },
+    canDelete () { return this.statusoid.user.rights.delete_others_notice || this.statusoid.user.id == this.$store.state.users.currentUser.id }
   },
   components: {
     Attachment,
@@ -31,6 +33,12 @@ const Status = {
   methods: {
     toggleReplying () {
       this.replying = !this.replying
+    },
+    deleteStatus () {
+      const confirmed = confirm('Do you really want to delete this status?')
+      if (confirmed) {
+        this.$store.dispatch('deleteStatus', { id: this.status.id })
+      }
     }
   }
 }
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 9c32e7cb..6b9bca5b 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="status-el">
+  <div class="status-el" v-if="!status.deleted">
     <div v-if="retweet" class="media container retweet-info">
       <div class="media-left">
         <i class='fa icon-retweet retweeted'></i>
@@ -52,6 +52,11 @@
             </div>
             <retweet-button :status=status></retweet-button>
             <favorite-button :status=status></favorite-button>
+            <div v-if="canDelete">
+              <a href="#" v-on:click.prevent="deleteStatus">
+                <i class='fa icon-cancel delete-status'></i>
+              </a>
+            </div>
           </div>
 
           <post-status-form v-if="replying" :reply-to="status.id" :attentions="status.attentions" :repliedUser="status.user" v-on:posted="toggleReplying"></post-status-form>
@@ -125,4 +130,11 @@
  .status-el:last-child .status {
      border: none
  }
+
+ .icon-cancel,.delete-status {
+   cursor: pointer;
+   &:hover {
+    color: $red;
+   }
+ }
 </style>
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index 7ce07c96..a5a0374e 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -45,6 +45,9 @@ export const prepareStatus = (status) => {
     status.nsfw = !!status.text.match(nsfwRegex)
   }
 
+  // Set deleted flag
+  status.deleted = false
+
   // To make the array reactive
   status.attachments = status.attachments || []
 
@@ -235,6 +238,10 @@ export const mutations = {
     const newStatus = find(state.allStatuses, status)
     newStatus.repeated = value
   },
+  setDeleted (state, { status }) {
+    const newStatus = find(state.allStatuses, status)
+    newStatus.deleted = true
+  },
   setLoading (state, { timeline, value }) {
     state.timelines[timeline].loading = value
   },
@@ -250,6 +257,10 @@ const statuses = {
     addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false }) {
       commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser })
     },
+    deleteStatus ({ rootState, commit }, status) {
+      commit('setDeleted', { status })
+      apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })
+    },
     favorite ({ rootState, commit }, status) {
       // Optimistic favoriting...
       commit('setFavorited', { status, value: true })
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index 47895d3b..a78ab5c9 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -7,6 +7,7 @@ const FAVORITE_URL = '/api/favorites/create'
 const UNFAVORITE_URL = '/api/favorites/destroy'
 const RETWEET_URL = '/api/statuses/retweet'
 const STATUS_UPDATE_URL = '/api/statuses/update.json'
+const STATUS_DELETE_URL = '/api/statuses/destroy'
 const STATUS_URL = '/api/statuses/show'
 const MEDIA_UPLOAD_URL = '/api/statusnet/media/upload'
 const CONVERSATION_URL = '/api/statusnet/conversation'
@@ -118,6 +119,13 @@ const postStatus = ({credentials, status, mediaIds, inReplyToStatusId}) => {
   })
 }
 
+const deleteStatus = ({ id, credentials }) => {
+  return fetch(`${STATUS_DELETE_URL}/${id}.json`, {
+    headers: authHeaders(credentials),
+    method: 'POST'
+  })
+}
+
 const uploadMedia = ({formData, credentials}) => {
   return fetch(MEDIA_UPLOAD_URL, {
     body: formData,
@@ -139,6 +147,7 @@ const apiService = {
   unfavorite,
   retweet,
   postStatus,
+  deleteStatus,
   uploadMedia
 }
 
diff --git a/test/unit/specs/modules/statuses.spec.js b/test/unit/specs/modules/statuses.spec.js
index c9c1ad2c..5df962c3 100644
--- a/test/unit/specs/modules/statuses.spec.js
+++ b/test/unit/specs/modules/statuses.spec.js
@@ -44,6 +44,11 @@ describe('Statuses.prepareStatus', () => {
 
     expect(prepareStatus(nsfw).nsfw).to.eq(false)
   })
+
+  it('sets deleted flag to false', () => {
+    const aStatus = makeMockStatus({id: 1, text: 'Hello oniichan'})
+    expect(prepareStatus(aStatus).deleted).to.eq(false)
+  })
 })
 
 describe('Statuses.findMaxId', () => {