diff --git a/.gitignore b/.gitignore
index 0caff163b19855cfdae285434367f8d4bf34eb47..a67cfe0a3ddbe4546495b4ef5ec93b187224b0fc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ __pycache__/
 *.py[cod]
 *$py.class
 instance/
+*.swp
diff --git a/warehouse/__init__.py b/warehouse/__init__.py
index 0351931e7ad79f47397a23800eaf1e38cd6a1382..64379153013478f4f7cad240e8fbe06e79dd4b89 100644
--- a/warehouse/__init__.py
+++ b/warehouse/__init__.py
@@ -166,9 +166,12 @@ def item_edit(item_id):
 	db.session.commit()
 	return redirect(url_for('item_view', item_id=item.id))
 
-@app.route('/item/<item_id>/', methods=['DELETE'])
+@app.route('/item/<item_id>/delete', methods=['GET', 'POST'])
 def item_delete(item_id):
-	db.session.delete(Item.query.get_or_404(item_id))
+	item = Item.query.get_or_404(item_id)
+	if request.method == 'GET':
+		return render_template('item/delete.html', item=item)
+	db.session.delete(item)
 	db.session.commit()
 	return redirect(url_for('item_list'))
 
diff --git a/warehouse/templates/item/delete.html b/warehouse/templates/item/delete.html
new file mode 100644
index 0000000000000000000000000000000000000000..2377e6786ef643d1eb49282d3b7ed938107f8b5b
--- /dev/null
+++ b/warehouse/templates/item/delete.html
@@ -0,0 +1,12 @@
+{% extends 'layout.html' %}
+
+{% block body %}
+<form method="POST" class="form">
+	<input type="hidden" name="csrf_token" value="{{ request.csrf_token }}">
+	<p>Really delete item {{ item.name }} ({{ item.id }})?</p>
+	<div class="d-flex justify-content-end gap-1">
+		<a href="{{ url_for('item_view', item_id=item.id) }}" class="btn btn-light">Cancel</a>
+		<button type="submit" class="btn btn-danger">Delete item</button>
+	</div>
+</form>
+{% endblock %}
diff --git a/warehouse/templates/item/view.html b/warehouse/templates/item/view.html
index 7e6905dc975401069616559a267bddb516b5c3d1..88af4d6a1709a6ea83064298128e842109ba1875 100644
--- a/warehouse/templates/item/view.html
+++ b/warehouse/templates/item/view.html
@@ -3,7 +3,16 @@
 {% block body %}
 
 <div class="d-flex justify-content-end gap-1">
-	<a href="{{ url_for('item_edit', item_id=item.id) }}" class="btn btn-primary">Edit</a>
+	<div class="btn-group">
+		<a href="{{ url_for('item_edit', item_id=item.id) }}" class="btn btn-primary">Edit</a>
+		<button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
+			<span class="visually-hidden">Toggle Dropdown</span>
+		</button>
+		<ul class="dropdown-menu">
+			<a href="{{ url_for('item_delete', item_id=item.id) }}" class="dropdown-item">Delete</a>
+		</ul>
+	</div>
+
 	<div class="btn-group">
 		<a href="{{ url_for('item_label', item_id=item.id) }}" class="btn btn-primary">Label</a>
 		<button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
@@ -13,6 +22,7 @@
 			<a href="{{ url_for('item_print_label', item_id=item.id) }}" class="dropdown-item">Print Label</a>
 		</ul>
 	</div>
+
 	<form method="POST" action="{{ url_for('item_upload_photo', item_id=item.id) }}" enctype="multipart/form-data">
 		<input type="hidden" name="csrf_token" value="{{ request.csrf_token }}">
 		<label>