diff --git a/templates/packages.html b/templates/packages.html
index 40a4414b..9e4a71d1 100644
--- a/templates/packages.html
+++ b/templates/packages.html
@@ -10,6 +10,21 @@
{% include "partials/packages/search.html" %}
+ {% elif not packages_count %}
+
+ {% include "partials/packages/search.html" %}
+
+
{{ "No packages matched your search criteria." | tr }}
+
+
+ {% if success %}
+
+ {% for message in success %}
+ - {{ message | tr }}
+ {% endfor %}
+
+ {% endif %}
+
{% else %}
{% set pages = (packages_count / PP) | ceil %}
diff --git a/test/test_packages_routes.py b/test/test_packages_routes.py
index cccdcba4..c1b27627 100644
--- a/test/test_packages_routes.py
+++ b/test/test_packages_routes.py
@@ -564,6 +564,17 @@ def test_packages(client: TestClient, packages: List[Package]):
assert len(rows) == 50 # Default per-page
+def test_packages_empty(client: TestClient):
+ with client as request:
+ response = request.get("/packages")
+ assert response.status_code == int(HTTPStatus.OK)
+
+ root = parse_root(response.text)
+ results = root.xpath('//div[@id="pkglist-results"]/p')
+ expected = "No packages matched your search criteria."
+ assert results[0].text.strip() == expected
+
+
def test_packages_search_by_name(client: TestClient, packages: List[Package]):
with client as request:
response = request.get("/packages", params={