New country codes have been introduced.
Read more in the Countries
Webnet77.com domain became a malware site - be careful!
@Stephen - thank you for the heads up.
Seems like something happened to our IP data provider - Webnet77.com
Their domains show nameserver problems.
IP2C data won't be updated for the time being - sorry.
Check back for more news later.
Nov 4, 10:10 p.m. UTC
13 billion requests served.
Sep 5, 2:01:23 a.m. UTC
12 billion requests served.
Jul 9, 8:55:19 p.m. UTC
11 billion requests served.
May 6, 3:21:06 a.m. UTC
10 billion requests served.
Mar 10, 12:07:35 p.m. UTC
9 billion requests served.
Jan 9, 8:52:27 p.m. UTC
8 billion requests served.
Oct 30, 6:57:20 p.m. UTC
7 billion requests served - total give:take ratio at 1802k:1.
Aug 5, 3:45:14 a.m. UTC
6 billion requests served - total give:take ratio at 1580k:1.
May 12 ~ 13
Possible momentary outages
with error HTTP 500
Hosting provider's fault - "planned" maintenance for "only some" of the servers,
but somehow all of our 5 servers were affected.
HTTPS has been added.
You can still use HTTP if you want (e.g. if your app can't make https requests).
Apr 1, 3:15:10 a.m. UTC
5 billion requests served - total give:take ratio at 1362k:1.
of service - total give:take ratio at 1330k:1.
Thank you for your trust! Tell all your friends :)
Consider donating $1 for each year ip2c was useful to you ;)
Nov 28, 5:42:54 p.m. UTC
4 billion requests served - total give:take ratio at 1128k:1.
Jul 7, 11:28:45 a.m. UTC
3 billion requests served - total give:take ratio at 881k:1.
May 1 ~ 16
Transparently transitioning to better servers, should yield +50% load capacity.
9 years of service - total give:take ratio at 690k:1.
Also PI day
Jan 20, 3:16:22 a.m. UTC
2 billion requests served - total give:take ratio at 618k:1.
Dec 16, 6:22 p.m. ~ 2:08 a.m. UTC
Filesystem problem on 1 of our 3 servers, might have caused malformed responses to ~10% requests.
Sep 12, 9:45 a.m. ~ 3:35 p.m. UTC outage
Hosting provider's fault, possible momentary outages on 1 of our 3 servers. Poland...
They say the cause is datacenter-wide DDoS from competition.
Sep 6, 9:25 ~ 10:05 a.m. UTC outage
Hosting provider's fault, datacenter-wide outage.
Jun 13, 4:02:50 p.m. UTC
Billionth request served - total give:take ratio at 332k:1.
Added header: Access-Control-Allow-Origin: *
Now it should work with Ajax/XHR. This feature was overlooked for too long...
May 31 outage
Today we had a total of about 50 minutes of partial outages around 2 and 4 p.m.
Our hosting provider rolled out updates for 500k of their clients, without testing.
Stat functions have been rewritten and are up-to-date again.
Design has been modified to support pooled servers. Currently running on 3 apaches in round-robin.
This is due to hosting environment not supporting nginx and php-fpm anymore.
Some stats can be out-of-date until we rewrite them to fit the new design.
8 years of service - total give:take ratio at 277k:1.
Added live graph to Stats
page. Bored engineers in da house.
Added Users of the Month
Fun fact: French users exhibit EMF (End of Month FeverTM
Added a try-it form to About
page - for newcomers.
Added users & countries to Stats
Server software upgraded:
ubuntu 10.04 → 14.04 | apache 2.2 → nginx 1.4.6 | mod_php → php-fpm | php 5.2 → 5.5.9
Tested at ~820 reqs per second, limited only by uplink bandwidth. Have fun overloading it.
Jul 7 ~ Jul 13 outage
Segfault in Apache occured on Jul 7, 5:35 a.m. UTC, daemon somehow failed to restart it.
We haven't noticed this until Jul 13, 5:45 p.m. UTC, being preocuppied with other professional affairs.
for this epic fail. Watchdog has been implemented.
A record has been set! 16.7 million requests served in one day!
ip2c.org is 7 years old \^~^/ with total give:take ratio at 192k:1.
Over the last two weeks we inquired 9 times about proof of alleged server overload (2 phone calls, 7 emails).
They failed to produce even a single fact, of course.
Instead they suggested 5 times that we should buy a more expensive hosting plan.
Oct 30, 1 p.m. ~ 12 a.m. UTC outage
Flush your DNS tables and restart your apps - we had to change server IP!
Our hosting provider home
.pl blocked without warning
our entire server in order to extort
They stated that ip2c.org generates too much load and destabilizes their infrastructure.
Note that home
.pl is the biggest and the most advanced hosting provider in the country,
whereas one IP lookup takes 3 io (ram cached), lasts about 1.0ms, and prints between 13-46 bytes + http.
Too much load my ass.
They hadn't actually noticed the last 200,000,000 'destabilizing' requests for months
until we contacted their support on Oct 28 and politely asked about their cpu load limits etc.
At that moment, suddenly, a catastrophe of melting datacenters revealed itself,
and they were forced to take swift action... against a free
Their proposed solution was 'buy a more expensive hosting plan'.
Fuck you home
.pl, you are officially relieved of this gruelling duty.
Everything is back online 12 hours later, now featuring hardcore thunderous 2-core 1gb ubuntu box
- owned by us, no 3rd party involved, no conflict of interest.
13 months and 264 million requests later, our give:take ratio has gone from 37k:1 to 141k:1 (6.5 year total).
Last month alone is 1.3m:1.
Domain renamed to ip2c.org
GeoLoc.daiguo.com still works for backwards compatibility.
Added new input
notations based on mod_rewrite. This upgrade is minor but long due.
We have seen around the Net people assume this service simply forwards requests to Software77 servers.
In reality, since day 1, this service resolves requests locally, and calls Software77 once a day for updated data.
In 5.5 years we have accessed Software77 servers about 2k times, while producing 74m+ answers on our own.
We are actually relieving their servers of load.
changed to LGPLv3
making our service more usable.
As IPv4 space comes close to its limit, we will deliver an IPv6 option soon.
We are still here, no major hiccups in 2.5 years. Hope it serves your needs properly.
Core is redesigned and rebuilt from scratch
Databases are no longer in use, seems they were too bulky to operate.
New solution features RAM-based indexed binary search.
Update process has been reduced from over 60 minutes to under 10 seconds.
This makes GeoLoc accurate within 2 hours after new data is published by Webnet77.com,
instead of 17 hours as it was until yesterday.
Starting 1 a.m. UTC something is really wrong.
Out of 96 database update threads 34 crash during 31 hours' period.
It means extreme overload generated by those other websites.
Results in presumably over 30% incorrect answers by GeoLoc.
Nov 22 ~ Dec 20
Server shows some strain from time to time. Not related to amount of requests, however.
There are 80-90 other websites hosted virtually on the same machine as this service,
they probably start getting more and more visitors - which results in shared overload.
for the inconvenience.
Added load distribution (4 parallel databases)
If flooding takes place again, we will
add automated blacklisting.
This is public service after all.
by some mad script from 184.108.40.206 (France)
150,000 requests/day from a single IP is a bit too many.
Anyone responsible for this - please revise your loops.
- consider caching retrieved results for at least one day.
'Cookie' your clients wherever possible, IP data changes slowly enough to be updated just once a day.
If you feel like killing your server with thousands of IPs per second,
download a csv from <http://software77.net/geo-ip>
GeoLoc.daiguo.com says Hello World!
==== Country codes:
The list of all possible country codes which can occur in the Outputs
Officially assigned ISO 3166 countries
AD AND Andorra
AE ARE United Arab Emirates (the)
AF AFG Afghanistan
AG ATG Antigua and Barbuda
AI AIA Anguilla
AL ALB Albania
AM ARM Armenia
AO AGO Angola
AQ ATA Antarctica
AR ARG Argentina
AS ASM American Samoa
AT AUT Austria
AU AUS Australia
AW ABW Aruba
AX ALA Åland Islands
AZ AZE Azerbaijan
BA BIH Bosnia and Herzegovina
BB BRB Barbados
BD BGD Bangladesh
BE BEL Belgium
BF BFA Burkina Faso
BG BGR Bulgaria
BH BHR Bahrain
BI BDI Burundi
BJ BEN Benin
BL BLM Saint Barthélemy
BM BMU Bermuda
BN BRN Brunei Darussalam
BO BOL Bolivia (Plurinational State of)
BQ BES Bonaire, Sint Eustatius and Saba
BR BRA Brazil
BS BHS Bahamas (the)
BT BTN Bhutan
BV BVT Bouvet Island
BW BWA Botswana
BY BLR Belarus
BZ BLZ Belize
CA CAN Canada
CC CCK Cocos (Keeling) Islands (the)
CD COD Congo (the Democratic Republic of the)
CF CAF Central African Republic (the)
CG COG Congo (the)
CH CHE Switzerland
CI CIV Côte d'Ivoire
CK COK Cook Islands (the)
CL CHL Chile
CM CMR Cameroon
CN CHN China
CO COL Colombia
CR CRI Costa Rica
CU CUB Cuba
CV CPV Cabo Verde
CW CUW Curaçao
CX CXR Christmas Island
CY CYP Cyprus
CZ CZE Czechia
DE DEU Germany
DJ DJI Djibouti
DK DNK Denmark
DM DMA Dominica
DO DOM Dominican Republic (the)
DZ DZA Algeria
EC ECU Ecuador
EE EST Estonia
EG EGY Egypt
EH ESH Western Sahara*
ER ERI Eritrea
ES ESP Spain
ET ETH Ethiopia
FI FIN Finland
FJ FJI Fiji
FK FLK Falkland Islands (the) [Malvinas]
FM FSM Micronesia (Federated States of)
FO FRO Faroe Islands (the)
FR FRA France
GA GAB Gabon
GB GBR United Kingdom of Great Britain and Northern Ireland (the)
GD GRD Grenada
GE GEO Georgia
GF GUF French Guiana
GG GGY Guernsey
GH GHA Ghana
GI GIB Gibraltar
GL GRL Greenland
GM GMB Gambia (the)
GN GIN Guinea
GP GLP Guadeloupe
GQ GNQ Equatorial Guinea
GR GRC Greece
GS SGS South Georgia and the South Sandwich Islands
GT GTM Guatemala
GU GUM Guam
GW GNB Guinea-Bissau
GY GUY Guyana
HK HKG Hong Kong
HM HMD Heard Island and McDonald Islands
HN HND Honduras
HR HRV Croatia
HT HTI Haiti
HU HUN Hungary
ID IDN Indonesia
IE IRL Ireland
IL ISR Israel
IM IMN Isle of Man
IN IND India
IO IOT British Indian Ocean Territory (the)
IQ IRQ Iraq
IR IRN Iran (Islamic Republic of)
IS ISL Iceland
IT ITA Italy
JE JEY Jersey
JM JAM Jamaica
JO JOR Jordan
JP JPN Japan
KE KEN Kenya
KG KGZ Kyrgyzstan
KH KHM Cambodia
KI KIR Kiribati
KM COM Comoros (the)
KN KNA Saint Kitts and Nevis
KP PRK Korea (the Democratic People's Republic of)
KR KOR Korea (the Republic of)
KW KWT Kuwait
KY CYM Cayman Islands (the)
KZ KAZ Kazakhstan
LA LAO Lao People's Democratic Republic (the)
LB LBN Lebanon
LC LCA Saint Lucia
LI LIE Liechtenstein
LK LKA Sri Lanka
LR LBR Liberia
LS LSO Lesotho
LT LTU Lithuania
LU LUX Luxembourg
LV LVA Latvia
LY LBY Libya
MA MAR Morocco
MC MCO Monaco
MD MDA Moldova (the Republic of)
ME MNE Montenegro
MF MAF Saint Martin (French part)
MG MDG Madagascar
MH MHL Marshall Islands (the)
MK MKD North Macedonia
ML MLI Mali
MM MMR Myanmar
MN MNG Mongolia
MO MAC Macao
MP MNP Northern Mariana Islands (the)
MQ MTQ Martinique
MR MRT Mauritania
MS MSR Montserrat
MT MLT Malta
MU MUS Mauritius
MV MDV Maldives
MW MWI Malawi
MX MEX Mexico
MY MYS Malaysia
MZ MOZ Mozambique
NA NAM Namibia
NC NCL New Caledonia
NE NER Niger (the)
NF NFK Norfolk Island
NG NGA Nigeria
NI NIC Nicaragua
NL NLD Netherlands (the)
NO NOR Norway
NP NPL Nepal
NR NRU Nauru
NU NIU Niue
NZ NZL New Zealand
OM OMN Oman
PA PAN Panama
PE PER Peru
PF PYF French Polynesia
PG PNG Papua New Guinea
PH PHL Philippines (the)
PK PAK Pakistan
PL POL Poland
PM SPM Saint Pierre and Miquelon
PN PCN Pitcairn
PR PRI Puerto Rico
PS PSE Palestine, State of
PT PRT Portugal
PW PLW Palau
PY PRY Paraguay
QA QAT Qatar
RE REU Réunion
RO ROU Romania
RS SRB Serbia
RU RUS Russian Federation (the)
RW RWA Rwanda
SA SAU Saudi Arabia
SB SLB Solomon Islands
SC SYC Seychelles
SD SDN Sudan (the)
SE SWE Sweden
SG SGP Singapore
SH SHN Saint Helena, Ascension and Tristan da Cunha
SI SVN Slovenia
SJ SJM Svalbard and Jan Mayen
SK SVK Slovakia
SL SLE Sierra Leone
SM SMR San Marino
SN SEN Senegal
SO SOM Somalia
SR SUR Suriname
SS SSD South Sudan
ST STP Sao Tome and Principe
SV SLV El Salvador
SX SXM Sint Maarten (Dutch part)
SY SYR Syrian Arab Republic (the)
SZ SWZ Eswatini
TC TCA Turks and Caicos Islands (the)
TD TCD Chad
TF ATF French Southern Territories (the)
TG TGO Togo
TH THA Thailand
TJ TJK Tajikistan
TK TKL Tokelau
TL TLS Timor-Leste
TM TKM Turkmenistan
TN TUN Tunisia
TO TON Tonga
TR TUR Türkiye
TT TTO Trinidad and Tobago
TV TUV Tuvalu
TW TWN Taiwan (Province of China)
TZ TZA Tanzania, the United Republic of
UA UKR Ukraine
UG UGA Uganda
UM UMI United States Minor Outlying Islands (the)
US USA United States of America (the)
UY URY Uruguay
UZ UZB Uzbekistan
VA VAT Holy See (the)
VC VCT Saint Vincent and the Grenadines
VE VEN Venezuela (Bolivarian Republic of)
VG VGB Virgin Islands (British)
VI VIR Virgin Islands (U.S.)
VN VNM Viet Nam
VU VUT Vanuatu
WF WLF Wallis and Futuna
WS WSM Samoa
YE YEM Yemen
YT MYT Mayotte
ZA ZAF South Africa
ZM ZMB Zambia
ZW ZWE Zimbabwe
Unofficial but widely used
XK XKX Kosovo
Continents don't have official codes apparently. These custom codes below will occur whenever an IP can't be precisely linked
to a country but is known to be generally linked to a continent. Note the distinctions for XEU, XAU, XAN.
XA XAS Asia
XE XEU Europe
+ standard code EU exists in ISO but it pertains to the European Union (political/economic alliance)
+ EU's geographical delineation is different from the continent of Europe
represented by XEU
+ EU will never occur in the output, while XE might
EU/XE are not interchangeable
+ if you're looking to detect countries with GDPR restrictions, you should not assume XE solves this!
+ it's more complicated, look e.g. here Practical overview at GDPR Advisor
XF XAF Africa
XN XNA North America
XS XSA South America
XT XAN Antarctica and Southern Ocean
+ standard code AQ is the territory of only the landmass Antarctica
+ XAN includes additional islands located south of ~60°S latitude
AQ/XT and ATA/XAN are not interchangeable
XU XAU Australia and Oceania
+ standard code AU is the territory of only the Commonwealth of Australia
+ which is a sub-area of the continent of Australia
, which in turn is a sub-area of the region of Oceania
+ XAU represents the combined area of Australian continent and Oceanic islands
AU/XU and AUS/XAU are not interchangeable
Non-geographical i.e. any remaining IPs
XW XWW Multicast Address
+ IP ranges assigned for use in IP multicasting (read more
+ 6.25% of all IPs
XX XXX Unknown
+ no specific information could be gathered about given IP during recent web scraping
+ 0.19% of all IPs
XY XYY Obfuscated
+ real geo can't be determined by design / intentionally
+ e.g. it's an anonymizing proxy or a satellite modem, etc
XZ XZZ IANA Special-Purpose Address
+ IP ranges reserved for technological reasons in the protocol standard (read more
+ 7.55% of all IPs
ZZ ZZZ Reserved
+ small subnets reserved by special circumstances other than XZ
+ currently ~1500 such "islands" exist globally
+ 0.1% of all IPs