diff --git a/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java b/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java
index 4941d9395..df4ef2e52 100644
--- a/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java
+++ b/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java
@@ -25,6 +25,7 @@ import static org.schabi.newpipe.database.playlist.model.PlaylistStreamEntity.JO
 import static org.schabi.newpipe.database.playlist.model.PlaylistStreamEntity.PLAYLIST_STREAM_JOIN_TABLE;
 import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_ID;
 import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_TABLE;
+import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_THUMBNAIL_URL;
 import static org.schabi.newpipe.database.stream.model.StreamStateEntity.JOIN_STREAM_ID_ALIAS;
 import static org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_PROGRESS_MILLIS;
 import static org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_STATE_TABLE;
@@ -53,6 +54,15 @@ public interface PlaylistStreamDAO extends BasicDAO<PlaylistStreamEntity> {
             + " WHERE " + JOIN_PLAYLIST_ID + " = :playlistId")
     Flowable<Integer> getMaximumIndexOf(long playlistId);
 
+    @Query("SELECT CASE WHEN COUNT(*) != 0 then " + STREAM_THUMBNAIL_URL + " ELSE :defaultUrl END"
+            + " FROM " + STREAM_TABLE
+            + " LEFT JOIN " + PLAYLIST_STREAM_JOIN_TABLE
+            + " ON " + STREAM_ID + " = " + JOIN_STREAM_ID
+            + " WHERE " + JOIN_PLAYLIST_ID + " = :playlistId "
+            + " LIMIT 1"
+    )
+    Flowable<String> getAutomaticThumbnailUrl(long playlistId, String defaultUrl);
+
     @RewriteQueriesToDropUnusedColumns
     @Transaction
     @Query("SELECT * FROM " + STREAM_TABLE + " INNER JOIN "
diff --git a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java
index 65db40d16..1ef61bf31 100644
--- a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java
@@ -259,11 +259,42 @@ public final class BookmarkFragment extends BaseLocalListFragment<List<PlaylistL
     }
 
     private void showLocalDialog(final PlaylistMetadataEntry selectedItem) {
+        final String rename = getString(R.string.rename);
+        final String delete = getString(R.string.delete);
+        final String unsetThumbnail = getString(R.string.unset_playlist_thumbnail);
         final boolean isPlaylistThumbnailSet = localPlaylistManager
                 .getIsPlaylistThumbnailSet(selectedItem.uid);
+
         final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
 
-        final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getContext(),
+        final ArrayAdapter<String> arrayAdapter = getLocalDialogArrayAdapter(isPlaylistThumbnailSet,
+                unsetThumbnail);
+        arrayAdapter.addAll(rename, delete, unsetThumbnail);
+
+        final DialogInterface.OnClickListener action = (dialog, index) -> {
+            if (index == arrayAdapter.getPosition(rename)) {
+                showRenameDialog(selectedItem);
+            } else if (index == arrayAdapter.getPosition(delete)) {
+                showDeleteDialog(selectedItem.name, localPlaylistManager
+                        .deletePlaylist(selectedItem.uid));
+                dialog.dismiss();
+            } else if (isPlaylistThumbnailSet) {
+                final String thumbnail_url = localPlaylistManager
+                        .getAutomaticPlaylistThumbnail(selectedItem.uid);
+                localPlaylistManager.changePlaylistThumbnail(selectedItem.uid, thumbnail_url, false)
+                        .observeOn(AndroidSchedulers.mainThread())
+                        .subscribe();
+            }
+        };
+
+        builder.setAdapter(arrayAdapter, action)
+                .create()
+                .show();
+    }
+
+    private ArrayAdapter<String> getLocalDialogArrayAdapter(final boolean isPlaylistThumbnailSet,
+                                                            final String unsetThumbnail) {
+        return new ArrayAdapter<>(getContext(),
                 android.R.layout.simple_list_item_1) {
             @Override
             public View getView(final int position, final View convertView,
@@ -271,7 +302,8 @@ public final class BookmarkFragment extends BaseLocalListFragment<List<PlaylistL
                 final View v = super.getView(position, convertView, parent);
                 final TextView textView = v.findViewById(android.R.id.text1);
 
-                if (!isPlaylistThumbnailSet && position == 2) {
+                // If the PlaylistThumbnail is not set permanently, the unset option is disabled.
+                if (!isPlaylistThumbnailSet && textView.getText().equals(unsetThumbnail)) {
                     textView.setEnabled(false);
                     return v;
                 }
@@ -280,32 +312,6 @@ public final class BookmarkFragment extends BaseLocalListFragment<List<PlaylistL
                 return v;
             }
         };
-        arrayAdapter.addAll(getString(R.string.rename), getString(R.string.delete),
-                getString(R.string.unset_playlist_thumbnail));
-
-        // Rename = 0; Delete = 1; Unset Thumbnail = 2
-        final DialogInterface.OnClickListener action = (dialog, index) -> {
-            switch (index) {
-                case 0: showRenameDialog(selectedItem);
-                    break;
-                case 1:
-                    showDeleteDialog(selectedItem.name,
-                            localPlaylistManager.deletePlaylist(selectedItem.uid));
-                    dialog.dismiss();
-                    break;
-                case 2:
-                    if (isPlaylistThumbnailSet) {
-                        final String ur = "drawable://" + R.drawable.placeholder_thumbnail_playlist;
-                        localPlaylistManager.changePlaylistThumbnail(selectedItem.uid, ur,
-                            false).observeOn(AndroidSchedulers.mainThread()).subscribe();
-                    }
-                    break;
-            }
-        };
-
-        builder.setAdapter(arrayAdapter, action)
-                .create()
-                .show();
     }
 
     private void showRenameDialog(final PlaylistMetadataEntry selectedItem) {
diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java
index 2510b284d..8d975241b 100644
--- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java
+++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java
@@ -2,6 +2,7 @@ package org.schabi.newpipe.local.playlist;
 
 import androidx.annotation.Nullable;
 
+import org.schabi.newpipe.R;
 import org.schabi.newpipe.database.AppDatabase;
 import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry;
 import org.schabi.newpipe.database.playlist.PlaylistStreamEntry;
@@ -113,12 +114,18 @@ public class LocalPlaylistManager {
         return playlistTable.getPlaylist(playlistId).blockingFirst().get(0).getIsThumbnailSet();
     }
 
+    public String getAutomaticPlaylistThumbnail(final long playlistId) {
+        final String def = "drawable://" + R.drawable.placeholder_thumbnail_playlist;
+        return playlistStreamTable.getAutomaticThumbnailUrl(playlistId, def).blockingFirst();
+    }
+
     private Maybe<Integer> modifyPlaylist(final long playlistId,
                                           @Nullable final String name,
                                           @Nullable final String thumbnailUrl,
                                           final boolean isPermanent) {
         return playlistTable.getPlaylist(playlistId)
                 .firstElement()
+                .filter(playlistEntities -> !playlistEntities.isEmpty())
                 .map(playlistEntities -> {
                     final PlaylistEntity playlist = playlistEntities.get(0);
                     if (name != null) {