Shorten simply by using shorter keys/values (less verbose) - fairly easy to do, but won't shorten that much really and still looks bad
One extreme is to store a JSON object representing user configuration in a Protocol Buffer, and perhaps simply have a single parameter with a base64 encoded value of the protocol buffer - tons of overhead to set this up and protocol buffer support for JavaScript looks questionable at this point
Another extreme is to store configuration on a server (kinda like tinyURL generators) in which again, there is a single parameter or the path itself is the key, which can be very small, and this key is used to pass to the lookup server which stores configuration state. Tons of overhead to set this up, but probably nicest user experience (smallest URL).
Server Side Storage seems like the best option, but challenges include:
Probably need to hook up some sort of authentication and authorization as saving (and deleting) state on the server should be handled carefully.
Browsing/Searching existing state is another whole module
Forcing users to login before they can do anything isn't great. Only require login if users want to modify/create/delete a saved chart that can be bookmarked. Users simply exploring data should be able to work without login. Maybe add transient state storage in browser "local storage" for unauthenticated case such that browser window closed or page reload doesn't erase their work?
Problems with long URLs include:
Possible solutions: