diff --git a/components/content/ReferencesList.vue b/components/content/ReferencesList.vue
index 66c9ba385e63d52ffdcefa298e322fe28e8f34f6..d36b9b1140b4fcd5421905864c8e9848793b0dba 100644
--- a/components/content/ReferencesList.vue
+++ b/components/content/ReferencesList.vue
@@ -1,10 +1,17 @@
 <template>
   <ProseOl v-if="computedItems.length > 0">
-    <ProseLi v-for="item in computedItems" :key="item.DOI" class="refArticle">
-      <div class="ref-title">{{ item.title }}.</div>
-      <div class="ref-authors">{{ item.authorsString }}</div>
-      <div>{{ item?.containerTitle }}</div>
-    </ProseLi>
+    <ProseA
+      v-for="item in computedItems"
+      :key="item.DOI"
+      :href="item.href"
+      target="blank"
+    >
+      <ProseLi class="refArticle">
+        <div class="ref-title">{{ item.title }}.</div>
+        <div class="ref-authors">{{ item.authorsString }}</div>
+        <div>{{ item?.containerTitle }}</div>
+      </ProseLi>
+    </ProseA>
   </ProseOl>
 </template>
 
@@ -15,6 +22,7 @@ const props = defineProps<{
   items: string[];
 }>();
 
+const doiBaseUrl = ref(new URL("https://doi.org/"));
 const fetchedDoi = ref(
   await Promise.all(
     props.items.map(async (doi) => {
@@ -53,6 +61,7 @@ const computedItems = computed(() => {
         authorsString: toAuthorsString(doi?.message?.author ?? []),
         containerTitle: cts?.length > 0 ? cts[0] : ct?.length > 0 ? ct[0] : "",
         abstract,
+        href: getReferenceUrl(DOI),
       };
     } else {
       return {};
@@ -67,6 +76,10 @@ function toAuthorsString(authors: Array<{ family: string; given: string }>) {
     })
     .join(", ");
 }
+
+function getReferenceUrl(doi) {
+  return new URL(doi, doiBaseUrl.value).href;
+}
 </script>
 
 <style lang="ts">