Hint
Differ in persistence, scope, size, and whether auto-sent to server
| Feature | localStorage | sessionStorage | Cookie |
|---|---|---|---|
| Lifetime | Persistent (until cleared) | Tab session only | Expiry date / session |
| Scope | Same origin, all tabs | Same tab only | Domain + path |
| Size limit | ~5-10 MB | ~5-10 MB | ~4 KB |
| Sent to server | No | No | Yes (every request) |
| JS access | Yes | Yes | Yes (unless HttpOnly) |
// localStorage / sessionStorage β same API
localStorage.setItem('theme', 'dark');
localStorage.getItem('theme'); // 'dark'
localStorage.removeItem('theme');
localStorage.clear();
// Must stringify objects
localStorage.setItem('user', JSON.stringify({ name: 'Alice', id: 1 }));
const user = JSON.parse(localStorage.getItem('user'));