bugpot

Visual feedback

A screenshot of what they saw, marked up where it broke

Every report arrives as an annotated capture of the exact page state, with the browser, operating system, viewport and console errors already attached. No more asking “which button?” over email.

Screenshot capture

Pixel-accurate captures of the live DOM

The widget takes a snapshot straight from the rendered document — every element, every style, every image the reporter actually saw. A hybrid renderer picks the best strategy for the page, and falls back gracefully when a canvas taints or an iframe refuses to co-operate.

  • Full-page or visible-viewport capture, at native device pixel ratio
  • Web fonts, CSS backgrounds, gradients and SVG rendered faithfully
  • Automatic fallback when cross-origin images taint the canvas
  • Runs entirely in the browser — nothing leaves the page before submit
clientsite.co.uk/pricing

Annotation

Boxes, arrows and text — right on the screenshot

Reporters point at the problem instead of describing it. Drawing tools live inside the widget, feel like a real design app, and produce marks that stay sharp whether the screenshot was captured on a 4K desktop or a phone.

  • Rectangle, arrow, freehand pen and text tools
  • Numbered pins that thread each comment to a specific mark
  • Strokes scale with the underlying image so 4K captures stay crisp
  • Undo, redo and colour picker without ever leaving the page

Pin

Anchor a note to a spot on the page.

Box

Circle the region that’s misbehaving.

Arrow

Point at what to look at first.

Text

Type directly on the screenshot.

Environment

Every browser detail you were about to ask for

You never have to ask “which browser?” again. Bugpot reads the runtime environment when the reporter opens the widget and attaches it to the issue — so the answer is already there before the ticket lands.

Browser
Name, engine and full version
Operating system
macOS, Windows, iOS, Android
Viewport
Width × height at capture time
Device pixel ratio
1x, 2x, 3x — the whole retina story
Page URL
Full path, query string and hash
Language & timezone
Reporter locale for reproduction

After · the same report, through Bugpot

Pay button clipped below 400px viewport

Open
1
Browser
Safari 18.2 · iOS 18
Viewport
390 × 844 @3x
URL
/checkout?step=payment
Console
1 error captured

Console errors

JavaScript errors, captured while they happen

The widget silently records console errors and unhandled promise rejections from the moment it loads. When a reporter submits, the full trace ships with the screenshot — no more asking them to open DevTools and read out red text.

  • Console.error, console.warn and unhandled exceptions
  • Full stack traces with file and line numbers
  • Buffered locally — nothing sent unless the report is submitted
  • Shown alongside the screenshot in the triage inbox
Console — 2 errors captured
> TypeError: Cannot read properties of null
    at CheckoutButton.handleClick (checkout.js:184)
    at HTMLButtonElement.<anonymous> (checkout.js:71)

> Failed to fetch: POST /api/coupon
    net::ERR_INTERNET_DISCONNECTED
    at applyCoupon (coupon.js:42)

Pixel-perfect mode

For the pages that fight back

Some pages resist DOM capture — WebGL canvases, third-party iframes, protected video, exotic CSS. For those, Bugpot offers a pixel-perfect mode powered by the browser’s native getDisplayMedia API. The reporter grants a one-off screen-share, the widget snaps a single frame, and the share ends immediately.

One frame, then done

The screen share is used to grab a single image and closes automatically. Nothing is streamed anywhere.

Native browser permission

Uses the same secure API browsers already ship for video calls. The reporter picks exactly what to share.

Cross-origin friendly

Works with third-party iframes, protected media and WebGL canvases where DOM capture can’t reach.

Turn vague emails into structured bug reports

Every report arrives with a screenshot, environment data and console errors already attached.