I have a non-computing device that needs to send a user of that device to a certain web page based on the current state of the device. The state consists of multiple key-value pairs that we encode into a URL (e.g. `http://example.com/doMyStatus?prop1=val1&prop2=val2`). All told, this URL may reach 500+ characters so we cannot expect the user to type it into her browser manually.

Instead, we plan on displaying a QR code with the URL that a user can visit with a smartphone.
Due to this, we cannot submit this long URL as a POST request to the server (although that would be the best approach). Is there any way to compress a URL to fit within a medium-resolution QR code? We only need to compress the query string: the QR code will contain a URL like `http://example.com/decompress?compressedQueryString`.

Zip+Base64 just makes the URL longer. I've considered writing a custom URL shortener and having the device submit the URL for shortening before creating the QR code which is a lot more work (storing (short lived!) shortened URLs) but probably the most practical solution.