diff --git a/bookwyrm/templates/snippets/form_rate_stars.html b/bookwyrm/templates/snippets/form_rate_stars.html
index dfd5a758..302f181e 100644
--- a/bookwyrm/templates/snippets/form_rate_stars.html
+++ b/bookwyrm/templates/snippets/form_rate_stars.html
@@ -1,5 +1,6 @@
{% spaceless %}
{% load i18n %}
+{% load stars %}
- {% blocktranslate trimmed count rating=forloop.counter0 with half_rating=forloop.counter0|add:""|add:"0.5" %}
+ {% blocktranslate trimmed count rating=forloop.counter0 with half_rating=forloop.counter0|half_star %}
{{ half_rating }} star
{% plural %}
{{ half_rating }} stars
diff --git a/bookwyrm/templatetags/stars.py b/bookwyrm/templatetags/stars.py
new file mode 100644
index 00000000..d08dd8ef
--- /dev/null
+++ b/bookwyrm/templatetags/stars.py
@@ -0,0 +1,11 @@
+""" template filters """
+from django import template
+
+
+register = template.Library()
+
+
+@register.filter(name="half_star")
+def get_half_star(value):
+ """one of those things that's weirdly hard with templates"""
+ return f"{value}.5"