# IPQuality: Shell Script for Comprehensive IP Address Quality Checks

> IPQuality is a shell script that checks an IP address across six categories in a single run: basic geographic and network information, IP type classification, risk scores from eight databases, risk factors, streaming service unlock status, and email provider connectivity. It runs on most Linux distributions, macOS, and Windows via Docker.

**xykt/IPQuality** — IP质量检测脚本 - IP Quality Check Script

- Repository: https://github.com/xykt/IPQuality
- Stars: 10,536 · Forks: 722
- Language: Shell
- License: AGPL-3.0
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/xykt-ipquality

## Six Modules in One Run

IPQuality organizes its output into six sections. The basic information module draws from the Maxmind database and reports geographic location, ASN, and network details. The IP type module classifies the address as residential, datacenter, mobile, or another category. The risk score module aggregates scores from eight services: IPinfo, ipregistry, ipapi, AbuseIPDB, IP2Location, IPQS, DB-IP, and Scamalytics. The risk factor module identifies specific risk indicators.

The streaming module tests which streaming and AI services the IP can access, including TikTok, Disney+, Netflix, YouTube, Amazon Prime Video, Reddit, and ChatGPT, and reports the unlock type for each. The email module tests connectivity to twelve email providers: Gmail, Outlook, Yahoo, Apple, QQ, Mail.ru, AOL, GMX, Mail.com, 163, Sohu, and Sina.

A separate blacklist check queries over 400 databases for the IP address. The README lists IP2Location and Scamalytics as project sponsors.

## Running the Script

The simplest way to run IPQuality is through curl in interactive mode:

```bash
bash <(curl -Ls https://Check.Place) -I
```

The default dual-stack check (both IPv4 and IPv6) runs without any flags:

```bash
bash <(curl -Ls https://IP.Check.Place)
```

To check only IPv4:

```bash
bash <(curl -Ls https://IP.Check.Place) -4
```

To check only IPv6:

```bash
bash <(curl -Ls https://IP.Check.Place) -6
```

On Linux via Docker:

```bash
docker run --rm --net=host -it xykt/ipquality && docker rmi xykt/ipquality > /dev/null 2>&1
```

The `--net=host` flag is required for the container to check the host machine's IP rather than the container's network interface.

## Advanced Options: Interface, Proxy, Output, and Language

To check a specific network interface rather than the default:

```bash
bash <(curl -Ls https://IP.Check.Place) -i eth0
```

To route the check through a proxy server:

```bash
bash <(curl -Ls https://IP.Check.Place) -x http://username:password@proxyserver:port
bash <(curl -Ls https://IP.Check.Place) -x socks5://username:password@socksproxy:port
```

To output the result as JSON rather than formatted terminal output:

```bash
bash <(curl -Ls https://IP.Check.Place) -j
```

To save the report to a file (ANSI, JSON, or plain text, determined by file extension):

```bash
bash <(curl -Ls https://IP.Check.Place) -o /path/to/file.json
```

The script supports Chinese, Japanese, Spanish, German, French, Russian, and Portuguese for the basic information module:

```bash
bash <(curl -Ls https://IP.Check.Place) -l jp
```

English output can be selected explicitly with `-E` or `-l en`. The `-f` flag shows the full IP address in the report rather than partially masking it. The `-p` flag enables privacy mode, which disables the online report generation feature.

## Platform Support and Dependencies

The README lists supported operating systems: Ubuntu, Debian, Linux Mint, Fedora, Red Hat Enterprise Linux, CentOS, Arch Linux, Manjaro, Alpine Linux, AlmaLinux, Rocky Linux, macOS, Anolis OS, Alibaba Cloud Linux, SUSE Linux, openSUSE, Void Linux, and Windows via Docker.

The script installs its own dependencies when they are missing. The `-y` flag automates dependency installation without prompting. The `-n` flag skips the operating system check and dependency installation entirely, which is useful in environments where the required tools are already present.

A `dig` dependency check was added in May 2024, per the update log in the README. All HTTP requests were changed to HTTPS in July 2025 to improve script security.

## Limitations and Accuracy Constraints

The script queries multiple commercial APIs over the network. Each database has its own update cycle and classification logic. A result from AbuseIPDB may differ from a result from Scamalytics for the same address because each service uses different data sources and scoring models. The script aggregates these results but does not reconcile contradictions between them.

The streaming unlock detection tests whether the IP can access each service, but the result reflects the state at the time of the test. Streaming services frequently update their geolocation and proxy detection logic. A result of "unlocked" today may not hold tomorrow. The January 2026 update replaced Spotify detection with Reddit detection, indicating that the set of tested services changes over time.

IPQuality's risk score and blacklist checks are diagnostic, not authoritative. The script is a point-in-time snapshot, not a continuously updated status. Server operators making purchasing or routing decisions based on these results should re-check periodically rather than treating a single run as definitive.

## Licence and Running Without Online Access

IPQuality is released under AGPL-3.0. This is a copyleft licence with a network use provision: if the script or a modified version of it is made available over a network to users, those users are entitled to the source code. For most use cases (running the script locally for diagnostic purposes), the AGPL-3.0 licence imposes no practical obligations. Teams that want to embed the script in a hosted service or SaaS product should review the licence terms carefully.

The script is fetched directly from `https://IP.Check.Place` or `https://Check.Place` each run, which means there is no local copy to version-pin unless the script is downloaded and run from disk. The privacy mode flag (`-p`) disables the online report generation feature for users who do not want to share results with the script's server. The last push to the repository was on 2026-09-16.

The update log in the README is a useful record of what the script checks and how its behavior has changed. In January 2026, Spotify detection was replaced with Reddit detection, showing that the set of tested streaming services changes over time. In July 2025, all HTTP requests were changed to HTTPS. In April 2025, file output support was added. In March 2025, the -y and -n flags were added for automated dependency handling. In November 2024, Cloudflare risk scoring was added.

The script accepts an IPv6 address directly. The -6 flag checks only IPv6 results, and the -4 flag checks only IPv4 results. The dual-stack default checks both simultaneously and displays results for each in the output. For servers with multiple network interfaces, the -i flag selects a specific interface by name such as eth0 or eth1. For servers behind a proxy, the -x flag supports HTTP, HTTPS, and SOCKS5 proxy URLs in the standard username:password@host:port format.

## Conclusion

IPQuality is suited to server operators, VPS users, and network engineers who need a quick comprehensive picture of how an IP address is classified across multiple commercial databases, which streaming services it can unlock, and whether it appears on email blacklists. It is not a persistent monitoring tool: it is a one-shot diagnostic that runs and prints a report. Teams that need ongoing IP reputation monitoring should look at the underlying APIs (AbuseIPDB, IPQS, ipinfo, and others) directly. The script requires outbound HTTPS access to all the data sources it queries; environments that restrict outbound traffic may get incomplete results.

## FAQ

### What is IP quality and what does this script measure?

IP quality refers to how an IP address is classified by commercial reputation and fraud-detection databases. The IPQuality script checks risk scores from eight databases, tests streaming service unlock status, tests email provider connectivity, and queries over 400 blacklists, all in a single run.

### How do I run IPQuality on Windows?

On Windows, run the script via Docker: `docker run --rm --net=host -it xykt/ipquality & docker rmi xykt/ipquality > NUL 2>&1`. The `--net=host` flag is required to check the host machine's actual IP address.

### Does IPQuality support JSON output for automation?

Yes. Pass the `-j` flag to print results as JSON, or use `-o /path/to/file.json` to save the JSON report to a file. An output example is linked from the README at `res/output.json`.

## Sources

- [Issues](https://github.com/xykt/IPQuality/issues)
- [License: AGPL-3.0](https://github.com/xykt/IPQuality/blob/main/LICENSE)
- [README](https://github.com/xykt/IPQuality/blob/main/README.md)
- [xykt/IPQuality on GitHub](https://github.com/xykt/IPQuality)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/xykt-ipquality
