diff --git a/_includes/download-stable.html b/_includes/download-stable.html
index 9f6b74ba66c4925a82b64518acbed2a873b6331d..ef5e5b8b7b7e05c650e67907397f2d5197e7abd6 100644
--- a/_includes/download-stable.html
+++ b/_includes/download-stable.html
@@ -42,15 +42,19 @@
 
   <section class="dynare_section" id="stable_content2">
     <p>
-      Compatible with macOS 13 “Ventura” (Intel x86-64 / Apple Silicon via
-      Rosetta 2) and MATLAB (R2014a–R2023b). <b>NB</b>: This package is
-      unsigned; to run it, you need to right click on it and select “Open” from
-      the menu that pops up.
-      If you want to use Dynare with Octave, do not download this package,
+      Compatible with macOS 14 “Sonoma” (Intel x86-64 / Apple Silicon) and
+      MATLAB (R2014a–R2023b). <b>NB</b>: This package is unsigned; to run it,
+      you need to right click on it and select “Open” from the menu that pops
+      up. If you want to use Dynare with Octave, do not download this package,
       but rather use the one from Homebrew (see
       the <a href="/resources/quick_start">quick start guide</a> for
       instructions).
     </p>
+    <p>Available as Apple Silicon (arm64) or Intel (x86-64) pkg installers.</p>
+    <p class="stable">
+      <i class="fas fa-file-download"></i>
+      {% include release/download-release-macos-arm64.html %}
+    </p>
     <p class="stable">
       <i class="fas fa-file-download"></i>
       {% include release/download-release-macos-x86_64.html %}
diff --git a/setup-download-links.sh b/setup-download-links.sh
index d53575c58817dcf0b126ad8be5f3ce6a5384a327..286aee3919c6e229ab261e1cc6c4b7b3886ab147 100755
--- a/setup-download-links.sh
+++ b/setup-download-links.sh
@@ -9,12 +9,6 @@ for branch in release snapshot; do
     cd "$branch"
 
     for dir in macos-x86_64 macos-arm64 source windows windows-7z windows-zip; do
-
-        # FIXME: remove this when publishing 5.5 with arm64
-        if [[ $branch == release ]] && [[ $dir == macos-arm64 ]]; then
-            continue
-        fi
-
         wget --no-verbose "https://www.dynare.org/$branch/$dir.json"
         readarray -t filenames < <(jq .[].filename "$dir.json")
         readarray -t timestamps < <(jq .[].date "$dir.json")
@@ -28,10 +22,14 @@ for branch in release snapshot; do
             mb=$((size[i] / (10 ** 6)))
             if [[ $branch == release ]]; then
                 readarray -t -d - split <<< "$filename"
-                if [[ $dir == windows* ]] || [[ $dir == macos* ]]; then
+                if [[ $dir == windows* ]]; then
                     version=${split[1]}
                     ext=${filename##*.}
-                else
+                elif [[ $dir == macos* ]]; then
+                    version=${split[1]}
+                    ext=${split[2]%%.*} # For macOS, we use the architecture as the extension (arm64 vs x86_64)
+                    ext=${ext/_/-} # Transform x86_64 into x86-64
+                else # Source
                     [[ ${split[1]} =~ ([0-9\.]+)\.([^[:space:]]+) ]]
                     version=${BASH_REMATCH[1]}
                     ext=${BASH_REMATCH[2]}