Skip to main content

How to Store Arrays and Objects in localStorage in JavaScript

The Web Storage API's localStorage is an incredibly useful tool for persisting data in a user's browser. However, it has one major limitation: it can only store strings. If you need to store structured data like an array or an object, you must first convert it into a string format. The standard and most reliable way to do this is with JSON.

This guide will teach you the essential two-step process for storing and retrieving any complex data structure in localStorage using JSON.stringify() and JSON.parse().

The Core Problem: localStorage Only Stores Strings

If you try to store an object or array directly, localStorage will implicitly convert it to a string, which often results in a useless and unrecoverable value.

The problem:

// Problem: This does not work as expected.
const user = { id: 1, name: 'Alice' };

localStorage.setItem('user', user);

const retrieved = localStorage.getItem('user');

console.log(retrieved); // Output: "[object Object]"
// The original object is lost!
note

The same issue occurs with arrays, which get converted to a comma-separated string without the necessary structure.

The Solution: JSON.stringify() and JSON.parse()

The correct way to handle this is to use the built-in JSON object to serialize and deserialize your data.

  • JSON.stringify(value): This method takes a JavaScript object or array and converts it into a JSON string. This string representation can be safely stored in localStorage.
  • JSON.parse(string): This method takes a JSON string and converts it back into a corresponding JavaScript object or array.

This two-step "stringify and parse" process is the fundamental pattern for working with complex data in localStorage.

Storing and Retrieving an Array

This example demonstrates the complete lifecycle of storing and retrieving a simple array.

Solution:

const favoriteFruits = ['apple', 'banana', 'cherry'];

// 1. Convert the array to a JSON string.
const jsonString = JSON.stringify(favoriteFruits);
console.log(jsonString); // Output: '["apple","banana","cherry"]'

// 2. Store the JSON string in localStorage.
localStorage.setItem('my-fruits', jsonString);

// --- Later, on another page or visit ---

// 3. Retrieve the JSON string from localStorage.
const retrievedString = localStorage.getItem('my-fruits');

// 4. Parse the JSON string back into a JavaScript array.
const retrievedArray = JSON.parse(retrievedString);

console.log(retrievedArray); // Output: ['apple', 'banana', 'cherry']
console.log(Array.isArray(retrievedArray)); // Output: true
note

The retrievedArray is a true JavaScript array that you can iterate over or use array methods on.

Storing and Retrieving an Object

The exact same process applies to JavaScript objects.

Solution:

const userProfile = {
id: 101,
username: 'Alice',
theme: 'dark'
};

// 1. Stringify and store the object.
localStorage.setItem('user-profile', JSON.stringify(userProfile));

// --- Later, retrieve and parse the object ---
const retrievedObject = JSON.parse(localStorage.getItem('user-profile'));

console.log(retrievedObject); // Output: { id: 101, username: 'Alice', theme: 'dark' }
console.log(retrievedObject.username); // Output: 'Alice'

Storing and Retrieving an Array of Objects

This pattern scales perfectly to more complex data structures, like an array of objects.

const userList = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];

// 1. Stringify and store the array of objects.
localStorage.setItem('user-list', JSON.stringify(userList));

// --- Later, retrieve and parse the data ---
const retrievedList = JSON.parse(localStorage.getItem('user-list'));

console.log(retrievedList[1].name); // Output: 'Bob'
note

The retrieved data is a fully functional array of objects that you can map, filter, or forEach over.

Conclusion

While localStorage can only handle strings, this limitation is easily overcome by using the built-in JSON utility methods.

  • To store an array or object, always convert it to a string first with JSON.stringify().
  • To retrieve an array or object, get the string from localStorage and parse it back into a usable JavaScript object with JSON.parse().

This simple, two-step pattern is the definitive and most reliable method for persisting complex data in the browser.