---
title: "Manifest V3 'offscreen' permission explained: DOM parsing vs hidden activity."
description: "Why did Chrome introduce the 'offscreen' permission in Manifest V3? Learn how extensions use offscreen documents for Readability parsing, audio, or clipboard tasks."
canonical_url: "https://vezz.me/permissions/offscreen-documents/"
type: "pseo-permissions"
category: "permissions"
topic: "Chrome Permission Audit"
intent: "Best for technical users and developers auditing Manifest V3 extensions that declare the 'offscreen' permission."
---

# Manifest V3 'offscreen' permission explained: DOM parsing vs hidden activity.

Why did Chrome introduce the 'offscreen' permission in Manifest V3? Learn how extensions use offscreen documents for Readability parsing, audio, or clipboard tasks.

> **Best fit:** Best for technical users and developers auditing Manifest V3 extensions that declare the 'offscreen' permission.

## Technical Permission Audit

- **Manifest Key:** `offscreen`
- **Chrome Install Warning:** None (displays no install-time warning in Chrome)
- **Risk Level:** Lower

```json
{
  "manifest_version": 3,
  "permissions": ["offscreen"]
}
```

### Legitimate Uses
- Parsing HTML with `DOMParser` or Mozilla Readability when a service worker (which lacks a `window`/`document` object) needs to clean article markup
- Playing audio TTS in an extension since Manifest V3 service workers cannot play `Audio` directly

### Red Flags to Watch For
- Loading hidden third-party iframes inside an offscreen document to run background tracking scripts

**How Vezz me handles this:** Vezz me parses page context directly in the active tab using bundled Mozilla Readability (`vendor/readability.js`) only when you trigger a query—no hidden offscreen iframes required.

## Step-by-step workflow

1. **Understand why Manifest V3 added offscreen**: Manifest V2 had persistent background HTML pages (`background.html`). Manifest V3 replaced them with Service Workers, which don't have access to `document` or `DOMParser`.
2. **Check the stated `reasons` in `chrome.offscreen.createDocument`**: Chrome requires developers to declare an explicit reason enum (such as `DOM_PARSER` or `AUDIO_PLAYBACK`) when creating an offscreen document.

## How Vezz me extracts clean article context without offscreen documents

When you enable `Detailed` page context in Vezz me and press `Ctrl+Shift+X`, Vezz me runs Mozilla's open-source Readability library locally inside the current tab to strip out navbars, ads, and footers before sending clean article context.

- 100% local open-source `readability.js` bundled inside the extension
- Executes only at the moment you trigger a question
- Can be turned down to `Basic` or `Minimal` context in settings at any time

## Frequently asked questions

### Does the offscreen permission give an extension access to websites?

No. An offscreen document can only load a local HTML file packaged inside the extension itself, and its JavaScript access is limited to the `chrome.runtime` messaging API.

## Related guides

- [Chrome scripting permission](https://vezz.me/permissions/scripting/): How Manifest V3 content scripts and DOM access work.
- [Alarms & background service workers](https://vezz.me/permissions/alarms-and-background/): How Manifest V3 limits background execution.
