diff --git a/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml b/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml
index e50250af..ac2a112a 100644
--- a/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml
+++ b/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml
@@ -81,11 +81,11 @@
 
             
             
-            
+            
 
             
             
-            
+            
 
             
             
diff --git a/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml.cs b/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml.cs
index 8297a51d..0f363272 100644
--- a/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml.cs
+++ b/AideDeJeu/AideDeJeu/Views/MonsterDetailPage.xaml.cs
@@ -4,8 +4,14 @@ using AideDeJeuLib.Monsters;
 using SkiaSharp;
 using SkiaSharp.Views.Forms;
 using System;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
 using Xamarin.Forms;
 using Xamarin.Forms.Xaml;
+using System.Linq;
+using AideDeJeuLib.Spells;
+using System.Text;
+using System.Globalization;
 
 namespace AideDeJeu.Views
 {
@@ -19,8 +25,55 @@ namespace AideDeJeu.Views
             InitializeComponent();
 
             BindingContext = this.viewModel = viewModel;
+
+            mdSpecialFeatures.NavigateToLink = async(s) => await NavigateToLink(s);
+            mdActions.NavigateToLink = async (s) => await NavigateToLink(s);
         }
 
+        public async Task NavigateToLink(string s)
+        {
+            var regex = new Regex("/(?.*)\\.md#(?.*)");
+            var match = regex.Match(s);
+            var file = match.Groups["file"].Value;
+            var anchor = match.Groups["anchor"].Value;
+            if (file == "spells_hd")
+            {
+                var spells = await viewModel.Main.GetItemsViewModel(ItemSourceType.SpellHD).GetAllItemsAsync();
+                var spell = spells.Where(i => IdFromName(i.Id) == anchor).FirstOrDefault();
+                var page = new SpellDetailPage(new SpellDetailViewModel(spell as Spell));
+                await Navigation.PushAsync(page);
+            }
+            else if (file == "monsters_hd")
+            {
+                var monsters = await viewModel.Main.GetItemsViewModel(ItemSourceType.MonsterHD).GetAllItemsAsync();
+                var monster = monsters.Where(i => IdFromName(i.Id) == anchor).FirstOrDefault();
+                var page = new MonsterDetailPage(new MonsterDetailViewModel(monster as Monster));
+                await Navigation.PushAsync(page);
+            }
+            //Device.OpenUri(new Uri(s));
+        }
+
+        public static string Capitalize(string text)
+        {
+            return string.Concat(text.Take(1)).ToUpper() + string.Concat(text.Skip(1)).ToString().ToLower();
+        }
+
+        public static string RemoveDiacritics(string text)
+        {
+            if (string.IsNullOrWhiteSpace(text))
+                return text;
+
+            text = text.Normalize(NormalizationForm.FormD);
+            var chars = text.Where(c => CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark).ToArray();
+            return new string(chars).Normalize(NormalizationForm.FormC);
+        }
+
+        static string IdFromName(string name)
+        {
+            return RemoveDiacritics(name.ToLower().Replace(" ", "-"));
+        }
+
+
         public MonsterDetailPage()
         {
             InitializeComponent();