JSON ↔ Rison
Convert JSON to Rison (the compact URI-safe notation Kibana/Elasticsearch use for query params) and back. This tool's own encoder/decoder for the documented core grammar (no reference implementation in this codebase to check against). Exotic edge cases like embedded control characters or surrogate-pair characters are not guaranteed byte-identical to the reference grammar. Runs on your device.
Runs on your device. The file is never uploaded.
JSON to Rison rewrites a document in the compact notation Kibana packs into query parameters. Objects are written (key:value), arrays as !(item), and !t, !f and !n stand for true, false and null. Strings that look like identifiers stay bare. No percent-encoding happens here, so the result can still need URL encode.
Questions
What is Rison?
A compact notation for the same data JSON holds, designed to survive in a URL without heavy escaping. Kibana and Elasticsearch use it for the state they pack into query parameters. It is much shorter than URL-encoded JSON because it avoids quotes and braces wherever it can.
What does the syntax look like?
An object is written (key:value,key:value) and an array is !(item,item). True, false and null are !t, !f and !n. A string that looks like an identifier is written bare, and anything else is wrapped in single quotes with an exclamation mark as the escape character, so !! is a literal exclamation mark and !' is a literal quote.
Which direction does it run?
Encode by default, taking JSON in and writing Rison out. Switch mode to decode to read Rison and get pretty-printed JSON back. A decode failure names the offset, for example when a quoted string is never closed or a comma or closing parenthesis is missing.
Is this the reference implementation?
No. This codebase ships no Rison library, so the encoder and decoder here were written from the documented core grammar. Ordinary objects, arrays, strings, numbers and literals round-trip, but exotic cases such as embedded control characters or surrogate-pair characters are not guaranteed to match the reference byte for byte.
Do I still have to URL-encode the result?
Possibly. The tool does no percent-encoding at all, and your own strings can contain characters that a particular server or proxy dislikes. Rison keeps the common structural characters out of the way, but check the result against your target, and run it through URL encode if it needs it.
Does my query state leave the browser?
No. Both directions run in a Web Worker in this tab, so a dashboard URL with real filter values, index names or customer identifiers in it stays on your device. There is no upload, no logging and no stored history, and the page works offline once it has loaded.