Skip to content

Click what's broken. Your developer gets the rest.

Clients, colleagues and customers report a bug from the page it is on, with no account. The ticket arrives with the console errors, the failed requests and a screenshot.

Try it on your site

Website bug reporting & feedback tool, free for one site. The second button opens the real widget, which runs on this page.

1. Whoever finds it clicks it

A button sits in the corner of the site. The reporter presses it, points at what is wrong if they like, and writes one sentence. No account, nothing to install, and nobody who reports is counted on your plan.

Everything else is attached on its own: the page, the browser, the errors and the requests that failed.

2. Your developer gets the ticket

A customer's report from a checkout page. They typed the two highlighted lines. Broken Here wrote the other 28.

Checkout button does nothing
Clicked Pay and nothing happened.

Typed by the reporter. A title and one sentence.

## Where
- URL: <https://northwind.example/checkout>
- Element: `main > form#pay > button.primary` (`<button>`)
- Element text: "Pay €129.00"

Which page? Which button? The reporter clicked it. The URL keeps its query, minus the value of anything named like a secret.

## Environment
- Browser: Chrome 141
- OS: macOS
- Viewport: 1512×845 @2x
- Language: en-GB
- Reported: 2026-09-19T14:02:43.518Z
Show 5 lines: Browser, OS, Viewport, Language, ReportedHide 5 lines
- Browser: Chrome 141
- OS: macOS
- Viewport: 1512×845 @2x
- Language: en-GB
- Reported: 2026-09-19T14:02:43.518Z

Which browser? Read from the browser that sent it, so nobody has to ask.

## JavaScript errors
- `14:02:11` Uncaught TypeError: Cannot read properties of undefined (reading 'id') (<https://northwind.example/assets/checkout.js:212:18>)

Anything in the console? Errors are kept from the moment the widget loads, so this one was already there. console.log is never read.

## Failed requests
- `500` POST <https://northwind.example/api/orders> (2412ms)
Request:
```json
{"amount":12900,"currency":"EUR","card":"[redacted]"}
```
Response:
```json
{"error":"Internal Server Error","requestId":"req_4Qx81"}
```
Show 8 lines: Request, ResponseHide 8 lines
Request:
```json
{"amount":12900,"currency":"EUR","card":"[redacted]"}
```
Response:
```json
{"error":"Internal Server Error","requestId":"req_4Qx81"}
```

Did a request fail? Kept without its query string, which is where tokens live. Headers and cookies are never recorded. The bodies are here because this project turned them on. They are kept only for failures on its own API, and the card number was replaced in the browser before the report was sent.

_3 further warnings came from third-party scripts and were not recorded._

Other companies' scripts? Counted and left out.

## Screenshot
The reported element is outlined in red.
![screenshot](https://brokenhere.com/api/shot/rep_7f3k2m/0?t=7d1cK3vQm8ZpR2xLw5NcT0bYuHf9gJsA)

Can you send a screenshot? Taken while they typed. Password fields, and anything else you name, were blurred in the browser before the image left the page. The link opens this image and nothing else.

---
Reported by an anonymous reporter · [Open the full report](https://brokenhere.com/report/rep_7f3k2m)

Who sent it? Anyone, with no account. The full report is one link away, behind your team's login.

What gets captured, and what never does

3. An AI agent can open the fix

Optional. Connect an AI agent and hand it a report with one press. It starts from the same evidence as the ticket, and the pull request links back to it.

Small fixes, like wording or styling, can merge themselves if you say so. Everything else waits for a person.

How the handoff works

4. The reporter hears back

Every report answers with a status link. The reporter sees it move from Reported to Resolved and reads your replies there, so nobody writes to ask “any news?”

Give a client a login and they see every report on their own sites, whoever filed it, and never another client's.

Found by people who don't code, fixed by people who do

A client, on the site you built them

Before launch or two years into the care plan, they report from the page in front of them.

A colleague, on the admin app

Support, ops, the account manager. They report from the page where it broke, not from a Slack thread.

A customer, on the live site

When a request to your API fails in front of them, the widget offers a report with the failure already filled in.

Agencies and studios: walk a client's site, file ten findings, press Finish, and your tracker gets the whole round as one ticket.

Priced per site you look after. $79 a month for 25 sites, client logins free.

Safe to leave on a live site

The widget runs on your client's site, in front of their customers, so it is built to take as little as it can.

  • Never recorded: request headers, cookies, the query string of a request, and anything the page writes with console.log.
  • Passwords are blurred in the screenshot before it leaves the browser, and so is anything else you name.
  • Request bodies are off unless you turn them on. Then they are kept for failed requests to your own API only, with passwords and card numbers replaced first.
  • 18 kB, loaded after your page. The screenshot code loads only when somebody starts a report, and the form works on sites with a strict security policy.

Remove the script tag and it is gone. Your reports and screenshots stay in your account.

Everything it captures, and what it never does

Priced by sites, not seats

Your whole team is in on every plan. Nobody who reports is counted, and client logins are free.

Free

$0

1 site · 50 reports a month

Team

$29 a month

5 sites · Unlimited reports and review rounds

Agency

$79 a month

25 sites · A portfolio of client sites

Compare the plans

Questions

Does it work with our tracker?

Yes, on every plan. Tickets go to the tracker your team already works in, and if yours is not connected yet, write to [email protected] and we add it. Until then, every report waits in your Broken Here inbox with the same evidence.

What does it cost for 20 client sites?

Agency is $79 a month and covers 25 sites. Nobody who reports is counted, and client logins are free.

Does the person reporting need an account?

No. They click, write a sentence, and can leave an email to follow the fix. A client who wants to see every report on their sites can have a login.

How do I install it?

One script tag, or on WordPress a plugin and a key. Whoever edits your site can add it in a couple of minutes.

How do I reach you?

Write to [email protected]. It goes straight to the person who builds Broken Here.

Will it slow the site down?

No. It is 18 kB, smaller than one photo on your page, and it loads after everything else.

More on pricing, how it compares with Marker.io and BugHerd and in the docs. Or check a page of yours for errors, free.

Add a site. The next report arrives finished.

One script tag, free for one site.