Delete / Clear Google Analytics cookies with Javascript

05/04/2010
0

So we used Google Analytics on many of our projects - but no longer do.

Still most of our visitors have those lifetime cookies __utma and __utmz set and send those to our servers with every request.

A small script - a generic script that clears cookies via javascript - that we leave in place for a few weeks should clear these cookies for 90%+ of our users and leaves them and us with less persistent cookies.

Here's the small javascript that we use to delete those pesky cookies:

function clearCookie(name, domain, path){
    try {
        function Get_Cookie( check_name ) {
                // first we'll split this cookie up into name/value pairs
                // note: document.cookie only returns name=value, not the other components
                var a_all_cookies = document.cookie.split(';'),
                    a_temp_cookie = '',
                    cookie_name = '',
                    cookie_value = '',
                    b_cookie_found = false;
        
                for ( i = 0; i < a_all_cookies.length; i++ ) {
                    // now we'll split apart each name=value pair
                    a_temp_cookie = a_all_cookies[i].split( '=' );
    
                    // and trim left/right whitespace while we're at it
                    cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
    
                    // if the extracted name matches passed check_name
                    if ( cookie_name == check_name ) {
                        b_cookie_found = true;
                        // we need to handle case where cookie has no value but exists (no = sign, that is):
                        if ( a_temp_cookie.length > 1 ) {
                            cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
                        }
                        // note that in cases where cookie is initialized but no value, null is returned
                        return cookie_value;
                        break;
                    }
                    a_temp_cookie = null;
                    cookie_name = '';
                }
                if ( !b_cookie_found ) {
                  return null;
                }
            }
            if (Get_Cookie(name)) {
                var domain = domain || document.domain;
                var path = path || "/";
                document.cookie = name + "=; expires=" + new Date + "; domain=" + domain + "; path=" + path;
            }
    }
    catch(err) {}    
};
clearCookie('__utma','.yourdomain.com','/');
clearCookie('__utmz','.yourdomain.com','/');

Important: the last 2 lines have the commands to clear those cookies. Replace yourdomain.com with your own domain and test if this works.

If you don't know if the cookie is set to your main domain or your subdomain examine the cookies and find the correct path and domain like in this example:

Clear cookies

You could use this script also to get rid of any other lifetime cookies you no longer want / need on your domain.

Oh in case you need the minified version of the above script. Here it is:

function clearCookie(d,b,c){try{if(function(h){var e=document.cookie.split(";"),a="",f="",g="";for(i=0;i<e.length;i++){a=e[i].split("=");f=a[0].replace(/^\s+|\s+$/g,"");if(f==h){if(a.length>1)g=unescape(a[1].replace(/^\s+|\s+$/g,""));return g}}return null}(d)){b=b||document.domain;c=c||"/";document.cookie=d+"=; expires="+new Date+"; domain="+b+"; path="+c}}catch(j){}};
clearCookie('__utma','.yourdomain.com','/');
clearCookie('__utmz','.yourdomain.com','/');

If you've read this far you might as well follow me on Twitter here.

Comments