Console
Logs, errors and rejections with source-mapped stack traces that point to your TypeScript. Autocomplete, $0, copy(), live expressions and real console.table.
A Chrome-style DevTools panel that runs right inside any web page, in Safari, Chrome and on your iPhone. No cable, no Xcode, no setup.
Works in Safari, Chrome and Edge · Mac, iPhone, iPad and in-app WebViews · One file, no dependencies
A sample shop with a deliberate bug. The Claude answer and Jira ticket are simulated here; everything else is the real tool.
Sixteen panels in a single file. It looks and works like Chrome DevTools, so there's nothing new to learn.
Logs, errors and rejections with source-mapped stack traces that point to your TypeScript. Autocomplete, $0, copy(), live expressions and real console.table.
One click sends the error, your original source and the recent requests to Claude, and you get back the cause and a fix. You see the prompt before it's sent.
DOM tree through shadow roots, live CSS with suggestions for your var(--tokens), grid and flex overlays, a measure tool, and a Changes tab that copies your edits as CSS.
fetch, XHR, WebSocket and SSE with a waterfall. Mock, block or delay any request, throttle to 3G or offline, and export a HAR file.
The accessibility tree as screen readers get it, a numbered tab order on the page, a focus tracker, and a contrast fixer that suggests the nearest passing colour from your tokens.
Steps to reproduce are captured for you, with console errors, a HAR file, device info and a screenshot. Sign-in codes and tokens are blanked automatically.
iPhone and iPad sizes side by side with synced scrolling. Emulate dark mode, reduced motion, RTL, larger text and pseudo-localisation.
Save a component as a baseline and see every style, size and text change after an edit. Find CSS rules and design tokens that nothing uses.
Angular signals, Lit and React trees with editable state, plus a Redux, NgRx and Zustand action log with time travel, which Safari never had.
Run a tiny relay on your Mac and the phone's console and network stream straight to your desktop browser. Type JavaScript on the Mac, it runs on the phone.
# on your Mac, in the cloned repo (Node 18+, nothing to install) node standalone/remote/relay.js # then open on the iPhone http://<your-mac-ip>:9230/demo # and watch on the Mac http://localhost:9230
import { test, expect } from './safari-devtools.fixture'; test('checkout has no errors', async ({ page, devtools }) => { await devtools.mockBeforeLoad('/api/coupon', { status: 410 }); await page.goto('/checkout'); expect(await devtools.errors()).toEqual([]); expect(await devtools.tabOrder()).not.toHaveLength(0); });
Everything in the panel is also a JSON API. Use it from Playwright in WebKit, WebDriver for real Safari, a small HTTP API, or an MCP server, so Claude, Cursor and other agents can read and drive the page.
| Safari DevTools | Safari Web Inspector | Eruda / vConsole | |
|---|---|---|---|
| Runs on iPhone with no Mac or cable | ✓ | ✕ | ✓ |
| Same panel in Safari and Chrome | ✓ | Safari only | ✓ |
| Source-mapped stack traces | ✓ | ✓ | ✕ |
| Explain errors with Claude | ✓ | ✕ | ✕ |
| One-click Jira bug reports | ✓ | ✕ | ✕ |
| Accessibility tree, tab order, contrast fixer | ✓ | Partial | ✕ |
| Mock, block or delay requests | ✓ | ✓ | ✕ |
| Redux / NgRx time travel | ✓ | ✕ | ✕ |
| Design-token editor and coverage | ✓ | ✕ | ✕ |
| Playwright fixture and MCP server | ✓ | ✕ | ✕ |
| Step-through JavaScript debugger | ✕ | ✓ | ✕ |
It runs inside the page, so it can't see HttpOnly cookies or pause JavaScript. For those, it hands off to the browser's own tools.
Temporary extensions are removed when Safari quits. To keep it installed, build it once with Xcode using the script in the folder.
No install, and it works where extensions aren't allowed. Drag this to your bookmarks bar, then click it on any page.
⇱ Safari DevToolsOn iPhone: bookmark any page, then edit the bookmark and paste the code below as its address.
Add one line as the first thing in <head> of your development build. It captures every log and request from the first line.
<script src="https://cdn.jsdelivr.net/gh/biratdatta/[email protected]/standalone/safari-devtools.js"></script>Load Safari DevTools on the page with the bookmarklet or a script tag, and the full console opens right on the phone. Or start remote mode and watch the phone's console and network from any computer on the same Wi-Fi.
Yes. Like them it runs inside the page, but it also maps errors to your original source, mocks and throttles requests, checks accessibility, time-travels Redux and NgRx state, and looks like Chrome DevTools.
Yes. It's open source under the MIT licence. Use it at work, change it, ship it.
No. Everything stays in the page. "Explain with Claude" and Jira reports only run through a relay you start on your own machine, with your own keys, and you see the prompt before anything is sent. Sign-in codes and tokens are blanked first.
Yes, in Safari and in in-app WebViews. Load it with the script tag or the bookmarklet, or stream it to your Mac with remote mode.
Web Inspector needs a Mac, a cable or pairing, and doesn't open most in-app WebViews. Safari DevTools runs in the page itself, looks like Chrome DevTools and adds things Safari doesn't have, like Redux time travel, an accessibility toolkit and AI explanations.
It runs inside the page, so it can't pause JavaScript at breakpoints, see HttpOnly cookies or browser-added headers, or read cross-origin stylesheets. Use the browser's own tools for those.
Usually, yes. The bookmarklet and the script tag aren't extensions, so extension policies don't apply to them.