Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
BrowserStack Local (called Local Testing in BrowserStack documentation) is a secure software tunnel between BrowserStack’s cloud browsers or mobile devices and a computer or network that can reach your app. It lets you test localhost, staging, internal, VPN-only, and firewall-protected sites without making those sites publicly accessible.
You run a Local agent on a machine that can access the target. The agent makes an outbound encrypted connection to BrowserStack; a remote test session then sends selected web requests through that tunnel to your local or private server.
What BrowserStack Local solves
A BrowserStack browser runs outside your network. Without a tunnel, it cannot resolve localhost, a private hostname, or an internal IP address on your laptop, office network, VPN, or staging environment. Local Testing supplies that missing route.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →- Local development: test a web server running on your workstation.
- Staging and QA: exercise a pre-production deployment before DNS or firewall changes expose it.
- Private applications: reach intranet sites and services available only through a corporate proxy or VPN.
- Cross-platform checks: use BrowserStack Live, App Live, Automate, and supported low-code or framework integrations against the same private target.
For a public website that BrowserStack can already reach directly, Local is usually unnecessary. A hostname that resolves differently inside your network is an exception; integrations can use force-local to route requests through the tunnel where supported.
#1 Best Overall
How the Local tunnel works
- Install and start the BrowserStack Local desktop app or command-line binary on a machine that can reach your application.
- Authenticate the agent with your BrowserStack access key.
- The agent receives a repeater assignment and opens an outbound connection to BrowserStack over port 443.
- A remote browser or device sends requests through BrowserStack’s repeater and the established tunnel.
- The agent resolves the hostname and forwards only permitted requests to servers it can access.
BrowserStack describes this as a persistent Secure WebSocket connection. Its architecture documentation says the repeater cannot initiate a connection to the Local agent; the local side initiates the connection outward. This means your internal server does not need an inbound public port for the tunnel. These are BrowserStack’s descriptions of its design, not an independent security audit.
Ending a Live or automated browser session does not necessarily stop Local Testing. The tunnel can remain available for another session until you disconnect the binary or app. BrowserStack says information associated with the repeater session is deleted after disconnection and separately documents cleanup of remote session data.
Network requirements
Ask your network team to allow the Local machine to make outbound connections to local.browserstack.com over HTTP(S) ports 80 and 443 and to a BrowserStack repeater over WSS on port 443. A proxy must support WebSockets. For TLS connections through a proxy, BrowserStack’s guide requires the HTTP CONNECT method.
Free tools Windows power users keep installed
One-click scans. No signup required.
BrowserStack documents an older SSL-encrypted fallback when WebSockets are blocked, but warns that it is much slower. Prefer allowing WSS rather than relying on that fallback. SSL inspection, VPN split tunneling, DNS restrictions, and endpoint allowlists can all change what the agent can reach; validate those policies on the machine running Local.
Choose the right setup route
Live or App Live on Windows and macOS
BrowserStack’s support guidance identifies the desktop app as the easier route for interactive Live and App Live sessions. Install the app, sign in, enable Local Testing, and start the Live session. Use the exact host and port served by your local application.
Automate, App Automate, or Linux
Use the command-line binary for automated workflows and Linux Live/App Live. Download the current binary from BrowserStack, keep the access key out of source control and build logs, and start it before the test job:
./BrowserStackLocal --key YOUR_ACCESS_KEY
Runner-specific integrations can start or configure Local automatically. Follow the guide for Selenium, Cypress, Playwright, Appium, Espresso, XCUITest, Maestro, Detox, Flutter, or your low-code tool; option names and lifecycle handling differ by integration.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Parallel builds and multiple tunnels
If several builds run at once, give each tunnel a distinct Local identifier and configure the matching identifier in the test capability. Where an integration supports it, force-local is useful when every request must use the local route, including hostnames whose internal and public DNS answers differ. Check the selected product’s current integration guide for identifier and capability syntax.
Testing localhost in BrowserStack Live
- Start your local server and note its listening port, such as
http://localhost:3000. - Open the BrowserStack desktop app (or start the binary) and enable Local Testing.
- Launch a Live browser or device.
- Enter the local URL and verify that the page, API calls, images, and fonts load.
- Keep the Local app or process running while you test; disconnect it when finished.
BrowserStack documents a specific iOS Live caveat: localhost may need to be replaced with http://bs-local.com. If that hostname is not substituted automatically, use bs-local.com with the same port and configure your local server to serve that host. Confirm the behavior for your exact iOS device and Live workflow because BrowserStack’s implementation can change.
Using Local with automated tests
Start Local before the test process, or let the supported integration manage its lifecycle. Set the Local capability required by your runner, then point the test at the private hostname and port. A reliable pipeline should:
Rank #3
- 【Quickly Lock The Fault Point】Simply plug it in, press and hold the test button, and then touch the inductor with the test probe. If the inductor is working properly, the green LED indicator will light up, making it easy for even beginners to use.
- 【High Accuracy and Stability】Utilizing reliable electromagnetic induction technology ensures precise readings every time, giving you confidence in your diagnostics.
- 【Compact and Portable 】The compact design makes this tool highly portable, allowing you to carry it easily in your toolkit. It’s perfect for on-the-go maintenance and repair tasks.The Coil tester is only 2.7 cm x 7.6cm.
- 【Inductance Tester】Built with quality components for consistent performance and long-lasting service life. Designed for phone repair technicians, electronics engineers, and maintenance professionals.
- 【Wide Range of Applications】 Suitable for various application scenarios including home appliance, computer and mobile phone repair. This multi-functional tool can be used to detect short circuits in printed circuit boards and other electronic components, ensuring reliable and efficient maintenance.
- store the access key in a secret manager;
- wait until the Local process reports a connected state before creating sessions;
- use a unique identifier for parallel jobs;
- collect Local and test-run logs as build artifacts;
- shut down the agent in an always-run cleanup step.
Do not assume that a successful tunnel connection proves your application is healthy. The local machine still needs DNS resolution, VPN access, valid certificates, open server ports, and any required authentication. Test those locally from the same machine that runs the agent.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallSecurity and data-handling considerations
Local Testing avoids exposing an internal service directly to the internet, but it does not remove the need for access control. Limit which hosts and ports the agent may reach according to BrowserStack’s configuration options and your organization’s policy. Use a dedicated test account where possible, avoid production credentials, and review proxy and SSL-inspection behavior with security staff.
BrowserStack states that only servers allowed for the connection are reachable and that the repeater cannot open a new connection toward the agent. Treat those statements as vendor claims. Your threat model should also cover the BrowserStack account, test data sent to remote browsers, screenshots, video, logs, and any third-party resources loaded by the page.
Troubleshooting Local Testing
The browser shows a connection or DNS error
- Confirm the local server is running and reachable from the agent machine with
curlor a browser. - Use the correct port and hostname; do not assume the remote browser’s
localhostmeans your laptop. - For iOS Live, try
bs-local.comas documented. - Check that the tunnel is connected and that the test uses the correct Local identifier.
The Local agent cannot connect
- Allow outbound access to
local.browserstack.comon ports 80 and 443 and WSS on port 443. - Verify that the proxy supports WebSockets and
CONNECT. - Check VPN routing, DNS, firewall rules, and SSL inspection.
- Use the documented fallback only as a last resort because BrowserStack says it is slower.
Only some page assets fail
Inspect the failed request’s hostname. A page may load from the local origin while APIs, fonts, images, or WebSockets use separate private domains. Ensure each required domain is reachable through the tunnel and that your application allows the BrowserStack session’s origin. Mixed-content and certificate errors must be fixed on the app or test environment.
Automation starts before Local is ready
Add an explicit readiness check or use the runner’s Local lifecycle integration. Starting the process and immediately creating a session can produce intermittent failures even when the configuration is correct.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Rank #4
Parallel jobs reach the wrong environment
Assign unique Local identifiers and match them in capabilities. Avoid a global shared tunnel unless every job intentionally targets the same network and hostname.
Performance, reliability, and operational trade-offs
Traffic takes an additional route: remote browser to BrowserStack repeater, then through the agent to your network. Latency depends on geography, VPN distance, proxy inspection, page size, and your local server. Keep the agent near the systems it tests, avoid overloaded developer laptops for CI, and measure page and test timings in the same topology used in production-like runs.
Persistent tunnels are convenient for repeated sessions but increase the time a credentialed route remains active. Disconnect idle agents, rotate access keys according to your security policy, and monitor long-running CI workers. A tunnel cannot repair an application timeout, an unavailable VPN, or a server that binds only to an inaccessible interface.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.BrowserStack Local compared with exposing a staging site
| Approach | Reachability | Operational consequence |
|---|---|---|
| Local Testing | Private target remains behind your network while selected BrowserStack sessions use the tunnel. | Requires an agent, outbound network rules, and lifecycle management. |
| Public staging endpoint | BrowserStack reaches the site directly over the internet. | Needs internet exposure, authentication, TLS, access controls, and possibly IP allowlisting. |
| VPN or private connectivity integration | Remote test infrastructure joins a private network through a separately managed connection. | Can fit enterprise networking but adds infrastructure and policy work. |
Choose Local when you need a fast path to a developer or private environment without publishing it. Choose a publicly reachable staging endpoint when its security controls and deployment process already meet your organization’s requirements.
Or skip the browser setup: ScreenshotNeo
If your goal is simply to generate a clean screenshot or PDF of a reachable URL rather than interactively test a private app across browsers and devices, ScreenshotNeo is an alternative to try first. It is a website screenshot API and MCP server: one request returns PNG, JPEG, WebP, or PDF. Before capture it accepts cookie banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status.
Use the browser-setup method above when you need Live interaction or automated cross-browser/device behavior. Use ScreenshotNeo when a repeatable capture is the deliverable. It supports full-page and element captures, lazy-image loading, device and viewport settings, dark mode, retina scale, custom CSS and JavaScript, clicks, waits, blocking rules, headers, cookies, user agents, authorization, geolocation, timezone, transparent backgrounds, resizing, TTL caching, signed links, asynchronous webhooks, bulk capture of up to 100 URLs per call, and an MCP server with take_screenshot, get_page_info, and capture_pdf.
Best Value
cURL (see the ScreenshotNeo documentation):
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python:
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
The free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is on every plan. Create a free ScreenshotNeo account.
Frequently asked questions
Does BrowserStack Local make localhost public?
No. The Local agent opens an outbound connection; the local server does not need an inbound internet endpoint.
Can I leave Local running after a test?
Yes, the tunnel can persist for another session, but disconnect idle agents to reduce exposure and resource use.
Which BrowserStack products support Local?
BrowserStack documents Local use with Live, App Live, Automate, App Automate, and integrations including Selenium, Cypress, Playwright, Appium, Espresso, XCUITest, Maestro, Detox, Flutter, and low-code tools. Confirm current entitlement and setup syntax for your account.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

