diff --git a/lib/route.js b/lib/route.js
index <HASH>..<HASH> 100644
--- a/lib/route.js
+++ b/lib/route.js
@@ -54,7 +54,7 @@ function Route (methods, name, pattern, handlers) {
           throw new Error('Cannot generate path. Missing param ' + match.substr(1));
 
         i++;
-        return params[key];
+        return encodeURIComponent(params[key]);
       });
     };
   }
diff --git a/lib/trail-router.js b/lib/trail-router.js
index <HASH>..<HASH> 100644
--- a/lib/trail-router.js
+++ b/lib/trail-router.js
@@ -74,6 +74,14 @@ function TrailRouter (app) {
     _routes[name] = route;
     _routesOrder.push(route);
   };
+  
+  _this.url = function (name, params) {
+    var r = _routes[name];
+    if (!r)
+      throw new Error('Cannot generate path. No route named ' + name);
+    
+    return r.buildPath.apply(null, Array.prototype.slice.call(arguments, 1));
+  };
 
   /* -------------------------------------------------------------------
    * Private Methods << Keep in alphabetical order >>
@@ -128,5 +136,6 @@ function TrailRouter (app) {
   if (app) {
     app.all = f;
     app.register = _this.register;
+    app.url = _this.url;
   }
 }
Made path building for named routes public.