The unlimitedStorage permission allows an extension to exceed the default storage quotas imposed by the browser.
What it does
- By default, extensions using
chrome.storage.localhave a quota of 10 MB (raised from 5 MB in Chrome 114). Thestorage.syncquota is much smaller (~100 KB total / 8 KB per item). - Requesting
unlimitedStorageexempts the extension from thestorage.localquota and removes the per-origin cap on standard web storage APIs (IndexedDB, Cache Storage, OPFS), letting the extension use as much disk space as is available on the user's machine. - Important: This permission does not affect the
chrome.storage.syncquota, which remains limited to ensure performance across devices.
When to use it
You should only request this permission if your extension has a clear and justifiable need to store large amounts of data locally.
Examples:
- A note-taking application that stores large amounts of text and embedded media locally.
- A caching extension that saves website data for offline access.
- An extension that processes large user-provided files (e.g., video or audio) in the browser.
- A developer tool that saves large session logs for later analysis.
Manifest Declaration
This permission triggers a warning on installation.
{
"name": "My Large Storage Extension",
"version": "1.0",
"manifest_version": 3,
"permissions": [
"storage",
"unlimitedStorage"
]
}Security & Privacy
Why is it low risk?
Normally, extensions are only allowed to save a limited amount of data (10 MB by default). This permission lets an extension save much more. It's useful for extensions that need to work offline or store large files.
The risk is low because the extension is only allowed to use empty space on your computer; it cannot read or delete your personal files. The main risk is that a poorly made or malicious extension could fill up your hard drive with junk data, which could slow down your computer.
API Usage Example
There is no special API to use this permission. Once it is granted in the manifest, the existing storage APIs (like chrome.storage.local or IndexedDB) will simply not throw a "QUOTA_EXCEEDED_ERR" error when they would have otherwise.
You use the storage API as you normally would:
// background.js
// This function attempts to store a large amount of data (e.g., 10MB).
// Without 'unlimitedStorage', this would likely fail.
function storeLargeData() {
const largeString = 'a'.repeat(10 * 1024 * 1024); // 10MB string
chrome.storage.local.set({ largeData: largeString }, () => {
if (chrome.runtime.lastError) {
console.error('Failed to save data:', chrome.runtime.lastError.message);
} else {
console.log('Successfully saved 10MB of data.');
}
});
}
storeLargeData();Extensions with the unlimitedStorage permission
Here are some popular browser extensions that use the "unlimitedStorage" permission. To explore more, try our Advanced search.