Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The correct Chrome API depends on what “selected area” means. A Chrome extension can capture the active tab with chrome.tabs.captureVisibleTab(), then let the user draw a rectangle and upload the cropped pixels. A normal website must use navigator.mediaDevices.getDisplayMedia(), which opens Chrome’s permission picker for a tab, window or screen and returns a video stream. If the target is a known element in the captured tab, Region Capture can crop the stream to that element’s bounds.

None of these browser APIs uploads files for you. Your application must create a still image, crop it when needed, send it to an authenticated endpoint and define size, format, storage and retention rules.

Choose the capture method first

Method Best fit Selection model Main constraint
chrome.tabs.captureVisibleTab() Chrome extension capturing the active tab Visible tab; your UI implements rectangle selection and cropping Requires extension permission and is limited to two calls per second (Chrome tabs API)
getDisplayMedia() Ordinary website asking a user to share a tab, window or screen Chrome’s picker and the user’s permission Returns a MediaStream; support and picker choices vary (MDN)
Region Capture A known DOM element in a captured tab Element bounds, not a freehand rectangle Requires a tab-capture flow and supported Chrome; the crop intersects the visible viewport (Chrome Region Capture guide)

Use captureVisibleTab() when you control an extension and need the current page. Use getDisplayMedia() when a web page must let the user choose what to share. Use Region Capture only when the desired area is an element you can identify, such as #invoice or .chart.

Chrome extension: capture the visible tab, let the user select a rectangle, and upload it

1. Request the narrowest permission

Declare the activeTab permission in Manifest V3 if capture should be available only after the user invokes your extension. Chrome also documents all_urls as an alternative, but that grants broader access and should be justified to users.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
SightPro Magnetic Laptop Privacy Screen 14 Inch 16:10 - Patented Removable Laptop Privacy Filter Shield and Protector
  • 【Instant Snap-on Magnetic Attachment】- The Patented Magnetic Privacy Screen – Protected by U.S. Patents 9,829,669 and D844,012. Simply place the privacy screen along the top of your MacBook and let the magnets attach along the top. No need for tricky placement, messy tape, or damaging adhesive. Easily remove and reattach when you need it.
  • 【Filter Dimensions】: Width: 11 15/16" (304 mm), Height: 7 1/2" (190 mm), Diagonal: 14.1" (358.14 mm) - SightPro Blackout Privacy Filter is engineered to be compatible with Lenovo, HP, Dell, Acer, Asus, Samsung, and other laptop brands. Please verify your screen's width and height measurements before ordering. It's not recommended to make your selection based solely on your screen's diagonal size. [Not optimized for touchscreens.]
  • 【Superior Privacy】- Our advanced multi-layered film filter blacks out your screen when viewing from the side, while maintaining a crystal clear screen straight-on. It also protects your eyes from harmful UV and blue light. [Note: It does not block visibility directly behind you, regardless of the distance.]
  • 【Perfect for Travel and Open Workspaces】- The Laptop Privacy Screen Filter is the ideal solution for healthcare providers, mobile workers, commuters, students, and business travelers. Now you can stay compliant and safeguard sensitive corporate information while working in airplanes, subways, airports, and public areas.
  • 【Package Contents】- Each package includes a magnetic privacy screen filter, magnetic stickers, a webcam privacy cover, a storage folder, and a cleaning cloth. Buy with confidence – located in the US, Sight Pro specializes in providing best-in-class privacy solutions to individuals, small businesses, corporations, government, and educational institutions. Our privacy screens are Section 889 and TAA compliant.
{
  "manifest_version": 3,
  "name": "Selected-area uploader",
  "version": "1.0.0",
  "permissions": ["activeTab"],
  "action": { "default_popup": "popup.html" }
}

Explain that screenshots may contain personal or confidential data and make the transfer explicit. A capture started from a content script ends when the user navigates; Chrome’s screen-capture guidance describes an offscreen document with the DISPLAY_MEDIA reason for background capture that must continue across navigation (Chrome screen-capture guidance).

2. Capture the active tab after a user action

document.querySelector('#capture').addEventListener('click', async () => {
  try {
    const dataUrl = await chrome.tabs.captureVisibleTab();
    const image = new Image();
    image.onload = () => enableSelection(image, dataUrl);
    image.src = dataUrl;
  } catch (error) {
    showError(`Capture failed: ${error.message}`);
  }
});

The Promise resolves to an image data URL. It captures the visible portion of the active tab, not an arbitrary rectangle. Do not call it in a tight loop: Chrome documents a maximum rate of two calls per second.

3. Map the user’s rectangle to bitmap pixels

Display the image in your extension UI and record the pointer’s start and end coordinates. The displayed image can have different dimensions from the bitmap because of CSS sizing and device-pixel ratio. Convert from display coordinates to natural image coordinates before drawing:

function cropSelection(image, displayRect, displayWidth, displayHeight) {
  const scaleX = image.naturalWidth / displayWidth;
  const scaleY = image.naturalHeight / displayHeight;
  const sx = Math.max(0, Math.round(displayRect.x * scaleX));
  const sy = Math.max(0, Math.round(displayRect.y * scaleY));
  const sw = Math.min(image.naturalWidth - sx,
                      Math.round(displayRect.width * scaleX));
  const sh = Math.min(image.naturalHeight - sy,
                      Math.round(displayRect.height * scaleY));
  if (sw <= 0 || sh <= 0) throw new Error('Select a non-empty area');

  const canvas = document.createElement('canvas');
  canvas.width = sw;
  canvas.height = sh;
  canvas.getContext('2d').drawImage(image, sx, sy, sw, sh, 0, 0, sw, sh);
  return canvas;
}

async function canvasBlob(canvas) {
  return new Promise((resolve, reject) =>
    canvas.toBlob(blob => blob ? resolve(blob) : reject(new Error('Encoding failed')), 'image/png')
  );
}

Clamp coordinates to the image bounds, reject zero-area selections and show a confirmation preview before sending. PNG preserves text and transparency; JPEG is smaller for photographs but loses lossless quality. WebP can reduce size when your server and consumers support it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

4. POST the Blob to your server

Use multipart form data unless your API explicitly expects a raw image body. Never trust the filename or the browser-supplied MIME type on the server.

Rank #2
SightPro 15.6 Inch 16:9 Laptop Privacy Screen Filter - Computer Monitor Privacy Shield and Anti-Glare Protector
  • 【Filter Dimensions】: Width: 13 9/16" (345 mm), Height: 7 5/8" (194 mm), Diagonal: 15.6" (396.24 mm) - SightPro Blackout Privacy Filter is engineered to be compatible with Lenovo, HP, Dell, Acer, Asus, Samsung, and other laptop brands. Please verify your screen's width and height measurements before ordering. It's not recommended to make your selection based solely on your screen's diagonal size. [Not optimized for touchscreens.]
  • 【Two Attachment Options】- Installs in minutes. Option 1 uses clear adhesive strips that securely attach to any screen. Option 2 uses slide mount tabs that easily stick to the display frame, allowing you to slide the filter on and off the screen as needed.
  • 【Superior Privacy and Reduce Glare】- Our advanced multi-layered film filter blacks out your screen when viewing from the side, while maintaining a crystal clear screen straight-on. It also protects your eyes from harmful glare, UV, and blue light. [Note: It does not block visibility directly behind you, regardless of the distance.]
  • 【Perfect for Travel and Open Workspaces】- Our computer screen privacy filter is the ideal solution for healthcare providers, mobile workers, commuters, students, and business travelers. Now you can stay compliant and safeguard sensitive corporate information while working in airplanes, subways, airports and public areas.
  • 【Package Contents】- Each package includes one privacy screen shield filter, two sets of clear adhesive strips, two sets of slide mount tabs, and a microfiber cleaning cloth. Buy with confidence – located in the US, Sight Pro specializes in providing best-in-class privacy solutions to individuals, small businesses, corporations, government, and educational institutions. Our privacy screens are Section 889 and TAA compliant.
async function uploadSelection(blob, csrfToken) {
  const form = new FormData();
  form.append('image', blob, 'selection.png');
  const response = await fetch('https://example.com/api/selections', {
    method: 'POST',
    credentials: 'include',
    headers: { 'X-CSRF-Token': csrfToken },
    body: form
  });
  if (!response.ok) throw new Error(`Upload failed (${response.status})`);
  return response.json();
}

Do not set Content-Type yourself for FormData; the browser adds the multipart boundary. Use HTTPS, authenticate the request and return a small JSON object such as an ID and storage URL rather than echoing the entire image.

Web page: let the user select a tab, window or screen

1. Request display capture

getDisplayMedia() must run in response to a user gesture in a secure context. Chrome displays its own picker; your code cannot silently choose a tab or force an exact rectangle. The API returns a MediaStream containing a video track.

async function captureDisplayArea(rect) {
  const stream = await navigator.mediaDevices.getDisplayMedia({
    video: { cursor: 'motion' },
    audio: false
  });
  const track = stream.getVideoTracks()[0];
  const settings = track.getSettings();
  const video = document.createElement('video');
  video.srcObject = stream;
  video.muted = true;
  await video.play();
  await new Promise(requestAnimationFrame);

  const canvas = document.createElement('canvas');
  const sx = Math.max(0, Math.round(rect.x));
  const sy = Math.max(0, Math.round(rect.y));
  const sw = Math.min(video.videoWidth - sx, Math.round(rect.width));
  const sh = Math.min(video.videoHeight - sy, Math.round(rect.height));
  if (sw <= 0 || sh <= 0) throw new Error('Selection is outside the captured frame');
  canvas.width = sw;
  canvas.height = sh;
  canvas.getContext('2d').drawImage(video, sx, sy, sw, sh, 0, 0, sw, sh);
  stream.getTracks().forEach(t => t.stop());
  return canvas.toBlob(blob => uploadSelection(blob), 'image/png');
}

In production, handle cancellation (NotAllowedError), unavailable capture (NotSupportedError) and a track ending because the user clicked Chrome’s “Stop sharing” control. Stop every track after a one-shot capture so the sharing indicator disappears and the camera/screen resource is released. Browser support is not universal; feature-detect the method and provide a clear fallback.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

2. Draw a rectangle in the captured frame

For a drag-to-select UI, show the video or a first frame in a canvas, overlay a pointer rectangle and pass the rectangle in video-pixel coordinates to the crop routine. If the preview is scaled with CSS, multiply by video.videoWidth / displayedWidth and video.videoHeight / displayedHeight, just as with an extension screenshot. A high-DPI display can otherwise produce an offset or blurry upload.

Crop a known element with Region Capture

Region Capture is appropriate when the target is a DOM element rather than an arbitrary user rectangle. First obtain a captured tab stream, feature-detect CropTarget.fromElement(), create a target from the element and crop the video track.

Rank #3
SightPro 14 Inch 16:10 Laptop Privacy Screen Filter - Computer Monitor Privacy Shield and Anti-Glare Protector
  • Filter Dimensions: Width: 11 15/16" (304 mm), Height: 7 1/2" (190 mm), Diagonal: 14.1" (358.14 mm) - SightPro Blackout Privacy Filter is engineered to be compatible with Lenovo, HP, Dell, Acer, Asus, Samsung, and other laptop brands. Please verify your screen's width and height measurements before ordering. It's not recommended to make your selection based solely on your screen's diagonal size. [Not optimized for touchscreens.]
  • Two Attachment Options - Installs in minutes. Option 1 uses clear adhesive strips that securely attach to any screen. Option 2 uses slide mount tabs that easily stick to the display frame, allowing you to slide the filter on and off the screen as needed.
  • Superior Privacy and Anti Glare - Our advanced multi-layered film filter blacks out your screen when viewing from the side, while maintaining a crystal clear screen straight-on. It also protects your eyes from harmful glare, UV, and blue light. [Note: It does not block visibility directly behind you, regardless of the distance.]
  • Perfect for Travel and Open Workspaces - Our computer screen privacy filter is the ideal solution for healthcare providers, mobile workers, commuters, students, and business travelers. Now you can stay compliant and safeguard sensitive corporate information while working in airplanes, subways, airports and public areas.
  • Package Contents - Each package includes one privacy screen shield filter, two sets of clear adhesive strips, two sets of slide mount tabs, and a microfiber cleaning cloth. Buy with confidence – located in the US, Sight Pro specializes in providing best-in-class privacy solutions to individuals, small businesses, corporations, government, and educational institutions. Our privacy screens are Section 889 and TAA compliant.
async function cropElementFromCapturedTab(element, stream) {
  if (!('CropTarget' in window) || !CropTarget.fromElement) {
    throw new Error('Region Capture is not available in this browser');
  }
  const target = await CropTarget.fromElement(element);
  const track = stream.getVideoTracks()[0];
  await track.cropTo(target);
  return stream;
}

Chrome documents desktop availability starting with Chrome 104 (Region Capture). The specification defines the crop as the intersection of the captured surface’s visible viewport and the element’s bounding client rectangle (W3C specification). Scrolled-off content is therefore not included. Overlapping content may remain visible, because Region Capture follows the element’s bounds rather than isolating only its painted pixels. It is not a generic drag-selection control and does not create a new security boundary when the track is passed to another document.

Design the receiving endpoint deliberately

Validate before storage

  • Authenticate the caller and authorize the destination record.
  • Enforce a request-size limit before parsing multipart data.
  • Decode the bytes with an image library and verify the actual format; do not rely on the extension or client MIME type.
  • Reject excessive pixel dimensions to prevent decompression-bomb attacks.
  • Strip or preserve metadata intentionally, especially location and author fields.
  • Generate a server-side filename, store outside executable paths and apply encryption and retention rules appropriate to the data.

Example Node.js endpoint

The following Express example illustrates the contract; replace the in-memory handling with your approved object storage and authentication middleware.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import express from 'express';
import multer from 'multer';

const app = express();
const upload = multer({
  storage: multer.memoryStorage(),
  limits: { fileSize: 8 * 1024 * 1024, files: 1 }
});

app.post('/api/selections', requireUser, upload.single('image'), async (req, res) => {
  if (!req.file) return res.status(400).json({ error: 'image is required' });
  // Decode with a trusted image library, check dimensions and content type here.
  if (!['image/png', 'image/jpeg', 'image/webp'].includes(req.file.mimetype)) {
    return res.status(415).json({ error: 'unsupported image type' });
  }
  const id = await saveValidatedImage(req.user.id, req.file.buffer);
  res.status(201).json({ id });
});

Define accepted formats, maximum dimensions, authentication headers, timeout behavior, retention and deletion semantics in your API documentation. Chrome supplies capture pixels; it does not define any of those server policies.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server. One request returns a PNG, JPEG, WebP or PDF of a URL, so it is useful when your server needs a page capture rather than a user-drawn rectangle from a local screen. It accepts consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets before capture. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers. Its MCP server exposes take_screenshot, get_page_info and capture_pdf to Claude, Cursor and other MCP clients.

See the complete parameter reference in the ScreenshotNeo documentation. A one-call cURL capture is:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot failed: ${res.status}`);
const bytes = Buffer.from(await res.arrayBuffer());

ScreenshotNeo includes full-page capture with lazy-image loading, CSS-selector element capture, dark mode, device presets and custom viewports, retina scale, PDF controls, custom CSS and JavaScript, clicks, waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, selectable cache TTLs, signed links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API and an OpenAPI specification. Parameter names used by other screenshot APIs also work.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
15.6 Inch Privacy Screen Filter for 16:9 Monitor 1920 x 1080 Resolution
  • Compatible Models: Width: 13 9/16" (13.5 inch/344 mm), Height: 7 5/8" (7.6 inch/194 mm), Diagonal: 15.6" (396.24 mm) widescreen laptops which have a 16:9 aspect ratio. Not touchscreen compatible !!! Not fit for 16:10.Do NOT rely solely on your laptop’s diagonal size when ordering. Use a ruler to measure your screen’s visible area (excluding the black bezels). If the width reads 344mm and height reads 194mm, this filter is a perfect match for your device.
  • Keep Information Privacy: Effective "black out" privacy from side views outside the 60-degree viewing angle. Designed for optical clarity when viewing from the front, a person not at the front of the screen can only see the dark side of the screen, so it protects buisness secrets and personal privacy
  • Eye and Screen Protection: Privacy filter does not only protect your private life but also protects your eyes by blocking 30% of blue light , blocking the harmful blue light between 380 - 495nm, it filters out the blue light and relieves eye strain. Our laptop privacy screen also helps keep your screen safe from dust and scratches
  • Perfect For Open Workspaces: Great for maintaining screen privacy in high traffic areas such as open work spaces, airports, airplanes, commuter trains, coffee shops and other public places, etc
  • Easy Installation: Choose between 2 simple Options; Slide-On/Off or Mounted. Not touchscreen compatible

Plans are Free (1,000 shots/month, no card), Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000 and Business $249 for 1,000,000; annual billing gives two months free. Every feature is on every plan. Create a free ScreenshotNeo account to get 1,000 screenshots a month without a card.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting and failure modes

“Permission denied” or a picker that never appears

For extensions, verify the user invoked the action and that activeTab (or the deliberately broader host permission) is declared. For websites, call getDisplayMedia() from a click or other user gesture, serve the page over HTTPS and check browser support. The user can cancel the picker; treat that as a normal outcome rather than retrying automatically.

The crop is shifted or the wrong size

Convert CSS coordinates to natural image or video pixels. Inspect naturalWidth/naturalHeight for an image and videoWidth/videoHeight for a stream. Account for device-pixel ratio, borders and any CSS scaling, then clamp the rectangle to the bitmap.

Only part of the page is present

captureVisibleTab() is intentionally viewport-only. Scroll and capture multiple areas if your extension needs them, or use a page-rendering service for a full-page URL capture. Region Capture also cannot include content outside the visible viewport.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Region Capture throws an unsupported-feature error

Feature-detect CropTarget.fromElement and provide a rectangle-crop fallback. The API requires an existing captured tab stream; it is not a standalone screenshot function.

Best Value
SightPro Magnetic Laptop Privacy Screen 14 Inch 16:9 - Patented Removable Laptop Privacy Filter Shield and Protector
  • 【Instant Snap-on Magnetic Attachment】- The Patented Magnetic Privacy Screen – Protected by U.S. Patents 9,829,669 and D844,012. Simply place the privacy screen along the top of your MacBook and let the magnets attach along the top. No need for tricky placement, messy tape, or damaging adhesive. Easily remove and reattach when you need it.
  • 【Filter Dimensions】: Width: 12 3/16" (310 mm), Height: 6 7/8" (175 mm), Diagonal: 14" (355.6 mm) - There are two different 14 inch screen sizes, please select the correct one. SightPro Blackout Privacy Filter is engineered to be compatible with Lenovo, HP, Dell, Acer, Asus, Samsung, and other laptop brands. Please verify your screen's width and height measurements before ordering. It's not recommended to make your selection based solely on your screen's diagonal size. [Not optimized for touchscreens.]
  • 【Superior Privacy】- Our advanced multi-layered film filter blacks out your screen when viewing from the side, while maintaining a crystal clear screen straight-on. It also protects your eyes from harmful UV and blue light. [Note: It does not block visibility directly behind you, regardless of the distance.]
  • 【Perfect for Travel and Open Workspaces】- The Laptop Privacy Screen Filter is the ideal solution for healthcare providers, mobile workers, commuters, students, and business travelers. Now you can stay compliant and safeguard sensitive corporate information while working in airplanes, subways, airports, and public areas.
  • 【Package Contents】- Each package includes a magnetic privacy screen filter, magnetic stickers, a webcam privacy cover, a storage folder, and a cleaning cloth. Buy with confidence – located in the US, Sight Pro specializes in providing best-in-class privacy solutions to individuals, small businesses, corporations, government, and educational institutions. Our privacy screens are Section 889 and TAA compliant.

Uploads fail with 413, 415 or timeouts

Compare the encoded byte size and dimensions with your server limits, then resize or choose a more appropriate format. A 415 usually means the server rejected the decoded format or MIME type. Use an upload timeout and retry only idempotent, explicitly identified requests; never duplicate a stored image because a response was lost.

The extension hits Chrome’s rate limit

Throttle calls to no more than two captureVisibleTab() calls per second, debounce repeated clicks and queue work. Crop an already captured image locally instead of recapturing for every pointer movement.

Performance, privacy and reliability checklist

  • Capture once, crop locally and encode only the final rectangle.
  • Prefer PNG for diagrams and text, JPEG for photographic content and WebP when all consumers support it.
  • Show a preview and allow cancellation before transmission.
  • Use HTTPS, CSRF protection where cookie authentication is used, short-lived upload credentials and server-side authorization.
  • Limit dimensions and bytes, decode and re-encode with a trusted library, and scan or quarantine files if your threat model requires it.
  • Stop display-media tracks immediately after a one-shot capture.
  • Return a request ID so clients can safely retry status checks without creating duplicate records.
  • Log capture errors and HTTP status codes without logging image contents or secrets.

FAQ

Can these APIs capture Chrome’s address bar or browser menus?

No. They capture web content or a user-selected display surface; privileged browser UI is outside a page’s screenshot surface.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Can a website choose a particular tab without asking the user?

No. getDisplayMedia() deliberately uses a browser-controlled picker and permission prompt. A site can request capture only after the user starts the action.

Does Region Capture remove elements that overlap the selected element?

No. It crops to geometric bounds. Overlapping pixels can remain visible, so use application-level hiding or a separate rendering approach when isolation is required.

Frequently Asked Questions

Can these APIs capture Chrome’s address bar or browser menus?

No. They capture web content or a user-selected display surface; privileged browser UI is outside a page’s screenshot surface.

Can a website choose a particular tab without asking the user?

No. getDisplayMedia() uses a browser-controlled picker and permission prompt.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does Region Capture remove elements that overlap the selected element?

No. It follows geometric bounds, so overlapping pixels can remain visible.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.