diff --git a/memopol/templatetags/memopol_tags.py b/memopol/templatetags/memopol_tags.py
index 20bb316a9ff824eef0144a39a728ff0be652c31f..d7a853bf8e0f66730ae096b2d745a7e986013626 100644
--- a/memopol/templatetags/memopol_tags.py
+++ b/memopol/templatetags/memopol_tags.py
@@ -16,22 +16,32 @@ def cssify(string):
     return re.sub('[^a-z_-]', '', string.lower())
 
 
+def fix_url(url):
+    # Ensure we have a usable URL
+    return re.sub('^(https?://)?', 'https://', url.strip())
+
+
 @register.filter
 def twitter_link(url):
-    return mark_safe(link.format(network='twitter', url=url,
-        label=re.sub(r'.*/@?([^/]+)', '@\\1', re.sub(r'/$', '', url.strip()))))
+    furl = fix_url(url)
+    return mark_safe(link.format(network='twitter', url=furl,
+        label=re.sub(r'.*/@?([^/]+)', '@\\1', re.sub(r'/$', '', furl))))
 
 
 @register.filter
 def facebook_link(url):
-    return mark_safe(link.format(network='facebook', url=url,
-        label=re.sub(r'.*/([^/]+)', '\\1', re.sub(r'/$', '', url.strip()))))
+    furl = fix_url(url)
+    clean_url = re.sub(r'/$', '', re.sub(r'\?.*', '', furl))
+    m = re.search(r'/pages/([^/]+)', clean_url, re.I)
+    return mark_safe(link.format(network='facebook', url=furl,
+        label=m.group(1) if m else re.sub(r'.*/([^/]+)', '\\1', clean_url)))
 
 
 @register.filter
 def website_link(url):
-    short_url = re.sub(r'^https?://([^/]+).*', '\\1', url)
-    return mark_safe(link.format(network='website', url=url,
+    furl = fix_url(url)
+    short_url = re.sub(r'^https?://([^/]+).*', '\\1', furl)
+    return mark_safe(link.format(network='website', url=furl,
         label=short_url))