Skip to content
YAS.SH
Tools API

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

Endpoint

POST /api/v1/tools/:slug with a JSON body. No authentication required (public utilities).

Limits
  • Rate limit: 60 requests/min per IP429 + Retry-After
  • Input ceiling: 64 KB413 PAYLOAD_TOO_LARGE
  • Errors: RFC 9457 application/problem+json bodies
  • Unknown slug → 404 NOT_FOUND (no echo mock)
# Try it now
curl -X POST https://yas.sh/api/v1/tools/hash-calculator \
-H "Content-Type: application/json" \
-d '{"input":"hello","algo":"sha256"}'

ALL TOOLS AT A GLANCE

ToolCategoryServer APIReference
JSON Formatterjson-formatterFormattingPOST /api/v1/tools/json-formattercontract ↓
JSON Validatorjson-validatorValidationPOST /api/v1/tools/json-validatorcontract ↓
JSON / XML Converterjson-xmlConversionbrowser-onlywhy ↓
JSON → TypeScriptjson-to-tsConversionPOST /api/v1/tools/json-to-tscontract ↓
YAML / JSON Converteryaml-jsonConversionPOST /api/v1/tools/yaml-jsoncontract ↓
TOML / JSON Convertertoml-jsonConversionPOST /api/v1/tools/toml-jsoncontract ↓
CSV Convertercsv-converterConversionbrowser-onlywhy ↓
CSV → JSONcsv-to-jsonConversionPOST /api/v1/tools/csv-to-jsoncontract ↓
XML Validatorxml-validatorValidationbrowser-onlywhy ↓
JSON-LD Validatorjson-ld-validatorValidationPOST /api/v1/tools/json-ld-validatorcontract ↓
Base64 Textbase64-textEncodingPOST /api/v1/tools/base64-textcontract ↓
Base64 Filebase64-fileEncodingbrowser-onlywhy ↓
Base64 URL Encodebase64-urlEncodingPOST /api/v1/tools/base64-urlcontract ↓
HTML Escapehtml-escapeEscapePOST /api/v1/tools/html-escapecontract ↓
HTML → Markdownhtml-to-markdownConversionPOST /api/v1/tools/html-to-markdowncontract ↓
Markdown → HTMLmarkdown-to-htmlConversionPOST /api/v1/tools/markdown-to-htmlcontract ↓
CSS Minifiercss-minifierFormattingPOST /api/v1/tools/css-minifiercontract ↓
SQL Formattersql-formatterFormattingbrowser-onlywhy ↓
Regex Testerregex-testerTestingPOST /api/v1/tools/regex-testercontract ↓
Regex Escaperregex-escaperTextPOST /api/v1/tools/regex-escapercontract ↓
Text Comparisontext-diffTextPOST /api/v1/tools/text-diffcontract ↓
Password Generatorpassword-generatorGeneratorPOST /api/v1/tools/password-generatorcontract ↓
Password Strengthpassword-strengthAnalysisPOST /api/v1/tools/password-strengthcontract ↓
Passphrase Generatorpassphrase-generatorGeneratorPOST /api/v1/tools/passphrase-generatorcontract ↓
Hash Calculatorhash-calculatorGeneratorPOST /api/v1/tools/hash-calculatorcontract ↓
Checksum CalculatorchecksumGeneratorPOST /api/v1/tools/checksumcontract ↓
HMAC Generatorhmac-generatorGeneratorPOST /api/v1/tools/hmac-generatorcontract ↓
UUID Generatoruuid-generatorGeneratorPOST /api/v1/tools/uuid-generatorcontract ↓
UUID v7 Generatoruuid-v7GeneratorPOST /api/v1/tools/uuid-v7contract ↓
Random Stringrandom-stringGeneratorPOST /api/v1/tools/random-stringcontract ↓
JWT Decoderjwt-decoderAnalysisPOST /api/v1/tools/jwt-decodercontract ↓
JWT Encode / Signjwt-encodeGeneratorPOST /api/v1/tools/jwt-encodecontract ↓
TOTP Generatortotp-generatorGeneratorPOST /api/v1/tools/totp-generatorcontract ↓
RSA Key Generatorrsa-generatorGeneratorPOST /api/v1/tools/rsa-generatorcontract ↓
SSH Key Fingerprintssh-key-fingerprintAnalysisPOST /api/v1/tools/ssh-key-fingerprintcontract ↓
Certificate Infopublic-key-infoAnalysisPOST /api/v1/tools/public-key-infocontract ↓
URL Encoderurl-encoderEncodingPOST /api/v1/tools/url-encodercontract ↓
URL Parserurl-parserAnalysisPOST /api/v1/tools/url-parsercontract ↓
URL Expanderurl-expanderAnalysisPOST /api/v1/tools/url-expandercontract ↓
UTM Builderutm-builderBuilderPOST /api/v1/tools/utm-buildercontract ↓
Query String Builderquery-string-builderBuilderPOST /api/v1/tools/query-string-buildercontract ↓
Slug Generatorslug-generatorGeneratorPOST /api/v1/tools/slug-generatorcontract ↓
Link Checkerlink-checkerAnalysisPOST /api/v1/tools/link-checkercontract ↓
Redirect Tracerredirect-tracerAnalysisPOST /api/v1/tools/redirect-tracercontract ↓
QR Generatorqr-generatorGeneratorPOST /api/v1/tools/qr-generatorcontract ↓
What Is My IPwhat-is-my-ipLookupPOST /api/v1/tools/what-is-my-ipcontract ↓
My IP (plain)ipLookupPOST /api/v1/tools/ipcontract ↓
IP Validatorip-validatorValidationPOST /api/v1/tools/ip-validatorcontract ↓
IP Subnet Calculatorip-subnet-calculatorCalculatorPOST /api/v1/tools/ip-subnet-calculatorcontract ↓
DNS Lookupdns-lookupLookupPOST /api/v1/tools/dns-lookupcontract ↓
Reverse DNS Lookupreverse-dnsLookupPOST /api/v1/tools/reverse-dnscontract ↓
RDAP / WHOIS Lookuprdap-lookupLookupPOST /api/v1/tools/rdap-lookupcontract ↓
DNSSEC Checkdnssec-checkLookupPOST /api/v1/tools/dnssec-checkcontract ↓
HTTP Header Viewerhttp-header-viewerLookupPOST /api/v1/tools/http-header-viewercontract ↓
HTTP Status Codeshttp-status-codesReferencePOST /api/v1/tools/http-status-codescontract ↓
robots.txt Viewerrobots-txt-viewerLookupPOST /api/v1/tools/robots-txt-viewercontract ↓
Canonical Checkercanonical-checkerLookupPOST /api/v1/tools/canonical-checkercontract ↓
Favicon Finderfavicon-finderLookupPOST /api/v1/tools/favicon-findercontract ↓
Open Graph Previewopen-graph-previewLookupPOST /api/v1/tools/open-graph-previewcontract ↓
MIME Type Lookupmime-type-lookupReferencePOST /api/v1/tools/mime-type-lookupcontract ↓
TLS Analyzertls-analyzerAnalysisPOST /api/v1/tools/tls-analyzercontract ↓
SSL Certificate Expiryssl-expiryLookupPOST /api/v1/tools/ssl-expirycontract ↓
DANE / TLSAdane-tlsaValidationPOST /api/v1/tools/dane-tlsacontract ↓
SPF Inspectorspf-inspectorValidationPOST /api/v1/tools/spf-inspectorcontract ↓
DMARC Inspectordmarc-inspectorValidationPOST /api/v1/tools/dmarc-inspectorcontract ↓
DKIM Inspectordkim-inspectorValidationPOST /api/v1/tools/dkim-inspectorcontract ↓
MX Healthmx-healthAnalysisPOST /api/v1/tools/mx-healthcontract ↓
MTA-STS & TLS-RPTmta-sts-tlsrptValidationPOST /api/v1/tools/mta-sts-tlsrptcontract ↓
Case Convertercase-converterTransformPOST /api/v1/tools/case-convertercontract ↓
String Lengthstring-lengthAnalysisPOST /api/v1/tools/string-lengthcontract ↓
Text Sortertext-sorterTransformPOST /api/v1/tools/text-sortercontract ↓
Readability Scorereadability-scoreAnalysisPOST /api/v1/tools/readability-scorecontract ↓
Lorem Ipsumlorem-generatorGeneratorPOST /api/v1/tools/lorem-generatorcontract ↓
Emoji Searchemojis-searchLookupPOST /api/v1/tools/emojis-searchcontract ↓
Color Convertercolor-converterConversionPOST /api/v1/tools/color-convertercontract ↓
Number Base Converternumber-base-converterConversionPOST /api/v1/tools/number-base-convertercontract ↓
Credit Card Validatorcredit-card-validatorValidationPOST /api/v1/tools/credit-card-validatorcontract ↓
MAC Validatormac-validatorValidationPOST /api/v1/tools/mac-validatorcontract ↓
Unix Timestampunix-timestampConversionPOST /api/v1/tools/unix-timestampcontract ↓
Cron Parsercron-parserAnalysisPOST /api/v1/tools/cron-parsercontract ↓
Date Differencedate-differenceCalculatorPOST /api/v1/tools/date-differencecontract ↓
chmod Calculatorchmod-calculatorCalculatorPOST /api/v1/tools/chmod-calculatorcontract ↓
ULID Generatorulid-generatorGeneratorsPOST /api/v1/tools/ulid-generatorcontract ↓
NanoID Generatornanoid-generatorGeneratorsPOST /api/v1/tools/nanoid-generatorcontract ↓
cURL to Fetch Convertercurl-to-fetchConvertersPOST /api/v1/tools/curl-to-fetchcontract ↓
JSON Repair & Sanitizerjson-repairFormattersPOST /api/v1/tools/json-repaircontract ↓
Bcrypt Hash & Comparebcrypt-testerSecurityPOST /api/v1/tools/bcrypt-testercontract ↓
User-Agent Parseruser-agent-parserNetworkPOST /api/v1/tools/user-agent-parsercontract ↓
CIDR Subnet Calculatorcidr-calculatorCalculatorsPOST /api/v1/tools/cidr-calculatorcontract ↓
security.txt RFC 9116 Validatorsecurity-txt-validatorValidationPOST /api/v1/tools/security-txt-validatorcontract ↓
XML Sitemap Validatorsitemap-validatorValidationPOST /api/v1/tools/sitemap-validatorcontract ↓
SemVer Comparatorsemver-comparatorUtilitiesPOST /api/v1/tools/semver-comparatorcontract ↓
URL Tracking Cleanerurl-cleanerUtilitiesPOST /api/v1/tools/url-cleanercontract ↓
Base58 Converterbase58-converterConvertersPOST /api/v1/tools/base58-convertercontract ↓
Hex Dump Viewerhex-viewerConvertersPOST /api/v1/tools/hex-viewercontract ↓
PEM Certificate Converterpem-converterConvertersPOST /api/v1/tools/pem-convertercontract ↓
BIP-39 Mnemonic Generatorbip39-generatorGeneratorsPOST /api/v1/tools/bip39-generatorcontract ↓
Email Warmup Scheduleremail-warmup-calculatorCalculatorsPOST /api/v1/tools/email-warmup-calculatorcontract ↓
Dangling CNAME Takeover Checkerdangling-cname-checkerSecurityPOST /api/v1/tools/dangling-cname-checkercontract ↓
DNSBL & Spam Blacklist Radardnsbl-radarSecurityPOST /api/v1/tools/dnsbl-radarcontract ↓

SERVER TOOL CONTRACTS

Base64 Text

base64-textPOST /api/v1/tools/base64-text

Encode or decode a UTF-8 string with Base64.

ParameterTypeDefaultDescription
input*stringText to transform (≤ 64 KB)
mode"encode" | "decode""encode"Direction
REQUEST
curl -X POST https://yas.sh/api/v1/tools/base64-text \
  -H "Content-Type: application/json" \
  -d '{"input":"hello world","mode":"encode"}'
RESPONSE (200)
{ "slug": "base64-text", "result": "aGVsbG8gd29ybGQ=", "mode": "encode" }

Hash Calculator

hash-calculatorPOST /api/v1/tools/hash-calculator

Cryptographic digest of a string.

ParameterTypeDefaultDescription
input*stringText to hash (≤ 64 KB)
algostring"sha256"One of md5, sha1, sha256, sha384, sha512
REQUEST
curl -X POST https://yas.sh/api/v1/tools/hash-calculator \
  -H "Content-Type: application/json" \
  -d '{"input":"hello","algo":"md5"}'
RESPONSE (200)
{ "slug": "hash-calculator", "algo": "md5", "result": "5d41402abc4b2a76b9719d911017c592" }

Checksum Calculator

checksumPOST /api/v1/tools/checksum

Identical to hash-calculator (checksum semantics).

ParameterTypeDefaultDescription
input*stringText to checksum (≤ 64 KB)
algostring"sha256"md5 | sha1 | sha256 | sha384 | sha512
REQUEST
curl -X POST https://yas.sh/api/v1/tools/checksum \
  -H "Content-Type: application/json" \
  -d '{"input":"hello","algo":"sha1"}'
RESPONSE (200)
{ "slug": "checksum", "algo": "sha1", "result": "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d" }

UUID Generator

uuid-generatorPOST /api/v1/tools/uuid-generator

Generate 1–50 random UUIDs (v4).

ParameterTypeDefaultDescription
countinteger1How many (1–50)
versioninteger44 (random) or 7 (time-ordered)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/uuid-generator \
  -H "Content-Type: application/json" \
  -d '{"count":2,"version":4}'
RESPONSE (200)
{ "slug": "uuid-generator", "count": 2, "version": 4, "result": ["<uuid>", "<uuid>"] }

URL Encoder

url-encoderPOST /api/v1/tools/url-encoder

Percent-encode / percent-decode a string.

ParameterTypeDefaultDescription
input*stringText or URL fragment
mode"encode" | "decode""encode"Direction
REQUEST
curl -X POST https://yas.sh/api/v1/tools/url-encoder \
  -H "Content-Type: application/json" \
  -d '{"input":"a b&c=d","mode":"encode"}'
RESPONSE (200)
{ "slug": "url-encoder", "result": "a%20b%26c%3Dd", "mode": "encode" }

Case Converter

case-converterPOST /api/v1/tools/case-converter

Convert text between naming conventions.

ParameterTypeDefaultDescription
input*stringSource text
modestring"upper"upper | lower | title | camel | pascal | snake | kebab
REQUEST
curl -X POST https://yas.sh/api/v1/tools/case-converter \
  -H "Content-Type: application/json" \
  -d '{"input":"hello world","mode":"kebab"}'
RESPONSE (200)
{ "slug": "case-converter", "result": "hello-world", "mode": "kebab" }

HTML Escape

html-escapePOST /api/v1/tools/html-escape

Escape or unescape HTML entities (& < > " ').

ParameterTypeDefaultDescription
input*stringHTML or plain text
mode"encode" | "decode""encode"Direction
REQUEST
curl -X POST https://yas.sh/api/v1/tools/html-escape \
  -H "Content-Type: application/json" \
  -d '{"input":"<b>hi</b>","mode":"encode"}'
RESPONSE (200)
{ "slug": "html-escape", "result": "&lt;b&gt;hi&lt;/b&gt;", "mode": "encode" }

String Length

string-lengthPOST /api/v1/tools/string-length

Count characters (code points), bytes, words and lines.

ParameterTypeDefaultDescription
input*stringAny text
REQUEST
curl -X POST https://yas.sh/api/v1/tools/string-length \
  -H "Content-Type: application/json" \
  -d '{"input":"héllo\nworld"}'
RESPONSE (200)
{ "slug": "string-length", "result": { "chars": 11, "bytes": 12, "words": 2, "lines": 2 } }

JSON Validator

json-validatorPOST /api/v1/tools/json-validator

Validate JSON syntax; returns the parser error if invalid.

ParameterTypeDefaultDescription
input*stringJSON text
REQUEST
curl -X POST https://yas.sh/api/v1/tools/json-validator \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"a\":}"}'
RESPONSE (200)
{ "slug": "json-validator", "valid": false, "error": "..." }

JSON Formatter

json-formatterPOST /api/v1/tools/json-formatter

Beautify (2-space indent) or minify JSON.

ParameterTypeDefaultDescription
input*stringJSON text
mode"beautify" | "minify""beautify"Direction
REQUEST
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"}'
RESPONSE (200)
{ "slug": "json-formatter", "result": "{\"a\":1,\"b\":[2,3]}", "mode": "minify" }

Password Generator

password-generatorPOST /api/v1/tools/password-generator

CSPRNG passwords, 8–128 chars, optional alnum-only sets.

ParameterTypeDefaultDescription
lengthinteger208–128
countinteger11–10 passwords
mode"full" | "alnum""full"Charset (full includes symbols, unambiguous alnum)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/password-generator \
  -H "Content-Type: application/json" \
  -d '{"length":24,"count":1}'
RESPONSE (200)
{ "slug": "password-generator", "length": 24, "result": "<password>" }

Random String

random-stringPOST /api/v1/tools/random-string

Random string from a named charset.

ParameterTypeDefaultDescription
lengthinteger161–256
modestring"alnum"alnum | alpha | numeric | hex
REQUEST
curl -X POST https://yas.sh/api/v1/tools/random-string \
  -H "Content-Type: application/json" \
  -d '{"length":32,"mode":"hex"}'
RESPONSE (200)
{ "slug": "random-string", "length": 32, "charset": "hex", "result": "<hex>" }

Unix Timestamp

unix-timestampPOST /api/v1/tools/unix-timestamp

Convert a unix timestamp (s/ms) ↔ ISO/UTC date.

ParameterTypeDefaultDescription
input*stringe.g. 1754500000, 1754500000000, or an ISO date (blank = now)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/unix-timestamp \
  -H "Content-Type: application/json" \
  -d '{"input":"1754500000"}'
RESPONSE (200)
{ "slug": "unix-timestamp", "result": { "unix": 1754500000, "iso": "2025-08-06T18:26:40.000Z", "utc": "..." } }

JWT Decoder

jwt-decoderPOST /api/v1/tools/jwt-decoder

Decode a JWT header & payload (NO signature verification — explicitly flagged).

ParameterTypeDefaultDescription
input*stringThe 3-segment token
REQUEST
curl -X POST https://yas.sh/api/v1/tools/jwt-decoder \
  -H "Content-Type: application/json" \
  -d '{"input":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.sig"}'
RESPONSE (200)
{ "slug": "jwt-decoder", "result": { "header": {...}, "payload": {...} }, "warning": "Decoded WITHOUT signature verification" }

Regex Tester

regex-testerPOST /api/v1/tools/regex-tester

Test a regex against a string (ReDoS-guarded, max 100 matches).

ParameterTypeDefaultDescription
pattern*string≤ 500 chars; nested-quantifier patterns rejected
text*stringTest string (≤ 10 KB)
flagsstring"g"Subset of d g i m s u v y
REQUEST
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"}'
RESPONSE (200)
{ "slug": "regex-tester", "count": 2, "truncated": false, "result": [{ "match": "o t", "index": 4 }, ...] }

IP Validator

ip-validatorPOST /api/v1/tools/ip-validator

Validate IPv4 / IPv6 addresses.

ParameterTypeDefaultDescription
input*stringe.g. 192.168.1.1 or ::1
REQUEST
curl -X POST https://yas.sh/api/v1/tools/ip-validator \
  -H "Content-Type: application/json" \
  -d '{"input":"192.168.1.1"}'
RESPONSE (200)
{ "slug": "ip-validator", "result": { "input": "192.168.1.1", "valid": true, "version": 4 } }

MAC Validator

mac-validatorPOST /api/v1/tools/mac-validator

Validate MAC addresses (colon/hyphen/plain forms).

ParameterTypeDefaultDescription
input*stringe.g. 00:1B:44:11:3A:B7
REQUEST
curl -X POST https://yas.sh/api/v1/tools/mac-validator \
  -H "Content-Type: application/json" \
  -d '{"input":"00:1B:44:11:3A:B7"}'
RESPONSE (200)
{ "slug": "mac-validator", "result": { "input": "00:1B:44:11:3A:B7", "valid": true } }

Credit Card Validator

credit-card-validatorPOST /api/v1/tools/credit-card-validator

Luhn checksum + scheme detection (NOT an existence check).

ParameterTypeDefaultDescription
input*stringDigits; spaces/dashes tolerated
REQUEST
curl -X POST https://yas.sh/api/v1/tools/credit-card-validator \
  -H "Content-Type: application/json" \
  -d '{"input":"4242 4242 4242 4242"}'
RESPONSE (200)
{ "slug": "credit-card-validator", "result": { "valid": true, "scheme": "visa", "note": "Luhn checksum only" } }

Lorem Ipsum

lorem-generatorPOST /api/v1/tools/lorem-generator

1–10 paragraphs of lorem ipsum.

ParameterTypeDefaultDescription
countinteger3Paragraphs (1–10)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/lorem-generator \
  -H "Content-Type: application/json" \
  -d '{"count":1}'
RESPONSE (200)
{ "slug": "lorem-generator", "paragraphs": 1, "result": "Lorem ipsum ..." }

QR Generator

qr-generatorPOST /api/v1/tools/qr-generator

Render a QR code for an http/https URL as a PNG data-URL.

ParameterTypeDefaultDescription
input*stringhttp/https URL (≤ 2048 chars)
sizeinteger512128–1024 px
REQUEST
curl -X POST https://yas.sh/api/v1/tools/qr-generator \
  -H "Content-Type: application/json" \
  -d '{"input":"https://yas.sh","size":256}'
RESPONSE (200)
{ "slug": "qr-generator", "result": "data:image/png;base64,..." }

UTM Builder

utm-builderPOST /api/v1/tools/utm-builder

Append UTM parameters to a base URL.

ParameterTypeDefaultDescription
input*stringBase http/https URL
params.utm_sourcestring≤ 200 chars
params.utm_mediumstring≤ 200 chars
params.utm_campaignstring≤ 200 chars
params.utm_termstring≤ 200 chars
params.utm_contentstring≤ 200 chars
REQUEST
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"}}'
RESPONSE (200)
{ "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-diff

Line-based diff (LCS) between two texts (≤ 2,000 lines each).

ParameterTypeDefaultDescription
a*stringLeft text (≤ 50 KB)
b*stringRight text (≤ 50 KB)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/text-diff \
  -H "Content-Type: application/json" \
  -d '{"a":"one\ntwo","b":"one\nthree"}'
RESPONSE (200)
{ "slug": "text-diff", "added": 1, "removed": 1, "unchanged": 1, "result": [{ "op": " ", "line": "one" }, ...] }

My IP (plain)

ipPOST /api/v1/tools/ip

Your public IP address and nothing else — also available as plain text via GET.

ParameterTypeDefaultDescription
ipstringOptional specific IP to look up (defaults to your own).
REQUEST
curl -X POST https://yas.sh/api/v1/tools/ip \
  -H "Content-Type: application/json" \
  -d '{}'
RESPONSE (200)
{ "slug": "ip", "result": "8.8.8.8" }  // GET returns bare text: 8.8.8.8

What Is My IP

what-is-my-ipPOST /api/v1/tools/what-is-my-ip

Your public IP with ASN, ISP, geo and VPN/Tor hints (ipinfo-style). No key needed.

ParameterTypeDefaultDescription
ipstringOptional specific IP to look up (defaults to your own via X-Real-IP / X-Forwarded-For). Also supported as ?ip= on GET.
REQUEST
curl -X POST https://yas.sh/api/v1/tools/what-is-my-ip \
  -H "Content-Type: application/json" \
  -d '{}'
RESPONSE (200)
{ "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-lookup

Resolve A, AAAA, MX, TXT, NS, CNAME, SOA records for a domain (TTLs included).

ParameterTypeDefaultDescription
input*stringDomain, e.g. example.com (no scheme, no IP literals)
typestring"all"all | A | AAAA | MX | TXT | NS | CNAME | SOA
REQUEST
curl -X POST https://yas.sh/api/v1/tools/dns-lookup \
  -H "Content-Type: application/json" \
  -d '{"input":"yas.sh"}'
RESPONSE (200)
{ "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-calculator

IPv4 CIDR math: network, broadcast, netmask, usable hosts.

ParameterTypeDefaultDescription
input*stringCIDR, e.g. 192.168.1.0/24
REQUEST
curl -X POST https://yas.sh/api/v1/tools/ip-subnet-calculator \
  -H "Content-Type: application/json" \
  -d '{"input":"192.168.1.0/24"}'
RESPONSE (200)
{ "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-analyzer

Full TLS audit of a host: cert chain, expiry, SANs, protocol, cipher, OCSP stapling + HSTS header.

ParameterTypeDefaultDescription
input*stringHostname, e.g. yas.sh (host:port form allowed)
portinteger443TLS port (1–65535). Also accepted as host:8443.
REQUEST
curl -X POST https://yas.sh/api/v1/tools/tls-analyzer \
  -H "Content-Type: application/json" \
  -d '{"input":"yas.sh"}'
RESPONSE (200)
{ "result": { "authorized": true, "expiresInDays": 89, "sans": [...], "hsts": { "present": true, "maxAge": 63072000, "includeSubDomains": true, "preload": true }, ... } }

DANE / TLSA

dane-tlsaPOST /api/v1/tools/dane-tlsa

Validate DANE TLSA records (_port._tcp.domain) against the live TLS certificate.

ParameterTypeDefaultDescription
input*stringHostname, e.g. example.com
portinteger443Service port (default 443)
protostring"tcp"tcp | udp
REQUEST
curl -X POST https://yas.sh/api/v1/tools/dane-tlsa \
  -H "Content-Type: application/json" \
  -d '{"input":"example.com","port":443,"proto":"tcp"}'
RESPONSE (200)
{ "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-inspector

Parse SPF (v=spf1): mechanisms, DNS-lookup count vs the 10 limit, ~all/-all, flattened IP count.

ParameterTypeDefaultDescription
input*stringDomain, e.g. example.com
REQUEST
curl -X POST https://yas.sh/api/v1/tools/spf-inspector \
  -H "Content-Type: application/json" \
  -d '{"input":"example.com"}'
RESPONSE (200)
{ "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-inspector

Fetch and validate _dmarc.<domain> TXT: policy badge, alignment, pct, rua/ruf.

ParameterTypeDefaultDescription
input*stringDomain, e.g. example.com
REQUEST
curl -X POST https://yas.sh/api/v1/tools/dmarc-inspector \
  -H "Content-Type: application/json" \
  -d '{"input":"example.com"}'
RESPONSE (200)
{ "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-inspector

Validate <selector>._domainkey.<domain> TXT: v=DKIM1, k=rsa, key length, t= flags.

ParameterTypeDefaultDescription
input*stringDomain, e.g. example.com
selectorstring"selector1"DKIM selector
REQUEST
curl -X POST https://yas.sh/api/v1/tools/dkim-inspector \
  -H "Content-Type: application/json" \
  -d '{"input":"example.com","selector":"selector1"}'
RESPONSE (200)
{ "result": { "found": true, "record": "v=DKIM1; k=rsa; p=MIIB...", "keyLength": 2048, "flags": [], "valid": true } }

MX Health

mx-healthPOST /api/v1/tools/mx-health

MX audit: priorities, A/AAAA resolution, STARTTLS-era port-25 probe, null MX (RFC 7505), duplicates.

ParameterTypeDefaultDescription
input*stringDomain, e.g. example.com
REQUEST
curl -X POST https://yas.sh/api/v1/tools/mx-health \
  -H "Content-Type: application/json" \
  -d '{"input":"example.com"}'
RESPONSE (200)
{ "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-tlsrpt

MTA-STS (mta-sts TXT + /.well-known/mta-sts.txt) and TLS-RPT (_smtp._tls TXT) validation.

ParameterTypeDefaultDescription
input*stringDomain, e.g. example.com
REQUEST
curl -X POST https://yas.sh/api/v1/tools/mta-sts-tlsrpt \
  -H "Content-Type: application/json" \
  -d '{"input":"example.com"}'
RESPONSE (200)
{ "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-parser

Split any URL into protocol, auth, host, port, path, query (parsed), hash + origin.

ParameterTypeDefaultDescription
input*stringAny URL
REQUEST
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"}'
RESPONSE (200)
{ "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-codes

Look up HTTP status codes by number or by searching names/classes.

ParameterTypeDefaultDescription
input*stringe.g. 404, or text like "gone" / "2xx"
REQUEST
curl -X POST https://yas.sh/api/v1/tools/http-status-codes \
  -H "Content-Type: application/json" \
  -d '{"input":"404"}'
RESPONSE (200)
{ "result": { "match": { "code": 404, "name": "Not Found", "class": "4xx Client Error", "meaning": "...", "useWhen": "..." } } }

Cron Parser

cron-parserPOST /api/v1/tools/cron-parser

Parse a 5/6-field cron expression and compute the next 5 run times (UTC).

ParameterTypeDefaultDescription
input*stringCron expression, e.g. */15 * * * *
countinteger51–10 next runs
REQUEST
curl -X POST https://yas.sh/api/v1/tools/cron-parser \
  -H "Content-Type: application/json" \
  -d '{"input":"*/15 * * * *"}'
RESPONSE (200)
{ "result": { "valid": true, "expression": "*/15 * * * *", "next": ["2026-08-08T12:15:00.000Z", ...] } }

Color Converter

color-converterPOST /api/v1/tools/color-converter

Convert a color to HEX / RGB / HSL / CMYK / HSV + WCAG contrast ratios.

ParameterTypeDefaultDescription
input*string#hex, rgb(), hsl(), or basic color name
REQUEST
curl -X POST https://yas.sh/api/v1/tools/color-converter \
  -H "Content-Type: application/json" \
  -d '{"input":"#6366f1"}'
RESPONSE (200)
{ "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-converter

Convert numbers between bases 2–36 (BigInt, arbitrary precision).

ParameterTypeDefaultDescription
input*stringValue in the source base
frominteger10Source base (2–36)
tointeger16Target base (2–36)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/number-base-converter \
  -H "Content-Type: application/json" \
  -d '{"input":"255","from":10,"to":16}'
RESPONSE (200)
{ "result": { "input": "255", "from": 10, "to": 16, "value": "ff" } }

Markdown → HTML

markdown-to-htmlPOST /api/v1/tools/markdown-to-html

Render Markdown to sanitized HTML (marked + sanitize-html allow-list, XSS-safe).

ParameterTypeDefaultDescription
input*stringMarkdown (≤ 64 KB)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/markdown-to-html \
  -H "Content-Type: application/json" \
  -d '{"input":"# Hello\n\n**bold**"}'
RESPONSE (200)
{ "result": "<h1>Hello</h1>\n<p><strong>bold</strong></p>" }

CSV → JSON

csv-to-jsonPOST /api/v1/tools/csv-to-json

Parse CSV (quoted fields, headers) into a JSON array.

ParameterTypeDefaultDescription
input*stringCSV text (≤ 64 KB, ≤ 5,000 rows)
delimiterstring","Field delimiter
hasHeaderbooleantrueFirst row = keys
REQUEST
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"}'
RESPONSE (200)
{ "result": { "rows": [{ "name": "Anna", "age": "30" }], "count": 2, "columns": ["name", "age"] } }

Slug Generator

slug-generatorPOST /api/v1/tools/slug-generator

Turn any text into a URL-safe slug (transliterates Latin accents).

ParameterTypeDefaultDescription
input*stringSource text
separatorstring"-"Word separator
maxLengthinteger80Output cap
REQUEST
curl -X POST https://yas.sh/api/v1/tools/slug-generator \
  -H "Content-Type: application/json" \
  -d '{"input":"Hello, World! 2026"}'
RESPONSE (200)
{ "result": "hello-world-2026" }

Text Sorter

text-sorterPOST /api/v1/tools/text-sorter

Sort lines ascending / descending / natural, dedupe, or shuffle (CSPRNG).

ParameterTypeDefaultDescription
input*stringMulti-line text
modestring"asc"asc | desc | natural | unique | shuffle
REQUEST
curl -X POST https://yas.sh/api/v1/tools/text-sorter \
  -H "Content-Type: application/json" \
  -d '{"input":"b\na\nc","mode":"asc"}'
RESPONSE (200)
{ "result": "a\nb\nc" }

Readability Score

readability-scorePOST /api/v1/tools/readability-score

Flesch Reading Ease + Flesch-Kincaid grade level + sentence/word stats.

ParameterTypeDefaultDescription
input*stringAny English text
REQUEST
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."}'
RESPONSE (200)
{ "result": { "sentences": 1, "words": 9, "syllables": 11, "fleschReadingEase": 70.2, "gradeLevel": 6.2 } }

chmod Calculator

chmod-calculatorPOST /api/v1/tools/chmod-calculator

Convert between numeric (755) and symbolic (u=rwx,go=rx) permission modes, incl. special bits.

ParameterTypeDefaultDescription
input*stringe.g. 755, 4755, u=rwx,go=rx, or a+rwx
REQUEST
curl -X POST https://yas.sh/api/v1/tools/chmod-calculator \
  -H "Content-Type: application/json" \
  -d '{"input":"755"}'
RESPONSE (200)
{ "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-difference

Difference between two dates: years/months/days/hours/minutes/seconds + business days.

ParameterTypeDefaultDescription
a*stringDate 1 (ISO or unix seconds)
b*stringDate 2 (ISO or unix seconds)
REQUEST
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"}'
RESPONSE (200)
{ "result": { "milliseconds": ..., "days": 219, "weeks": 31, "businessDays": 156, "yearsApprox": 0.6 } }

Password Strength

password-strengthPOST /api/v1/tools/password-strength

Entropy estimate, crack-time (fast hash & bcrypt), and actionable feedback (zxcvbn-flavored).

ParameterTypeDefaultDescription
input*stringPassword to evaluate
REQUEST
curl -X POST https://yas.sh/api/v1/tools/password-strength \
  -H "Content-Type: application/json" \
  -d '{"input":"Tr0ub4dor&3"}'
RESPONSE (200)
{ "result": { "score": 3, "length": 11, "entropyBits": 58.4, "crackFast": "4 days", "crackBcrypt": "102k years", "feedback": ["..."] } }

RDAP / WHOIS Lookup

rdap-lookupPOST /api/v1/tools/rdap-lookup

Registry data for a domain via RDAP (registrar, dates, nameservers).

ParameterTypeDefaultDescription
domain*stringDomain, e.g. example.com
REQUEST
curl -X POST https://yas.sh/api/v1/tools/rdap-lookup \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
RESPONSE (200)
{ "domain": "example.com", "registrar": "RESERVED-Internet Assigned Numbers Authority", "creationDate": "...", "expiry": "...", "nameservers": [...] }

Reverse DNS Lookup

reverse-dnsPOST /api/v1/tools/reverse-dns

PTR lookup — find hostnames for an IP.

ParameterTypeDefaultDescription
ip*stringIPv4 or IPv6 address
maxinteger5Max results (1–20)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/reverse-dns \
  -H "Content-Type: application/json" \
  -d '{"ip":"8.8.8.8"}'
RESPONSE (200)
{ "ip": "8.8.8.8", "result": ["dns.google"] }

DNSSEC Check

dnssec-checkPOST /api/v1/tools/dnssec-check

Verify whether a domain has DNSSEC (DNSKEY records via Google DoH).

ParameterTypeDefaultDescription
domain*stringDomain, e.g. example.com
REQUEST
curl -X POST https://yas.sh/api/v1/tools/dnssec-check \
  -H "Content-Type: application/json" \
  -d '{"domain":"yas.sh"}'
RESPONSE (200)
{ "domain": "yas.sh", "dnssec": true, "zoneSigningKeys": 1, "keySigningKeys": 1, "status": "SIGNED" }

HTTP Header Viewer

http-header-viewerPOST /api/v1/tools/http-header-viewer

Send a HEAD/GET to a URL and return sanitized response headers.

ParameterTypeDefaultDescription
url*stringhttp/https URL
REQUEST
curl -X POST https://yas.sh/api/v1/tools/http-header-viewer \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
RESPONSE (200)
{ "url": "https://example.com", "status": 200, "headers": { "content-type": "text/html", ... } }

Redirect Tracer

redirect-tracerPOST /api/v1/tools/redirect-tracer

Follow an HTTP redirect chain and report each hop's status and URL.

ParameterTypeDefaultDescription
url*stringhttp/https URL
REQUEST
curl -X POST https://yas.sh/api/v1/tools/redirect-tracer \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
RESPONSE (200)
{ "hops": [{ "hop":1, "status":302, "url":"...", "location":"..." }], "finalUrl": "...", "finalStatus": 200, "redirectCount": 1 }

SSL Certificate Expiry

ssl-expiryPOST /api/v1/tools/ssl-expiry

Days until a host's TLS certificate expires (live handshake).

ParameterTypeDefaultDescription
host*stringHostname, e.g. yas.sh
portinteger443TLS port
REQUEST
curl -X POST https://yas.sh/api/v1/tools/ssl-expiry \
  -H "Content-Type: application/json" \
  -d '{"host":"yas.sh"}'
RESPONSE (200)
{ "host": "yas.sh", "daysLeft": 87, "notAfter": "...", "issuedBy": "...", "isExpired": false, "expiringSoon": false }

Passphrase Generator

passphrase-generatorPOST /api/v1/tools/passphrase-generator

Diceware-style word passphrases with an entropy estimate.

ParameterTypeDefaultDescription
wordsinteger6Word count (3–12)
separatorstring-Separator between words
REQUEST
curl -X POST https://yas.sh/api/v1/tools/passphrase-generator \
  -H "Content-Type: application/json" \
  -d '{"words":6}'
RESPONSE (200)
{ "wordCount": 6, "entropyBits": 78.2, "result": "maple-saturn-quill..." }

JWT Encode / Sign

jwt-encodePOST /api/v1/tools/jwt-encode

Build and sign a JWT (HS256) from header + payload + secret.

ParameterTypeDefaultDescription
payload*objectJWT claims (object or JSON string)
secret*stringHMAC signing secret
REQUEST
curl -X POST https://yas.sh/api/v1/tools/jwt-encode \
  -H "Content-Type: application/json" \
  -d '{"payload":{"sub":"123","name":"Yas"},"secret":"your-secret"}'
RESPONSE (200)
{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "alg": "HS256" }

HMAC Generator

hmac-generatorPOST /api/v1/tools/hmac-generator

Compute HMAC-SHA1/256/384/512 for a message and key.

ParameterTypeDefaultDescription
message*stringMessage
key*stringSecret key
algorithmstringsha256sha1 | sha256 | sha384 | sha512
REQUEST
curl -X POST https://yas.sh/api/v1/tools/hmac-generator \
  -H "Content-Type: application/json" \
  -d '{"message":"hello","key":"secret","algorithm":"sha256"}'
RESPONSE (200)
{ "algorithm": "sha256", "hex": "2cf24dba5fb0a30e...", "base64": "LPI..." }

TOTP Generator

totp-generatorPOST /api/v1/tools/totp-generator

Generate the current 6-digit TOTP code from a base32 secret.

ParameterTypeDefaultDescription
secret*stringBase32 TOTP secret
REQUEST
curl -X POST https://yas.sh/api/v1/tools/totp-generator \
  -H "Content-Type: application/json" \
  -d '{"secret":"JBSWY3DPEHPK3PXP"}'
RESPONSE (200)
{ "secret": "JBSWY3DPEHPK3PXP", "code": "123456", "secondsRemaining": 12, "period": 30 }

SSH Key Fingerprint

ssh-key-fingerprintPOST /api/v1/tools/ssh-key-fingerprint

Show type, bits and SHA256/SHA1 fingerprint of an OpenSSH public key.

ParameterTypeDefaultDescription
key*stringOpenSSH public key (ssh-rsa AAAA...)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/ssh-key-fingerprint \
  -H "Content-Type: application/json" \
  -d '{"key":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK3eyDY2BNmjqbvypHC8t9Pj99+8QZoE75QHMh4vYfku yas-example"}'
RESPONSE (200)
{ "type": "ssh-ed25519", "bits": 256, "fingerprint": { "sha256": "SHA256:...", "sha1": "..." }, "comment": "yas-example" }

Certificate Info

public-key-infoPOST /api/v1/tools/public-key-info

Decode a PEM X.509 TLS certificate.

ParameterTypeDefaultDescription
pem*stringPEM-encoded certificate
REQUEST
curl -X POST https://yas.sh/api/v1/tools/public-key-info \
  -H "Content-Type: application/json" \
  -d '{"pem":"-----BEGIN CERTIFICATE-----\nMIIDPzCCAiegAwIBAgIUFROGZxKVcppGcj4z4zgwVLlXZsswDQYJKoZIhvcNAQEL\nBQAwLzEXMBUGA1UEAwwOZXhhbXBsZS55YXMuc2gxFDASBgNVBAoMC1lBUyBFeGFt\ncGxlMB4XDTI2MDgxNjA5NDIxNloXDTI3MDgxNjA5NDIxNlowLzEXMBUGA1UEAwwO\nZXhhbXBsZS55YXMuc2gxFDASBgNVBAoMC1lBUyBFeGFtcGxlMIIBIjANBgkqhkiG\n9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0cup17jicv9ioKZcYH3eROjxX3RT3FYtceK+\nXoO70jMOJFS2gLomGHmrwB8S+4Efhws787dQj8AbhYdUkiKFSLxKXyIrXcAjSQ/J\nkfQjxW2HPbTRGeDp6rAACWXxKDKZOA8KqAzTd6v1nkFyW1KbOTCTtNGr4OHz7JBR\negQRUvUiuGJ5l1Wa/2yLEhl90T8QuhJH/JNYoR1RYay1LiN2lMeyZ1j19jOsH5Et\nw33DX25Od77j9G3rew/Up3EPus4o4uBbmod6b4wCFK0MVg+dL+SwwdqBvstvpJwj\nbcFVt14Iigeynd3+IbM6zcJ3XYGVByiDXyVEc9YXYAqA+e2DqwIDAQABo1MwUTAd\nBgNVHQ4EFgQUhi0sY1RjLsBQdUZjxd2rRvswGUowHwYDVR0jBBgwFoAUhi0sY1Rj\nLsBQdUZjxd2rRvswGUowDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC\nAQEAQv81fsF3iER517ed0yNrhU8QeTgsFMtodWXauKbvBxBlmdOA/fv0Acl467qx\n04W5zLqFn5diDHHFvzol4HzVRZi0jV7Mr4LsqYXrEN8SJET/VCA8RJxj8WBoUkD+\ndtIlDR7ciLGKbU3l077Y11wiglMElWD9Ne+u5Q2wrA3EfkUP1dbapHn0buH5D/xt\nN1PDzS7funBvQ5wnupHhqDJATJqVa83RK99fNm7eUpegnP+rmVrOcVnQjDldlMNb\nbIFoHxpopEgLIcQpZaBhl6sKeKhxMWcxDhwVMsW+XZh4z+hFRisa70DxYykfOnEY\nFfabtY8iTCPoJQLrRB6brGtEFw==\n-----END CERTIFICATE-----"}'
RESPONSE (200)
{ "subject": "CN=example.yas.sh", "issuer": "CN=example.yas.sh", "validFrom": "...", "validTo": "...", "fingerprint256": "..." }

RSA Key Generator

rsa-generatorPOST /api/v1/tools/rsa-generator

Generate an RSA keypair (educational).

ParameterTypeDefaultDescription
bitsinteger20481024–4096
REQUEST
curl -X POST https://yas.sh/api/v1/tools/rsa-generator \
  -H "Content-Type: application/json" \
  -d '{"bits":2048}'
RESPONSE (200)
{ "bits": 2048, "publicKey": "-----BEGIN PUBLIC KEY-----...", "privateKey": "-----BEGIN PRIVATE KEY-----..." }

YAML / JSON Converter

yaml-jsonPOST /api/v1/tools/yaml-json

Convert between YAML and JSON (mode: to-json | to-yaml).

ParameterTypeDefaultDescription
input*stringYAML or JSON text
modestringto-jsonto-json | to-yaml
REQUEST
curl -X POST https://yas.sh/api/v1/tools/yaml-json \
  -H "Content-Type: application/json" \
  -d '{"input":"name: Jane\nage: 30","mode":"to-json"}'
RESPONSE (200)
{ "result": { "name": "Jane", "age": 30 }, "mode": "to-json" }

TOML / JSON Converter

toml-jsonPOST /api/v1/tools/toml-json

Convert between TOML and JSON (mode: to-json | to-toml).

ParameterTypeDefaultDescription
input*stringTOML or JSON text
modestringto-jsonto-json | to-toml
REQUEST
curl -X POST https://yas.sh/api/v1/tools/toml-json \
  -H "Content-Type: application/json" \
  -d '{"input":"name = \"Jane\"\nage = 30","mode":"to-json"}'
RESPONSE (200)
{ "result": { "name": "Jane", "age": 30 }, "mode": "to-json" }

JSON → TypeScript

json-to-tsPOST /api/v1/tools/json-to-ts

Generate TypeScript interfaces from a JSON object.

ParameterTypeDefaultDescription
input*stringJSON object
namestringRootInterface name
REQUEST
curl -X POST https://yas.sh/api/v1/tools/json-to-ts \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"name\":\"Jane\",\"age\":30}","name":"User"}'
RESPONSE (200)
{ "result": "interface User {\n  name: string;\n  age: number;\n}", "interfaceName": "User" }

HTML → Markdown

html-to-markdownPOST /api/v1/tools/html-to-markdown

Convert simple HTML into Markdown.

ParameterTypeDefaultDescription
input*stringHTML text
REQUEST
curl -X POST https://yas.sh/api/v1/tools/html-to-markdown \
  -H "Content-Type: application/json" \
  -d '{"input":"<h1>Title</h1><p>Hello</p>"}'
RESPONSE (200)
{ "result": "# Title\n\nHello\n\n" }

CSS Minifier

css-minifierPOST /api/v1/tools/css-minifier

Minify or beautify CSS (mode: minify | beautify).

ParameterTypeDefaultDescription
input*stringCSS text
modestringminifyminify | beautify
REQUEST
curl -X POST https://yas.sh/api/v1/tools/css-minifier \
  -H "Content-Type: application/json" \
  -d '{"input":"body { color: red; }","mode":"minify"}'
RESPONSE (200)
{ "result": "body{color:red}", "mode": "minify", "savings": 9 }

Base64 URL Encode

base64-urlPOST /api/v1/tools/base64-url

Encode/decode using URL-safe Base64 (base64url).

ParameterTypeDefaultDescription
input*stringText
modestringencodeencode | decode
REQUEST
curl -X POST https://yas.sh/api/v1/tools/base64-url \
  -H "Content-Type: application/json" \
  -d '{"input":"hello world","mode":"encode"}'
RESPONSE (200)
{ "result": "aGVsbG8gd29ybGQ", "mode": "encode" }

JSON-LD Validator

json-ld-validatorPOST /api/v1/tools/json-ld-validator

Validate JSON-LD structured data (context, type).

ParameterTypeDefaultDescription
input*stringJSON-LD text
REQUEST
curl -X POST https://yas.sh/api/v1/tools/json-ld-validator \
  -H "Content-Type: application/json" \
  -d '{"input":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\"}"}'
RESPONSE (200)
{ "valid": true, "types": ["Article"], "errors": [], "warnings": [...] }

URL Expander

url-expanderPOST /api/v1/tools/url-expander

Decode and dissect a URL into parts and query parameters.

ParameterTypeDefaultDescription
url*stringhttp/https URL
REQUEST
curl -X POST https://yas.sh/api/v1/tools/url-expander \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/a?x=1#top"}'
RESPONSE (200)
{ "protocol": "https:", "host": "example.com", "pathname": "/a", "queryParams": [{ "key":"x","value":"1" }], "hash": "#top" }

Query String Builder

query-string-builderPOST /api/v1/tools/query-string-builder

Build a URL with query parameters safely.

ParameterTypeDefaultDescription
base*stringBase URL
paramsobjectQuery params to append
REQUEST
curl -X POST https://yas.sh/api/v1/tools/query-string-builder \
  -H "Content-Type: application/json" \
  -d '{"base":"https://example.com","params":{"a":"1","b":"2"}}'
RESPONSE (200)
{ "result": "https://example.com/?a=1&b=2", "paramsAdded": 2 }

Canonical Checker

canonical-checkerPOST /api/v1/tools/canonical-checker

Check a page's canonical link, robots meta, and title.

ParameterTypeDefaultDescription
url*stringhttp/https URL
REQUEST
curl -X POST https://yas.sh/api/v1/tools/canonical-checker \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/page"}'
RESPONSE (200)
{ "title": "...", "canonical": "...", "noindex": false, "nofollow": false }

robots.txt Viewer

robots-txt-viewerPOST /api/v1/tools/robots-txt-viewer

Fetch and parse a site's robots.txt rules.

ParameterTypeDefaultDescription
url*stringSite URL (origin)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/robots-txt-viewer \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
RESPONSE (200)
{ "origin": "https://example.com", "status": 200, "rules": [{ "userAgent": "*", "allow":[], "disallow":["/admin"] }], "sitemaps": [...] }

Favicon Finder

favicon-finderPOST /api/v1/tools/favicon-finder

Locate a site's favicon URL(s).

ParameterTypeDefaultDescription
url*stringSite URL
REQUEST
curl -X POST https://yas.sh/api/v1/tools/favicon-finder \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
RESPONSE (200)
{ "origin": "https://example.com", "pageStatus": 200, "icons": ["https://example.com/favicon.ico"] }

Open Graph Preview

open-graph-previewPOST /api/v1/tools/open-graph-preview

Fetch a URL and show its Open Graph / Twitter meta as a preview card.

ParameterTypeDefaultDescription
url*stringhttp/https URL
REQUEST
curl -X POST https://yas.sh/api/v1/tools/open-graph-preview \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
RESPONSE (200)
{ "pageUrl": "...", "openGraph": { "title":"...", "image":"..." }, "twitter": {...}, "fallbackTitle": "..." }

Regex Escaper

regex-escaperPOST /api/v1/tools/regex-escaper

Escape a literal string to be regex-safe.

ParameterTypeDefaultDescription
input*stringText to escape
REQUEST
curl -X POST https://yas.sh/api/v1/tools/regex-escaper \
  -H "Content-Type: application/json" \
  -d '{"input":"a.b*c"}'
RESPONSE (200)
{ "escaped": "a\.b\*c", "original": "a.b*c" }

UUID v7 Generator

uuid-v7POST /api/v1/tools/uuid-v7

Generate time-ordered (sortable) UUID v7.

ParameterTypeDefaultDescription
countinteger1How many (1–50)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/uuid-v7 \
  -H "Content-Type: application/json" \
  -d '{"count":1}'
RESPONSE (200)
{ "version": 7, "count": 1, "result": "018f...-...-7...-..." }

MIME Type Lookup

mime-type-lookupPOST /api/v1/tools/mime-type-lookup

Look up MIME types by extension or type.

ParameterTypeDefaultDescription
q*stringExtension (png) or MIME (image/png)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/mime-type-lookup \
  -H "Content-Type: application/json" \
  -d '{"q":"png"}'
RESPONSE (200)
{ "query": "png", "type": "extension", "mime": "image/png", "known": true }

ULID Generator

ulid-generatorPOST /api/v1/tools/ulid-generator

Generate sortable 128-bit ULIDs or parse timestamp.

ParameterTypeDefaultDescription
countinteger1Count to generate (1–50)
inputstringOptional ULID string to parse
REQUEST
curl -X POST https://yas.sh/api/v1/tools/ulid-generator \
  -H "Content-Type: application/json" \
  -d '{"count":1}'
RESPONSE (200)
{ "slug": "ulid-generator", "count": 1, "result": "01ARZ3NDEKTSV4RRFFQ69G5FAV" }

NanoID Generator

nanoid-generatorPOST /api/v1/tools/nanoid-generator

Generate compact URL-friendly unique IDs.

ParameterTypeDefaultDescription
countinteger1Count (1–50)
sizeinteger21ID length (4–128)
alphabetstringCustom alphabet
REQUEST
curl -X POST https://yas.sh/api/v1/tools/nanoid-generator \
  -H "Content-Type: application/json" \
  -d '{"count":1,"size":21}'
RESPONSE (200)
{ "slug": "nanoid-generator", "count": 1, "size": 21, "result": "V1StGXR8_Z5jdHi6B-myT" }

cURL to Fetch Converter

curl-to-fetchPOST /api/v1/tools/curl-to-fetch

Convert cURL command to JS Fetch, Python, and Go code.

ParameterTypeDefaultDescription
input*stringcURL command
REQUEST
curl -X POST https://yas.sh/api/v1/tools/curl-to-fetch \
  -H "Content-Type: application/json" \
  -d '{"input":"curl -X POST https://api.example.com -d '{\"a\":1}'"}'
RESPONSE (200)
{ "slug": "curl-to-fetch", "parsed": { "url": "https://api.example.com", "method": "POST" } }

JSON Repair & Sanitizer

json-repairPOST /api/v1/tools/json-repair

Repair broken, unquoted, and malformed JSON strings.

ParameterTypeDefaultDescription
input*stringMalformed JSON text
REQUEST
curl -X POST https://yas.sh/api/v1/tools/json-repair \
  -H "Content-Type: application/json" \
  -d '{"input":"{ name: 'test', count: 1, }"}'
RESPONSE (200)
{ "slug": "json-repair", "repaired": "{
  "name": "test",
  "count": 1
}", "valid": true }

Bcrypt Hash & Compare

bcrypt-testerPOST /api/v1/tools/bcrypt-tester

Hash password or verify plaintext against bcrypt hash.

ParameterTypeDefaultDescription
password*stringPlaintext password
modestringhashMode: 'hash' or 'verify'
hashstringBcrypt hash to compare (when mode=verify)
roundsinteger10Salt rounds (4–12)
REQUEST
curl -X POST https://yas.sh/api/v1/tools/bcrypt-tester \
  -H "Content-Type: application/json" \
  -d '{"password":"SecretPassword123!","mode":"hash","rounds":10}'
RESPONSE (200)
{ "slug": "bcrypt-tester", "mode": "hash", "rounds": 10, "hash": "$2a$10$..." }

User-Agent Parser

user-agent-parserPOST /api/v1/tools/user-agent-parser

Parse User-Agent string into browser, OS and device.

ParameterTypeDefaultDescription
userAgent*stringUser-Agent string
REQUEST
curl -X POST https://yas.sh/api/v1/tools/user-agent-parser \
  -H "Content-Type: application/json" \
  -d '{"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"}'
RESPONSE (200)
{ "slug": "user-agent-parser", "browser": { "name": "Chrome" }, "os": { "name": "macOS" } }

CIDR Subnet Calculator

cidr-calculatorPOST /api/v1/tools/cidr-calculator

Calculate CIDR IP ranges, netmasks, and usable host counts.

ParameterTypeDefaultDescription
input*stringCIDR string e.g. 192.168.1.0/24
REQUEST
curl -X POST https://yas.sh/api/v1/tools/cidr-calculator \
  -H "Content-Type: application/json" \
  -d '{"input":"192.168.1.0/24"}'
RESPONSE (200)
{ "slug": "cidr-calculator", "networkAddress": "192.168.1.0", "usableHosts": 254 }

security.txt RFC 9116 Validator

security-txt-validatorPOST /api/v1/tools/security-txt-validator

Validate RFC 9116 security.txt files for contact and expiration.

ParameterTypeDefaultDescription
input*stringsecurity.txt content
REQUEST
curl -X POST https://yas.sh/api/v1/tools/security-txt-validator \
  -H "Content-Type: application/json" \
  -d '{"input":"Contact: mailto:security@example.com\nExpires: 2027-01-01T00:00:00Z"}'
RESPONSE (200)
{ "slug": "security-txt-validator", "valid": true, "totalDirectives": 2 }

XML Sitemap Validator

sitemap-validatorPOST /api/v1/tools/sitemap-validator

Inspect and validate XML sitemaps for schema compliance and URLs.

ParameterTypeDefaultDescription
input*stringXML sitemap text
REQUEST
curl -X POST https://yas.sh/api/v1/tools/sitemap-validator \
  -H "Content-Type: application/json" \
  -d '{"input":"<urlset><url><loc>https://example.com/</loc></url></urlset>"}'
RESPONSE (200)
{ "slug": "sitemap-validator", "valid": true, "urlCount": 1 }

SemVer Comparator

semver-comparatorPOST /api/v1/tools/semver-comparator

Compare semantic versions and evaluate npm range specs.

ParameterTypeDefaultDescription
v1*stringVersion 1
v2*stringVersion 2
rangestringOptional range spec e.g. ^1.0.0
REQUEST
curl -X POST https://yas.sh/api/v1/tools/semver-comparator \
  -H "Content-Type: application/json" \
  -d '{"v1":"1.2.3","v2":"1.3.0","range":"^1.2.0"}'
RESPONSE (200)
{ "slug": "semver-comparator", "comparison": "less", "satisfies": true }

URL Tracking Cleaner

url-cleanerPOST /api/v1/tools/url-cleaner

Strip marketing tracking parameters from URLs.

ParameterTypeDefaultDescription
input*stringURL with tracking params
REQUEST
curl -X POST https://yas.sh/api/v1/tools/url-cleaner \
  -H "Content-Type: application/json" \
  -d '{"input":"https://example.com/page?utm_source=twitter&fbclid=123"}'
RESPONSE (200)
{ "slug": "url-cleaner", "cleanedUrl": "https://example.com/page", "removedParams": ["utm_source", "fbclid"] }

Base58 Converter

base58-converterPOST /api/v1/tools/base58-converter

Encode and decode Base58 strings for Bitcoin and IPFS.

ParameterTypeDefaultDescription
input*stringInput text
modestringencodeMode: 'encode' or 'decode'
REQUEST
curl -X POST https://yas.sh/api/v1/tools/base58-converter \
  -H "Content-Type: application/json" \
  -d '{"input":"Hello Bitcoin","mode":"encode"}'
RESPONSE (200)
{ "slug": "base58-converter", "mode": "encode", "result": "726XnZrT3sVbU7j" }

Hex Dump Viewer

hex-viewerPOST /api/v1/tools/hex-viewer

Format text and binary into canonical hex dump with ASCII column.

ParameterTypeDefaultDescription
input*stringInput string
REQUEST
curl -X POST https://yas.sh/api/v1/tools/hex-viewer \
  -H "Content-Type: application/json" \
  -d '{"input":"Hello World!"}'
RESPONSE (200)
{ "slug": "hex-viewer", "bytes": 12, "hexDump": "00000000: 48 65 6c 6c 6f 20 57 6f  72 6c 64 21        |Hello World!|" }

PEM Certificate Converter

pem-converterPOST /api/v1/tools/pem-converter

Convert between PEM text armor and base64 DER binary format.

ParameterTypeDefaultDescription
input*stringPEM certificate text
REQUEST
curl -X POST https://yas.sh/api/v1/tools/pem-converter \
  -H "Content-Type: application/json" \
  -d '{"input":"-----BEGIN CERTIFICATE-----\nMIIB...\n-----END CERTIFICATE-----"}'
RESPONSE (200)
{ "slug": "pem-converter", "type": "CERTIFICATE", "byteLength": 240 }

BIP-39 Mnemonic Generator

bip39-generatorPOST /api/v1/tools/bip39-generator

Generate and validate 12 and 24-word BIP-39 mnemonic seed phrases.

ParameterTypeDefaultDescription
wordsinteger12Word count: 12 or 24
REQUEST
curl -X POST https://yas.sh/api/v1/tools/bip39-generator \
  -H "Content-Type: application/json" \
  -d '{"words":12}'
RESPONSE (200)
{ "slug": "bip39-generator", "wordsCount": 12, "mnemonic": "abandon ability able about..." }

Email Warmup Scheduler

email-warmup-calculatorPOST /api/v1/tools/email-warmup-calculator

Calculate automated 14-day and 30-day domain sending warmup schedules.

ParameterTypeDefaultDescription
targetDailyVolumeinteger50000Target daily volume
daysinteger30Duration: 14 or 30 days
speedstringstandardconservative, standard, aggressive
REQUEST
curl -X POST https://yas.sh/api/v1/tools/email-warmup-calculator \
  -H "Content-Type: application/json" \
  -d '{"targetDailyVolume":50000,"days":30,"speed":"standard"}'
RESPONSE (200)
{ "slug": "email-warmup-calculator", "totalDays": 30, "targetDailyVolume": 50000 }

Dangling CNAME Takeover Checker

dangling-cname-checkerPOST /api/v1/tools/dangling-cname-checker

Inspect DNS CNAME records for dangling pointers to S3, GitHub and Vercel.

ParameterTypeDefaultDescription
domain*stringDomain name
cnameTargetstringOptional CNAME target hostname
REQUEST
curl -X POST https://yas.sh/api/v1/tools/dangling-cname-checker \
  -H "Content-Type: application/json" \
  -d '{"domain":"assets.example.com","cnameTarget":"my-bucket.s3.amazonaws.com"}'
RESPONSE (200)
{ "slug": "dangling-cname-checker", "isDangling": false, "riskLevel": "SAFE" }

DNSBL & Spam Blacklist Radar

dnsbl-radarPOST /api/v1/tools/dnsbl-radar

Audit IP and domain reputation across Spamhaus, Barracuda and SpamCop.

ParameterTypeDefaultDescription
target*stringIP address or domain
REQUEST
curl -X POST https://yas.sh/api/v1/tools/dnsbl-radar \
  -H "Content-Type: application/json" \
  -d '{"target":"1.1.1.1"}'
RESPONSE (200)
{ "slug": "dnsbl-radar", "target": "1.1.1.1", "listedCount": 0, "totalAudited": 5 }

BROWSER-ONLY TOOLS

These tools are intentionally not available via the server API — their canonical implementation runs in the browser at /tools/:slug (SSRF risk for arbitrary URL fetching, or browser-only APIs like the File API). A POST /api/v1/tools/:slug attempt returns HTTP 409 with an RFC 9457 body: { code: "CLIENT_ONLY_TOOL", tool, executionMode: "client", apiAvailable: false } — never a success-shaped response. GET metadata reports executionMode: "client" and apiAvailable: false:

  • base64-file
    Requires the browser File API — files are processed locally and never uploaded.
  • xml-validator
    Uses the browser DOMParser — no server XML parser is bundled by design.
  • json-xml
    Complex JSON ⇄ XML conversion runs client-side in the tool page.
  • csv-converter
    Runs client-side — potentially sensitive tabular data never leaves your browser.
  • sql-formatter
    Runs client-side — SQL text must not leave your browser.
اسأل مساعد YAS
🍪 ملفات الارتباط والخصوصية. ملفات ضرورية لتسجيل الدخول واللغة والسمة. قد يستخدم Google AdSense ملفات للإعلانات بعد اختيار «قبول الكل». يعمل reCAPTCHA على صفحات تسجيل الدخول والتواصل. كيفية استخدام Google للبيانات: https://policies.google.com/technologies/partner-sites سياسة الكوكيز · سياسة الخصوصية.
الإعدادات