diff --git a/datasette/templates/table.html b/datasette/templates/table.html
index 6deaaf1efc..8ec80ced42 100644
--- a/datasette/templates/table.html
+++ b/datasette/templates/table.html
@@ -81,6 +81,9 @@
{% if filtered_table_rows_count or filtered_table_rows_count == 0 %}{{ "{:,}
{% endif %}
+ {% for facet in facet_results %}
+
+ {% endfor %}
diff --git a/tests/test_html.py b/tests/test_html.py
index 9b48ceec2e..6d0f31649f 100644
--- a/tests/test_html.py
+++ b/tests/test_html.py
@@ -201,6 +201,22 @@ def test_sort_links(app_client):
] == attrs_and_link_attrs
+def test_facets_persist_through_filter_form(app_client):
+ response = app_client.get(
+ '/test_tables/facetable?_facet=planet_id&_facet=city',
+ gather_request=False
+ )
+ assert response.status == 200
+ inputs = Soup(response.body, 'html.parser').find('form').findAll('input')
+ hiddens = [i for i in inputs if i['type'] == 'hidden']
+ assert [
+ ('_facet', 'planet_id'),
+ ('_facet', 'city'),
+ ] == [
+ (hidden['name'], hidden['value']) for hidden in hiddens
+ ]
+
+
@pytest.mark.parametrize('path,expected_classes', [
('/', ['index']),
('/test_tables', ['db', 'db-test_tables']),