diff --git a/datasette/templates/table.html b/datasette/templates/table.html
index 13d8f810..65b336b6 100644
--- a/datasette/templates/table.html
+++ b/datasette/templates/table.html
@@ -81,8 +81,8 @@
{% endif %}
- {% for facet in facet_results %}
-
+ {% for facet in sorted_facet_results %}
+
{% endfor %}
diff --git a/datasette/views/table.py b/datasette/views/table.py
index 394f82c0..cb5a44f7 100644
--- a/datasette/views/table.py
+++ b/datasette/views/table.py
@@ -716,7 +716,7 @@ class TableView(RowTableShared):
"display_rows": display_rows,
"sorted_facet_results": sorted(
facet_results.values(),
- key=lambda f: len(f["results"]),
+ key=lambda f: (len(f["results"]), f["name"]),
reverse=True
),
"is_sortable": any(c["sortable"] for c in display_columns),
diff --git a/tests/test_html.py b/tests/test_html.py
index 6c93d453..3e94275f 100644
--- a/tests/test_html.py
+++ b/tests/test_html.py
@@ -210,8 +210,8 @@ def test_facets_persist_through_filter_form(app_client):
inputs = Soup(response.body, 'html.parser').find('form').findAll('input')
hiddens = [i for i in inputs if i['type'] == 'hidden']
assert [
- ('_facet', 'planet_int'),
('_facet', 'city_id'),
+ ('_facet', 'planet_int'),
] == [
(hidden['name'], hidden['value']) for hidden in hiddens
]