Tools API Reference
Every utility under /tools documented per-endpoint: parameters, curl examples and response shapes. Machine-readable version: OpenAPI 3.1 · Interactive overview: /docs/api.
Conventions
POST /api/v1/tools/:slug with a JSON body. No authentication required (public utilities).
- Rate limit: 60 requests/min per IP →
429+Retry-After - Input ceiling: 64 KB →
413 PAYLOAD_TOO_LARGE - Errors: RFC 9457
application/problem+jsonbodies - Unknown slug →
404 NOT_FOUND(no echo mock)
ALL TOOLS AT A GLANCE
| Tool | Category | Server API | Reference |
|---|---|---|---|
| Base64 Textbase64-text | Encoding | POST /api/v1/tools/base64-text | contract ↓ |
| Base64 Filebase64-file | Encoding | browser-only | why ↓ |
| JSON Validatorjson-validator | Validation | POST /api/v1/tools/json-validator | contract ↓ |
| XML Validatorxml-validator | Validation | browser-only | why ↓ |
| Text Comparisontext-diff | Text | POST /api/v1/tools/text-diff | contract ↓ |
| JSON / XML Converterjson-xml | Conversion | browser-only | why ↓ |
| CSV Convertercsv-converter | Conversion | browser-only | why ↓ |
| JSON Formatterjson-formatter | Formatting | POST /api/v1/tools/json-formatter | contract ↓ |
| URL Encoderurl-encoder | Formatting | POST /api/v1/tools/url-encoder | contract ↓ |
| Password Generatorpassword-generator | Generators | POST /api/v1/tools/password-generator | contract ↓ |
| Hash Calculatorhash-calculator | Generators | POST /api/v1/tools/hash-calculator | contract ↓ |
| UUID Generatoruuid-generator | Generators | POST /api/v1/tools/uuid-generator | contract ↓ |
| Random Stringrandom-string | Generators | POST /api/v1/tools/random-string | contract ↓ |
| Unix Timestampunix-timestamp | Generators | POST /api/v1/tools/unix-timestamp | contract ↓ |
| JWT Decoderjwt-decoder | Web | POST /api/v1/tools/jwt-decoder | contract ↓ |
| Regex Testerregex-tester | Web | POST /api/v1/tools/regex-tester | contract ↓ |
| HTML Escapehtml-escape | IT Ops | POST /api/v1/tools/html-escape | contract ↓ |
| String Lengthstring-length | IT Ops | POST /api/v1/tools/string-length | contract ↓ |
| Case Convertercase-converter | IT Ops | POST /api/v1/tools/case-converter | contract ↓ |
| SQL Formattersql-formatter | IT Ops | browser-only | why ↓ |
| Credit Card Validatorcredit-card-validator | IT Ops | POST /api/v1/tools/credit-card-validator | contract ↓ |
| IP Validatorip-validator | IT Ops | POST /api/v1/tools/ip-validator | contract ↓ |
| MAC Validatormac-validator | IT Ops | POST /api/v1/tools/mac-validator | contract ↓ |
| Lorem Ipsumlorem-generator | IT Ops | POST /api/v1/tools/lorem-generator | contract ↓ |
| Checksum Calculatorchecksum | IT Ops | POST /api/v1/tools/checksum | contract ↓ |
| QR Generatorqr-generator | IT Ops | POST /api/v1/tools/qr-generator | contract ↓ |
| UTM Builderutm-builder | Marketing | POST /api/v1/tools/utm-builder | contract ↓ |
| Link Checkerlink-checker | Marketing | browser-only | why ↓ |
| What Is My IPwhat-is-my-ip | Network | POST /api/v1/tools/what-is-my-ip | contract ↓ |
| My IP (plain)ip | Network | POST /api/v1/tools/ip | contract ↓ |
| DNS Lookupdns-lookup | Network | POST /api/v1/tools/dns-lookup | contract ↓ |
| IP Subnet Calculatorip-subnet-calculator | Network | POST /api/v1/tools/ip-subnet-calculator | contract ↓ |
| TLS Analyzertls-analyzer | Network | POST /api/v1/tools/tls-analyzer | contract ↓ |
| DANE / TLSAdane-tlsa | Network | POST /api/v1/tools/dane-tlsa | contract ↓ |
| SPF Inspectorspf-inspector | Email Security | POST /api/v1/tools/spf-inspector | contract ↓ |
| DMARC Inspectordmarc-inspector | Email Security | POST /api/v1/tools/dmarc-inspector | contract ↓ |
| DKIM Inspectordkim-inspector | Email Security | POST /api/v1/tools/dkim-inspector | contract ↓ |
| MX Healthmx-health | Email Security | POST /api/v1/tools/mx-health | contract ↓ |
| MTA-STS & TLS-RPTmta-sts-tlsrpt | Email Security | POST /api/v1/tools/mta-sts-tlsrpt | contract ↓ |
| URL Parserurl-parser | Web | POST /api/v1/tools/url-parser | contract ↓ |
| HTTP Status Codeshttp-status-codes | Web | POST /api/v1/tools/http-status-codes | contract ↓ |
| Cron Parsercron-parser | Web | POST /api/v1/tools/cron-parser | contract ↓ |
| Color Convertercolor-converter | Conversion | POST /api/v1/tools/color-converter | contract ↓ |
| Number Base Converternumber-base-converter | Conversion | POST /api/v1/tools/number-base-converter | contract ↓ |
| Markdown → HTMLmarkdown-to-html | Conversion | POST /api/v1/tools/markdown-to-html | contract ↓ |
| CSV → JSONcsv-to-json | Conversion | POST /api/v1/tools/csv-to-json | contract ↓ |
| Slug Generatorslug-generator | Text | POST /api/v1/tools/slug-generator | contract ↓ |
| Text Sortertext-sorter | Text | POST /api/v1/tools/text-sorter | contract ↓ |
| Readability Scorereadability-score | Text | POST /api/v1/tools/readability-score | contract ↓ |
| chmod Calculatorchmod-calculator | IT Ops | POST /api/v1/tools/chmod-calculator | contract ↓ |
| Date Differencedate-difference | IT Ops | POST /api/v1/tools/date-difference | contract ↓ |
| Password Strengthpassword-strength | Security | POST /api/v1/tools/password-strength | contract ↓ |
SERVER TOOL CONTRACTS
Base64 Text
base64-textPOST /api/v1/tools/base64-textEncode or decode a UTF-8 string with Base64.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Text to transform (≤ 64 KB) |
| mode | "encode" | "decode" | "encode" | Direction |
curl -X POST https://yas.sh/api/v1/tools/base64-text \
-H "Content-Type: application/json" \
-d '{"input":"hello world","mode":"encode"}'{ "slug": "base64-text", "result": "aGVsbG8gd29ybGQ=", "mode": "encode" }Hash Calculator
hash-calculatorPOST /api/v1/tools/hash-calculatorCryptographic digest of a string.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Text to hash (≤ 64 KB) |
| algo | string | "sha256" | One of md5, sha1, sha256, sha384, sha512 |
curl -X POST https://yas.sh/api/v1/tools/hash-calculator \
-H "Content-Type: application/json" \
-d '{"input":"hello","algo":"md5"}'{ "slug": "hash-calculator", "algo": "md5", "result": "5d41402abc4b2a76b9719d911017c592" }Checksum Calculator
checksumPOST /api/v1/tools/checksumIdentical to hash-calculator (checksum semantics).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Text to checksum (≤ 64 KB) |
| algo | string | "sha256" | md5 | sha1 | sha256 | sha384 | sha512 |
curl -X POST https://yas.sh/api/v1/tools/checksum \
-H "Content-Type: application/json" \
-d '{"input":"hello","algo":"sha1"}'{ "slug": "checksum", "algo": "sha1", "result": "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d" }UUID Generator
uuid-generatorPOST /api/v1/tools/uuid-generatorGenerate 1–50 random UUIDs (v4).
| Parameter | Type | Default | Description |
|---|---|---|---|
| count | integer | 1 | How many (1–50) |
curl -X POST https://yas.sh/api/v1/tools/uuid-generator \
-H "Content-Type: application/json" \
-d '{"count":2}'{ "slug": "uuid-generator", "count": 2, "result": ["<uuid>", "<uuid>"] }URL Encoder
url-encoderPOST /api/v1/tools/url-encoderPercent-encode / percent-decode a string.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Text or URL fragment |
| mode | "encode" | "decode" | "encode" | Direction |
curl -X POST https://yas.sh/api/v1/tools/url-encoder \
-H "Content-Type: application/json" \
-d '{"input":"a b&c=d","mode":"encode"}'{ "slug": "url-encoder", "result": "a%20b%26c%3Dd", "mode": "encode" }Case Converter
case-converterPOST /api/v1/tools/case-converterConvert text between naming conventions.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Source text |
| mode | string | "upper" | upper | lower | title | camel | pascal | snake | kebab |
curl -X POST https://yas.sh/api/v1/tools/case-converter \
-H "Content-Type: application/json" \
-d '{"input":"hello world","mode":"kebab"}'{ "slug": "case-converter", "result": "hello-world", "mode": "kebab" }HTML Escape
html-escapePOST /api/v1/tools/html-escapeEscape or unescape HTML entities (& < > " ').
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | HTML or plain text |
| mode | "encode" | "decode" | "encode" | Direction |
curl -X POST https://yas.sh/api/v1/tools/html-escape \
-H "Content-Type: application/json" \
-d '{"input":"<b>hi</b>","mode":"encode"}'{ "slug": "html-escape", "result": "<b>hi</b>", "mode": "encode" }String Length
string-lengthPOST /api/v1/tools/string-lengthCount characters (code points), bytes, words and lines.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Any text |
curl -X POST https://yas.sh/api/v1/tools/string-length \
-H "Content-Type: application/json" \
-d '{"input":"héllo\nworld"}'{ "slug": "string-length", "result": { "chars": 11, "bytes": 12, "words": 2, "lines": 2 } }JSON Validator
json-validatorPOST /api/v1/tools/json-validatorValidate JSON syntax; returns the parser error if invalid.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | JSON text |
curl -X POST https://yas.sh/api/v1/tools/json-validator \
-H "Content-Type: application/json" \
-d '{"input":"{\"a\":}"}'{ "slug": "json-validator", "valid": false, "error": "..." }JSON Formatter
json-formatterPOST /api/v1/tools/json-formatterBeautify (2-space indent) or minify JSON.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | JSON text |
| mode | "beautify" | "minify" | "beautify" | Direction |
curl -X POST https://yas.sh/api/v1/tools/json-formatter \
-H "Content-Type: application/json" \
-d '{"input":"{\"a\":1,\"b\":[2,3]}","mode":"minify"}'{ "slug": "json-formatter", "result": "{\"a\":1,\"b\":[2,3]}", "mode": "minify" }Password Generator
password-generatorPOST /api/v1/tools/password-generatorCSPRNG passwords, 8–128 chars, optional alnum-only sets.
| Parameter | Type | Default | Description |
|---|---|---|---|
| length | integer | 20 | 8–128 |
| count | integer | 1 | 1–10 passwords |
| mode | "full" | "alnum" | "full" | Charset (full includes symbols, unambiguous alnum) |
curl -X POST https://yas.sh/api/v1/tools/password-generator \
-H "Content-Type: application/json" \
-d '{"length":24,"count":1}'{ "slug": "password-generator", "length": 24, "result": "<password>" }Random String
random-stringPOST /api/v1/tools/random-stringRandom string from a named charset.
| Parameter | Type | Default | Description |
|---|---|---|---|
| length | integer | 16 | 1–256 |
| mode | string | "alnum" | alnum | alpha | numeric | hex |
curl -X POST https://yas.sh/api/v1/tools/random-string \
-H "Content-Type: application/json" \
-d '{"length":32,"mode":"hex"}'{ "slug": "random-string", "length": 32, "charset": "hex", "result": "<hex>" }Unix Timestamp
unix-timestampPOST /api/v1/tools/unix-timestampConvert a unix timestamp (s/ms) ↔ ISO/UTC date.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | e.g. 1754500000, 1754500000000, or an ISO date (blank = now) |
curl -X POST https://yas.sh/api/v1/tools/unix-timestamp \
-H "Content-Type: application/json" \
-d '{"input":"1754500000"}'{ "slug": "unix-timestamp", "result": { "unix": 1754500000, "iso": "2025-08-06T18:26:40.000Z", "utc": "..." } }JWT Decoder
jwt-decoderPOST /api/v1/tools/jwt-decoderDecode a JWT header & payload (NO signature verification — explicitly flagged).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | The 3-segment token |
curl -X POST https://yas.sh/api/v1/tools/jwt-decoder \
-H "Content-Type: application/json" \
-d '{"input":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.sig"}'{ "slug": "jwt-decoder", "result": { "header": {...}, "payload": {...} }, "warning": "Decoded WITHOUT signature verification" }Regex Tester
regex-testerPOST /api/v1/tools/regex-testerTest a regex against a string (ReDoS-guarded, max 100 matches).
| Parameter | Type | Default | Description |
|---|---|---|---|
| pattern* | string | — | ≤ 500 chars; nested-quantifier patterns rejected |
| text* | string | — | Test string (≤ 10 KB) |
| flags | string | "g" | Subset of d g i m s u v y |
curl -X POST https://yas.sh/api/v1/tools/regex-tester \
-H "Content-Type: application/json" \
-d '{"pattern":"(\\w+)@(\\w+)","text":"hello there world","flags":"g"}'{ "slug": "regex-tester", "count": 2, "truncated": false, "result": [{ "match": "o t", "index": 4 }, ...] }IP Validator
ip-validatorPOST /api/v1/tools/ip-validatorValidate IPv4 / IPv6 addresses.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | e.g. 192.168.1.1 or ::1 |
curl -X POST https://yas.sh/api/v1/tools/ip-validator \
-H "Content-Type: application/json" \
-d '{"input":"192.168.1.1"}'{ "slug": "ip-validator", "result": { "input": "192.168.1.1", "valid": true, "version": 4 } }MAC Validator
mac-validatorPOST /api/v1/tools/mac-validatorValidate MAC addresses (colon/hyphen/plain forms).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | e.g. 00:1B:44:11:3A:B7 |
curl -X POST https://yas.sh/api/v1/tools/mac-validator \
-H "Content-Type: application/json" \
-d '{"input":"00:1B:44:11:3A:B7"}'{ "slug": "mac-validator", "result": { "input": "00:1B:44:11:3A:B7", "valid": true } }Credit Card Validator
credit-card-validatorPOST /api/v1/tools/credit-card-validatorLuhn checksum + scheme detection (NOT an existence check).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Digits; spaces/dashes tolerated |
curl -X POST https://yas.sh/api/v1/tools/credit-card-validator \
-H "Content-Type: application/json" \
-d '{"input":"4242 4242 4242 4242"}'{ "slug": "credit-card-validator", "result": { "valid": true, "scheme": "visa", "note": "Luhn checksum only" } }Lorem Ipsum
lorem-generatorPOST /api/v1/tools/lorem-generator1–10 paragraphs of lorem ipsum.
| Parameter | Type | Default | Description |
|---|---|---|---|
| count | integer | 3 | Paragraphs (1–10) |
curl -X POST https://yas.sh/api/v1/tools/lorem-generator \
-H "Content-Type: application/json" \
-d '{"count":1}'{ "slug": "lorem-generator", "paragraphs": 1, "result": "Lorem ipsum ..." }QR Generator
qr-generatorPOST /api/v1/tools/qr-generatorRender a QR code for an http/https URL as a PNG data-URL.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | http/https URL (≤ 2048 chars) |
| size | integer | 512 | 128–1024 px |
curl -X POST https://yas.sh/api/v1/tools/qr-generator \
-H "Content-Type: application/json" \
-d '{"input":"https://yas.sh","size":256}'{ "slug": "qr-generator", "result": "data:image/png;base64,..." }UTM Builder
utm-builderPOST /api/v1/tools/utm-builderAppend UTM parameters to a base URL.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Base http/https URL |
| params.utm_source | string | — | ≤ 200 chars |
| params.utm_medium | string | — | ≤ 200 chars |
| params.utm_campaign | string | — | ≤ 200 chars |
| params.utm_term | string | — | ≤ 200 chars |
| params.utm_content | string | — | ≤ 200 chars |
curl -X POST https://yas.sh/api/v1/tools/utm-builder \
-H "Content-Type: application/json" \
-d '{"input":"https://yas.sh/pricing","params":{"utm_source":"newsletter","utm_medium":"email","utm_campaign":"launch"}}'{ "slug": "utm-builder", "result": "https://yas.sh/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=launch" }Text Comparison
text-diffPOST /api/v1/tools/text-diffLine-based diff (LCS) between two texts (≤ 2,000 lines each).
| Parameter | Type | Default | Description |
|---|---|---|---|
| a* | string | — | Left text (≤ 50 KB) |
| b* | string | — | Right text (≤ 50 KB) |
curl -X POST https://yas.sh/api/v1/tools/text-diff \
-H "Content-Type: application/json" \
-d '{"a":"one\ntwo","b":"one\nthree"}'{ "slug": "text-diff", "added": 1, "removed": 1, "unchanged": 1, "result": [{ "op": " ", "line": "one" }, ...] }My IP (plain)
ipPOST /api/v1/tools/ipYour public IP address and nothing else — also available as plain text via GET.
| Parameter | Type | Default | Description |
|---|---|---|---|
| ip | string | — | Optional specific IP to look up (defaults to your own). |
curl -X POST https://yas.sh/api/v1/tools/ip \
-H "Content-Type: application/json" \
-d '{}'{ "slug": "ip", "result": "8.8.8.8" } // GET returns bare text: 8.8.8.8What Is My IP
what-is-my-ipPOST /api/v1/tools/what-is-my-ipYour public IP with ASN, ISP, geo and VPN/Tor hints (ipinfo-style). No key needed.
| Parameter | Type | Default | Description |
|---|---|---|---|
| ip | string | — | Optional specific IP to look up (defaults to your own via X-Real-IP / X-Forwarded-For). Also supported as ?ip= on GET. |
curl -X POST https://yas.sh/api/v1/tools/what-is-my-ip \
-H "Content-Type: application/json" \
-d '{}'{ "result": { "ip": "1.2.3.4", "ipv4": "1.2.3.4", "asn": "AS13335", "asName": "Cloudflare", "org": "Cloudflare", "city": "Lisbon", "region": "Lisbon", "country": "PT", "loc": "38.7167,-9.1333", "timezone": "Europe/Lisbon", "isVpn": null, "isTor": null } }DNS Lookup
dns-lookupPOST /api/v1/tools/dns-lookupResolve A, AAAA, MX, TXT, NS, CNAME, SOA records for a domain (TTLs included).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Domain, e.g. example.com (no scheme, no IP literals) |
| type | string | "all" | all | A | AAAA | MX | TXT | NS | CNAME | SOA |
curl -X POST https://yas.sh/api/v1/tools/dns-lookup \
-H "Content-Type: application/json" \
-d '{"input":"yas.sh"}'{ "result": { "domain": "yas.sh", "A": [{ "address": "93.184.216.34", "ttl": 300 }], "MX": [{ "priority": 10, "exchange": "mx1.example.com" }], ... } }IP Subnet Calculator
ip-subnet-calculatorPOST /api/v1/tools/ip-subnet-calculatorIPv4 CIDR math: network, broadcast, netmask, usable hosts.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | CIDR, e.g. 192.168.1.0/24 |
curl -X POST https://yas.sh/api/v1/tools/ip-subnet-calculator \
-H "Content-Type: application/json" \
-d '{"input":"192.168.1.0/24"}'{ "result": { "valid": true, "network": "192.168.1.0", "broadcast": "192.168.1.255", "mask": "255.255.255.0", "hosts": 254, "prefix": 24 } }TLS Analyzer
tls-analyzerPOST /api/v1/tools/tls-analyzerFull TLS audit of a host: cert chain, expiry, SANs, protocol, cipher, OCSP stapling + HSTS header.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Hostname, e.g. yas.sh (port via :443 form allowed) |
curl -X POST https://yas.sh/api/v1/tools/tls-analyzer \
-H "Content-Type: application/json" \
-d '{"input":"yas.sh"}'{ "result": { "authorized": true, "expiresInDays": 89, "sans": [...], "hsts": { "present": true, "maxAge": 63072000, "includeSubDomains": true, "preload": true }, ... } }DANE / TLSA
dane-tlsaPOST /api/v1/tools/dane-tlsaValidate DANE TLSA records (_port._tcp.domain) against the live TLS certificate.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Hostname, e.g. example.com |
| port | integer | 443 | Service port (default 443) |
| proto | string | "tcp" | tcp | udp |
curl -X POST https://yas.sh/api/v1/tools/dane-tlsa \
-H "Content-Type: application/json" \
-d '{"input":"example.com","port":443,"proto":"tcp"}'{ "result": { "records": [{ "raw": "3 1 1 abc...", "usage": 3, "selector": 1, "matchingType": 1, "match": true }], "cert": { "subject": "...", "expiresInDays": 120 } } }SPF Inspector
spf-inspectorPOST /api/v1/tools/spf-inspectorParse SPF (v=spf1): mechanisms, DNS-lookup count vs the 10 limit, ~all/-all, flattened IP count.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Domain, e.g. example.com |
curl -X POST https://yas.sh/api/v1/tools/spf-inspector \
-H "Content-Type: application/json" \
-d '{"input":"example.com"}'{ "result": { "record": "v=spf1 ip4:1.2.3.4 include:_spf.example.com ~all", "lookupCount": 2, "lookupLimit": 10, "hasAll": true, "allValue": "~all", "permError": false, "flattenedIps": 6, "tree": [...] } }DMARC Inspector
dmarc-inspectorPOST /api/v1/tools/dmarc-inspectorFetch and validate _dmarc.<domain> TXT: policy badge, alignment, pct, rua/ruf.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Domain, e.g. example.com |
curl -X POST https://yas.sh/api/v1/tools/dmarc-inspector \
-H "Content-Type: application/json" \
-d '{"input":"example.com"}'{ "result": { "found": true, "record": "v=DMARC1; p=reject; rua=mailto:dmarc@example.com", "policy": "reject", "subdomainPolicy": null, "pct": 100, "adkim": "r", "aspf": "r", "rua": ["dmarc@example.com"], "valid": true, "issues": [] } }DKIM Inspector
dkim-inspectorPOST /api/v1/tools/dkim-inspectorValidate <selector>._domainkey.<domain> TXT: v=DKIM1, k=rsa, key length, t= flags.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Domain, e.g. example.com |
| selector | string | "selector1" | DKIM selector |
curl -X POST https://yas.sh/api/v1/tools/dkim-inspector \
-H "Content-Type: application/json" \
-d '{"input":"example.com","selector":"selector1"}'{ "result": { "found": true, "record": "v=DKIM1; k=rsa; p=MIIB...", "keyLength": 2048, "flags": [], "valid": true } }MX Health
mx-healthPOST /api/v1/tools/mx-healthMX audit: priorities, A/AAAA resolution, STARTTLS-era port-25 probe, null MX (RFC 7505), duplicates.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Domain, e.g. example.com |
curl -X POST https://yas.sh/api/v1/tools/mx-health \
-H "Content-Type: application/json" \
-d '{"input":"example.com"}'{ "result": { "nullMx": false, "hosts": [{ "preference": 10, "exchange": "mx1.example.com", "ips": ["93.184.216.34"], "port25": { "open": true } }], "duplicatePriorities": [], "issues": [] } }MTA-STS & TLS-RPT
mta-sts-tlsrptPOST /api/v1/tools/mta-sts-tlsrptMTA-STS (mta-sts TXT + /.well-known/mta-sts.txt) and TLS-RPT (_smtp._tls TXT) validation.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Domain, e.g. example.com |
curl -X POST https://yas.sh/api/v1/tools/mta-sts-tlsrpt \
-H "Content-Type: application/json" \
-d '{"input":"example.com"}'{ "result": { "stsTxt": { "found": true, "id": "20260808", "valid": true }, "policy": { "found": true, "mode": "enforce", "maxAge": 86400, "mx": ["mx1.example.com"] }, "tlsrpt": { "found": true, "rua": ["tlsrpt@example.com"] }, "issues": [] } }URL Parser
url-parserPOST /api/v1/tools/url-parserSplit any URL into protocol, auth, host, port, path, query (parsed), hash + origin.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Any URL |
curl -X POST https://yas.sh/api/v1/tools/url-parser \
-H "Content-Type: application/json" \
-d '{"input":"https://user:pass@example.com:8443/a/b?q=1#frag"}'{ "result": { "protocol": "https:", "host": "example.com:8443", "hostname": "example.com", "port": "8443", "pathname": "/a/b", "query": { "q": "1" }, "hash": "#frag", "origin": "https://example.com:8443" } }HTTP Status Codes
http-status-codesPOST /api/v1/tools/http-status-codesLook up HTTP status codes by number or by searching names/classes.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | e.g. 404, or text like "gone" / "2xx" |
curl -X POST https://yas.sh/api/v1/tools/http-status-codes \
-H "Content-Type: application/json" \
-d '{"input":"404"}'{ "result": { "match": { "code": 404, "name": "Not Found", "class": "4xx Client Error", "meaning": "...", "useWhen": "..." } } }Cron Parser
cron-parserPOST /api/v1/tools/cron-parserParse a 5/6-field cron expression and compute the next 5 run times (UTC).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Cron expression, e.g. */15 * * * * |
| count | integer | 5 | 1–10 next runs |
curl -X POST https://yas.sh/api/v1/tools/cron-parser \
-H "Content-Type: application/json" \
-d '{"input":"*/15 * * * *"}'{ "result": { "valid": true, "expression": "*/15 * * * *", "next": ["2026-08-08T12:15:00.000Z", ...] } }Color Converter
color-converterPOST /api/v1/tools/color-converterConvert a color to HEX / RGB / HSL / CMYK / HSV + WCAG contrast ratios.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | #hex, rgb(), hsl(), or basic color name |
curl -X POST https://yas.sh/api/v1/tools/color-converter \
-H "Content-Type: application/json" \
-d '{"input":"#6366f1"}'{ "result": { "hex": "#6366f1", "rgb": "rgb(99, 102, 241)", "hsl": "hsl(239, 84%, 67%)", "contrastWhite": 4.87, "bestText": "white" } }Number Base Converter
number-base-converterPOST /api/v1/tools/number-base-converterConvert numbers between bases 2–36 (BigInt, arbitrary precision).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Value in the source base |
| from | integer | 10 | Source base (2–36) |
| to | integer | 16 | Target base (2–36) |
curl -X POST https://yas.sh/api/v1/tools/number-base-converter \
-H "Content-Type: application/json" \
-d '{"input":"255","from":10,"to":16}'{ "result": { "input": "255", "from": 10, "to": 16, "value": "ff" } }Markdown → HTML
markdown-to-htmlPOST /api/v1/tools/markdown-to-htmlRender Markdown to sanitized HTML (marked + sanitize-html allow-list, XSS-safe).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Markdown (≤ 64 KB) |
curl -X POST https://yas.sh/api/v1/tools/markdown-to-html \
-H "Content-Type: application/json" \
-d '{"input":"# Hello\n\n**bold**"}'{ "result": "<h1>Hello</h1>\n<p><strong>bold</strong></p>" }CSV → JSON
csv-to-jsonPOST /api/v1/tools/csv-to-jsonParse CSV (quoted fields, headers) into a JSON array.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | CSV text (≤ 64 KB, ≤ 5,000 rows) |
| delimiter | string | "," | Field delimiter |
| hasHeader | boolean | true | First row = keys |
curl -X POST https://yas.sh/api/v1/tools/csv-to-json \
-H "Content-Type: application/json" \
-d '{"input":"name,age\nAnna,30\nBob,25"}'{ "result": { "rows": [{ "name": "Anna", "age": "30" }], "count": 2, "columns": ["name", "age"] } }Slug Generator
slug-generatorPOST /api/v1/tools/slug-generatorTurn any text into a URL-safe slug (transliterates Latin accents).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Source text |
| separator | string | "-" | Word separator |
| maxLength | integer | 80 | Output cap |
curl -X POST https://yas.sh/api/v1/tools/slug-generator \
-H "Content-Type: application/json" \
-d '{"input":"Hello, World! 2026"}'{ "result": "hello-world-2026" }Text Sorter
text-sorterPOST /api/v1/tools/text-sorterSort lines ascending / descending / natural, dedupe, or shuffle (CSPRNG).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Multi-line text |
| mode | string | "asc" | asc | desc | natural | unique | shuffle |
curl -X POST https://yas.sh/api/v1/tools/text-sorter \
-H "Content-Type: application/json" \
-d '{"input":"b\na\nc","mode":"asc"}'{ "result": "a\nb\nc" }Readability Score
readability-scorePOST /api/v1/tools/readability-scoreFlesch Reading Ease + Flesch-Kincaid grade level + sentence/word stats.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Any English text |
curl -X POST https://yas.sh/api/v1/tools/readability-score \
-H "Content-Type: application/json" \
-d '{"input":"The quick brown fox jumps over the lazy dog."}'{ "result": { "sentences": 1, "words": 9, "syllables": 11, "fleschReadingEase": 70.2, "gradeLevel": 6.2 } }chmod Calculator
chmod-calculatorPOST /api/v1/tools/chmod-calculatorConvert between numeric (755) and symbolic (u=rwx,go=rx) permission modes, incl. special bits.
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | e.g. 755, 4755, u=rwx,go=rx, or a+rwx |
curl -X POST https://yas.sh/api/v1/tools/chmod-calculator \
-H "Content-Type: application/json" \
-d '{"input":"755"}'{ "result": { "input": "755", "numeric": "755", "symbolic": "u=rwx,go=rx", "special": "none", "bits": { "owner": "rwx", "group": "r-x", "other": "r-x" } } }Date Difference
date-differencePOST /api/v1/tools/date-differenceDifference between two dates: years/months/days/hours/minutes/seconds + business days.
| Parameter | Type | Default | Description |
|---|---|---|---|
| a* | string | — | Date 1 (ISO or unix seconds) |
| b* | string | — | Date 2 (ISO or unix seconds) |
curl -X POST https://yas.sh/api/v1/tools/date-difference \
-H "Content-Type: application/json" \
-d '{"a":"2026-01-01","b":"2026-08-08"}'{ "result": { "milliseconds": ..., "days": 219, "weeks": 31, "businessDays": 156, "yearsApprox": 0.6 } }Password Strength
password-strengthPOST /api/v1/tools/password-strengthEntropy estimate, crack-time (fast hash & bcrypt), and actionable feedback (zxcvbn-flavored).
| Parameter | Type | Default | Description |
|---|---|---|---|
| input* | string | — | Password to evaluate |
curl -X POST https://yas.sh/api/v1/tools/password-strength \
-H "Content-Type: application/json" \
-d '{"input":"Tr0ub4dor&3"}'{ "result": { "score": 3, "length": 11, "entropyBits": 58.4, "crackFast": "4 days", "crackBcrypt": "102k years", "feedback": ["..."] } }BROWSER-ONLY TOOLS
These tools are intentionally not available via the server API — their canonical implementation runs in the browser at /tools/:slug. The API returns{ clientOnly: true, reason } for them:
- base64-fileRequires the browser File API.
- xml-validatorBrowser DOMParser, by design (no server XML parser bundled).
- json-xmlComplex conversion runs client-side in the tool page.
- csv-converterRuns client-side — potentially sensitive data never uploaded.
- sql-formatterRuns client-side — SQL text must not leave your browser.
- link-checkerServer-side would need outbound fetches to arbitrary URLs (SSRF risk).