📈 GH Trending Explorer 🎲 Surprise me

← all repos

lionsoul2014 / ip2region

git clone https://github.com/lionsoul2014/ip2region.git v3.18.0 · 1mo ago 🔥 on GitHub Trending today

Ip2region is an offline IP-to-Region localization library and IP data management framework with both IPv4 and IPv6 supports, 10-microsecond level query efficiency, xdb search client for many programming languages

—
stars, 24h
+88
stars, 7 days · #603
—
stars, 30 days
20k
★ total · +0% this week
3.1k
forks · 6 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageGo
License—
Created2015-11-02 (10y ago)
Last push2d ago
Watchers439
OwnerUser

Seen on GitHub Trending

  • 2026-10-20 — #9 weekly in go · +88 ★

GitHub topics

Links

README excerpt
:globe_with_meridians: 中文简体 | English
# ip2region
ip2region - is an offline IP address localization library and IP localization data management framework. It supports both `IPv4` and `IPv6` with query efficiency at the 10-microsecond level. It provides `xdb` data generation and query client implementations for many mainstream programming languages.
# Features
### 1. Offline Localization Library
The project itself provides raw data for both IPv4 (`data/ipv4_source.txt`) and IPv6 (`data/ipv6_source.txt`), along with corresponding xdb files (`data/ip2region_v4.xdb` and `data/ip2region_v6.xdb`) to achieve city-level query localization. The field format is: `Country|Province|City|ISP|iso-alpha2-code`. Localization information for China is entirely in Chinese, while regional information for non-China areas is entirely in English.
### 2. Data Management Framework
`xdb` supports hundreds of millions of IP data segment rows. Region information supports full customization. The region information of the built-in data is fixed in the format: `Country|Province|City|ISP|iso-alpha2-Code`. You can append data for specific business needs to the region, such as: GPS information/International Standard Regional Codes/Zip codes, etc. In other words, you can fully use ip2region to manage your own IP localization data.
### 3. Data Deduplication and Compression
The `xdb` format generation program automatically processes the input raw data, checks and completes the merging of adjacent IP segments, and performs deduplication and compression of identical regional information.
### 4. High-Speed Query Response
Even for queries based entirely on the `xdb` file, the single query response time is at the 10-microsecond level. Memory-accelerated queries can be enabled through the following two methods:
1. `vIndex` Index Caching: Uses a fixed `512KiB` of memory to cache vector index data, reducing one disk IO operation and maintaining average query efficiency within 100 microseconds.
2. Entire `xdb` File Caching: Loads the entire `xdb` file into memory. Memory usage is equal to the `xdb` file size. There is no disk IO operation, maintaining 10-microsecond level query efficiency.
### 5. Unified Query Interface
`xdb` provides version-compatible query implementations. A unified API can simultaneously provide queries for both IPv4 and IPv6 data and return unified data.
# `xdb` Query
For API introductions, usage documentation, and test programs, please refer to the README introduction under the corresponding `searcher` query client. All query binding implementations are as follows:
| Language | Description | IPv4 Support | IPv6 Support |
| --- | --- | --- | --- |
| Golang | golang query client | :white_check_mark: | :white_check_mark: |
| PHP | php query client | :white_check_mark: | :white_check_mark: |
| Java | java query client | :white_check_mark: | :white_check_mark: |
| C | C[std=c99] query client | :white_check_mark: | :white_check_mark: |
| Lua_c | lua c extension query client