Data Transformation Recipe Builder: Clean Up JSON, CSV and YAML Locally

Chain the transformations you need, run them in order over one payload and read the per-step trace. Fifteen steps cover JSON, JSONPath, CSV, YAML, Base64, URL encoding, regex, redaction, trimming and line endings, and nothing is sent anywhere.

Runs locally in your browser
1Source 2Steps 3Result Browser-local engine
Pasted data and selected files stay in this browser. Saving a recipe stores only its step configuration in this browser; it never saves your source payload.
01Source payload

Use a local file or paste data. Large files are read directly by the browser and are not sent to VoriTools.

02Recipe steps
Saved recipesconfiguration only · this browser
03Result
Execution traceeach step runs in order
  1. Add or change steps, then run the recipe to see the transformation path.

How to build and run a recipe

Chain up to any number of the fifteen transformations — parse JSON, extract with JSONPath, convert to CSV or YAML, Base64, URL encoding, regex replace, redact secrets, trim — and run them over one payload. Steps run in order, each output becomes the next input, and the trace lists the size before and after every step.

A recipe is configuration, not data: saving, exporting and importing a recipe stores the step list only, never the payload you pasted. The editor opens with a two-step starter recipe (parse JSON, then redact secret values) and everything runs in the browser — no request carries your text.

  1. Paste the payload, or pick a local file (.json, .yaml, .yml, .csv, .tsv, .txt, .log, .ndjson). Load example fills an inventory API response whose apiToken, dbPassword and authorization header are ready to be masked.
  2. Choose a transformation and press Add step. The options of the selected step appear underneath it: JSONPath, CSV delimiter, regex pattern / replacement / flags, or the list of sensitive key names. Move step up and Move step down reorder the chain.
  3. Press Run recipe. Every step receives the previous output; the first failing step stops the run, names the step number and shows the reason, and the output keeps the result of the step before it.
  4. Read the execution trace for the byte count of each step, then take the result with Copy output or Download output (kivtools-data-recipe-output.txt, written by the browser).
  5. Type a name and press Save recipe to keep the step list in this browser, or Export recipe to write kivtools-data-recipe.json. Load and Import restore the steps and leave the source field untouched.

What each transformation does

JSON steps: pretty-print, sort, JSONPath

Parse and pretty-print validates the document with the browser parser and re-indents it with two spaces; malformed input stops the run with that parser message. Sort JSON object keys sorts keys alphabetically at every level and leaves array order exactly as it was.

Extract with JSONPath reads fields, indexes, [*] and recursive fields such as $..token. The result is always a JSON array: one match returns a one-element array, no match returns []. Any other JSONPath syntax is refused with a message instead of guessing.

CSV, YAML and line steps

Convert JSON array to CSV needs a top-level array of objects. The header is the union of the keys in the order they first appear, a missing value becomes an empty cell, and a value containing a comma, quote or line break is quoted. Nested objects and arrays are written as JSON text inside the cell.

Convert CSV to JSON detects comma, semicolon or tab from the first non-empty line, keeps every value as text (no type guessing), drops empty rows, and renames duplicate or missing headers — two a columns become a and a_2, an unnamed column becomes column_3.

Convert YAML to JSON is a small local parser: plain mappings, lists, inline [1, 2], quoted strings and comments work; block scalars written with | or > come back as the literal text [multiline scalar], anchors and aliases are not supported, a tab in the indentation is refused, and the --- and ... markers are ignored, so a two-document file merges into one object. Convert JSON to YAML quotes every string value and any key that is not a plain name. Trim removes whitespace only at the two ends of the text, and Normalize line endings turns CRLF and CR into LF.

Encoding, URL and masking steps

Base64 encode works on UTF-8, so accents and emoji survive the round trip; Base64 decode skips line breaks, accepts the URL-safe - and _ characters and reports invalid Base64 instead of returning garbage. URL encode percent-encodes the whole value; URL decode turns + into a space and reports a malformed escape rather than passing it through.

Regex find & replace uses JavaScript regular expressions with the flags you type; g replaces every match and an empty flags field replaces only the first, and $1 backreferences work. An invalid pattern stops the run with the engine message. Redact secret values matches object keys case-insensitively and by fragment — the default list is password, secret, token, apiKey, authorization, credential — and replaces the value with [REDACTED]; when the input is not JSON it masks key=value and key: value pairs in plain text. A failing match is not reported: the step only changes what it recognises.

Limits and storage

Numbers go through the browser JSON parser, so an integer beyond 15–16 significant digits is rounded: 12345678901234567890 comes back as 12345678901234567000. CSV to JSON never converts "5" into a number, and JSON to CSV refuses anything that is not an array of objects.

Saved recipes live in this browser storage under the key kivtools.datarecipe.recipes.v1 and hold steps only. Saving the same name twice replaces the earlier entry; the editor itself resets to the two-step starter recipe when you reload the page.

Recent tools: