diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
index 728af5380..5ac09c5d6 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
@@ -519,6 +519,8 @@ class LibraryController(
         when (item.itemId) {
             R.id.action_move_to_category -> showChangeMangaCategoriesDialog()
             R.id.action_download_unread -> downloadUnreadChapters()
+            R.id.action_mark_as_read -> markReadStatus(true)
+            R.id.action_mark_as_unread -> markReadStatus(false)
             R.id.action_delete -> showDeleteMangaDialog()
             R.id.action_select_all -> selectAllCategoryManga()
             R.id.action_select_inverse -> selectInverseCategoryManga()
@@ -610,6 +612,12 @@ class LibraryController(
         destroyActionModeIfNeeded()
     }
 
+    private fun markReadStatus(read: Boolean) {
+        val mangas = selectedMangas.toList()
+        presenter.markReadStatus(mangas, read)
+        destroyActionModeIfNeeded()
+    }
+
     private fun showDeleteMangaDialog() {
         DeleteLibraryMangasDialog(this, selectedMangas.toList()).showDialog(router)
     }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
index cd2553176..0c96e1258 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
@@ -405,6 +405,36 @@ class LibraryPresenter(
     }
     // SY <--
 
+    /**
+     * Marks mangas' chapters read status.
+     *
+     * @param mangas the list of manga.
+     */
+    fun markReadStatus(mangas: List<Manga>, read: Boolean) {
+        mangas.forEach { manga ->
+            launchIO {
+                val chapters = db.getChapters(manga).executeAsBlocking()
+                chapters.forEach {
+                    it.read = read
+                    if (!read) {
+                        it.last_page_read = 0
+                    }
+                }
+                db.updateChaptersProgress(chapters).executeAsBlocking()
+
+                if (preferences.removeAfterMarkedAsRead()) {
+                    deleteChapters(manga, chapters)
+                }
+            }
+        }
+    }
+
+    private fun deleteChapters(manga: Manga, chapters: List<Chapter>) {
+        sourceManager.get(manga.source)?.let { source ->
+            downloadManager.deleteChapters(chapters, manga, source)
+        }
+    }
+
     /**
      * Remove the selected manga from the library.
      *
diff --git a/app/src/main/res/menu/library_selection.xml b/app/src/main/res/menu/library_selection.xml
index 17d0134b0..654159531 100755
--- a/app/src/main/res/menu/library_selection.xml
+++ b/app/src/main/res/menu/library_selection.xml
@@ -16,6 +16,20 @@
         app:iconTint="?attr/colorOnPrimary"
         app:showAsAction="always" />
 
+    <item
+        android:id="@+id/action_mark_as_read"
+        android:icon="@drawable/ic_done_24dp"
+        android:title="@string/action_mark_as_read"
+        app:iconTint="?attr/colorOnPrimary"
+        app:showAsAction="always" />
+
+    <item
+        android:id="@+id/action_mark_as_unread"
+        android:icon="@drawable/ic_done_outline_24dp"
+        android:title="@string/action_mark_as_unread"
+        app:iconTint="?attr/colorOnPrimary"
+        app:showAsAction="always" />
+
     <item
         android:id="@+id/action_delete"
         android:icon="@drawable/ic_delete_24dp"