Is PixelKit — 웹 디자인 툴킷 safe?
We analyzed PixelKit — 웹 디자인 툴킷 version 0.1.4's actual code and gave it a 58/100 trust score. PixelKit appears feature-aligned but asks for unusually…
Bottom line
PixelKit appears feature-aligned but asks for unusually broad browser access and powerful controls, so use it cautiously.
What it can access
It runs across all websites and can manage cookies, inspect pages, capture screens, and alter web traffic, exceeding the needs of basic design tools. [Q1][Q4][Q18][Q19]
Security weaknesses
Broad traffic rules and unrestricted user-entered requests can affect websites and private-network services, creating dangerous misuse potential. [Q8][Q18][Q19]
Signs of misuse
No evidence shows data being sent to the publisher, altered links or forms, remote commands, or hidden targeting; activity is mainly user-directed and local. [Q6][Q14][Q17][Q22]
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It runs page access on every page and has sensitive browser capabilities for cookies, screenshots, downloads, request observation and modification, local storage, and optional all-host requests.
Both content-script entries match <all_urls>; permissions include activeTab, storage, offscreen, downloads, cookies, declarativeNetRequest, and webRequest, with optional <all_urls> host access. — manifest.json:30-64
Implements cookie management, screenshots, arbitrary fetches, request timing, dynamic header rules, downloads, and offscreen image processing. — assets/index.ts-DbVFBvGP.js:1-14
Which websites can it run on, and can it read or change what appears on those pages?
Its user-facing tools can edit page text and CSS, resize or hide elements, add overlays and annotations, remove styles, and automatically apply saved CSS presets.
Contains element selection, contentEditable text editing, inline style commands, layout resizing, hide/style-strip actions, grid and annotation overlays, and undo/redo. — assets/index.ts-BR3d4Etd.js:1
At document_start, matches stored preset URL patterns and inserts the preset's cssOverrides into a style element. — assets/css-injector.ts-CTt6kL84.js:1
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
No evidence of this behavior was found in the reviewed package.
Inspection and QA paths read visible text, headings, selectors, image attributes, geometry, and computed styles rather than input values or credentials. — assets/index.ts-BR3d4Etd.js:1
Sensitive values shown in API, cookie, JWT, and form-like controls are explicitly entered or requested by the user inside the extension panel. — assets/sidepanel.html-BAFh50LF.js:1-11
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
Its developer cookie manager can list, display, copy, create, and delete cookies for domains covered by granted host access, including HTTP-only session cookies.
Requests cookies and optional <all_urls> host access. — manifest.json:50-64
api:list-cookies uses chrome.cookies.getAll by domain; set-cookie and remove-cookie call the corresponding Chrome APIs. — assets/index.ts-DbVFBvGP.js:1-14
Cookie UI displays names and values, marks Secure and HttpOnly state, can copy all cookie JSON, and supports deletion or creation. — assets/sidepanel.html-BAFh50LF.js:7
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
It can read page structure and text, computed styles, image sources, visible pixels and screenshots, and locally stored cookie or request details for its advertised inspection tools.
Walks page elements for inspection and QA, reads textContent, headings, selectors, dimensions, image URLs, canvas pixels, and computed CSS. — assets/index.ts-BR3d4Etd.js:1
Uses captureVisibleTab and returns screenshots for crop, stitch, visual comparison, annotation, or download. — assets/index.ts-DbVFBvGP.js:1-14
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
Only licensing data is sent to the publisher's licensing provider: the entered license key, organization ID, random device label, activation ID, and validation state. No page data or analytics upload was found.
Activation, validation, and deactivation POST to https://api.polar.sh/v1/customer-portal/license-keys using the license key, fixed organization ID, device label, and activation ID. — assets/index.ts-DbVFBvGP.js:14
Page inspection, screenshots, QA output, styles, and image analysis are returned locally through extension messages and not sent to a publisher endpoint. — assets/index.ts-BR3d4Etd.js:1
Does it download or run code, settings, or instructions supplied by a remote server?
It can fetch arbitrary URLs and GraphQL responses supplied by the user and display the results, but no publisher server remotely configures extension behavior.
api:send-request and api:graphql-query fetch the user-entered endpoint with user-entered method, headers, body, query, and variables. — assets/index.ts-DbVFBvGP.js:1-14
The API and GraphQL panels require the user to enter and execute requests; returned bodies are displayed as data. — assets/sidepanel.html-BAFh50LF.js:7
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
Content code loads on every page; saved CSS presets can apply automatically, and a user-started request-timing monitor observes matching requests until stopped or the worker restarts.
Runs an early CSS injector and the main PixelKit content loader on <all_urls>. — manifest.json:30-48
A tab-completion listener applies matching saved presets, while api:start-ttfb registers webRequest listeners for the requested URL pattern. — assets/index.ts-DbVFBvGP.js:1-14
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.
Declares no chrome_url_overrides, chrome_settings_overrides, proxy, privacy, management, debugger, or search-provider capability. — manifest.json:1-132
Is any important behavior difficult to inspect because the code is hidden, heavily obfuscated, dynamically generated, or supplied by third parties?
The roughly 756 KB package is split across many hashed, minified bundles, including a 224 KB all-sites content bundle and a 194 KB shared UI bundle.
Records 755,872 unpacked bytes across numerous generated asset files. — inventory.json:1
Combines the security-relevant page inspection, editing, screenshot, QA, toolbar, and messaging logic into a minified single-line bundle. — assets/index.ts-BR3d4Etd.js:1
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.
Package-wide sink search found no eval or Function constructor in the privileged content logic. — assets/index.ts-BR3d4Etd.js:1
Remote response bodies are returned to the panel as text or JSON and never passed to an execution primitive. — assets/index.ts-DbVFBvGP.js:1-14
Does it track the websites, pages, searches, or links you visit?
A user-started TTFB tool records matching request URLs, methods, status codes, and timings locally; preset matching also compares completed tab URLs locally.
webRequest listeners store up to 100 entries containing URL, method, response status, TTFB, and timestamp in chrome.storage.local. — assets/index.ts-DbVFBvGP.js:14
The preset tab listener compares completed URLs with locally stored patterns and sends only a matching preset to the content script. — assets/index.ts-DbVFBvGP.js:14
Does it create a persistent ID or browser fingerprint to recognize you?
It creates a random persistent device label for Polar license activation; no advertising or cross-site tracking identifier was found.
Generates a crypto.randomUUID under pk:device-id and sends it as the license activation label. — assets/index.ts-DbVFBvGP.js:14
Uses the identifier only in the explicit Polar activation request; validation uses license and activation IDs. — assets/index.ts-DbVFBvGP.js:14
Does it send cookies, session details, authentication data, or page contents elsewhere?
No evidence of this behavior was found in the reviewed package.
Stores request history, TTFB results, header rules, presets, and licenses in chrome.storage.local and downloads screenshot data locally. — assets/index.ts-DbVFBvGP.js:1-14
QA reports, screenshots, cookie JSON, and inspection data are displayed, copied, or exported locally rather than uploaded. — assets/sidepanel.html-BAFh50LF.js:1-11
Does it record typing, form entries, clipboard contents, or screenshots?
It captures the visible tab and page pixels for color picking, screenshots, annotation, visual comparison, and QA evidence; it does not use camera, microphone, or keylogging services.
Uses chrome.tabs.captureVisibleTab for requested screenshot and review operations. — assets/index.ts-DbVFBvGP.js:14
Processes captured pixels for color picking, cropping, full-page stitching, annotations, and evidence screenshots; keyboard listeners are limited to active tool controls such as Escape and editing shortcuts. — assets/index.ts-BR3d4Etd.js:1
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.
Declares neither externally_connectable nor nativeMessaging. — manifest.json:1-132
The service worker accepts typed internal runtime messages from extension pages and content scripts; no onMessageExternal handler exists. — assets/index.ts-DbVFBvGP.js:14
Does it alter links, referral codes, advertisements, shopping carts, or search results?
No evidence of this behavior was found in the reviewed package.
Injected UI is the PixelKit toolbar, inspection overlays, grids, annotation canvas, and explicit editing tools. — assets/index.ts-BR3d4Etd.js:1
Automatic page modification is limited to user-saved CSS presets whose URL pattern matches the page. — assets/css-injector.ts-CTt6kL84.js:1
Does it redirect or modify web traffic, request headers, downloads, or proxy settings?
Its services tools can observe request URLs and persistently change request or response headers, including a broad mode that sets permissive CORS response headers.
api:cors-toggle adds a dynamic rule on all URLs for XHR, main-frame, and subframe responses that sets Access-Control-Allow-Origin, Methods, and Headers to *. — assets/index.ts-DbVFBvGP.js:1-14
api:inject-headers creates persistent dynamic rules that set a user-selected request or response header for a URL pattern. — assets/index.ts-DbVFBvGP.js:1-14
User-started webRequest listeners record request and response timing without changing the request body. — assets/index.ts-DbVFBvGP.js:14
Can it communicate with software on the computer or services running on localhost?
All-sites and arbitrary-request tools can reach localhost and private-network web services when the necessary host access is granted; it has no native-app access.
Content scripts match <all_urls> and optional host permissions are <all_urls>, with no private-network exclusions. — manifest.json:30-64
API tester, GraphQL client, cookie manager, header rules, and request monitor accept user-supplied URLs or domain patterns without excluding localhost or private IP space. — assets/index.ts-DbVFBvGP.js:1-14
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.
Remote data consists of license responses, user-requested API text or JSON, and fetched image blobs; none reaches an execution sink. — assets/index.ts-DbVFBvGP.js:1-14
Imports only the fixed packaged background bundle. — service-worker-loader.js:1
Can ordinary websites access privileged extension features through messaging or exposed files?
No evidence of this behavior was found in the reviewed package.
Listens on chrome.runtime.onMessage for typed PixelKit actions and does not listen for window message events. — assets/index.ts-BR3d4Etd.js:1
Service-worker message dispatch validates the PixelKit protocol shape and has no externally_connectable entry point. — assets/index.ts-DbVFBvGP.js:14
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
Conditional behavior is based on direct user actions, local license state, local presets, and user-entered URL patterns. — assets/index.ts-DbVFBvGP.js:1-14
Automatic presets match locally stored URL patterns and CSS rather than publisher-supplied targeting. — assets/css-injector.ts-CTt6kL84.js:1
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
Background work consists of user-requested API operations, license checks, presets, request timing, screenshots, and local image processing. — assets/index.ts-DbVFBvGP.js:1-14
Declares no proxy, vpnProvider, nativeMessaging, or socket capability. — manifest.json:50-64
Does it change form fields or where a form sends its information?
No evidence of this behavior was found in the reviewed package.
Quick Edit changes textContent for elements with text nodes and applies CSS properties through an undoable command system; no action or formAction mutation exists. — assets/index.ts-BR3d4Etd.js:1
Inspection and QA scans do not register submit listeners or extract input values. — assets/index.ts-BR3d4Etd.js:1