Is Web Clipper (Nimbus) safe?
We analyzed Web Clipper (Nimbus) version 4.9.9.3's actual code and gave it a 42/100 trust score. Useful clipping features require unusually broad page…
Bottom line
Useful clipping features require unusually broad page access and expose a serious website-to-extension security weakness.
What it can access
It can read, capture, and upload content from any website, including email and attachments, while also requesting cookies and tab access for a clipping tool. [Q1][Q3][Q6]
Security weaknesses
Any website can send messages to exposed extension features, potentially triggering screenshots, uploads, navigation, or account actions without clear user approval. [Q8][Q21]
Signs of misuse
Clips, screenshots, email contents, and professional-profile details are sent to Nimbus for saving; the evidence does not establish unrelated tracking or deliberate misuse. [Q6][Q12][Q14]
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It requests access to every website plus tabs, activeTab, cookies, storage, and context menus, and injects extensive code on all pages and frames.
Declares *://*/* host access, tabs/cookies/storage permissions, a large all-site parser/UI content-script group, and an all-frames serializer. — manifest.json:1-190
Which websites can it run on, and can it read or change what appears on those pages?
It overlays clipping controls, highlights selections, scrolls pages during full-page capture, and changes page presentation as part of explicit clipping actions.
Loads Nimbus UI, overlay, dropdown, tree-menu, image-helper, and screenmaker scripts and CSS into every web page. — manifest.json:1-190
Coordinates article, selection, image, mail, and screenshot clipping UI in the current page. — js/content_scripts/nimbus.js:1-260
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
It can read and serialize whole pages, selections, embedded-frame content, images, articles, email conversations, and profiles. Most collection supports a user-requested clip.
Recursively serializes the document and all matching iframe documents into HTML. — js/content_scripts/htmlparser/frame_clone.js:90-188
Builds saved clippings from full HTML, selected fragments, images, bookmarks, and attachments. — js/server.js:532-650
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
It reads current page URLs, titles, and document content for clipping, but no general chronological browsing-history store was found.
A saved clipping includes the source URL and title alongside its content. — js/server.js:532-634
Requests tabs and all-site access and injects on every web page. — manifest.json:1-190
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
It can capture visible-tab screenshots and read/upload page images and mail attachments. No camera, microphone, arbitrary local-file scan, or native messaging was found.
Uses chrome.tabs.captureVisibleTab and can stitch scrolled captures into a full-page image. — js/background/screenmaker.js:16-104
Uploads selected attachments to the Nimbus files:preupload endpoint. — js/server.js:690-735
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
When the user saves a clip, it sends the selected HTML, URL, title, tags, reminders, images, and attachments to Nimbus. Login credentials are sent to Nimbus authentication services.
Defines Nimbus authentication and synchronization endpoints and attaches the Nimbus session ID. — js/server.js:32-168
Submits clipping content to clippings:save at sync.nimbusweb.me. — js/server.js:532-650
Does it download or run code, settings, or instructions supplied by a remote server?
No evidence of this behavior was found in the reviewed package.
Remote API actions exchange structured account and note data rather than executable code or behavior rules. — js/server.js:32-135
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
Large content-script and serializer stacks run automatically on every page/frame. Uploading a normal clip is user-triggered, but the vulnerable serialization listener is always available to webpage scripts.
Automatically injects the parser stack at document_end and the serializer in all frames. — manifest.json:1-190
Starts the unvalidated window message listeners immediately. — js/content_scripts/htmlparser/frame_clone.js:19-24,241-245
Can it change important browser settings, including your proxy, search engine, homepage, privacy settings, or other extensions?
No evidence of this behavior was found in the reviewed package.
Requests no proxy, management, declarativeNetRequest, privacy, or browser-settings permission. — manifest.json:1-190
Is any important behavior difficult to inspect because the code is hidden, heavily obfuscated, dynamically generated, or supplied by third parties?
No evidence of this behavior was found in the reviewed package.
The sensitive serializer and message handling are readable source with descriptive names. — js/content_scripts/htmlparser/frame_clone.js:1-245
Does it use eval(), new Function(), or string-based timers to turn text into executable code?
No evidence of this behavior was found in the reviewed package.
Direct case-sensitive searches across JavaScript found no first-party eval( or new Function call. — inventory.json:1
Does it track the websites, pages, searches, or links you visit?
No evidence of this behavior was found in the reviewed package.
Reads the stored Nimbus auth session or Nimbus eversessionid cookie for API requests. — js/server.js:138-160
Exposes settings, folders, workspaces, tags, and save operations through the background router. — js/background/Listener.js:77-121
Does it create a persistent ID or browser fingerprint to recognize you?
No evidence of this behavior was found in the reviewed package.
Visible network actions are account, workspace, note, clip, and attachment operations rather than analytics events. — js/server.js:32-135
Does it send cookies, session details, authentication data, or page contents elsewhere?
Mail parsers can retrieve full conversations, participants, bodies, inline images, and attachments, while the LinkedIn parser uses the logged-in session and JSESSIONID-derived CSRF token to retrieve detailed profile/company records.
Reads JSESSIONID from document.cookie and calls LinkedIn Voyager APIs for profile details, positions, education, location, biography, and images. — js/content_scripts/htmlparser/modules/linkedin.js:40-165
Uses Outlook session/page APIs to assemble messages, recipients, bodies, images, quoted content, and attachments for clipping. — js/content_scripts/htmlparser/modules/outlook.js:1-520
Does it record typing, form entries, clipboard contents, or screenshots?
It captures screenshots of the visible tab or a stitched page/region for the screenshot clipping feature. No keylogging, camera, or microphone capture was found.
Calls chrome.tabs.captureVisibleTab for region and whole-page screenshot workflows. — js/background/screenmaker.js:16-104
Can a website or remote server send commands that make the extension take actions?
No evidence of this behavior was found in the reviewed package.
Remote communication is request/response API traffic for account and clipping data. — js/server.js:32-135
Does it alter links, referral codes, advertisements, shopping carts, or search results?
No evidence of this behavior was found in the reviewed package.
Page changes implement clipping controls and content selection, not ads or link monetization. — js/content_scripts/nimbus.js:1-260
Does it redirect or modify web traffic, request headers, downloads, or proxy settings?
No evidence of this behavior was found in the reviewed package.
Requests broad host access but no webRequest or declarativeNetRequest permission. — manifest.json:1-190
FETCH_URL performs explicit fetches for requested clone resources rather than intercepting browser traffic. — js/server.js:340-391
Can it communicate with software on the computer or services running on localhost?
No evidence of this behavior was found in the reviewed package.
Declares no nativeMessaging or file-specific capability; broad host access does cover HTTP(S) destinations. — manifest.json:1-190
Does it decode, decrypt, or unpack hidden data and then execute or inject it?
No evidence of this behavior was found in the reviewed package.
All executable scripts referenced by extension pages and content-script declarations are packaged locally. — manifest.json:1-190
Can ordinary websites access privileged extension features through messaging or exposed files?
Its all-site frame messenger trusts arbitrary webpage postMessage requests, and its Nimbus-site bridge forwards broadly shaped page commands to the background router without a command allowlist.
Accepts NIMBUS_request from any message event without checking origin/source and responds to the supplied source using target origin '*'. — js/content_scripts/htmlparser/frame_clone.js:19-86,194-245
Forwards page-supplied message data to chrome.extension.sendMessage and returns responses with postMessage('*'). — js/content_scripts/everhelper.js:1-29
Routes forwarded question/topic values to powerful settings, auth, upload, fetch, navigation, and screenshot handlers. — js/background/Listener.js:21-30,77-269
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
Loads specialized Gmail, Outlook, Yahoo, Yandex, Mail.ru, LinkedIn, Facebook, YouTube, Amazon, IMDb, and other parsers on every site. — manifest.json:1-190
Provides hidden page-callable serialization commands unrelated to any visible permission prompt or user action. — js/content_scripts/htmlparser/frame_clone.js:49-76,216-237
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
Declares a very large document_end content-script bundle for all HTTP(S) pages plus three serializer scripts with all_frames enabled. — manifest.json:1-190
Does it change form fields or where a form sends its information?
No evidence of this behavior was found in the reviewed package.
Input and DOM changes support Nimbus's own clipping controls and selection state rather than redirecting host forms. — js/content_scripts/nimbus.js:1-260
Serializes permitted DOM nodes/attributes for a clip; it does not rewrite host form submissions. — js/content_scripts/htmlparser/html_serialize.js:360-430