Getting started & FAQ
Everything you need to use Portpeek effectively — how it works, what the results mean, and what it cannot do yet.
Getting started
- Enter a hostname — Type a domain name (e.g.
example.com) or IP address (e.g.203.0.113.1) into the hostname field on the App page. - Select ports — Check the boxes for the common ports you care about, or enter a custom port number (1–65535). You can check up to 8 ports at once.
- Click "Check ports" — Portpeek opens a real TCP connection to each selected port from outside your network and measures the result.
- Read the result — Each port gets one of three statuses:
● Open — service is listening and reachable.
● Refused — the host answered but nothing is listening on that port.
● Timed out — no response at all (firewall is dropping traffic or host is unreachable). - Troubleshoot based on the status — The action hint below your results tells you which direction to investigate next.
Frequently asked questions
What's the difference between "refused" and "timed out"? Why does it matter?
This is the core question Portpeek was built to answer. Most tools blur the two, but they have completely different fixes:
Refused means your host sent back a TCP RST (reset) packet. The host is reachable over the internet, your firewall is permitting traffic to that port, but no application is bound to it. Check whether your service started, is listening on the correct interface (0.0.0.0 vs 127.0.0.1), and the port in your config file matches.
Timed out means no response came back within 5 seconds. The packet was dropped somewhere — likely by a firewall, security group, iptables rule, or the host itself is offline. Check your cloud provider's security group settings, your host firewall (iptables -L, ufw status), and whether the host is actually running.
Can I check a range of ports or scan my whole server?
No. Portpeek is a reachability checker, not a port scanner. You must type explicit port numbers. You can check up to 8 ports in a single request using the preset checkboxes (80, 443, 22, 3306, 5432, 6379, 8080) plus one custom port. If you need to test a specific port not in the list, enter it as a custom port number.
This limit exists by design — Portpeek connects to each port individually with a real TCP handshake, and bulk scanning would defeat the purpose of giving clear, measured answers for each port.
Why can't I check port 25 (SMTP)?
Outbound port 25 is blocked on the platform Portpeek runs on (Cloudflare Workers). A check to port 25 would always fail, and the result would be misleading — it would look like your host is unreachable when the problem is actually our platform, not your network. Rather than give you a false negative, we disallow the check entirely.
If you need to verify SMTP reachability, you will need to test from a different environment that permits outbound port 25.
Does the tool actually work right now? The app page says "Backend API pending deployment".
The App page is honest about its current state: the front-end UI is built and functional, but the server-side API that performs the actual TCP connections is not yet deployed to the live site. Once the backend is deployed, the page will perform real checks. The design, status semantics (open / refused / timed out), port selection, all measurement logic, and the 8-port limit are as described on the home page and in this Help Centre — these are not speculative features, they are implemented and ready for the deployment step.
Do you log or store the hostnames I check? What about my IP address?
No. Portpeek is stateless by design. No accounts exist, no data is stored, no logs of individual checks are kept, and no analytics scripts or cookies are used. The hostname and ports you enter are sent to the server as a single HTTP POST request, processed immediately, and not written to any persistent storage.
See the Privacy Policy for the full details.
Can I use Portpeek from a script or CI pipeline?
Yes. The /api/check endpoint accepts a JSON POST body with {"hostname": "example.com", "ports": [80, 443]} and returns a JSON response. There are no API keys, no authentication, and no rate limits (beyond the 8-port-per-request limit). You can integrate it into deployment scripts, monitoring dashboards, or CI pipelines that need to verify a service is reachable after a deploy.
Example using curl:
curl -s -X POST https://portpeek-u1.agen2ic.ai/api/check -H 'Content-Type: application/json' -d '{"hostname":"example.com","ports":[80,443]}'
Note: This endpoint is not yet deployed. It will work once the backend is live.
Is there a rate limit? Can I run as many checks as I want?
There is no daily, hourly, or per-IP rate limit in the current design. Each request is capped at 8 ports and each port connection has a 5-second timeout. The service is provided as best-effort with no SLA. If usage patterns change significantly, rate limiting may be introduced, but there are no concrete plans for it.
Why do hosts behind Cloudflare show as "timed out"?
Because Portpeek runs on Cloudflare Workers, and a Cloudflare Worker cannot complete a TCP handshake to another Cloudflare-proxied host — Cloudflare does not forward raw TCP from one Worker to another proxied origin. The check will appear as a timeout even when the host is perfectly reachable over the internet. This is a platform limitation, not a problem with your network or your service.
Known limitations
Portpeek is an early-stage tool. These are the things it cannot do yet, or cannot do at all. We are honest about them so you can decide whether Portpeek fits your use case.
- Backend API deployment The server-side API that performs real TCP connections is not yet deployed. The front-end is functional, but checks cannot execute until the backend is live.
- Port 25 Outbound SMTP is blocked on our platform. We never check port 25 because the result would always be misleading.
- Cloudflare-proxied hosts Hosts behind Cloudflare may appear as "timed out" even when reachable, because the Worker cannot complete a TCP handshake to another Cloudflare-proxied host.
- 8-port limit Maximum 8 ports per check, including the custom port. This is enforced server-side and cannot be raised on the Free tier.
- No accounts or history Portpeek has no user accounts. Every session is ephemeral — results exist in your browser until you navigate away. There is no saved history, no favourites, no saved hosts.
- No multi-host comparison You can check one host at a time. Comparing results across multiple hosts (planned for Pro) is not yet available.
- Pro tier not available The paid Pro tier (higher port limits, multi-host comparison, priority support) is planned at €9/month but not yet launched. No payment is accepted for it today.
- No monitoring or alerts Portpeek is a one-shot check tool. It does not monitor ports over time, send alerts on failures, or run scheduled checks. No email sender is configured, so no notification feature can exist.
- No legal entity The operator has not yet registered a legal entity. No company name, registered address, or jurisdiction has been established. Portpeek is provided as-is for individual use.
Contact us
We want to hear about bugs, feature requests, and anything else you'd like to share.
No email support is available at this time. The Portpeek deployment does not have a mailbox, so any email address published here would be unreachable. We will not ask you to send mail to an address that does not exist.
If you found this tool through a deployment channel, repository, or platform (such as Cloudflare Workers or a GitHub repo), that channel is the best way to reach the operator. Bugs and feature requests documented there are the most likely to be seen.
This is a known gap. When email support is configured, this page will be updated with a working contact address and the owner will be notified.