Welcome What's new in Chrome extensions Getting started API Reference Samples

chrome.browsingData

  • Description

    Use the chrome.browsingData API to remove browsing data from a user's local profile.

  • Permissions
    browsingData

Manifest

You must declare the "browsingData" permission in the extension manifest to use this API.

{
"name": "My extension",
...
"permissions": [
"browsingData",
],
...
}

Usage

The simplest use-case for this API is a a time-based mechanism for clearing a user's browsing data. Your code should provide a timestamp which indicates the historical date after which the user's browsing data should be removed. This timestamp is formatted as the number of milliseconds since the Unix epoch (which can be retrieved from a JavaScript Date object via the getTime method).

For example, to clear all of a user's browsing data from the last week, you might write code as follows:

var callback = function () {
// Do something clever here once data has been removed.
};

var millisecondsPerWeek = 1000 * 60 * 60 * 24 * 7;
var oneWeekAgo = (new Date()).getTime() - millisecondsPerWeek;
chrome.browsingData.remove({
"since": oneWeekAgo
}, {
"appcache": true,
"cache": true,
"cacheStorage": true,
"cookies": true,
"downloads": true,
"fileSystems": true,
"formData": true,
"history": true,
"indexedDB": true,
"localStorage": true,
"passwords": true,
"serviceWorkers": true,
"webSQL": true
}, callback);

The chrome.browsingData.remove method allows you to remove various types of browsing data with a single call, and will be much faster than calling multiple more specific methods. If, however, you only want to clear one specific type of browsing data (cookies, for example), the more granular methods offer a readable alternative to a call filled with JSON.

var callback = function () {
// Do something clever here once data has been removed.
};

var millisecondsPerWeek = 1000 * 60 * 60 * 24 * 7;
var oneWeekAgo = (new Date()).getTime() - millisecondsPerWeek;
chrome.browsingData.removeCookies({
"since": oneWeekAgo
}, callback);

If the user is syncing their data, chrome.browsingData.remove may automatically rebuild the cookie for the Sync account after clearing it. This is to ensure that Sync can continue working, so that the data can be eventually deleted on the server. However the more specific chrome.browsingData.removeCookies can be used to clear the cookie for the Sync account, and Sync will be paused in this case.

Caution

Important: Removing browsing data involves a good deal of heavy lifting in the background, and can take tens of seconds to complete, depending on a user's profile. You should use the callback mechanism to keep your users up to date on the removal's status.

Specific Origins

To remove data for a specific origin or to exclude a set of origins from deletion, you can use the RemovalOptions.origins and RemovalOptions.excludeOrigins parameters. They can only be applied to cookies, cache, and storage (CacheStorage, FileSystems, IndexedDB, LocalStorage, ServiceWorkers, and WebSQL).

chrome.browsingData.remove({
"origins": ["https://www.example.com"]
}, {
"cacheStorage": true,
"cookies": true,
"fileSystems": true,
"indexedDB": true,
"localStorage": true,
"serviceWorkers": true,
"webSQL": true
}, callback);
Caution

Important: As cookies are scoped more broadly than other types of storage, deleting cookies for an origin will delete all cookies of the registrable domain. For example, deleting data for https://www.example.com will delete cookies with a domain of .example.com as well.

Origin Types

Adding an originTypes property to the API's options object allows you to specify which types of origins ought to be effected. Currently, origins are divided into three categories:

  • unprotectedWeb covers the general case of websites that users visit without taking any special action. If you don't specify an originTypes, the API defaults to removing data from unprotected web origins.
  • protectedWeb covers those web origins that have been installed as hosted applications. Installing Angry Birds, for example, protects the origin https://chrome.angrybirds.com, and removes it from the unprotectedWeb category. Please do be careful when triggering deletion of data for these origins: make sure your users know what they're getting, as this will irrevocably remove their game data. No one wants to knock tiny pig houses over more often than necessary.
  • extension covers origins under the chrome-extensions: scheme. Removing extension data is, again, something you should be very careful about.

We could adjust the previous example to remove only data from protected websites as follows:

var callback = function () {
// Do something clever here once data has been removed.
};

var millisecondsPerWeek = 1000 * 60 * 60 * 24 * 7;
var oneWeekAgo = (new Date()).getTime() - millisecondsPerWeek;
chrome.browsingData.remove({
"since": oneWeekAgo,
"originTypes": {
"protectedWeb": true
}
}, {
"appcache": true,
"cache": true,
"cacheStorage": true,
"cookies": true,
"downloads": true,
"fileSystems": true,
"formData": true,
"history": true,
"indexedDB": true,
"localStorage": true,
"passwords": true,
"serviceWorkers": true,
"webSQL": true
}, callback);
Caution

Seriously: Be careful with protectedWeb and extension. These are destructive operations that your users will write angry email about if they're not well-informed about what to expect when your extension removes data on their behalf.

Examples

Samples for the browsingData API are available on the samples page.

Summary

Types

DataTypeSet

A set of data types. Missing data types are interpreted as false.

Properties

  • appcache

    boolean optional

    Websites' appcaches.

  • cache

    boolean optional

    The browser's cache.

  • cacheStorage

    boolean optional

    Chrome 72+

    Cache storage

  • cookies

    boolean optional

    The browser's cookies.

  • downloads

    boolean optional

    The browser's download list.

  • fileSystems

    boolean optional

    Websites' file systems.

  • formData

    boolean optional

    The browser's stored form data.

  • history

    boolean optional

    The browser's history.

  • indexedDB

    boolean optional

    Websites' IndexedDB data.

  • localStorage

    boolean optional

    Websites' local storage data.

  • passwords

    boolean optional

    Stored passwords.

  • pluginData

    boolean optional

    Deprecated since Chrome 88

    Support for Flash has been removed. This data type will be ignored.

    Plugins' data.

  • serverBoundCertificates

    boolean optional

    Deprecated since Chrome 76

    Support for server-bound certificates has been removed. This data type will be ignored.

    Server-bound certificates.

  • serviceWorkers

    boolean optional

    Service Workers.

  • webSQL

    boolean optional

    Websites' WebSQL data.

RemovalOptions

Options that determine exactly what data will be removed.

Properties

  • excludeOrigins

    string[] optional

    Chrome 74+

    When present, data for origins in this list is excluded from deletion. Can't be used together with origins. Only supported for cookies, storage and cache. Cookies are excluded for the whole registrable domain.

  • originTypes

    object optional

    An object whose properties specify which origin types ought to be cleared. If this object isn't specified, it defaults to clearing only "unprotected" origins. Please ensure that you really want to remove application data before adding 'protectedWeb' or 'extensions'.

    • extension

      boolean optional

      Extensions and packaged applications a user has installed (be _really_ careful!).

    • protectedWeb

      boolean optional

      Websites that have been installed as hosted applications (be careful!).

    • unprotectedWeb

      boolean optional

      Normal websites.

  • origins

    string[] optional

    Chrome 74+

    When present, only data for origins in this list is deleted. Only supported for cookies, storage and cache. Cookies are cleared for the whole registrable domain.

  • since

    number optional

    Remove data accumulated on or after this date, represented in milliseconds since the epoch (accessible via the getTime method of the JavaScript Date object). If absent, defaults to 0 (which would remove all browsing data).

Methods

remove

chrome.browsingData.remove(
  options: RemovalOptions,
  dataToRemove: DataTypeSet,
  callback?: function,
)
Promise

Clears various types of browsing data stored in a user's profile.

Parameters

  • dataToRemove

    The set of data types to remove.

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeAppcache

chrome.browsingData.removeAppcache(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears websites' appcache data.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeCache

chrome.browsingData.removeCache(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears the browser's cache.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeCacheStorage

chrome.browsingData.removeCacheStorage(
  options: RemovalOptions,
  callback?: function,
)
Promise Chrome 72+

Clears websites' cache storage data.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeCookies

chrome.browsingData.removeCookies(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears the browser's cookies and server-bound certificates modified within a particular timeframe.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeDownloads

chrome.browsingData.removeDownloads(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears the browser's list of downloaded files (not the downloaded files themselves).

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeFileSystems

chrome.browsingData.removeFileSystems(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears websites' file system data.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeFormData

chrome.browsingData.removeFormData(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears the browser's stored form data (autofill).

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeHistory

chrome.browsingData.removeHistory(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears the browser's history.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeIndexedDB

chrome.browsingData.removeIndexedDB(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears websites' IndexedDB data.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeLocalStorage

chrome.browsingData.removeLocalStorage(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears websites' local storage data.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removePasswords

chrome.browsingData.removePasswords(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears the browser's stored passwords.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removePluginData

chrome.browsingData.removePluginData(
  options: RemovalOptions,
  callback?: function,
)
Promise Deprecated since Chrome 88

Support for Flash has been removed. This function has no effect.

Clears plugins' data.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeServiceWorkers

chrome.browsingData.removeServiceWorkers(
  options: RemovalOptions,
  callback?: function,
)
Promise Chrome 72+

Clears websites' service workers.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

removeWebSQL

chrome.browsingData.removeWebSQL(
  options: RemovalOptions,
  callback?: function,
)
Promise

Clears websites' WebSQL data.

Parameters

  • callback

    function optional

    The callback parameter looks like: () => void

Returns

  • Promise<void>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.

settings

chrome.browsingData.settings(
  callback?: function,
)
Promise

Reports which types of data are currently selected in the 'Clear browsing data' settings UI. Note: some of the data types included in this API are not available in the settings UI, and some UI settings control more than one data type listed here.

Parameters

  • callback

    function optional

    The callback parameter looks like: (result: object) => void

    • result

      object

      • dataRemovalPermitted

        All of the types will be present in the result, with values of true if they are permitted to be removed (e.g., by enterprise policy) and false if not.

      • dataToRemove

        All of the types will be present in the result, with values of true if they are both selected to be removed and permitted to be removed, otherwise false.

Returns

  • Promise<object>

    Pending

    This only returns a Promise when the callback parameter is not specified, and with MV3+. The type inside the Promise is the same as the 1st argument to callback.