Skip to content

Storage Buckets support

Published Updated

The Storage Buckets API lets a page create multiple, separately named storage buckets through navigator.storageBuckets (a StorageBucketManager), each with its own IndexedDB databases, Cache Storage, and eviction policy — instead of every API sharing one origin-wide storage pool.

  • Legend
  • Yes
  • Partial
  • Flag
  • No
  • Unknown
Browser / PlatformSupportVersionsConfidenceSourceNotes
Chrome (Desktop)Yes122lowsource12
Chrome (Android)Yes122lowsource3
Edge (Desktop)Yes122lowsource4
Firefox (Desktop)No—lowsource5
Safari (macOS)No—lowsource6
  1. StorageBucketManager (navigator.storageBuckets) shipped in Chrome 122, per MDN browser-compat-data.
  2. This entry has no MDN prose page yet; verified against caniuse's per-browser support table for this feature.
  3. Mirrors Chrome Desktop support per MDN browser-compat-data.
  4. Mirrors Chromium support per MDN browser-compat-data.
  5. Not implemented; tracked as an open Firefox bug per MDN browser-compat-data.
  6. Not implemented, per MDN browser-compat-data.

Source data: /compatibility/storage-buckets.json · Global usage: 69 % (StatCounter 2026-05)

Source: spec · Last verified 2026-09-04 · Confidence: low (computed from sources)

Open (or create) a named bucket, then use its own indexedDB and caches the same way you would use the origin-wide versions:

const bucket = await navigator.storageBuckets.open('media-cache', {
persisted: true,
});
const cache = await bucket.caches.open('videos');
await cache.put('/clip.mp4', await fetch('/clip.mp4'));

Feature-detect storageBuckets on navigator before calling it, and fall back to the origin’s default indexedDB/caches (one shared pool) when it is unavailable:

async function openMediaCache() {
if (!('storageBuckets' in navigator)) {
// Unsupported browser: fall back to the default, shared storage pool.
return caches.open('videos');
}
const bucket = await navigator.storageBuckets.open('media-cache');
return bucket.caches.open('videos');
}
  • Firefox and Safari do not implement navigator.storageBuckets — per the table above, support is Chromium-only, so always keep a default-storage fallback.
  • open() accepts a persisted option (defaults to false); a bucket created without persisted: true can still be cleared under storage pressure independently of other buckets, per the spec’s StorageBucketOptions dictionary.
  • navigator.storageBuckets.delete() removes the bucket from the bucket map and marks it removed; per the spec, cleanup of the bucket’s own IndexedDB/Cache/file-system data is left to each storage endpoint, so don’t assume delete() alone frees that space synchronously.

← Back to the Compatibility explorer.