🗄️ IndexedDB Playground

Data
Query
Schema
Import/Export
Documentation
📋

No Data to Display

Select a database and object store to view records

Query Builder
📊

No Schema to Display

Select a database to view its schema

Export Data
Import Data

What is IndexedDB?

IndexedDB is a low-level API for storing large amounts of structured data in the browser. It's a transactional database system using key-value pairs with support for indexes.

Key Concepts

  • Database - Container for object stores. Has a name and version number.
  • Object Store - Like a table. Holds records as key-value pairs.
  • Key - Unique identifier for records. Can be in-line (keyPath) or out-of-line.
  • Index - Enables searching by properties other than the primary key.
  • Transaction - All operations happen within transactions (readonly/readwrite/versionchange).
  • Cursor - Mechanism for iterating over records.

Quick Reference

Opening a Database

const request = indexedDB.open('myDB', 1); request.onupgradeneeded = (e) => { const db = e.target.result; db.createObjectStore('users', { keyPath: 'id' }); };

Adding Data

const tx = db.transaction('users', 'readwrite'); const store = tx.objectStore('users'); store.add({ id: 1, name: 'Alice' });

Reading Data

const tx = db.transaction('users', 'readonly'); const store = tx.objectStore('users'); const request = store.get(1); request.onsuccess = () => console.log(request.result);

Using Cursors

store.openCursor().onsuccess = (e) => { const cursor = e.target.result; if (cursor) { console.log(cursor.key, cursor.value); cursor.continue(); } };

Key Ranges

// Records with keys from 1 to 10 IDBKeyRange.bound(1, 10); // Records with keys > 5 IDBKeyRange.lowerBound(5, true); // Records with keys <= 100 IDBKeyRange.upperBound(100);

Data Types

IndexedDB can store most JavaScript types including:

  • String, Number, Boolean, null
  • Array, Object (plain objects)
  • Date, RegExp
  • Blob, File, ArrayBuffer
  • Note: Functions and DOM nodes cannot be stored

Browser Support

IndexedDB is supported in all modern browsers. Storage limits vary but typically allow several GB per origin.

Console