MDN wants to learn about developers like you:



Creates a data URI encoding an image of the visible area of the given tab. You must have the <all_urls> permission to use this method.

This is an asynchronous function that returns a Promise.


var capturing = browser.tabs.captureTab(
  tabId,               // optional integer
  options              // optional extensionTypes.ImageDetails


integer. ID of the tab to capture. Defaults to the active tab in the current window.

Values of this type are objects. They contain the following properties:

extensionTypes.ImageFormat. The format of the resulting image. Default is "png".
integer. When format is "jpeg", this controls the quality of the resulting image. It is a number between 0 and 100, which is converted to a value between 0 and 1 and then used as the encoderOptions argument to HTMLCanvasElement.toDataURL(). If is is omitted, 92 is used. As quality is decreased, the resulting image will have more visual artifacts, and the number of bytes needed to store it will decrease. This value is ignored for PNG images.

Return value

A Promise that will be fulfilled with a data URL which encodes an image of the visible area of the captured tab. May be assigned to the 'src' property of an HTML Image element for display. If any error occurs the promise will be rejected with an error message.

Browser compatibility

ChromeEdgeFirefoxFirefox for AndroidOpera
Basic support No No5959 No


Capture an image of the active tab in the current window, with default settings:

function onCaptured(imageUri) {

function onError(error) {
  console.log(`Error: ${error}`);

browser.browserAction.onClicked.addListener(function() {
  var capturing = browser.tabs.captureTab();
  capturing.then(onCaptured, onError);


This API is based on Chromium's chrome.tabs API. This documentation is derived from tabs.json in the Chromium code.

Document Tags and Contributors

 Contributors to this page: wbamberg
 Last updated by: wbamberg,