What's the difference between localStorage and sessionStorage?

👨‍💻 Frontend Developer 🟠 May come up 🎚️ Medium
#JavaScript #Browser #JS Basics

Brief Answer

Main difference between [localStorage] and [sessionStorage]:

  1. localStorage — data is saved forever (until deleted) 💾
  2. sessionStorage — data is saved only until tab is closed 🕐
// localStorage — forever
localStorage.setItem('name', 'John');
// Even after page reload and browser close
// data will remain
 
// sessionStorage — until tab close
sessionStorage.setItem('temp', 'temporary data');
// After tab close data will disappear

Full Answer

Think of [localStorage] as a safe where you store important things forever, while [sessionStorage] is a pocket in your jacket where you put things only for a walk! 🏦 vs 🧥

localStorage — permanent storage

Data remains in browser forever:

// Save data
localStorage.setItem('theme', 'dark');
localStorage.setItem('language', 'en');
 
// You can close browser, restart computer
// Data will still be here!
console.log(localStorage.getItem('theme')); // 'dark'

sessionStorage — temporary storage

Data lives only during session (while tab is open):

// Save temporary data
sessionStorage.setItem('formStep', '2');
sessionStorage.setItem('tempData', 'something temporary');
 
// After tab close — everything disappears!
// When opening new tab — storage is empty

When to Use What

localStorage — for permanent data

// ✅ User settings
localStorage.setItem('theme', 'dark');
localStorage.setItem('language', 'en');
 
// ✅ Auth tokens (careful!)
localStorage.setItem('token', 'abc123');
 
// ✅ Game progress
localStorage.setItem('level', '5');

sessionStorage — for temporary data

// ✅ Form data during filling
sessionStorage.setItem('formData', JSON.stringify({name: 'John'}));
 
// ✅ Temporary page states
sessionStorage.setItem('scrollPosition', '100');
 
// ✅ Data for one session
sessionStorage.setItem('visitCount', '3');

Common Features

Same syntax

// Both work the same way
localStorage.setItem('key', 'value');
sessionStorage.setItem('key', 'value');
 
localStorage.getItem('key');
sessionStorage.getItem('key');
 
localStorage.removeItem('key');
sessionStorage.removeItem('key');

Store only strings

// Both store only strings!
localStorage.setItem('number', 42); // Saved as '42'
localStorage.setItem('object', {name: 'John'}); // Saved as '[object Object]'
 
// For objects use JSON
localStorage.setItem('user', JSON.stringify({name: 'John'}));
const user = JSON.parse(localStorage.getItem('user'));

Common Mistakes

Confusing lifetime

// ❌ Mistake — think sessionStorage is also forever
sessionStorage.setItem('importantSetting', 'dark');
// After tab close setting disappears!
 
// ✅ Correct — use localStorage for important things
localStorage.setItem('importantSetting', 'dark');

Storing sensitive data in localStorage

// ❌ Bad — localStorage can be easily read
localStorage.setItem('password', '123456');
 
// ✅ Better — use secure methods
// or at least sessionStorage (less chance of leak)
sessionStorage.setItem('token', 'abc123');

Simple Rules

  1. localStorage — data remains forever 💾
  2. sessionStorage — data disappears when tab closes 🕐
  3. localStorage — for permanent settings 🎯
  4. sessionStorage — for temporary data ⏳
  5. Both store strings — use JSON for objects 📦
  6. Security — don’t store passwords in localStorage 🔐

Understanding the difference between [localStorage] and [sessionStorage] helps store data correctly in browser! 💪


Want more articles to prepare for interviews? Subscribe to EasyAdvice, bookmark the site and improve yourself every day 💪