Decoding a Google Street View URL

Word of warning: this post is accurate at the time of publication (2020-01-03) but may not be on the day your are reading this due to possible changes made by Google. If you do spot an error, please email us to make us aware.

You can see a host (geo2.ggpht.com/cbk) with a panoid= value. This is the unique reference to the panoramic image.

After that we see &output=thumbnail followed by information that seems to be related to said output (a thumbnail image). I assume this because; &w=203&h=100 looks to refer to width (203px) and height (100px) as well as values like yaw= and pitch= that remain static and likely set the view of the thumbnail, unlike the first part of the URL which changes when the user moves the view.

Though I have no idea what the &output=thumbnail actually refers too – it can be entirely removed from the URL and the image will still load correctly in the browser;

Almost all the bang values are identical to the first image, except inside the 6th bang where the panoId and the yaw differ, and perhaps most interestingly the value in the 4th bang (1st URL = !1sjJXYsBpPPqWuvSR5RUaIEQ / 2nd URL = !1s7YsnZ32rM6gi8Ivi2k3viA)

Initially I thought the 4th bang might be referring to the Google Place ID of the image, however both images show “The Queen’s Walk” as the place, and a lookup of the place ID for the “The Queen’s Walk” returns EixUaGUgUXVlZW4ncyBXYWxrLCBTb3V0aCBCYW5rLCBMb25kb24gU0UxLCBVSyIuKiwKFAoSCekLrB7HBHZIEQ5z1qt4guCgEhQKEgk_J5VMtgR2SBFYYta2uf8XCQ.

Digging deeper, lets take another Street View image taken by Google and it’s decoded URL:

It seems user content is handled differently. Firstly, the URL is made up of 9 bangs.

This time the 1st (!3m8), 3rd (!3m6), 4th (!1sAF1QipP8Umrvyj6jz7HQFCJ1IGxUFo4tSfZdciNHyBqX), 6th NEW (!3e11), 7th (pano info), 8th (!7i5760), and 9th (!8i2880) bangs are all different to the previous image.

The pano info (7th bang, equivalent to the 6th bang for Google uploaded images) is also considerably different:

This time the host is different (googleusercontent.com vs ggpht.com). The panoid is defined after the /p/ (in this case AF1QipP8Umrvyj6jz7HQFCJ1IGxUFo4tSfZdciNHyBqX vs. panoid=), and the output=thumbnail argument is replaced with what looks to be a reference to a thumbnail but in a different structure containing references to (I think) width (w203), height (h100), pitch (pi0), yaw (ya23.025953), and field of view (fo100).

I think ro0 refers to the roll value (my assumption is that Google images omit this value because roll is accounted for by Google pre-upload and thus always equal to 0).

I have no idea about what k-no defines though.

Now, one final Street View image to use as a comparison, this time another piece of user contributed imagery, this time from Federico Debetto, and the Zanzibar Street View project: