Chrome captureVisibleTab: Screenshots, Permissions, and Privacy
A URL records where a source lives; a screenshot records what was visible at one moment. chrome.tabs.captureVisibleTab() can capture the active tab's visible area, including sensitive material, so a helpful feature needs explicit intent and a careful retention rule.

Understand the capture boundary
captureVisibleTab(windowId, options) returns a data URL for the visible area of the currently active tab in the specified window. It is not a whole-page archive and does not record content outside the visible viewport. A page can change between the user's selection and the capture, so show what was actually captured before attaching it to a note.
Chrome documents activeTab or <all_urls> permission for this method. Chrome also says the method can capture sensitive browser surfaces, including some pages that extensions normally cannot access. That capability calls for a stronger product rule than 'the API allowed it'.
Ask for a screenshot at the moment it is needed
Use a user-initiated Capture button and describe whether the result will be kept locally, attached to a note or uploaded. activeTab provides temporary page access after an extension invocation and can avoid a broad standing host grant for an on-demand action.
Before saving, let the user inspect the image and cancel. A visible page may contain names, account details, messages or private documents that are unrelated to the research source. A URL-only save path should remain available.
Respect performance and storage limits
Chrome documents MAX_CAPTURE_VISIBLE_TAB_CALLS_PER_SECOND as 2. A screenshot button should not poll continuously or fire on every scroll. Capture once for a user action, then wait for another explicit request if the view changes.
A data URL can be large. Decide whether to store a compressed image, an exported file or only a temporary preview. Count storage usage before treating extension sync storage as an image archive; its quota is intended for much smaller data.

Separate evidence from source identity
A screenshot shows a visual state at a timestamp; it does not prove the page's canonical URL, author or later content. Save the source URL and capture time separately, and label any crop or annotation as an edit. Avoid making a screenshot look like a verified citation by itself.
For a product comparison, a screenshot may help remember a displayed price or design. Revisit the live source before making a time-sensitive claim. The page may have changed since capture.
Idea: a reviewed visual evidence card
Build a card with a preview, source URL, capture time, optional caption and a Remove button. Let the user confirm the image before it enters the project note. Keep the original source link alongside it so later readers can attempt to verify the claim.
If an upload is offered, make it a separate explicit step with a visible destination and retention policy. This helps people keep useful visual context without surprising them with background collection.
Test sensitive scenarios
Test a normal website, a page that navigates just before capture, a high-resolution screen, a denied or expired permission and an account page containing private data. Verify the preview, cancellation and deletion flows before offering cloud sync.
Do not promise that capturing a tab preserves interactive state or the complete page. Explain the exact visible area and file that the user receives.
Tabzero: Browser Tab Manager & Notes
Save tab links, keep notes beside your sources, and return to what matters. Tabzero is in development preview; AI Notes remains planned.
Related guides
How to Test Browser Extension Tab Workflows End to End
Build a repeatable test matrix for tab races, denied permissions, worker restarts, multiple windows, and partial restores.
Chrome, Firefox, and Safari Tabs APIs: A Compatibility Plan
Compare extension tab APIs across browsers by permission, API support, packaging, and realistic test cases before porting.
Chrome Scripting API: Read a Page Only When Needed
Use chrome.scripting.executeScript with activeTab or host access, understand injection limits, and build a reviewable page-capture flow.