diff --git a/README.md b/README.md
index 1291d53..41e3c24 100644
--- a/README.md
+++ b/README.md
@@ -52,6 +52,7 @@ Unsere Webseite setzt aus folgenden GrĂ¼nden auf Jekyll, einen statischen Websit
       location: "Netz39 e.V." # optional, Ort des Events
       frequency: "WEEKLY" # https://icalendar.org/iCalendar-RFC-5545/3-3-10-recurrence-rule.html
       interval: 2 # optional, ergibt zusammen mit frequency am Beispiel "alle zwei wochen"
+      rrule: "FREQ=MONTHLY;INTERVAL=1;BYDAY=1FR,1TH" # follows https://icalendar.org/iCalendar-RFC-5545/3-3-10-recurrence-rule.html  
     ---
     ```
 - Unterhalb des Front Matters die Beschreibung des Events in Markdown aufschreiben
diff --git a/_events/2025/recurring_event.md b/_events/2025/recurring_event.md
new file mode 100644
index 0000000..7101f48
--- /dev/null
+++ b/_events/2025/recurring_event.md
@@ -0,0 +1,11 @@
+---
+layout: event
+title: "recurringEvent"
+author: MaxMustermann # optional, soll angegeben werden, wenn du der Ansprechpartner des Events bist
+event:
+  start: 2025-04-16 19:00:00 # Datum, an dem das Event stattfindet. Die Zeit ist optional
+  end: 2025-04-16 21:00:00 # optional, Zeitpunkt, an dem das Event endet
+  organizer: "Netz39 Team <kontakt@netz39.de>" # optional, Kontaktdaten im ical Event
+  location: "Netz39 e.V." # optional, Ort des Events
+  rrule: "DTSTART=20250416T190000Z;FREQ=MONTHLY;INTERVAL=1;BYDAY=2FR" # follows https://icalendar.org/iCalendar-RFC-5545/3-3-10-recurrence-rule.html
+---
diff --git a/_includes/blog/post_info.liquid b/_includes/blog/post_info.liquid
index e2dcf79..ab27089 100644
--- a/_includes/blog/post_info.liquid
+++ b/_includes/blog/post_info.liquid
@@ -1,7 +1,6 @@
 {% assign author = site.data.authors[include.author] %}
 {% assign date = include.date | default: "today" | date: "%-d. %B %Y" %}
-{% assign frequency = include.frequency %}
-{% assign interval = include.interval %}
+{% assign rrule = include.rrule %}
 
 <div class="post-info">
   {%- if author.url -%}<a href="{{ author.url | relative_url }}" target="_blank" rel="noopener">{%- endif -%}
@@ -11,13 +10,80 @@
     <p class="meta">
       {% if author.name %}{{ author.name }} - {% endif %}
       {% assign x = date | date: "%m" | minus: 1 %}
-      {% if frequency %}
-      {% if interval == 1 %}
-      Every {{ frequency }} starting {{ date | date: "%-d. " }}{{ site.data.language.str_months[x]}} {{ date | date: "%Y" }}
-      {% else %}
-      {% assign freql = frequency | size | minus: 2 %}
-      Every {{ interval }} {{ frequency | slice: 0, freql  }}s starting {{ date | date: "%-d. " }}{{ site.data.language.str_months[x]}} {{ date | date: "%Y" }}
-      {% endif %}
+      {% if rrule %}
+      
+      {% assign freq = rrule | split: ";" %}
+      {% assign frequency = freq[0] | split: "=" | last %}
+      {% assign interval = freq[1] | split: "=" | last %}
+      {% assign byday = freq[2] | split: "=" | last %}
+      {% capture transformed_text %}
+        {% if frequency == "MONTHLY" %}
+          {% assign days = byday | split: "," %}
+          {% capture days_text %}
+            {% for day in days %}
+              {% assign day_of_week = day | slice: 1, 2 %}
+              {% assign week = day | slice: 0, 1 %}
+
+              {% case day_of_week %}
+                {% when "MO" %}
+                  {% assign day_name = "Monday" %}
+                {% when "TU" %}
+                  {% assign day_name = "Tuesday" %}
+                {% when "WE" %}
+                  {% assign day_name = "Wednesday" %}
+                {% when "TH" %}
+                  {% assign day_name = "Thursday" %}
+                {% when "FR" %}
+                  {% assign day_name = "Friday" %}
+                {% when "SA" %}
+                  {% assign day_name = "Saturday" %}
+                {% when "SU" %}
+                  {% assign day_name = "Sunday" %}
+              {% endcase %}
+
+              {% assign week_suffix = week | append: "th" %}
+              {% if week == "1" %}
+                {% assign week_suffix = week | append: "st" %}
+              {% elsif week == "2" %}
+                {% assign week_suffix = week | append: "nd" %}
+              {% elsif week == "3" %}
+                {% assign week_suffix = week | append: "rd" %}
+              {% endif %}
+
+              {% if forloop.first %}
+                {{ week_suffix }} {{ day_name }}
+              {% else %}
+                and {{ week_suffix }} {{ day_name }}
+              {% endif %}
+            {% endfor %}
+          {% endcapture %}
+          {% capture month_text %}
+            {% if interval == "1" %}
+              Every month
+            {% elsif interval == "2" %}
+              Every other month
+            {% else %}
+              Every {{interval}} months
+            {% endif %}
+          {% endcapture %}
+          {{ month_text }} on the {{days_text}}
+        {% elsif frequency == "WEEKLY" %}
+          {% capture week_text %}
+            {% if interval == "1" %}
+              Every week
+            {% elsif interval == "2" %}
+              Every other week
+            {% else %}
+              Every {{interval}} weeks
+            {% endif %}
+          {% endcapture %}
+          {% capture day %}
+            {{ date | date: "%A" }}
+          {% endcapture %}
+          {{ week_text }} on {{ day }}
+        {% endif %}
+      {% endcapture %}
+      {{transformed_text}}
       {% else %}
       {{ date | date: "%-d. " }}{{ site.data.language.str_months[x]}} {{ date | date: "%Y" }}
       {% endif %}
diff --git a/_layouts/event.liquid b/_layouts/event.liquid
index 8422efe..b852cbb 100644
--- a/_layouts/event.liquid
+++ b/_layouts/event.liquid
@@ -9,7 +9,7 @@ layout: default
       {% else %}
       <h1 id="{{ page.title | cgi_escape }}" class="title">{{ page.title }}</h1>
       {% assign start_date = page.event.start | default: page.event_date %}
-      {% include blog/post_info.liquid author=page.author date=start_date frequency=page.event.frequency interval=page.event.interval %}
+      {% include blog/post_info.liquid author=page.author date=start_date rrule=page.event.rrule %}
       {% endif %}
     </div>
   </header>
diff --git a/_plugins/events_to_ics.rb b/_plugins/events_to_ics.rb
index 2fc3483..16fdc9e 100644
--- a/_plugins/events_to_ics.rb
+++ b/_plugins/events_to_ics.rb
@@ -39,8 +39,7 @@ module Jekyll
         end_date = event.data.dig('event', 'end') || event.data['event_date'] || start_date + default_duration
         organizer = event.data.dig('event', 'organizer') || default_organizer
         location = event.data.dig('event', 'location') || default_location
-        frequency = event.data.dig('event', 'frequency')
-        interval = event.data.dig('event', 'interval')
+        rrule = event.data.dig('event', 'rrule')
 
         # Skip events older than 365 days
         next if start_date.to_date < (Date.today - 365)
@@ -65,8 +64,8 @@ module Jekyll
           ical_event.dtstart = Icalendar::Values::Date.new(start_date)
           ical_event.dtend = Icalendar::Values::Date.new(end_date)
         end
-        if frequency && interval
-          ical_event.rrule = "FREQ=#{frequency};INTERVAL=#{interval.to_i};"
+        if rrule
+          ical_event.rrule = rrule
         end
         ical_event.summary = title
         ical_event.description = description
diff --git a/calendar-data.html b/calendar-data.html
index e0ac0d5..869a8ea 100644
--- a/calendar-data.html
+++ b/calendar-data.html
@@ -8,18 +8,14 @@ permalink: /calendar-data/
 {% for event in site.events %}
 	{% assign start = event.event.start | default: event.event_date %}
 	{% assign end = event.event.end | default: start %}
-	{% if event.event.frequency %}
+	{% if event.event.rrule %}
 	{
 		"title": "{{event.title}}",
 		"start": "{{start | date: "%Y-%m-%dT%H:%M:%S"}}",
 		"end": "{{end | date: "%Y-%m-%dT%H:%M:%S"}}",
 		"allDay": {% if start == end %}true{% else %}false{% endif %},
 		"url": "{{event.url}}",
-		"rrule": {% if event.event.frequency %}{
-			"freq": "{{event.event.frequency}}",
-			"interval": {{event.event.interval}},
-			"dtstart": "{{start | date: "%Y-%m-%dT%H:%M:%S"}}"
-		}{% else %}null{% endif %}
+		"rrule": {% if event.event.rrule %}"{{event.event.rrule}}"{% else %}null{% endif %}
 	}
 	{% else %}
 	{