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, oractiveTab) is what causesTabobjects returned by the API to populateurl,pendingUrl,title, andfavIconUrl. 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.