diff --git a/templates/archive.html b/templates/archive.html
index 46b9348..0bf581a 100644
--- a/templates/archive.html
+++ b/templates/archive.html
@@ -25,24 +25,33 @@
{%- set_global all_posts = all_posts | concat(with=section_item.pages) -%}
{%- endfor %}
- {% for year, posts in all_posts | group_by(attribute="year") %}
- {% if posts | length > 0 %}
-
- {{ year }}
-
-
- {% endif %}
+ {# Group posts by year. #}
+ {% set posts_by_year = all_posts | group_by(attribute="year") %}
+ {% set years = [] %}
+ {% for year, ignored in posts_by_year %}
+ {% set_global years = years | concat(with=[year]) %}
+ {% endfor %}
+
+ {# Iterate over sorted & reversed years (newest to oldest). #}
+ {% for year in years | sort | reverse %}
+ {% set posts = posts_by_year[year] %}
+ {% if posts | length > 0 %}
+
+ {{ year }}
+
+
+ {% endif %}
{% endfor %}