diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html
index 76c12aca..8764d61b 100644
--- a/bookwyrm/templates/lists/list.html
+++ b/bookwyrm/templates/lists/list.html
@@ -37,9 +37,9 @@
Added by {% include 'snippets/username.html' with user=item.added_by %}
{% if list.user == request.user or list.curation == 'open' and item.added_by == request.user %}
-
{% endif %}
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py
index 89cc5c41..ae0f25f3 100644
--- a/bookwyrm/urls.py
+++ b/bookwyrm/urls.py
@@ -92,6 +92,8 @@ urlpatterns = [
views.List.as_view(), name='list'),
re_path(r'^list/(?P\d+)/add/?$',
views.list.add_book, name='list-add-book'),
+ re_path(r'^list/(?P\d+)/remove/?$',
+ views.list.remove_book, name='list-remove-book'),
re_path(r'^list/(?P\d+)/curate/?$',
views.Curate.as_view(), name='list-curate'),
diff --git a/bookwyrm/views/list.py b/bookwyrm/views/list.py
index 9e76e12c..2e9afe33 100644
--- a/bookwyrm/views/list.py
+++ b/bookwyrm/views/list.py
@@ -161,3 +161,16 @@ def add_book(request, list_id):
return HttpResponseBadRequest()
return redirect('list', list_id)
+
+
+@require_POST
+def remove_book(request, list_id):
+ ''' put a book on a list '''
+ book_list = get_object_or_404(models.List, id=list_id)
+ item = get_object_or_404(models.ListItem, id=request.POST.get('item'))
+
+ if not book_list.user == request.user and not item.user == request.user:
+ return HttpResponseNotFound()
+
+ item.delete()
+ return redirect('list', list_id)