Transform
Build data transformation recipes.
Transform tool lets you build data transform recipes to quickly encode and decode any input data in a selection of formats. It easily integrates with other tools to quickly transform body data in any message editor. Think of it like CyberChef that’s integrated right into Proxygen app.
Operations
The operations list at is the working chain that is applied to the Input view, top to bottom, to produce the Output. Pick operations, then drag and drop rows to reorder them.
Each operation has a checkbox that enables or disables it in the chain. This makes it easy to try different combinations without losing operations you’ve added — useful when figuring out the correct encoding for data of unknown format.
Operations like String Replace, JSONPath or HMAC SHA256 Keyed Hash have configurable parameters. Click the Edit button or press Enter to open the editor sheet for the selected operation.
The following operations are currently available, grouped by what they do. New operations get added over time.
Encoding & decoding
| Name | Description |
|---|---|
| URL Decode | Replace %XX escapes with the decoded byte. |
| URL Encode | Escape non-alphanumeric bytes as %XX. |
| Base64 Decode | Decode Base64 text back to its raw bytes. |
| Base64 Encode | Encode raw bytes as Base64 text. |
| Base64URL Decode | Decode URL-safe Base64 text into bytes. |
| Base64URL Encode | Encode bytes as URL-safe Base64 using - and _. |
| ASCII Hex Decode | Read pairs of hex digits as bytes. |
| ASCII Hex Encode | Render bytes as a hex digit string. |
| JSON Escape | Escape characters for embedding in a JSON string literal. |
| HTML Escape | Replace &, <, >, ", ' with HTML entities. |
| HTML Unescape | Replace HTML entities with their characters. |
| Unicode Escape | Escape non-ASCII characters as \uXXXX sequences. |
Formatting & extraction
| Name | Description |
|---|---|
| JSON Pretty Print | Reformat JSON with line breaks and indentation. |
| JSONPath | Extract a value from JSON using a JSONPath query. |
| XML Pretty Print | Reformat XML with line breaks and indentation. |
| XPath | Extract a value from XML using an XPath query. |
String operations
| Name | Description |
|---|---|
| Lowercase | Convert text to lowercase. |
| Uppercase | Convert text to uppercase. |
| Add Prefix | Prepend a string to the text. |
| Add Suffix | Append a string to the text. |
| String Replace | Replace all occurrences of a string with another. |
| Regex Replace | Replace matches of a regular expression. |
Hashing
| Name | Description |
|---|---|
| MD5 Hash | Compute the MD5 hash of the bytes. |
| SHA1 Hash | Compute the SHA-1 hash of the bytes. |
| SHA256 Hash | Compute the SHA-256 hash of the bytes. |
| SHA384 Hash | Compute the SHA-384 hash of the bytes. |
| SHA512 Hash | Compute the SHA-512 hash of the bytes. |
| HMAC SHA256 Keyed Hash | HMAC-SHA256 keyed hash with the given hex key. |
| HMAC SHA512 Keyed Hash | HMAC-SHA512 keyed hash with the given hex key. |
Compression
| Name | Description |
|---|---|
| Dechunk | Unwrap HTTP chunked transfer-encoding framing. |
| Gzip Decompress | Decompress a Gzip stream. |
| Gzip Compress | Compress bytes as Gzip. |
| Deflate Decompress | Decompress a zlib/Deflate stream. |
| Deflate Compress | Compress bytes as zlib/Deflate. |
| Brotli Decompress | Decompress a Brotli stream. |
| Brotli Compress | Compress bytes as Brotli. |
| Zstandard Decompress | Decompress a Zstandard stream. |
| Zstandard Compress | Compress bytes as Zstandard. |
Binary format decoders
These operations decode their input for display rather than transforming the bytes. When placed last in the chain, the result is rendered as a tree in the output view.
| Name | Description |
|---|---|
| Amazon Ion Decode | Render Amazon Ion bytes as a tree. |
| BSON Decode | Render BSON bytes as a tree. |
| CBOR Decode | Render CBOR bytes as a tree. |
| FlexBuffers Decode | Render FlexBuffers bytes as a tree. |
| gRPC Decode | Render the gRPC frame’s protobuf payload as a tree. |
| Keyed Archive Decode | Render an NSKeyedArchiver archive as a tree. |
| MessagePack Decode | Render MessagePack bytes as a tree. |
| Property List Decode | Render a binary property list as a tree. |
| Protobuf Decode | Render Protocol Buffer bytes as a tree. |
| Smile Decode | Render Smile-encoded bytes as a tree. |
| Thrift Decode | Render Thrift binary or compact bytes as a tree. |
| UBJSON Decode | Render UBJSON bytes as a tree. |
Auto decode
Click the Decode button (or press ⇧⌘D) below the operations list to let Proxygen find a decoding chain automatically. It inspects the input bytes — looking for Base64, URL encoding, HTML entities, chunked transfer framing, ASCII hex, and Gzip / Zstandard / Deflate / Brotli signatures — then recurses through the plausible decoders until it reaches a recognised structured format (JSON, XML, Protobuf, etc.).
The detected chain replaces the contents of the operations list. Make further adjustments to the recipe manually if necessary.
Recipe library
Below the operations list is the recipe library — saved snapshots of transform recipes that you can recall at any time. Recipes are organised into folders so you can keep related ones together.
Click + to save a snapshot of the current operations chain as a new recipe in the library. The saved entry is a copy: later edits to the working chain don’t affect it. Press Enter to rename a recipe or folder.
Selecting a recipe in the library loads its operations into the working chain.
Assign a keyboard shortcut to a recipe in the Shortcut column so you can quickly encode or decode selected text in the Editor tool.
Input and output
Only the Input view is editable. Type any text there and the current operations chain is applied in real time, with the result shown in the Output view. Toggling operations or editing parameters instantly updates the output.
Use ⌘R and ⇧⌘R keyboard shortcuts to transform request or response body data in the History tool. Paste data into the Input view using the Paste from clipboard toolbar button.
Click Insert to select a file and insert its data in the input view. The input view automatically switches to a hex viewer for non-textual data. You can also pick Hex bytes as the Preferred input mode in the bottom accessory bar to always edit input data as hex.
You can save the current contents of the output view to a file using the Save button. Note that you can select a range of bytes to be saved in the hex viewer. Switch the input/output split between vertical and horizontal layouts from the toolbar.