diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
index 2833abb8d..97b2cca37 100644
--- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
@@ -12,6 +12,7 @@ import android.support.v7.app.ActionBar;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.TooltipCompat;
+import android.support.v7.widget.helper.ItemTouchHelper;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
@@ -44,10 +45,9 @@ import org.schabi.newpipe.fragments.list.BaseListFragment;
 import org.schabi.newpipe.local.history.HistoryRecordManager;
 import org.schabi.newpipe.report.ErrorActivity;
 import org.schabi.newpipe.report.UserAction;
-import org.schabi.newpipe.util.Constants;
 import org.schabi.newpipe.util.AnimationUtils;
+import org.schabi.newpipe.util.Constants;
 import org.schabi.newpipe.util.ExtractorHelper;
-import org.schabi.newpipe.util.LayoutManagerSmoothScroller;
 import org.schabi.newpipe.util.NavigationHelper;
 import org.schabi.newpipe.util.ServiceHelper;
 
@@ -72,8 +72,8 @@ import io.reactivex.disposables.Disposable;
 import io.reactivex.schedulers.Schedulers;
 import io.reactivex.subjects.PublishSubject;
 
+import static android.support.v7.widget.helper.ItemTouchHelper.Callback.makeMovementFlags;
 import static java.util.Arrays.asList;
-
 import static org.schabi.newpipe.util.AnimationUtils.animateView;
 
 public class SearchFragment
@@ -292,7 +292,23 @@ public class SearchFragment
         suggestionsPanel = rootView.findViewById(R.id.suggestions_panel);
         suggestionsRecyclerView = rootView.findViewById(R.id.suggestions_list);
         suggestionsRecyclerView.setAdapter(suggestionListAdapter);
-        suggestionsRecyclerView.setLayoutManager(new LayoutManagerSmoothScroller(activity));
+        new ItemTouchHelper(new ItemTouchHelper.Callback() {
+            @Override
+            public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
+                return getSuggestionMovementFlags(recyclerView, viewHolder);
+            }
+
+            @Override
+            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder,
+                                  @NonNull RecyclerView.ViewHolder viewHolder1) {
+                return false;
+            }
+
+            @Override
+            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
+                onSuggestionItemSwiped(viewHolder, i);
+            }
+        }).attachToRecyclerView(suggestionsRecyclerView);
 
         searchToolbarContainer = activity.findViewById(R.id.toolbar_search_container);
         searchEditText = searchToolbarContainer.findViewById(R.id.toolbar_search_edit_text);
@@ -890,4 +906,28 @@ public class SearchFragment
 
         return true;
     }
+
+    /*//////////////////////////////////////////////////////////////////////////
+    // Suggestion item touch helper
+    //////////////////////////////////////////////////////////////////////////*/
+
+    public int getSuggestionMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
+        final int position = viewHolder.getAdapterPosition();
+        final SuggestionItem item = suggestionListAdapter.getItem(position);
+        return item.fromHistory ? makeMovementFlags(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) : 0;
+    }
+
+    public void onSuggestionItemSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
+        final int position = viewHolder.getAdapterPosition();
+        final String query = suggestionListAdapter.getItem(position).query;
+        final Disposable onDelete = historyRecordManager.deleteSearchHistory(query)
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(
+                        howManyDeleted -> suggestionPublisher
+                                .onNext(searchEditText.getText().toString()),
+                        throwable -> showSnackBarError(throwable,
+                                UserAction.DELETE_FROM_HISTORY, "none",
+                                "Deleting item failed", R.string.general_error));
+        disposables.add(onDelete);
+    }
 }
diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SuggestionListAdapter.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SuggestionListAdapter.java
index 7b5f72c53..3f4e9af0b 100644
--- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SuggestionListAdapter.java
+++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SuggestionListAdapter.java
@@ -75,7 +75,7 @@ public class SuggestionListAdapter extends RecyclerView.Adapter<SuggestionListAd
         });
     }
 
-    private SuggestionItem getItem(int position) {
+    SuggestionItem getItem(int position) {
         return items.get(position);
     }
 
diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml
index d49d23175..c6f733e3f 100644
--- a/app/src/main/res/layout/fragment_search.xml
+++ b/app/src/main/res/layout/fragment_search.xml
@@ -67,6 +67,7 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:scrollbars="vertical"
+            app:layoutManager="LinearLayoutManager"
             tools:listitem="@layout/item_search_suggestion"/>
     </LinearLayout>