DEV Community

Cover image for 🔐 localStorage vs sessionStorage vs Cookies (Complete Frontend Guide)
Pawar Shivam
Pawar Shivam

Posted on

🔐 localStorage vs sessionStorage vs Cookies (Complete Frontend Guide)

When building authentication, saving user preferences, or managing sessions, developers often choose between localStorage, sessionStorage, and Cookies.

But the real difference appears in network behavior, security, and persistence.

Let’s break it down.


🧠 Storage Architecture (Simple Diagram)

Browser
│
├── localStorage
│     └── Stored in browser
│     └── NOT sent with network requests
│
├── sessionStorage
│     └── Stored per tab session
│     └── Removed when tab closes
│
└── Cookies
      └── Stored in browser
      └── Automatically sent with HTTP requests
Enter fullscreen mode Exit fullscreen mode

Example HTTP Request:

GET /api/profile
Host: example.com
Cookie: sessionId=abc123
Enter fullscreen mode Exit fullscreen mode

Only cookies travel with network requests automatically.


🟢 localStorage

Stores data without expiration.

📦 Size
~5–10MB depending on browser

🌐 Network
Not sent to server automatically

🔒 Security
Accessible via JavaScript → vulnerable to XSS attacks

✅ Pros
• Large storage
• Persistent data
• Simple API
• Good for UI caching

❌ Cons
• Not secure for sensitive data
• Vulnerable to XSS
• Server cannot read it directly

📌 Use Cases
• Theme preference
• UI settings
• Cached API data


🟡 sessionStorage

Same API as localStorage but data exists only for one browser tab session.

📦 Size
~5MB

🌐 Network
Not sent to server

🔒 Security
Also accessible via JavaScript

✅ Pros
• Temporary storage
• Tab specific data
• Auto cleared

❌ Cons
• Lost when tab closes
• Not suitable for persistence

📌 Use Cases
• Multi-step forms
• Temporary user state


🔵 Cookies

Small data stored in browser and automatically included in HTTP requests.

📦 Size
~4KB

🌐 Network
Sent with every request to the same domain

Example:

Cookie: sessionId=abc123
Enter fullscreen mode Exit fullscreen mode

🔒 Security Options

• HttpOnly → JS cannot access
• Secure → only HTTPS
• SameSite → protects from CSRF

✅ Pros
• Server can read automatically
• Secure options available
• Best for authentication

❌ Cons
• Small storage
• Sent with every request (network overhead)

📌 Use Cases
• Authentication sessions
• Login state
• User tracking


⚡ Real Authentication Flow Example

Modern apps usually use this pattern:

User Login
     ↓
Server verifies credentials
     ↓
Server sets cookie
Set-Cookie: sessionId=xyz; HttpOnly; Secure
     ↓
Browser stores cookie
     ↓
Every API request automatically sends cookie
Enter fullscreen mode Exit fullscreen mode

Example request:

GET /api/user
Cookie: sessionId=xyz
Enter fullscreen mode Exit fullscreen mode

Server reads cookie → authenticates user.


⚡ Quick Comparison

Feature localStorage sessionStorage Cookies
Size ~5–10MB ~5MB ~4KB
Expiration Never Tab close Configurable
Network Requests ❌ No ❌ No ✅ Yes
Accessible by JS ✅ Yes ✅ Yes Optional
Best For UI data Temp data Authentication

💡 Security Tip

Avoid storing JWT tokens in localStorage in production apps.

Better approach:

HttpOnly + Secure Cookies
Enter fullscreen mode Exit fullscreen mode

This prevents JavaScript access → protects from XSS attacks.


🎯 Interview Questions Developers Get

• Difference between localStorage and cookies
• Why cookies are used for authentication
• What is HttpOnly cookie
• How cookies prevent CSRF attacks
• Storage limits of browser storage


Small frontend decisions like this can impact security, performance, and scalability of your application.

Which one do you prefer for authentication?

Cookies 🍪 or localStorage? 🤔

Top comments (0)