Tidy Byte Tools

Small tools that clean up messy data. Fast, and free to try.

Repair broken JSON, hash text, chunk Markdown, convert YAML or XML, and more. People and AI agents can call these tools over HTTPS. Heavy jobs (PDFs, Word files, crawling) are not on this API — those live on our paid Apify actors.

Free: 50 calls per IP each UTC day Free key: 200 calls per key each UTC day 16 KB max per call No paid billing yet

Start in one minute

You do not need a key to try it. Send JSON to any tool:

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/hash -H "Content-Type: application/json" -d '{"text":"hello"}'

Want a higher free cap, or a key for marketplaces? Create one instantly. We show the key once:

curl -sS -X POST https://tidybytetools.tidybytetools.workers.dev/keys -H "Content-Type: application/json" -d '{"label":"my agent"}'

Then send it as Authorization: Bearer tbt_..., or X-Api-Key, or an api_key query parameter. Never put a key in the URL path.

Tools on this API

19 pure-compute endpoints. They run at the edge. They do not fetch other websites or open files like PDFs.

Repair JSON

Fix broken or incomplete JSON, including text from language models.

POST /v1/json-repair

Base64 encode or decode

Turn text into Base64, or Base64 back into text. URL-safe and data URIs work too.

POST /v1/base64

Hash text

SHA-256, SHA-1, MD5, and SHA-512 checksums of text.

POST /v1/hash

Shape text into JSON

Turn key-value lines, CSV, or a Markdown table into clean JSON.

POST /v1/json-shaper

Format or minify JSON

Pretty-print or shrink valid JSON.

POST /v1/json-format

Chunk Markdown

Split Markdown into heading-aware chunks for search and RAG.

POST /v1/md-chunk

Diff two texts

Line-level diff of two strings, plus a unified patch.

POST /v1/text-diff

YAML ↔ JSON

Convert a common YAML subset to JSON, or JSON to YAML.

POST /v1/yaml-json

XML ↔ JSON

Convert XML to JSON, or a JSON object back to XML.

POST /v1/xml-json

Sanitize HTML

Strip scripts and unsafe markup. Keeps a short allow-list of tags.

POST /v1/html-sanitize

Normalize dates

Parse a messy date and convert it to a timezone you choose.

POST /v1/date-timezone

URL encode or decode

Percent-encode or decode a string or query map.

POST /v1/url-codec

Normalize Unicode

NFC, NFD, NFKC, or NFKD normalization, plus a character count.

POST /v1/unicode

Make IDs

Create a UUID, ULID, or NanoID.

POST /v1/id-generate

Decode a JWT

Read a JWT header and payload. This does not check the signature.

POST /v1/jwt-decode

Parse a cron expression

Explain a 5- or 6-field cron string and list the next fire times in UTC.

POST /v1/cron-parse

GTIN / EAN / UPC checksum

Check or fill the check digit on a barcode number.

POST /v1/gtin-checksum

Format SQL

Pretty-print a SQL query. This is a lightweight formatter, not a full SQL parser.

POST /v1/sql-format

Convert units

Convert length, mass, temperature, volume, time, area, speed, and data-size units.

POST /v1/unit-convert

Examples (curl, Python, JavaScript)

Each example is a real request body you can copy. Optional key headers are shown as comments in the Python and JS samples.

Repair JSON /v1/json-repair

Fix broken or incomplete JSON, including text from language models.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/json-repair \
  -H "Content-Type: application/json" \
  -d '{"text":"{name: 'Ada', ok: True,}"}'
Base64 encode or decode /v1/base64

Turn text into Base64, or Base64 back into text. URL-safe and data URIs work too.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/base64 \
  -H "Content-Type: application/json" \
  -d '{"action":"encode","text":"hello"}'
Hash text /v1/hash

SHA-256, SHA-1, MD5, and SHA-512 checksums of text.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/hash \
  -H "Content-Type: application/json" \
  -d '{"text":"hello","algorithms":["sha256","md5"]}'
Shape text into JSON /v1/json-shaper

Turn key-value lines, CSV, or a Markdown table into clean JSON.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/json-shaper \
  -H "Content-Type: application/json" \
  -d '{"text":"name: Ada\nyear: 1815"}'
Format or minify JSON /v1/json-format

Pretty-print or shrink valid JSON.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/json-format \
  -H "Content-Type: application/json" \
  -d '{"text":"{\"a\":1,\"b\":[2,3]}","mode":"pretty"}'
Chunk Markdown /v1/md-chunk

Split Markdown into heading-aware chunks for search and RAG.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/md-chunk \
  -H "Content-Type: application/json" \
  -d '{"text":"# Title\n\nHello.\n\n## Part\n\nMore text.","maxChars":400}'
Diff two texts /v1/text-diff

Line-level diff of two strings, plus a unified patch.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/text-diff \
  -H "Content-Type: application/json" \
  -d '{"a":"one\ntwo\nthree","b":"one\ntwo changed\nthree"}'
YAML ↔ JSON /v1/yaml-json

Convert a common YAML subset to JSON, or JSON to YAML.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/yaml-json \
  -H "Content-Type: application/json" \
  -d '{"direction":"to-json","text":"name: Ada\nyears: [1815, 1852]"}'
XML ↔ JSON /v1/xml-json

Convert XML to JSON, or a JSON object back to XML.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/xml-json \
  -H "Content-Type: application/json" \
  -d '{"direction":"to-json","text":"<person name=\"Ada\"><year>1815</year></person>"}'
Sanitize HTML /v1/html-sanitize

Strip scripts and unsafe markup. Keeps a short allow-list of tags.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/html-sanitize \
  -H "Content-Type: application/json" \
  -d '{"html":"<p>Hello <script>alert(1)</script><a href=\"https://example.com\">link</a></p>"}'
Normalize dates /v1/date-timezone

Parse a messy date and convert it to a timezone you choose.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/date-timezone \
  -H "Content-Type: application/json" \
  -d '{"text":"March 14, 2026 3:00 PM","sourceTimezone":"America/Chicago","targetTimezone":"UTC"}'
URL encode or decode /v1/url-codec

Percent-encode or decode a string or query map.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/url-codec \
  -H "Content-Type: application/json" \
  -d '{"action":"encode","text":"hello world & cats"}'
Normalize Unicode /v1/unicode

NFC, NFD, NFKC, or NFKD normalization, plus a character count.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/unicode \
  -H "Content-Type: application/json" \
  -d '{"text":"café","form":"NFC"}'
Make IDs /v1/id-generate

Create a UUID, ULID, or NanoID.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/id-generate \
  -H "Content-Type: application/json" \
  -d '{"type":"uuid","count":2}'
Decode a JWT /v1/jwt-decode

Read a JWT header and payload. This does not check the signature.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/jwt-decode \
  -H "Content-Type: application/json" \
  -d '{"token":"eyJhbGciOiJub25lIn0.eyJzdWIiOiJhZGEifQ."}'
Parse a cron expression /v1/cron-parse

Explain a 5- or 6-field cron string and list the next fire times in UTC.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/cron-parse \
  -H "Content-Type: application/json" \
  -d '{"expression":"0 9 * * 1-5","count":3}'
GTIN / EAN / UPC checksum /v1/gtin-checksum

Check or fill the check digit on a barcode number.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/gtin-checksum \
  -H "Content-Type: application/json" \
  -d '{"code":"4006381333931","action":"check"}'
Format SQL /v1/sql-format

Pretty-print a SQL query. This is a lightweight formatter, not a full SQL parser.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/sql-format \
  -H "Content-Type: application/json" \
  -d '{"sql":"select id,name from users where active=1 order by name"}'
Convert units /v1/unit-convert

Convert length, mass, temperature, volume, time, area, speed, and data-size units.

curl -sS https://tidybytetools.tidybytetools.workers.dev/v1/unit-convert \
  -H "Content-Type: application/json" \
  -d '{"value":10,"from":"km","to":"mi"}'

For AI agents

Paid per-call billing is not live. An HTTP 402 on /v1/x402/... is a stub so we can add it later. Payouts must reach a US bank. No wallet is set up yet. See pricing.