When a user exits a web page, the web server forgets all the information about the user. To overcome this problem, the browser stores small text files in the user's computer. These files are called cookies. The web browser sends these cookies along with the request when the user returns to the web page. The web server can identify the user only when it reads the information present in the cookie. 

Javascript can create, read and delete cookies. 

Creating a cookie with JavaScript

A cookie can be created using a document.cookie property

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2017 12:00:00 UTC; path=/";

As you can see above, right during the creation we can specify the information, the expiration timestamp and also the path to which the cookie belongs.

Reading a Cookie

We can directly assign a cookie to a variable. The following statement can be used to read cookies.

var x = document.cookie;

Deleting a Cookie

We do not need to delete a cookie explicitly; it will automatically delete itself at the expiration time mentioned in the cookie.

document.cookie = "username=; expires=Thu, 01 Jan 2018 00:00:00 UTC; path=/;";

A Function to Set a Cookie

First, we create a function that stores the name of the visitor in a cookie variable:


function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";

Example explained:

The parameters of the function above are the name of the cookie (cname), the value of the cookie (cvalue), and the number of days until the cookie should expire (exdays).
The function sets a cookie by adding together the cookiename, the cookie value, and the expires string.

A Function to Get a Cookie

Then, we create a function that returns the value of a specified cookie:


function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
    return "";

Function explained:

Take the cookiename as parameter (cname).
Create a variable (name) with the text to search for (cname + "=").
Decode the cookie string, to handle cookies with special characters, e.g. '$'
Split document.cookie on semicolons into an array called ca (ca = decodedCookie.split(';')).
Loop through the ca array (i = 0; i < ca.length; i++), and read out each value c = ca[i]).
If the cookie is found (c.indexOf(name) == 0), return the value of the cookie (c.substring(name.length, c.length).
If the cookie is not found, return "".

A Function to Check a Cookie

Last, we create the function that checks if a cookie is set.
If the cookie is set it will display a greeting.
If the cookie is not set, it will display a prompt box, asking for the name of the user, and stores the username cookie for 365 days, by calling the setCookie function:


function checkCookie() {
    var username = getCookie("username");
    if (username != "") {
        alert("Welcome again " + username);
    } else {
        username = prompt("Please enter your name:", "");
        if (username != "" && username != null) {
            setCookie("username", username, 365);