diff --git a/res/menu/media_overview_context.xml b/res/menu/media_overview_context.xml
index 4c3c26f781..b3486221c3 100644
--- a/res/menu/media_overview_context.xml
+++ b/res/menu/media_overview_context.xml
@@ -4,4 +4,9 @@
         android:title="@string/delete"
         android:icon="@drawable/ic_delete_white_24dp"
         app:showAsAction="always"/>
+
+    <item android:id="@+id/select_all"
+        android:title="@string/MediaOverviewActivity_Select_all"
+        android:icon="?menu_selectall_icon"
+        app:showAsAction="always"/>
 </menu>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 43806c5289..6a1a483bcb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -394,6 +394,7 @@
     <string name="MediaOverviewActivity_Media_delete_progress_title">Deleting</string>
     <string name="MediaOverviewActivity_Media_delete_progress_message">Deleting messages...</string>
     <string name="MediaOverviewActivity_Documents">Documents</string>
+    <string name="MediaOverviewActivity_Select_all">Select all</string>
 
     <!--- NotificationBarManager -->
     <string name="NotificationBarManager_signal_call_in_progress">Signal call in progress</string>
diff --git a/src/org/thoughtcrime/securesms/MediaGalleryAdapter.java b/src/org/thoughtcrime/securesms/MediaGalleryAdapter.java
index 526531e0de..43ee4fe89b 100644
--- a/src/org/thoughtcrime/securesms/MediaGalleryAdapter.java
+++ b/src/org/thoughtcrime/securesms/MediaGalleryAdapter.java
@@ -154,6 +154,15 @@ class MediaGalleryAdapter extends StickyHeaderGridAdapter {
     notifyDataSetChanged();
   }
 
+  void selectAllMedia() {
+    for (int section = 0; section < media.getSectionCount(); section++) {
+      for (int item = 0; item < media.getSectionItemCount(section); item++) {
+        selected.add(media.get(section, item));
+      }
+    }
+    this.notifyDataSetChanged();
+  }
+
   interface ItemClickListener {
     void onMediaClicked(@NonNull MediaRecord mediaRecord);
     void onMediaLongClicked(MediaRecord mediaRecord);
diff --git a/src/org/thoughtcrime/securesms/MediaOverviewActivity.java b/src/org/thoughtcrime/securesms/MediaOverviewActivity.java
index 19553265e6..cda67fa16f 100644
--- a/src/org/thoughtcrime/securesms/MediaOverviewActivity.java
+++ b/src/org/thoughtcrime/securesms/MediaOverviewActivity.java
@@ -357,6 +357,11 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity {
       builder.show();
     }
 
+    private void handleSelectAllMedia() {
+      getListAdapter().selectAllMedia();
+      actionMode.setTitle(String.valueOf(getListAdapter().getSelectedMediaCount()));
+    }
+
     private MediaGalleryAdapter getListAdapter() {
       return (MediaGalleryAdapter) recyclerView.getAdapter();
     }
@@ -401,6 +406,9 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity {
             handleDeleteMedia(getListAdapter().getSelectedMedia());
             exitMultiSelect();
             return true;
+          case R.id.select_all:
+            handleSelectAllMedia();
+            return true;
         }
         return false;
       }