tabs

The tabs permission provides access to the chrome.tabs API, allowing an extension to interact with the browser's tab system.

What it does

  • Query: Find tabs based on their properties (e.g., URL, active status, window ID).
  • Create: Open new tabs.
  • Update: Change a tab's properties, such as its URL (navigating it to a new page), or mute status.
  • Move: Reorder tabs within a window or move them between windows.
  • Remove: Close tabs.
  • Read Sensitive Tab Properties: Declaring tabs (or having a matching host permission, or activeTab) is what causes Tab objects returned by the API to populate url, pendingUrl, title, and favIconUrl. Without one of those, those fields are stripped.

When to use it

Use this permission for any extension that needs to manage or organize tabs.

Examples:

  • A "tab manager" extension that groups, searches, or saves tabs.
  • An extension that opens a set of predefined URLs in new tabs.
  • A productivity tool that closes duplicate tabs.
  • An extension that reloads all tabs in the current window.

Manifest Declaration

Requesting the tabs permission on its own does not trigger an installation warning. However, it is often used with other permissions that do.

{
  "name": "My Tabs Extension",
  "version": "1.0",
  "manifest_version": 3,
  "permissions": [
    "tabs"
  ],
  "background": {
    "service_worker": "background.js"
  }
}

Security & Privacy

Why is it medium risk?

This permission lets an extension perform basic actions on tabs (open, close, move) — and, importantly, it also unlocks access to sensitive Tab properties: the URL, page title, and favicon of every tab in the browser at any time.

That means a tabs-only extension cannot read page contents (it would need a host permission for that), but it can quietly enumerate every URL you visit, building a near-complete browsing-history feed. For this reason Chrome surfaces a "Read your browsing history" warning when an extension declares tabs. Prefer activeTab whenever the extension only needs information about the page the user is currently interacting with.

API Usage Example

This example finds all tabs hosting Chrome extension documentation and groups them into a new window.

// background.js

chrome.action.onClicked.addListener(groupDocumentationTabs);

function groupDocumentationTabs() {
  chrome.tabs.query({ url: "https://developer.chrome.com/docs/extensions/*" }, (tabs) => {
    if (tabs.length === 0) {
      console.log("No Chrome extension documentation tabs found.");
      return;
    }

    const tabIds = tabs.map(tab => tab.id);

    // Create a new window
    chrome.windows.create({}, (newWindow) => {
      // Move the found tabs to the new window
      chrome.tabs.move(tabIds, { windowId: newWindow.id, index: -1 });
    });
  });
}

Extensions with the tabs permission

Here are some popular browser extensions that use the "tabs" permission. To explore more, try our Advanced search.

Permission Metrics

Popularity

Security Risk


Usage by Platform