diff --git a/aleksis/core/frontend/components/availability_event/AvailabilityEventList.vue b/aleksis/core/frontend/components/availability_event/AvailabilityEventList.vue
index e36f416b72e6fb6fa3bc43c2e989847c2e529f0f..3ff485aed083a8bb7d1fe6a26bfcb9bafba5d459 100644
--- a/aleksis/core/frontend/components/availability_event/AvailabilityEventList.vue
+++ b/aleksis/core/frontend/components/availability_event/AvailabilityEventList.vue
@@ -166,13 +166,16 @@ export default {
     rRuleToText(rfcString) {
       if (rfcString) {
         const rRule = RRule.fromString(rfcString);
-        return `${
-          this.rruleFrequencies.find((r) => r.freq === rRule.options.interval)
-            .text
-        }, ${this.$t("availability_events.recurrences.until")} ${this.$d(
-          rRule.options.until,
-          "short",
-        )}`;
+        let recurrence = this.rruleFrequencies.find(
+          (r) => r.freq === rRule.options.interval,
+        ).text;
+        if (rRule.options.until) {
+          recurrence += `, ${this.$t("availability_events.recurrences.until")} ${this.$d(
+            rRule.options.until,
+            "short",
+          )}`;
+        }
+        return recurrence;
       }
       return this.$t("availability_events.recurrences.none");
     },