Manifest position 303 · CrUX rank bucket 1000
https://www.remove.bg
Coverage complete
Coverage-complete representative audit of six page/flow archetypes plus a recovery route. Excluded authenticated account management, payment completion, bulk editing, plugin internals, every locale, and destructive account actions because they require credentials, payment, or broad template duplication.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | The dark-mode screenshot is visually identical to the light page, and the computed root color-scheme remains “normal” under prefers-color-scheme: dark. RUP-1 medium: The site ignores the user’s dark-color preference. |
respect-user-preferencesrespects-reduced-motion | issues | high | Under prefers-reduced-motion: reduce, the autoplay video remained unpaused and advanced from 3.145s to 4.646s in 1.5 seconds. RUP-2 medium: The hero video keeps autoplaying when reduced motion is requested. |
respect-user-preferencesrespects-contrast | pass | medium | Axe plus prefers-contrast screenshot showed the main UI and controls remain visible under higher contrast; the separate base-color contrast defect is recorded under be-inclusive. |
implement-natural-interactionsview-transitions | issues | high | DOM/CSS inspection found no ::view-transition styles, while representative navigation is conventional full-document replacement. NAT-1 low: Navigation does not expose a View Transitions treatment. |
implement-natural-interactionsscroll-driven-animations | not-applicable | high | No parallax, scrollytelling, or scroll-linked animation was identified on representative paths, so there is no scroll-linked implementation to evaluate. |
implement-natural-interactionsphysical-gestures | pass | medium | The UI uses native buttons, tabs, links and range input with no custom pointer-gesture surface found; controls preserve platform interaction semantics. |
provide-guided-navigationscroll-state-aware-chrome | issues | high | Computed DOM evidence shows a fixed 72px nav, but CSS inspection found no scroll-state query or progress treatment across a 9,528px mobile page. NAV-1 low: The fixed header does not communicate scroll state. |
provide-guided-navigationanchored-positioning | not-applicable | high | No tooltip or edge-sensitive anchored transient UI was present on the representative paths; modal consent uses a dialog instead. |
provide-guided-navigationdirects-attention | pass | medium | Selected tab states, the API active sidebar, descriptive headings and article table of contents visibly orient users after navigation. |
maximize-content-reduce-noiseno-intrusive-interruptions | issues | high | At 360×800 the banner occupies roughly the bottom third of the first viewport and covers the upload card; it also obscures pricing, API, blog, and signup content in retained screenshots. NOISE-1 medium: The cookie banner obscures the primary task on load. |
maximize-content-reduce-noisesemantic-dismissible-primitives | pass | medium | The settings surface is implemented with a native dialog and has a named Dismiss button; FAQs use accessible button/disclosure controls. |
maximize-content-reduce-noisereduced-chrome | pass | medium | Outside the consent banner, representative pages devote the viewport to the task/content with restrained navigation and content-first cards. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | pass | medium | At 360px, layout metrics report scrollWidth=clientWidth=360, no horizontal overflow, and a valid viewport meta tag; mobile screenshots show reflowed layouts. |
adapt-to-the-form-factorcomponent-level-responsiveness | pass | medium | Cards, navigation, upload surface and article/list layouts visibly adapt from multi-column desktop to single-column mobile without clipping; no reused component failed at its observed containers. |
adapt-to-the-form-factorinput-modality-aware | pass | medium | Primary mobile controls are 44–56px high, sample targets are 48px, and programmatic keyboard focus produces a visible 5px blue focus ring. |
support-core-task-successclear-purpose-and-primary-action | pass | medium | The first viewport states “Remove Image Background” and presents a prominent Upload Image action; pricing/API pages likewise have clear primary actions. |
support-core-task-successprimary-flow-completion | pass | medium | Selecting a supplied sample navigated to /upload, produced an edited result and exposed Download/Edit in Canva controls without an account wall. |
support-core-task-successclear-system-state-and-recovery | pass | medium | The completed sample exposes next actions, and an invalid route shows a clear not-found message plus “Go to start page” recovery. |
be-fast-and-stablegood-core-web-vitals | issues | high | Mobile Lighthouse measured LCP 19.4s, FCP 2.8s, TBT 320ms and performance 0.56; the independent trace measured LCP 8.06s. The LCP video lacked fetchpriority=high. PERF-1 high: Largest Contentful Paint is far outside the good range. |
be-fast-and-stablevisual-stability | issues | high | The 360×800 layout observer recorded CLS 0.109 with a late shift at 5.54s; 26 of 27 images omit explicit width/height attributes. PERF-2 medium: The mobile page shifts after initial rendering. |
be-fast-and-stableefficient-main-thread | issues | high | Lighthouse measured 320ms TBT; the trace found a 205ms long task and the layout observer recorded a 276ms long task. PERF-3 medium: Main-thread work creates avoidable blocking. |
be-fast-and-stableefficient-resource-delivery | issues | high | HAR evidence records 6,033,124 transferred bytes: 4.47MB images and 1.32MB scripts. A 1.96MB PNG and a 1.50MB PNG dominate transfer; the font stylesheet is parser-blocking. PERF-4 high: The landing page transfers a disproportionate 6.03MB. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Route-split application code and CSS, conditionally load editing and analytics dependencies, and remove duplicate/legacy payload. PERF-5 medium: Lighthouse estimates 791KiB unused JavaScript and 107KiB unused CSS; the main 943KB script is 65% unused and three stylesheets are 96–100% unused. |
be-inclusivenames-roles-labels | issues | high | axe found critical missing labels on the before/after range input and missing alt text on two meaningful feature images; the image primitive found seven images without alt. A11Y-1 high: Core controls and images have accessibility semantics defects. |
be-inclusivesufficient-contrast | issues | high | axe measured 3.78:1 for “Information & Settings” and “Reject all” against #c1e7c2, below the required 4.5:1. A11Y-2 medium: Cookie controls fail WCAG AA contrast. |
be-inclusivestructure-and-focus | issues | high | axe and Lighthouse found a focusable “English” button inside aria-hidden=true, producing an accessibility-tree failure. A11Y-3 medium: A hidden language control remains focusable. |
be-inclusivelegible-text | pass | medium | Representative desktop/mobile screenshots show readable hierarchy, comfortable line lengths on content pages, and no observed text clipping at 360px. |
be-inclusivezoom-reflow-targets-and-media | pass | medium | Viewport scaling is permitted, mobile reflow has no horizontal overflow, primary targets meet roughly 44px, and autoplay video is muted with no audio dependency. |
follow-best-practicesno-console-errors | pass | medium | Lighthouse recorded no browser console errors on load. |
follow-best-practicessound-document-and-assets | issues | high | The images primitive found 26 images without dimensions and Lighthouse reported deprecated -internal-media-controls-overlay-cast-button usage. BEST-1 medium: Image sizing and a deprecated media technique weaken platform hygiene. |
follow-best-practicesbrowser-platform-hygiene | issues | high | Lighthouse could not obtain source maps for the large first-party JavaScript bundles, reducing production diagnosability. BEST-2 low: Large first-party bundles lack usable source maps. |
be-discoverabletitle-and-description | issues | high | Rendered and raw profile evidence found a title and H1 for /blog but no meta[name=description]. SEO-1 medium: The blog listing has no meta description. |
be-discoverablecrawlable-and-mobile-friendly | pass | medium | Lighthouse passes crawlable anchors, descriptive link text and robots; viewport meta is present and robots.txt permits Googlebot. |
be-discoverablecanonical-and-indexing-signals | pass | medium | Public representative pages return index/follow and self-canonical URLs; robots points to a sitemap index. Signup is intentionally noindex. |
be-discoverablestructured-and-shareable-metadata | issues | high | The article, blog, pricing, and API profiles contain zero JSON-LD blocks. The article has descriptive visible content but no Article schema. SEO-2 medium: Rich pages omit structured entity metadata. |
be-private-and-securesecure-transport-and-headers | issues | high | Header evidence confirms HTTPS, HSTS, nosniff and X-Frame-Options, but Content-Security-Policy is absent. SEC-1 high: The main document has no Content-Security-Policy. |
be-private-and-securedata-minimisation-and-third-parties | issues | high | Tracker evidence found 9 third-party origins including Google Tag Manager and Google Analytics; HAR attributes 36 of 41 requests and 6.01MB to cross-origin hosts. SEC-2 medium: The default page load has a broad third-party and analytics footprint. |
be-private-and-securein-context-permissions-and-modern-auth | issues | high | The signup profile exposes password/new-password fields and Facebook/Google login; no WebAuthn/passkey control or credential-registration path was present. Permission prompts were not fired on load. SEC-3 medium: Authentication offers passwords and federated login but no visible passkey path. |
be-private-and-securedefensive-browser-policies | issues | high | Headers contain no Permissions-Policy; the first-party consent and session cookies use SameSite=None, although both are Secure and the session is HttpOnly. SEC-4 low: Permissions Policy is absent and cookie scope is broader than necessary. |
be-resilientprogressive-enhancement | issues | high | Discoverability measured only 54% word coverage; the crawler screenshot contains only “Remove Image Background / 100% Automatically and” with no upload action, navigation, or supporting content. RES-1 high: The no-JavaScript experience loses the core task and most content. |
be-resilientresilient-runtime-behaviour | pass | medium | Native dialog/menu/tab states remained usable in tested viewports, the sample processing route completed, and no console/runtime errors were recorded. |
be-resilientoffline-and-installable | issues | high | A standalone web manifest is present, but after load navigator.serviceWorker.getRegistrations() returned none and Cache Storage was empty. RES-2 medium: The app advertises installability but has no offline worker or cache. |
be-resilientnetwork-and-http-failure-states | pass | medium | A nonexistent URL renders a specific error heading and a direct recovery link instead of a blank shell. |
be-internationalisedlang-dir-and-logical-properties | issues | high | The language control exposes 13 locales, but stylesheet inspection found zero logical-property rules and five physical left/right rules; html has lang=en but no explicit dir. I18N-1 medium: The multilingual UI is not built with writing-mode resilient CSS. |
be-internationalisedlocale-aware-data | pass | medium | The UI exposes 13 language choices, declares lang=en, and pricing rendered locale-appropriate GBP values under the audit locale. |
be-internationalisedtime-zone-correctness | not-applicable | high | Representative public paths expose no event scheduling, stored times, or cross-zone temporal task. |
be-trustworthyno-dark-patterns | pass | medium | Pricing shows monthly/yearly amounts, annual totals, free and pay-as-you-go options, a cancellation FAQ, and equal first-layer consent acceptance/rejection. |
be-trustworthyhumane-error-handling | issues | high | After rejecting consent and activating Sign up with all fields empty, the page remained unchanged: no :invalid fields, no alert/error nodes, and no focused invalid control. TRUST-1 high: Empty signup submission fails without visible or announced feedback. |
be-trustworthytrustworthy-input-assistance | pass | medium | Signup fields have explicit labels and correct email/new-password autocomplete tokens; consent and newsletter choices are separate. |
be-trustworthysafe-commercial-and-account-flows | pass | medium | Plans show per-month and annual totals, “Most Popular” is identified without hiding alternatives, cancellation is findable, and account consent is explicit and optional newsletter consent is separate. |
be-sustainableoptimised-assets | issues | high | The image audit found 8 oversized images, 9 without responsive sources, 21 legacy-format assets and 7 eager below-fold images; HAR shows 4.47MB image transfer. SUS-1 high: Decorative and sample media are substantially over-delivered. |
be-sustainableno-wasteful-work | issues | high | The muted hero video autoplays without controls and continued advancing under reduced motion; this spends network and decode work before user intent. SUS-2 medium: Background media continues despite an explicit reduced-motion preference. |
be-sustainablethird-party-and-media-budget | issues | high | HAR records 6.01MB cross-origin transfer, including multi-megabyte images, autoplay video requests, and 176KB Google Tag Manager before interaction. SUS-3 medium: Third-party and media cost is disproportionate to the landing task. |
be-agent-readystructured-agent-capabilities | issues | high | The page has an upload form but no WebMCP registration, agentic form metadata, schema tool hints, or equivalent structured capability. AGENT-1 low: The background-removal capability is not exposed as a structured agent tool. |
be-agent-readyon-device-inference | not-applicable | high | Specialised background segmentation is a server/product capability; a generic on-device language model or summariser would not improve the audited task. |
be-memory-efficientno-leak-under-repeated-interaction | pass | medium | After 10 open/close menu cycles, heap self size rose only 492KB (1.4%) and node count 0.6%, with stable dominant constructor counts; no unbounded pattern was evidenced. |
be-memory-efficientbounded-footprint | pass | medium | The loaded landing page heap was 34.6MB self-size; post-interaction was 35.1MB, proportionate to this media-rich Vue application. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | medium | Repeated menu interaction did not create a material constructor/closure increase (closures +100, Sets +1); summaries exposed no growing Detached* population. |
Provenance
Canonical report: results/atomic/reports/0303-www_remove_bg.json
Report SHA-256: 6f3b9dc409d025d5a12cbf468e15fd3a598fe1d612f91df3c6dfa4ab63dbd11d
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/www_remove_bg/2026-07-19T20-05-54-353Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/www_remove_bg/2026-07-19T20-05-54-353Z
Catalog SHA-256: sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7
Raw screenshots, HARs, traces, heaps, and other browser artifacts are retained at the local evidence root and intentionally are not committed. Artifact paths in the canonical report are relative to that root.