npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

proxychecker-dev

v1.2.0

Published

Fast proxy checker CLI. Test HTTP/HTTPS/SOCKS proxies for liveness, latency, and datacenter-vs-residential type. Free, no signup.

Readme

proxycheck

Fast proxy checker for the command line. Test HTTP, HTTPS, SOCKS4, and SOCKS5 proxies for liveness, latency, and datacenter-vs-residential type. No signup, no ads, no sketchy binary.

Powered by proxychecker.dev.

npx proxychecker-dev proxies.txt
  ALIVE  45.12.30.9:8080     http    datacenter   142ms  US  Cloudflare
  ALIVE  98.162.25.7:31654   socks5  residential  380ms  DE  Deutsche Telekom
  DEAD   9.9.9.9:3128        http    -            -      -   timeout

  2 alive · 1 dead · avg 261ms · 1 dc · 1 res

Why

If you buy proxies for scraping, half the list is usually dead, slow, or a datacenter IP being sold as "residential." Checking them by hand or hacking together a curl loop is a waste of a morning. This does it in one command, tells you which are actually alive, how fast, and what type they really are.

Install

Run it with no install:

npx proxychecker-dev proxies.txt

Or install globally for the short proxycheck command:

npm install -g proxychecker-dev
proxycheck proxies.txt

Requires Node.js 18+.

Usage

# from a file (one proxy per line, # comments ignored)
proxycheck proxies.txt

# inline
proxycheck 1.2.3.4:8080 socks5://5.6.7.8:1080

# from stdin
cat proxies.txt | proxycheck

# only the live ones, as JSON, piped to jq
proxycheck proxies.txt --alive --json | jq -r '.results[].input'

# export a CSV
proxycheck proxies.txt --csv > results.csv

Accepted formats

One per line. Lines starting with # are ignored.

ip:port
ip:port:user:pass
user:pass@ip:port
socks5://ip:port

Protocols: http, https, socks4, socks5.

Options

| Flag | Description | |------|-------------| | -k, --key <pck_...> | API key, unlocks up to 10,000 proxies/call depending on plan, with auto-chunking (or set PROXYCHECK_KEY) | | -t, --timeout <ms> | Per-proxy timeout, 3000-30000 (default 10000) | | -a, --alive | Only output proxies that are alive | | --json | Output raw JSON (pipe to jq) | | --csv | Output CSV | | --target <url> | Test each proxy against a real URL, not just liveness | | -q, --quiet | Suppress progress and summary, results only | | --fail-if-none | Exit non-zero if nothing usable came back (useful in CI) | | -h, --help | Show help | | -v, --version | Show version |

Target mode

Liveness and usefulness are different questions. A proxy can be perfectly alive and still be blocked by the site you actually need:

proxycheck proxies.txt --target https://www.example.com --key pck_live_xxx
  OK     1.2.3.4:8080      812ms     HTTP 200
  BLOCK  5.6.7.8:1080      640ms     Cloudflare
  DEAD   9.10.11.12:3128   -         timeout

  1 reached · 1 blocked · 1 dead · avg 726ms
  blocked by: Cloudflare (1)

With --fail-if-none, target mode fails when nothing reached the target, not merely when nothing was alive. A pool of healthy proxies that are all blocked is exactly the CI failure worth catching.

What this sends

Two headers ride along with each check: the CLI version, and how many proxies you asked to check. Never your proxies, never your credentials, and never the ones the free cap skipped.

It exists because the free path only ever sends the first 50 (shipping 50,000 for the server to discard would be rude to both ends), which meant a user with a huge list and a user with a tiny one produced identical requests. "People hit the free ceiling from the CLI" was unanswerable. Now it is a number.

Because it rides on a request that was happening anyway, there is no telemetry call that can fail, hang, or need a timeout. The CLI behaves identically whether or not anyone is listening.

Free vs. keyed

The free tier checks 50 proxies per call with no key and no signup. That covers casual use forever.

Paid plans work on validation credits: every proxy you submit consumes one credit (a batch of 3,000 proxies costs 3,000 credits).

| Plan | Price | Credits | Per call | |------|-------|---------|----------| | One-Shot | $5 one time | 5,000 validations, valid 7 days | 5,000 | | Pro | $15/mo | 100,000 validations per month | 5,000 | | Business | $49/mo | 500,000 validations per month | 10,000 |

The CLI asks the server for your plan's per-call cap and automatically splits larger jobs into chunks and merges the results, so proxycheck huge-list.txt --key pck_... just works.

Buy at proxychecker.dev/pricing, or grab a One-Shot directly: proxychecker.dev/checkout?plan=oneshot. Manage or rotate keys at proxychecker.dev/account. Set the key once:

export PROXYCHECK_KEY=pck_live_xxxxx
proxycheck huge-list.txt

After every keyed run the CLI prints what's left on the meter:

  credits remaining: 94,850 · plan renews 2026-09-01

Running out of credits

When a key is out of credits, expired, or suspended, the server answers 402 and the CLI stops immediately (it never retries a 402, so nothing extra gets burned). It prints the reason, your remaining balance if the server reports one, and the manage/pricing links, then exits with code 3.

Exit codes

| Code | Meaning | |------|---------| | 0 | Success | | 1 | Errors (network failure, bad input, batch too large) | | 2 | --fail-if-none was set and zero proxies came back alive | | 3 | Auth or entitlement problem (invalid/revoked key, out of credits, expired or inactive plan) |

What you get per proxy

  • status: alive or dead
  • protocol: http / https / socks4 / socks5
  • type: datacenter, residential, or mobile
  • latency: round-trip in ms
  • country / city / ISP / ASN: geo + network
  • suspected_fake_residential: flags datacenter IPs being sold as residential

API

The CLI is a thin wrapper over the proxychecker.dev API. POST a JSON array of proxies to /api/check with Authorization: Bearer pck_... and get JSON or CSV back. Use whichever you like.

License

MIT © Flash AI Solutions