             utm[k] = v[...50] if k in misc.utm_keys
 
         if Object.keys(utm).length
-            utm_data = encodeURIComponent(JSON.stringify(utm))
+            utm_data = JSON.stringify(utm)
             res.cookie(misc.utm_cookie_name, utm_data, {path: '/', maxAge: ms('1 day'), httpOnly: false})
             res.locals.utm = utm
 

        utm_cookie = req.cookies[misc.utm_cookie_name]
        if utm_cookie
            try
                data = misc.from_json(window.decodeURIComponent(utm_cookie))
                utm = misc.merge(utm, data)

        for k, v of req.query

            res_finished_h({path:dir_path, method:req.method, code:res.statusCode})
        next()

    # save utm parameters, referrer and landing page in a (short lived) cookie or read it to fill in locals.utm
    # webapp takes care of consuming it (see misc_page.get_utm, etc.)
    router.use (req, res, next) ->
        # quickly return in the usual case
        if Object.keys(req.query).length == 0
