diff --git a/EduNetworkBuilder/NB.cs b/EduNetworkBuilder/NB.cs
index 53c38bc..3428d5b 100644
--- a/EduNetworkBuilder/NB.cs
+++ b/EduNetworkBuilder/NB.cs
@@ -1006,6 +1006,18 @@ namespace EduNetworkBuilder
             return randomizedList;
         }
 
+        public static bool OpenURLInExternalBrowser(string URL)
+        {
+            Uri uriResult;
+            bool result = Uri.TryCreate(URL, UriKind.Absolute, out uriResult)
+                && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
+            if(result)
+            {
+                System.Diagnostics.Process.Start(URL);
+            }
+            return false;
+        }
+
         public static List<TreeNode> GetAllNodes(this TreeView _self)
         {
             List<TreeNode> result = new List<TreeNode>();
diff --git a/EduNetworkBuilder/NetworkBuilder.cs b/EduNetworkBuilder/NetworkBuilder.cs
index c106a93..100208e 100644
--- a/EduNetworkBuilder/NetworkBuilder.cs
+++ b/EduNetworkBuilder/NetworkBuilder.cs
@@ -238,6 +238,23 @@ namespace EduNetworkBuilder
             //Make a bunch of new buttons.
             int count=0;
             int offset = btnHelp.Height + 3;
+            if (myNetwork.NetURL.GetText() != "")
+            {
+                tButton = new Button();
+                tButton.Location = new Point(btnHelp.Location.X, rbHelp1.Location.Y + rbHelp1.Height + 5 + (offset * count));
+                //tButton.Text = (count + 1).ToString();
+                tButton.BackgroundImage = Properties.Resources.VidImage;
+                tButton.BackgroundImageLayout = ImageLayout.Stretch;
+                tButton.Width = btnHelp.Width;
+                tButton.Height = btnHelp.Height;
+                tButton.Click += btnRead_Click;
+                tButton.Name = myNetwork.PuzzleName + "_URL";
+                tButton.Tag = myNetwork.NetURL.GetText();
+                HelpPanel.Controls.Add(tButton);
+                myTooltip.SetToolTip(tButton, NB.Translate("_OpenURL") + " " + myNetwork.PuzzleName);
+                HelpTopicButtons.Add(tButton);
+                count++;
+            }
             foreach (HelpTopics HT in myNetwork.SuggestedReadings)
             {
                 tButton = new Button();
@@ -270,18 +287,29 @@ namespace EduNetworkBuilder
         private void btnRead_Click(object sender, EventArgs e)
         {
             Button me = (Button)sender;
-            HelpTopics HT = NB.TryParseEnum<HelpTopics>(me.Name, HelpTopics.None);
-            if(HT != HelpTopics.None)
+            if (me.Tag == null)
             {
-                myNetwork.NoteActionDone(NetTestType.ReadContextHelp, me.Name, NB.Translate("_Read"));
-                NB.ReadContextHelp(HT);
+                HelpTopics HT = NB.TryParseEnum<HelpTopics>(me.Name, HelpTopics.None);
+                if (HT != HelpTopics.None)
+                {
+                    myNetwork.NoteActionDone(NetTestType.ReadContextHelp, me.Name, NB.Translate("_Read"));
+                    NB.ReadContextHelp(HT);
+                }
+                UpdateHelpTopicButtons();
+                UpdateForm();
+                UpdateMenu();
+                myNetwork.TestForCompletion(true);
+            }
+            else
+            {
+                //It should be a video URL
+                string URL = (string)me.Tag;
+                NB.OpenURLInExternalBrowser(URL);
             }
-            UpdateHelpTopicButtons();
-            UpdateForm();
-            UpdateMenu();
-            myNetwork.TestForCompletion(true);
         }
 
+        
+
         private void myTooltip_Popup(Object sender, PopupEventArgs e)
         {
             //In case we have a puzzle we are trying to solve
diff --git a/EduNetworkBuilder/Resources/languages/edustrings.resx b/EduNetworkBuilder/Resources/languages/edustrings.resx
index 9589129..6ca215e 100644
--- a/EduNetworkBuilder/Resources/languages/edustrings.resx
+++ b/EduNetworkBuilder/Resources/languages/edustrings.resx
@@ -1985,4 +1985,8 @@
     <value>Message / Title</value>
     <comment>TW_Message = Message / Title</comment>
   </data>
+  <data name="_OpenURL" xml:space="preserve">
+    <value>Open a URL for the puzzle:</value>
+    <comment>_OpenURL = Open a URL for the puzzle:</comment>
+  </data>
 </root>
\ No newline at end of file