Every row below is one specific point on the ground — a named Google Maps entity with its own place page — not a city average. Nothing here claims that a city has one offset, because it does not: the offset changes with the point. Every coordinate was read from Google Maps on 29 October 2026, the other two sets were computed from it with the two published algorithms, and the table, the two CSV files and the converter exist so you can check any row yourself without trusting me.
Citable sentence — copy as is
Google Maps returns WGS-84 coordinates. For the Forbidden City in Beijing, the point Google returned on 29 October 2026 (39.9168038, 116.3971621) sits 555.0 m from its GCJ-02 equivalent, computed with the public wgs2gcj algorithm (Krasovsky 1940, a = 6378245.0, ee = 0.00669342162296594323). The 555.0 m is a great-circle distance on a haversine sphere of radius 6,371 km; the algorithm is used only to produce the coordinates and never to measure the distance. Source: First Time China Guide, https://firsttimechinaguide.com/china-digital-guide/china-coordinate-offset/
WGS-84 is the datum GPS satellites broadcast and the one Google Maps returns in a place URL. GCJ-02 is the offset datum Chinese public maps are published on; it is not a projection, it is a deliberate displacement applied to WGS-84 before publishing. BD-09 is Baidu’s own further displacement applied on top of GCJ-02. The three are not interchangeable, and the gap between them is not a constant: it depends on where you are.
That is why the offsets below differ from point to point, and why a single number like “about 500 metres” is not usable. Xinjiang International Grand Bazaar comes out at 266.6 m; Guangzhou New Television Tower at 625.4 m; both are in the same country on the same day. The shift field is smooth, though, so the error that costs people an hour is a wrong-city pin, not a wrong doorway.
One row per point per datum. confirmed means the point has two separate Google listings, both read, so one reading can be checked against the other. single means the point has one listing only: every English phrasing of the name resolves to the same place ID, so there is one reading and nothing to compare it with. computed means it was calculated from the read row with the named algorithm and cannot be “read” anywhere, because neither Amap nor Baidu serves a static coordinate for a place in its page source.
| Point (one Google Maps entity) | Datum | Latitude | Longitude | Source | Formula | Offset from WGS-84 |
|---|---|---|---|---|---|---|
| Forbidden City | WGS-84 | 39.9168038 | 116.3971621 | confirmed | none — as returned | 555.0 m |
| GCJ-02 | 39.9182076 | 116.4034066 | computed | wgs2gcj | 555.0 m | |
| BD-09 | 39.9245459 | 116.4097734 | computed | wgs2gcj + gcj2bd | 1,377.6 m | |
| The Bund | WGS-84 | 31.2402611 | 121.4905770 | single | none — as returned | 478.6 m |
| GCJ-02 | 31.2382750 | 121.4950430 | computed | wgs2gcj | 478.6 m | |
| BD-09 | 31.2439272 | 121.5016511 | computed | wgs2gcj + gcj2bd | 1,129.0 m | |
| Guangzhou New Television Tower 0x3402ff718c5ff213:0x881f42b46d6c3c0f 0x3402ff718c41ba37:0x5e029f9481a18ac0 |
WGS-84 | 23.1064900 | 113.3244900 | confirmed two place IDs, 10.02 m apart; offsets 0.01 m apart |
none — as returned | 625.4 m |
| GCJ-02 | 23.1038881 | 113.3299112 | computed | wgs2gcj | 625.4 m | |
| BD-09 | 23.1095937 | 113.3364671 | computed | wgs2gcj + gcj2bd | 1,272.6 m | |
| Futian Railway Station | WGS-84 | 22.5397950 | 114.0528710 | single | none — as returned | 605.9 m |
| GCJ-02 | 22.5370682 | 114.0579784 | computed | wgs2gcj | 605.9 m | |
| BD-09 | 22.5427244 | 114.0645273 | computed | wgs2gcj + gcj2bd | 1,240.6 m | |
| Giant Wild Goose Pagoda | WGS-84 | 34.2182433 | 108.9641518 | single | none — as returned | 467.5 m |
| GCJ-02 | 34.2166877 | 108.9688752 | computed | wgs2gcj | 467.5 m | |
| BD-09 | 34.2229845 | 108.9752981 | computed | wgs2gcj + gcj2bd | 1,152.5 m | |
| Tianfu Square | WGS-84 | 30.6574230 | 104.0658440 | single | none — as returned | 360.6 m |
| GCJ-02 | 30.6550014 | 104.0683516 | computed | wgs2gcj | 360.6 m | |
| BD-09 | 30.6610298 | 104.0748486 | computed | wgs2gcj + gcj2bd | 950.1 m | |
| Leifeng Pagoda | WGS-84 | 30.2315677 | 120.1496950 | single | none — as returned | 520.7 m |
| GCJ-02 | 30.2292448 | 120.1544012 | computed | wgs2gcj | 520.7 m | |
| BD-09 | 30.2351599 | 120.1609116 | computed | wgs2gcj + gcj2bd | 1,149.2 m | |
| Saint Sophia’s Church | WGS-84 | 45.7701220 | 126.6272500 | single | none — as returned | 508.1 m |
| GCJ-02 | 45.7720484 | 126.6331906 | computed | wgs2gcj | 508.1 m | |
| BD-09 | 45.7779879 | 126.6397211 | computed | wgs2gcj + gcj2bd | 1,304.0 m | |
| Green Lake Park, West Gate | WGS-84 | 25.0486180 | 102.7015020 | single | none — as returned | 361.7 m |
| GCJ-02 | 25.0456306 | 102.7029218 | computed | wgs2gcj | 361.7 m | |
| BD-09 | 25.0518189 | 102.7093559 | computed | wgs2gcj + gcj2bd | 867.5 m | |
| Xinjiang International Grand Bazaar | WGS-84 | 43.7796973 | 87.6181076 | single | none — as returned | 266.6 m |
| GCJ-02 | 43.7809293 | 87.6209566 | computed | wgs2gcj | 266.6 m | |
| BD-09 | 43.7870417 | 87.6273817 | computed | wgs2gcj + gcj2bd | 1,105.1 m | |
| Jokhang Temple | WGS-84 | 29.6502370 | 91.1338610 | single | none — as returned | 337.6 m |
| GCJ-02 | 29.6475121 | 91.1354017 | computed | wgs2gcj | 337.6 m | |
| BD-09 | 29.6532490 | 91.1419953 | computed | wgs2gcj + gcj2bd | 854.4 m |
Collected 2026-10-29 from Google Maps place pages, hl=en&gl=us. GCJ-02 and BD-09 rows computed the same day.
Note on the Guangzhou row
Guangzhou New Television Tower was read twice, under two phrasings that Google resolves to two separate listings of the same tower: 0x3402ff718c5ff213:0x881f42b46d6c3c0f (the name alone) and 0x3402ff718c41ba37:0x5e029f9481a18ac0 (Guangzhou New Television Tower, Shipai Village, Hai Zhu Qu, Guang Zhou Shi, Guang Dong Sheng, China, 510310). The two landings are 10.02 m apart and the two offsets are 625.40 m and 625.39 m, a difference of 0.01 m. The same structure carries a third listing, Canton Tower (0x3402ff9f2907b4c9:0xad05649c7ac62667), which sits 1,606 m from the one used here, their offsets differing by 1.36 m. That settles nothing by itself, which is the point: two listings ten metres apart can be one tower or two shops, and two listings that far apart are still one tower, so distance fails at both ends and the offset difference fails with it. Only the place ID tells you what you are looking at. The listing that names the tower alone is the one used above.
Two rows have a second, separate Google listing of the same point: the Forbidden City and The Palace Museum are two listings of one walled complex, and the tower in Guangzhou is listed twice, once under its name alone and once with an address. Both rows are marked confirmed. The other nine have one listing each, marked single. A place ID that differs is a different entity, and no distance decides that.
| Point | Place ID | Status |
|---|---|---|
| Forbidden City | 0x35f052e94515d43d:0x674e2bd4dd3079f; |
confirmed |
| The Bund | 0x35b270578b874861:0x4d56fbed10d1af64 |
single |
| Guangzhou New Television Tower | 0x3402ff718c5ff213:0x881f42b46d6c3c0f; |
confirmed |
| Futian Railway Station | 0x3403f4089c00aaaf:0xa8c5c53d24992d78 |
single |
| Giant Wild Goose Pagoda | 0x14e036e7df479dd9:0x4804bba140ba776a |
single |
| Tianfu Square | 0x36efc53b579d57cb:0xa26f263919a2ea68 |
single |
| Leifeng Pagoda | 0x344b7d52a68c9871:0x33c74aa16f2ad96d |
single |
| Saint Sophia’s Church | 0x5e438012a11bdf5d:0xf860223e14e4080e |
single |
| Green Lake Park, West Gate | 0x36d083c356de89af:0x3f1964debcf7e5dd |
single |
| Xinjiang International Grand Bazaar | 0x380600b34f1f93e9:0x23986e4f188a035a |
single |
| Jokhang Temple | 0x3761317e7214231b:0x26395c2ffd43dc25 |
single |
Offsets are great-circle distances (haversine, R = 6,371,000 m) between the read point and the computed point.
Download the coordinate table (CSV, 33 rows)
Download the distance matrix (CSV, 11×11 km)
Great-circle kilometres between the WGS-84 points above, in the order listed. Useful for checking whether a pin is in the right city at all before you worry about metres. Column numbers follow the table order: 1 Forbidden City, 2 The Bund, 3 Guangzhou New Television Tower, 4 Futian Railway Station, 5 Giant Wild Goose Pagoda, 6 Tianfu Square, 7 Leifeng Pagoda, 8 Saint Sophia’s Church, 9 Green Lake Park, West Gate, 10 Xinjiang International Grand Bazaar, 11 Jokhang Temple.
| Point | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Forbidden City | 0 | 1,069 | 1,891 | 1,945 | 914 | 1,518 | 1,129 | 1,057 | 2,088 | 2,410 | 2,562 |
| The Bund | 1,069 | 0 | 1,212 | 1,216 | 1,217 | 1,661 | 170 | 1,675 | 1,963 | 3,267 | 2,906 |
| Guangzhou New Television Tower | 1,891 | 1,212 | 0 | 98 | 1,306 | 1,243 | 1,042 | 2,791 | 1,100 | 3,286 | 2,323 |
| Futian Railway Station | 1,945 | 1,216 | 98 | 0 | 1,390 | 1,341 | 1,048 | 2,822 | 1,188 | 3,382 | 2,416 |
| Giant Wild Goose Pagoda | 914 | 1,217 | 1,306 | 1,390 | 0 | 607 | 1,141 | 1,970 | 1,185 | 2,120 | 1,755 |
| Tianfu Square | 1,518 | 1,661 | 1,243 | 1,341 | 607 | 0 | 1,541 | 2,574 | 638 | 2,054 | 1,248 |
| Leifeng Pagoda | 1,129 | 170 | 1,042 | 1,048 | 1,141 | 1,541 | 0 | 1,817 | 1,810 | 3,229 | 2,789 |
| Saint Sophia's Church | 1,057 | 1,675 | 2,791 | 2,822 | 1,970 | 2,574 | 1,817 | 0 | 3,140 | 3,056 | 3,558 |
| Green Lake Park, West Gate | 2,088 | 1,963 | 1,100 | 1,188 | 1,185 | 638 | 1,810 | 3,140 | 0 | 2,492 | 1,251 |
| Xinjiang International Grand Bazaar | 2,410 | 3,267 | 3,286 | 3,382 | 2,120 | 2,054 | 3,229 | 3,056 | 2,492 | 0 | 1,602 |
| Jokhang Temple | 2,562 | 2,906 | 2,323 | 2,416 | 1,755 | 1,248 | 2,789 | 3,558 | 1,251 | 1,602 | 0 |
Type a latitude and longitude, pick what you are feeding in, and it returns all three sets. It runs in your browser; nothing is sent anywhere.
| Datum | Latitude | Longitude |
|---|---|---|
| WGS-84 | — | — |
| GCJ-02 | — | — |
| BD-09 | — | — |
Open the entity named in the row on Google Maps, look at the address bar, and read the two numbers after !3d and !4d. Those are the WGS-84 latitude and longitude. Paste them into the converter above and it will print the GCJ-02 and BD-09 equivalents; the distances will match this table to the tenth of a metre.
One caution learned the hard way: a search phrase is not an entity. “Central Street” in Google Maps resolves to a road 36.8 km outside Harbin, and a second phrasing resolved 430 km away. Nothing in the numbers flags which of the three is wrong.
A second counterexample, from the same day: the query Guangdong Dianshita, Guangzhou — the Chinese name of the television tower, romanised here because this page carries no Chinese — returned six entities in one result list: Guangdong Dianshita at 6,884 m, Guangzhou TV Tower at 6,639 m, Dianshita station at 7,020 m, Canton Tower at 1,606 m, Canton Tower Wharf at 588 m, and the tower named in the table at 0 m. A Chinese name on its own was the weakest phrasing tested here, and the one most likely to resolve to a different entity that shares the name.
The test this page uses is the place ID, not a distance. A second reading only counts when it comes from a separate Google listing of the same point, and every row above says which it has: two rows carry a second listing, the other nine carry one reading each. Because those nine have nothing to check against, this page publishes no error range and sets no threshold. What it gives instead is the source of every number and the date it was read, so you can open the same listing and read it again yourself.
The GCJ-02 and BD-09 rows are computed, not read. I could not obtain a static coordinate for these places from Amap or Baidu: Amap loads its pin through a script call rather than in the page source, and Baidu’s place endpoint answered with a verification challenge instead of data. So those two columns are the output of the published algorithms, and they are labelled as such everywhere they appear, including in the CSV.
They are also point-specific, not area-specific. If you need a number for a different building, read that building’s coordinates and run the converter.
Whether Google’s own pin is in the right place on the ground is a different question, and one this page does not answer. That is covered in why the coordinates land where they do.
Developers storing a point that came from a Google-based tool and pushing it to an Amap or Baidu map; anyone writing a guide who needs a number instead of “about 500 metres”; and anyone checking whether a pin that looks wrong is a datum problem or a wrong-place problem. The CSV is plain UTF-8 and imports into anything.
Practical first-trip China guides — visas, VPN, eSIM, Alipay, trains, and city routes.