Quick answer: ERR_UNSAFE_PORT isn’t a bug — Chrome deliberately blocks a short list of network ports (like 25, 6000, or 10080) known for abuse. If you’re a developer hitting this on a local server, switch to a different port number and it will work immediately.
What ERR_UNSAFE_PORT Means
Chromium maintains a hard-coded blocklist of ports historically associated with mail relay abuse, IRC exploits, or other security risks. When any URL tries to connect through one of these ports, Chrome refuses the connection before it’s even attempted, and shows ERR_UNSAFE_PORT instead of trying to load the page.

Common Causes
- Running a local development server on a blocked port (587, 6000, 6666, and a handful of others are the usual suspects).
- A misconfigured router or self-hosted app dashboard exposed on a nonstandard port.
- A link or bookmark pointing to
http://address:port/with a blocked port number.
How to Fix ERR_UNSAFE_PORT
- Change the port your server or app uses. Common safe alternatives are 3000, 8000, 8080, or 8888 — none of these are on Chrome’s blocked list.
- Double-check the URL for a typo. A port number that looks fine at a glance (like 6000 instead of 6001) can be the entire problem.
- If you truly need a blocked port (rare, mostly for niche legacy protocols), desktop Chrome supports a command-line flag to override this, but ChromeOS doesn’t expose that flag, so switching ports is the only practical fix on a Chromebook.
Still Not Fixed?
If the error appears on a site you don’t control (not your own local server), the site itself is misconfigured and there’s nothing to fix on your end — contact the site owner. For local development, check your framework’s default port config (many dev servers default to safe ports like 3000 or 8080 already).
FAQ
Which ports does Chrome block?
The list includes around 60 ports, among them 1, 7, 9, 25 (SMTP), 42, 111, 6000, 6666, and 10080. It’s fixed inside Chromium’s source code and cannot be changed through Chromebook settings.
Does this happen on other browsers too?
Yes, this blocklist originated in older browsers to prevent cross-protocol scripting attacks and is now standard across Chromium-based browsers.
