diff --git a/link.module b/link.module
index e17c26f..05bc263 100644
--- a/link.module
+++ b/link.module
@@ -507,6 +507,12 @@ function _link_sanitize(&$item, $delta, &$field, $instance, &$entity) {
     );
   }
 
+  // Core's url() by default encodes all query strings. For external links,
+  // this probably might not be always right. Could not fine any standard that
+  // specified all sites are expected to handle the query strings even if they
+  // are already sent decoded.
+  $item['url'] = urldecode($item['url']);
+
   // Create a shortened URL for display.
   if ($type == LINK_EMAIL) {
     $display_url = str_replace('mailto:', '', $url);
