Web DevTools that actually fit on a phone
InspectLab is a developer browser for iPhone and iPad. Open any site, tap an element, and read its DOM, styles, console output, network traffic and storage — on the device, with no Mac attached.
Requires iOS or iPadOS 17 or later. No account, no analytics, nothing uploaded.
Six panels, built for touch
Not a desktop layout squeezed onto a small screen — each panel is native and made for a thumb.
Tap the page, land on the node
A lazy DOM tree with search and a visual picker. Selecting a node highlights it in the page with margin, border, padding and content bands, and the label shows its size.
Edit CSS and watch it apply
Matched rules in cascade order, inherited rules, grouped computed values and a box-model diagram. Change a property and the page updates instantly; your edits survive closing the panel.
Logs, errors and a real REPL
Every console level plus uncaught errors and unhandled rejections, with level and text filters. Objects expand on demand. Type an expression and it runs in the page's own scope.
Requests, bodies and Copy as cURL
Method, URL, status, duration, headers and bodies for fetch and XHR, with filters by type and a failures-only toggle. Copy any captured request as a cURL command.
Including HttpOnly cookies
Cookies read from the browser's own store — so the HttpOnly session cookies page scripts cannot see are visible here. Plus localStorage and sessionStorage, editable in place.
Read the page as shipped
Live HTML, every loaded script, stylesheet and image, and the page's inline blocks. Search within a file, then copy or share it.
What it can and cannot capture
iOS puts real limits on what an app can observe inside a web view. Rather than hide them, InspectLab labels them — in this table, and in the app itself.
| Traffic | Coverage | What that means |
|---|---|---|
| fetch, XHR, sendBeacon | Full | Method, URL, request and response headers, bodies, status and duration. |
| WebSocket, EventSource | Connection | The connection, its open and its close. Individual frames are not captured in this release. |
| Documents, images, CSS, JS, fonts, media | Timing only | URL, duration and transfer size. No headers and no bodies — these loads happen in WebKit's networking process, where no public API exposes them. Rows are marked “timing only”. |
| Service Worker traffic | Not captured | Requests a Service Worker makes on the page's behalf do not reach us. |
| Cross-origin iframes | Not inspectable | Console and network events are labelled by frame, but the DOM tree cannot cross an origin boundary. |
| JavaScript breakpoints | Not available | Stepping and call-stack inspection need the WebKit inspector protocol, which an app cannot reach for its own web view. For breakpoints you still need a Mac and Safari Web Inspector. |
Everything stays on your device
InspectLab is a debugging tool, so it necessarily sees sensitive things — cookies, authorization headers, request bodies, page content. None of it is sent anywhere.
- No analytics, no crash reporting, no advertising SDKs.
- No accounts and no sign-in. There is no server to sign in to.
- Nothing you inspect is uploaded, and no inspection data leaves the device.
- Browsing goes directly from your device to the sites you visit.
Try it on your own site
It loads localhost and LAN addresses too, so you can point it straight at a
development server running on your Mac.