diff --git a/datasette/templates/table.html b/datasette/templates/table.html
index 3238e83f..56fd4744 100644
--- a/datasette/templates/table.html
+++ b/datasette/templates/table.html
@@ -25,7 +25,7 @@
{% if filtered_table_rows or human_description_en %}
{% if filtered_table_rows or filtered_table_rows == 0 %}{{ "{:,}".format(filtered_table_rows) }} row{% if filtered_table_rows == 1 %}{% else %}s{% endif %}{% endif %}
- {% if human_description_en %}where {{ human_description_en }}{% endif %}
+ {% if human_description_en %}{{ human_description_en }}{% endif %}
{% endif %}
diff --git a/datasette/utils.py b/datasette/utils.py
index 4a2e0ed5..7f581741 100644
--- a/datasette/utils.py
+++ b/datasette/utils.py
@@ -475,7 +475,10 @@ class Filters:
and_bits.append(', '.join(commas))
if tail:
and_bits.append(tail[0])
- return ' and '.join(and_bits)
+ s = ' and '.join(and_bits)
+ if not s:
+ return ''
+ return 'where {}'.format(s)
def selections(self):
"Yields (column, lookup, value) tuples"
diff --git a/tests/test_api.py b/tests/test_api.py
index da167243..311938a1 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -388,6 +388,8 @@ def test_sortable_and_filtered(app_client):
)
response = app_client.get(path, gather_request=False)
fetched = response.json['rows']
+ assert 'where content contains "d" sorted by sortable descending' \
+ == response.json['human_description_en']
expected = [
row for row in generate_sortable_rows(201)
if 'd' in row['content']