Introduction

The localStorage and sessionStorage objects, part of the web storage API, are two great tools for saving key/value pairs locally. Using localStorage and sessionStorage for storage is an alternative to using cookies and there are some advantages:

The data is saved locally only and can’t be read by the server, which eliminates the security issue that cookies present.
It allows for much more data to be saved (10mb for most browsers).
The syntax is straightforward.

It’s also supported in all modern browsers, so you can use it today without an issue. Cookies are still useful, especially when it comes to authentication, but there are times when using localStorage or sessionStorage may be a better alternative.

Prerequisites

To complete this tutorial, you will need the following:

The latest version of Node installed on your machine. To install Node, follow the steps outlined in this How To Install Node.js tutorial.
A basic understanding of coding in JavaScript, which you can find in this How to Code in JavaScript series.

Step 1 — Understanding localStorage vs sessionStorage

localStorage and sessionStorage are almost identical and have the same API. The difference is that with sessionStorage, the data is persisted only until the window or tab is closed. With localStorage, the data is persisted until the user manually clears the browser cache or until your web app clears the data. This tutorial features localStorage, but the syntax for sessionStorage is the same.
With this knowledge, you can now create, read, and update key/value pairs in localStorage.

Step 2 — Creating, Reading, and Updating Entries

You can create entries for the localStorage object by using the setItem() method. The setItem() method takes two arguments, the key and corresponding value:

let key = 'Item 1';
localStorage.setItem(key, 'Value');

To read entries, use the getItem() method. The getItem() method takes one argument which must be the key. This function will return the corresponding value as a string:

let myItem = localStorage.getItem(key);

This code sets myItem equal to 'Value', which is the corresponding value for key.
Updating an entry is done with the setItem() method. Again, it takes two arguments. The key argument will be an existing key while the value argument will be a new value:

localStorage.setItem(key, 'New Value');

Now, the localStorage value for key is 'New Value' instead of 'Value'.
You can create, read, and update entries in the localStorage object. You can also delete individual entries and clear all entries in localStorage.

Step 3 — Deleting and Clearing Entries

You can delete an entry with the removeItem() method. The removeItem() method takes one argument which will be a key of the localStorage object:

localStorage.removeItem(key);

You can also clear all items in localStorage. This can be done with the clear() method:
Here’s how to clear everything that’s stored in localStorage:

localStorage.clear();

These methods give you more the ability to remove and clear items from localStorage quickly. There are some limits to localStorage, though. Both localStorage and sessionStorage can only store strings. To work around this, you will have to use JSON methods.

Step 4 — Storing Non-String values with JSON

localStorage can only store string values. If you want to store objects or arrays as values in localStorage, you can use JSON.stringify() to convert them into strings. When creating or updating key/value pairs in localStorage, use JSON.stringify() with the object or array as the argument:

let myObj = { name: 'Skip', breed: 'Labrador' };
localStorage.setItem(key, JSON.stringify(myObj));

Although myObj is an object, JSON.stringify(myObj) converts it into a string. So myObj is now a valid localStorage value.
To read and return stringified values, use the JSON.parse() method. The JSON.parse() method takes JSON strings and converts them into JavaScript objects. JSON.parse() takes .getItem() as it’s argument:

let item = JSON.parse(localStorage.getItem(key));

Now item is set equal to the value of key. In the previous code snippet, the value of key was set to the stringified version of myObj. Using JSON.parse converts myObj back into an object. So item is set equal to myObj as an object, not a string.
Being able to convert arrays and objects into strings using JSON.stringify and convert them back using JSON.parse is very useful. You will also need to know how to check if localStorage is empty or not.

Step 5 — Checking for Items

In this step, you will test for the presence of items in the localStorage. You can use if statements to check if localStorage is holding items or if it is empty. To do this, check the length of localStorage:

if (localStorage.length > 0) {
  // ...
}

If localStorage.length is greater than ``, then there are items within the localStorage object. Include an else statement in case there are no items in localStorage:

if (localStorage.length > 0) {
  // ...
} else {
  // ...
}

You can include code to be applied in the if and else statements. You may want to iterate over items in localStorage.

Step 6 — Iterating Over Items

The localStorage and sessionStorage objects don’t support the forEach method. To iterate over the items in localStorage, use a for loop:

for (let i = 0; i < localStorage.length; i++){

}

The key() method takes an integer as an argument and returns the corresponding key. With a for loop, pass i in as the integer for key():

for (let i = 0; i < localStorage.length; i++){
  let key = localStorage.key(i);
}

Use the getItem method to return the corresponding value for key:

for (let i = 0; i < localStorage.length; i++){
  let key = localStorage.key(i);
  let value = localStorage.getItem(key);
}

Create a console.log statement to print both key and value to the screen:

for (let i = 0; i < localStorage.length; i++){
  let key = localStorage.key(i);
  let value = localStorage.getItem(key);
  console.log(key, value);
}

The key() is very useful for iterating through localStorage using for loops. Not all browsers support localStorage.

Step 7 — Checking for Support

You can test for localStorage support by checking if it’s available on the window object using an if statement:

if (window.localStorage) {
  // localStorage supported
}

You can also use the Can I use… website to check for localStorage support across major browsers.

Conclusion

You can use the localStorage or sessionStorage objects to store key/value pairs. There are methods that enable you to interact with the items within localStorage. With this tutorial, you created, removed, and updated entries within localStorage. You also converted array and object data into strings and back using JSON methods.
At times, it may be best to use cookies instead of localStorage or session. What Are Cookies & How to Work With Them Using JavaScript thoroughly covers this topic and is a great next step.