A customer hits Pay. The button dies. Support forwards a screenshot of a spinner. Nobody kept the TypeError.
Sentry would have the event. Chrome DevTools would have the event, if the tab were still open.
A real-time error checker on this page does not attach to checkout. Press Start. A local timer begins. Each tick rolls against the noise slider. A hit inserts one mock JavaScript, network, console, perf, or DOM row. The URL field is a label written into the JSON export.
I have watched people paste https://toolexe.com, wait thirty seconds, then file a ticket saying the monitor shows nothing. The monitor was never looking.
Paste a URL. Nothing connects.
https://toolexe.com in the field looks like a probe. The field is a label. Export writes targetUrl. No fetch. No websocket. No CORS preflight against the host.
Tick does not request /api/v1/items. Tick rolls a mock row if the noise slider says yes.
Need to watch real XHR failures? Stay in DevTools Network, or take a HAR to the Network Request Analyzer. A production beacon belongs in Sentry, Bugsnag, or the ingest your team already pays for.
The placeholder uses toolexe.com on purpose. A blank box teaches nothing about what the field stores.
Five chips, two lives
Each chip names a class of failure. On a real page those classes map to listeners. Here they map to canned strings.
- JS
- On a live tab:
errorplusunhandledrejection. Here:TypeError,ReferenceError,RangeError,SyntaxError, always stacked through a fakeapp.js. - Network
- Live: failed
fetch, 404, CORS, refused sockets. Here: those messages with a fake/api/v1/itemspath. No status body. No timing. - Console
- Live: a wrap around
console.error. Here: invalid state, deprecated API, failed assertion. - Perf
- Live: long tasks, layout thrash, dropped frames. Here: 240 ms, 38 fps. The numbers are props.
- DOM
- Live: missing nodes, illegal mutations, focus on a hidden control. Here: the same sentences, still invented.
Uncheck a chip to hide the type from new ticks. Rows already in the list stay until Clear.
Perf plus DOM start off on purpose. A feed with five types at once looks busy. Busy is not a lesson. Turn them on after you already know how the filter boxes behave.
Critical on this feed is a dice roll
Severity is not computed from the message.
About one row in ten draws critical. High takes the next slice. Medium takes the largest slice. Low fills the rest. The same TypeError string will wear four different badges across a session.
Treat the badge as UI to practice filtering. Never treat the badge as a priority. A CORS failure marked low still blocks checkout. A console warn marked critical remains a console warn.
Filter Critical, then High, then search the message. The noise slider exists to show how fast a feed becomes unreadable. At 30 events per 100 ticks the list stays teachable. At 80 the counters on the right climb while the useful row drowns.
Crank noise to 70. Press Start. Wait a minute. Try to find the first CORS row without the search box.
Fail once. You now know why production ingest needs fingerprints, not a raw console dump in Slack.
If the dump is already on the clipboard, leave this desk. Open the Stack Trace Formatter. A live feed answers "what is throwing right now." A paste answers "which file do I open." Mixing those two questions wastes the next hour.
Four places people look for the same failure
Search results for a live error checker mix rehearsal UIs with production SDKs. The mix-up is expensive. Pick the source before you pick a severity.
| Source | Live? | What you get | Walk away when |
|---|---|---|---|
| This desk | No. Local timer. | Mock rows, fake stacks, JSON export | A real origin is failing |
| Chrome DevTools | Yes, this browser | The actual exception, network, console | The tab is already closed |
| Sentry, Bugsnag, similar ingest | Yes, production | Grouped issues, sourcemaps, owners | You have no SDK, or the event is a one-off on localhost |
| A log file | After the fact | Counts, patterns, timestamps | You need a stack the logger never kept |
A rotating log belongs on the Error Log Analyzer. One crash dump belongs on the formatter. Notes about what you already tried belong on the Debug Session Recorder.
window.__errorFeed is a local array
Generate copies a small IIFE. Listeners: error, unhandledrejection, a wrap around console.error. Events land in window.__errorFeed on the page where you paste the snippet.
The snippet does not POST. No DSN. No retry. Refresh wipes the array. Cross-origin iframes stay silent. Minified filenames stay minified.
Paste the snippet on localhost while reproducing. Type __errorFeed in the console. Copy the array. Stop.
Do not ship this IIFE to a customer checkout. A three-listener notebook is not an SDK. Source maps, release versions, user privacy, PII scrubbing, sampling: all missing. Teams who drop a gist into production learn this when a customer's email address shows up in console.error of a payment form.
Need a syntax check on a snippet from a stack? Open the JavaScript Syntax Checker. The checker compiles. This desk never runs your application code.
Forty rows on screen, the rest in export
The live list renders the newest forty matching the current filters. Total on the right counts every event in memory. Export writes the full array as JSON named error-feed- plus a timestamp. Copy writes the same payload to the clipboard.
Clear drops memory. Stop leaves rows in place. Idle means nothing has been generated yet.
Rate waits fifteen seconds before the first per-minute number. Fresh sessions look stuck at 0/m. Wait.
Session clock starts at Start. Stop does not freeze the clock, because startAt stays set. Read the pill for live versus stopped. Ignore the clock after Stop if you expected a pause.
One quiet drill
- 0:00 Noise at 30. JS, Network, Console on. Perf plus DOM off. Press Start.
- 0:08 First row, or an empty tick. Empty ticks are the point of the slider.
- 0:40 Open a high JS row. Read the fake stack. Notice
app.js:44every time. The path is a prop. - 1:00 Filter type Network. Search CORS. Export. Open the JSON. Confirm
targetUrlis your label, not a response.
After the drill, the useful next move is a real exception, not another minute of mock noise. Format the stack. Or count the log. Or write the bug report so a home directory does not ride along, using the Bug Report Template Generator.
Walk away from this desk
- No attach to a remote origin. The URL box is metadata. DevTools or an SDK watches a live page.
- No sourcemap. Fake stacks already point at
app.js. A minified production dump stays minified until you map in DevTools or in the tracker. - No grouping. Ten identical TypeErrors are ten rows. Fingerprints live in Sentry, not here.
- No persistence. Refresh wipes the feed. The snippet array dies with the tab.
- No PII scrubbing. Paste the snippet only on a page you own. Payment forms are out.
When a real exception is in hand, format the stack. When the same exception repeats, count the log. When you are still reproducing, record the session notes. Keep this page for the hour before the fire, when the filter muscle needs a workout without a customer on the line.
