โšกToolZip
๋ธ”๋กœ๊ทธ๐Ÿ› ๏ธ ๋„๊ตฌ ์‚ฌ์šฉํ•˜๊ธฐ
โ† Blog
๐Ÿ’ป devOctober 19, 2026

localStorage vs sessionStorage vs IndexedDB โ€” When to Use Which

#javascript#webdev#toolzip

localStorage vs sessionStorage vs IndexedDB โ€” When to Use Which

Browser storage has three main options. Most developers know localStorage, fewer know when to use the others.

localStorage

Persistent, synchronous, 5โ€“10MB limit, strings only.

// Store
localStorage.setItem('theme', 'dark');
localStorage.setItem('history', JSON.stringify(items));

// Read
const theme = localStorage.getItem('theme');
const history = JSON.parse(localStorage.getItem('history') ?? '[]');

// Delete
localStorage.removeItem('theme');
localStorage.clear();

Use when: Preferences, settings, small persistent state. Don't use for large data โ€” synchronous reads block the main thread.

sessionStorage

Same API as localStorage, but cleared when the tab closes.

sessionStorage.setItem('draft', content);

Use when: Temporary state within a session โ€” unsaved form data, wizard progress, undo history.

IndexedDB

Asynchronous, large storage (usually 50%+ of disk), supports structured data and binary.

async function openDb() {
  return new Promise((resolve, reject) => {
    const req = indexedDB.open('my-app', 1);
    req.onupgradeneeded = (e) => {
      e.target.result.createObjectStore('files', { keyPath: 'id' });
    };
    req.onsuccess = (e) => resolve(e.target.result);
    req.onerror = () => reject(req.error);
  });
}

async function saveFile(db, file) {
  const buffer = await file.arrayBuffer();
  return new Promise((resolve) => {
    const tx = db.transaction('files', 'readwrite');
    tx.objectStore('files').put({ id: file.name, data: buffer, type: file.type });
    tx.oncomplete = resolve;
  });
}

Use when: Storing files, large datasets, offline-first apps.

Decision Table

NeedUse
Save theme/language preferencelocalStorage
Remember last-used toollocalStorage
Undo history (current session)sessionStorage
Store uploaded file temporarilysessionStorage or IndexedDB
Cache files for offline useIndexedDB
Store processed outputIndexedDB
Anything >5MBIndexedDB

What I Use in ToolZip

  • localStorage: Recent UTM links (8 entries), recently used colors, calculator history
  • sessionStorage: Nothing โ€” tools are stateless by design
  • IndexedDB: Not yet โ€” may add for caching processed results

The design choice: no file ever touches the server, so browser storage is the only persistence layer.


All tools at toolzip.app run entirely in your browser.

๐Ÿ› ๏ธ
Try the tool now
No install ยท Free ยท No server upload
Open tool โ†’
localStorage vs sessionStorage vs IndexedDB โ€” When to Use Which โ€” ToolZip | ToolZip