diff --git a/static_src/shared/md-helper.js b/static_src/shared/md-helper.js
index 8559778..2a0fb46 100644
--- a/static_src/shared/md-helper.js
+++ b/static_src/shared/md-helper.js
@@ -5,7 +5,10 @@
 export const DEFAULT_MD_PROJECTS = new Set(['vulnz', 'vulnz-old', 'twpowertools', 'translateselectedtext', 'misc']);
 
 /** @type {Set} Projects that allow users to opt into Markdown rendering. */
-export const AVAILABLE_MD_PROJECTS = new Set([...DEFAULT_MD_PROJECTS, 'pigweed']);
+export const AVAILABLE_MD_PROJECTS = new Set([...DEFAULT_MD_PROJECTS]);
+
+const EMAIL_REGEX = /^mailto:[-a-zA-Z0-9!#$%&'*+\/=?^_`{|}~]+(?:[.][-a-zA-Z0-9!#$%&'*+\/=?^_`{|}~]+)*@(?:(?:[0-9a-zA-Z](?:[-]*[0-9a-zA-Z]+)*)(?:\.[0-9a-zA-Z](?:[-]*[0-9a-zA-Z]+)*)*)\.(?:[a-zA-Z]{2,9})$/;
+const MONORAIL_USER_REGEX = /\/u\/[-a-zA-Z0-9!#$%&'*+\/=?^_`{|}~]+(?:[.][-a-zA-Z0-9!#$%&'*+\/=?^_`{|}~]+)*@(?:(?:[0-9a-zA-Z](?:[-]*[0-9a-zA-Z]+)*)(?:\.[0-9a-zA-Z](?:[-]*[0-9a-zA-Z]+)*)*)\.(?:[a-zA-Z]{2,9})$/;
 
 /** @type {Set} Authors whose comments will not be rendered as Markdown. */
 const BLOCKLIST = new Set(['sheriffbot@sheriffbot-1182.iam.gserviceaccount.com',
@@ -98,6 +101,15 @@
 };
 
 /**
+* Checks to see if input string matches a href generated by Monorail's autolinking code.
+ * @param {string} string
+ * @return {boolean} Whether input string is an email address.
+ */
+const isEmailLink = (string) => {
+  return EMAIL_REGEX.test(string) || MONORAIL_USER_REGEX.test(string)
+}
+
+/**
  * Renderer option for Marked.
  * See https://marked.js.org/using_pro#renderer on how to use renderer.
  * @type {Object}
@@ -113,7 +125,7 @@
     // components that consume the markdown renderer.
     let linkIcon;
     let tooltipText;
-    if (isValidHttpUrl(href)) {
+    if (isValidHttpUrl(href) || isEmailLink(href)) {
       linkIcon = `<span class="material-icons link">link</span>`;
       tooltipText = `Link destination: ${href}`;
     } else {
diff --git a/static_src/shared/md-helper.test.js b/static_src/shared/md-helper.test.js
index 9f7dba1..cd77d55 100644
--- a/static_src/shared/md-helper.test.js
+++ b/static_src/shared/md-helper.test.js
@@ -69,6 +69,25 @@
           `google.com</span></span></p>\n`;
       assert.equal(actual, expected);
     });
+
+    it('correctly renders emails', () => {
+      const actual = renderMarkdown('[person@google.com](mailto:person@google.com)');
+      const expected = `<p><span class="annotated-link"><a title="" ` +
+      `href="mailto:person@google.com"><span class="material-icons link">` +
+      `link</span>person@google.com</a><span class="tooltip">Link destination: ` +
+      `mailto:person@google.com</span></span></p>\n`;
+      assert.equal(actual, expected);
+    });
+
+    it('correctly renders monorail user links', () => {
+      const actual = renderMarkdown('[person@google.com](/u/person@google.com)');
+      const expected = `<p><span class="annotated-link"><a title="" ` +
+      `href="/u/person@google.com"><span class="material-icons ` +
+      `link">link</span>person@google.com</a><span class="tooltip">Link destination: ` +
+      `/u/person@google.com</span></span></p>\n`
+      assert.equal(actual, expected)
+    });
+
   });
 
   it('preserves bolding from description templates', () => {
