Beta

no.tools API

Nutze die Tools in deinen eigenen Anwendungen, Skripten und Automatisierungen. Eine JSON-Anfrage pro Funktion – kostenlos und ohne Anmeldung.

OpenAPI-Spezifikation

Schnellstart

Jede Funktion ist eine POST-Anfrage mit JSON im Body. Die Antwort ist ebenfalls JSON.

curl https://api.no.tools/v1/base64/encode \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello, no.tools!"}'
{ "base64": "SGVsbG8sIG5vLnRvb2xzIQ==" }

Zugang und Limits

  • Ohne Key: 30 Anfragen pro Minute und IP-Adresse.
  • Mit API-Key: 600 Anfragen pro Minute. Sende ihn im Header Authorization: Bearer DEIN_KEY.
  • Du brauchst einen Key oder ein höheres Limit? Schreib an [email protected].

Bewahre Keys auf deinem Server auf – nie in öffentlichem Browser-Code.

Fehler

Fehler liefern einen Statuscode und JSON mit error.code und error.message.

400Ungültiges JSON oder Parameter passen nicht zum Schema (details nennt die Felder)
401Ungültiger oder widerrufener API-Key
404Unbekannter Endpunkt
413Body größer als 10 MB
422Das Tool kann die Eingabe nicht verarbeiten, z. B. ungültiges Base64
429Limit überschritten – siehe Header Retry-After

Datenschutz

Deine Eingaben werden nur im Arbeitsspeicher verarbeitet und weder gespeichert noch protokolliert. Für das Rate-Limit werden Anfragen pro IP-Adresse bzw. Key 60 Sekunden lang gezählt.

Endpunkte

Base64 Kodieren / Dekodieren

Tool öffnen

Text in Base64 kodieren

POSThttps://api.no.tools/v1/base64/encode

Parameter

NameTypStandard
textPflicht
Text to encode (UTF-8)
string
urlSafe = false
Use the URL-safe alphabet (base64url) without padding
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/base64/encode \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello, no.tools!"}'

Beispielantwort

{
  "base64": "SGVsbG8sIG5vLnRvb2xzIQ=="
}

Base64 in Text dekodieren

POSThttps://api.no.tools/v1/base64/decode

Parameter

NameTypStandard
base64Pflicht
Standard or URL-safe Base64; whitespace and missing padding are allowed
string

Beispielanfrage

curl https://api.no.tools/v1/base64/decode \
  -H "Content-Type: application/json" \
  -d '{"base64":"SGVsbG8sIG5vLnRvb2xzIQ=="}'

Beispielantwort

{
  "text": "Hello, no.tools!"
}

Farbkonverter & Kontrastprüfer

Tool öffnen

Farbe in alle Formate umrechnen

POSThttps://api.no.tools/v1/color-converter/convert

Parameter

NameTypStandard
colorPflicht
Any CSS color: #hex, rgb(), hsl(), hwb(), oklch() or a color name
string
scale = false
Also return tints and shades (12 steps, light to dark)
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/color-converter/convert \
  -H "Content-Type: application/json" \
  -d '{"color":"rebeccapurple"}'

Beispielantwort

{
  "hex": "#663399",
  "rgb": "rgb(102 51 153)",
  "hsl": "hsl(270 50% 40%)",
  "hsv": "hsv(270, 66.7%, 60%)",
  "oklch": "oklch(44.03% 0.1603 303.37)",
  "cmyk": "cmyk(33%, 67%, 0%, 40%)",
  "rgba": {
    "r": 102,
    "g": 51,
    "b": 153,
    "a": 1
  }
}

Kontrast nach WCAG prüfen

POSThttps://api.no.tools/v1/color-converter/contrast

Parameter

NameTypStandard
foregroundPflicht
Text color
string
backgroundPflicht
Background color
string

Beispielanfrage

curl https://api.no.tools/v1/color-converter/contrast \
  -H "Content-Type: application/json" \
  -d '{"foreground":"#2563eb","background":"#ffffff"}'

Beispielantwort

{
  "ratio": 5.17,
  "wcag": {
    "aaNormal": true,
    "aaLarge": true,
    "aaaNormal": false,
    "aaaLarge": true,
    "ui": true
  }
}

Zinseszins- & Sparplanrechner

Tool öffnen

Sparplan mit Zinseszins berechnen

POSThttps://api.no.tools/v1/compound-interest/simulate

Parameter

NameTypStandard
initial = 0
Starting capital
number 0–10000000000000
monthly = 0
Contribution at the end of each month
number 0–10000000000000
ratePflicht
Nominal interest rate per year in percent
number -50–100
yearsPflichtinteger 1–100
compounding = "monthly""monthly" | "yearly""monthly"
increase = 0
Yearly increase of the monthly contribution in percent
number 0–1000

Beispielanfrage

curl https://api.no.tools/v1/compound-interest/simulate \
  -H "Content-Type: application/json" \
  -d '{"initial":1000,"monthly":100,"rate":5,"years":3}'

Beispielantwort

{
  "final": 5036.805783336707,
  "totalContributions": 4600,
  "totalInterest": 436.80578333670746,
  "rows": [
    {
      "year": 1,
      "contributions": 1200,
      "interest": 79.04744704332973,
      "balance": 2279.047447043329,
      "totalContributions": 2200,
      "totalInterest": 79.04744704332973
    },
    {
      "year": 2,
      "contributions": 1200,
      "interest": 144.4859419148521,
      "balance": 3623.533388958181,
      "totalContributions": 3400,
      "totalInterest": 223.53338895818183
    },
    {
      "year": 3,
      "contributions": 1200,
      "interest": 213.2723943785256,
      "balance": 5036.805783336707,
      "totalContributions": 4600,
      "totalInterest": 436.80578333670746
    }
  ]
}

Cron-Ausdruck-Erklärer

Tool öffnen

Cron-Ausdruck erklären und nächste Ausführungen berechnen

POSThttps://api.no.tools/v1/cron-expression/explain

Parameter

NameTypStandard
expressionPflicht
5-field cron expression or a macro like @daily
string
count = 5
Number of upcoming runs
integer 1–505
from
Start time (ISO 8601); default: now
string
locale = "en"
Language of the description
"en" | "de""en"

Beispielanfrage

curl https://api.no.tools/v1/cron-expression/explain \
  -H "Content-Type: application/json" \
  -d '{"expression":"*/15 9-17 * * 1-5","count":3,"from":"2026-10-15T08:00:00Z"}'

Beispielantwort

{
  "expression": "*/15 9-17 * * 1-5",
  "description": "Every 15 minutes, between 09:00 and 17:59, Monday through Friday",
  "nextRuns": [
    "2026-10-15T09:00:00.000Z",
    "2026-10-15T09:15:00.000Z",
    "2026-10-15T09:30:00.000Z"
  ]
}

Währungsrechner

Tool öffnen

Betrag in eine andere Währung umrechnen

POSThttps://api.no.tools/v1/currency-converter/convert

Parameter

NameTypStandard
amount = 1number1
fromPflicht
Source currency (ISO 4217)
string
toPflicht
Target currency or list of currencies
string | string[]

Beispielanfrage

curl https://api.no.tools/v1/currency-converter/convert \
  -H "Content-Type: application/json" \
  -d '{"amount":100,"from":"EUR","to":["USD","CHF"]}'

Beispielantwort

{
  "amount": 100,
  "from": "EUR",
  "date": "2026-10-14",
  "results": [
    {
      "currency": "USD",
      "rate": 1.1195,
      "value": 111.95
    },
    {
      "currency": "CHF",
      "rate": 0.933,
      "value": 93.3
    }
  ],
  "source": "European Central Bank reference rates via frankfurter.dev"
}

Aktuelle Referenzkurse abrufen

POSThttps://api.no.tools/v1/currency-converter/rates

Parameter

NameTypStandard
base
Base currency
string

Beispielanfrage

curl https://api.no.tools/v1/currency-converter/rates \
  -H "Content-Type: application/json" \
  -d '{"base":"EUR"}'

Beispielantwort

{
  "base": "EUR",
  "date": "2026-10-14",
  "rates": {
    "CHF": 0.933,
    "EUR": 1,
    "GBP": 0.84385,
    "USD": 1.1195
  },
  "source": "European Central Bank reference rates via frankfurter.dev"
}

YAML ↔ JSON ↔ CSV Konverter

Tool öffnen

Zwischen JSON, YAML und CSV umwandeln

POSThttps://api.no.tools/v1/data-converter/convert

Parameter

NameTypStandard
inputPflicht
Source data as text
string
from = "auto""auto" | "json" | "yaml" | "csv""auto"
toPflicht"json" | "yaml" | "csv"
indent = 2
Indentation for JSON/YAML
integer 0–82
delimiter = "auto"
CSV delimiter (auto = detect when reading, comma when writing)
"auto" | "comma" | "semicolon" | "tab" | "pipe""auto"
header = true
The first CSV row contains column names
booleantrue

Beispielanfrage

curl https://api.no.tools/v1/data-converter/convert \
  -H "Content-Type: application/json" \
  -d '{"input":"name;city\nAnna;Berlin\nBen;Hamburg","to":"json"}'

Beispielantwort

{
  "output": "[\n  {\n    \"name\": \"Anna\",\n    \"city\": \"Berlin\"\n  },\n  {\n    \"name\": \"Ben\",\n    \"city\": \"Hamburg\"\n  }\n]",
  "from": "csv"
}

Datumsrechner

Tool öffnen

Zeitraum zwischen zwei Daten

POSThttps://api.no.tools/v1/date-calculator/difference

Parameter

NameTypStandard
startPflichtstring
endPflichtstring
includeEnd = false
Count the end date as a full day
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/date-calculator/difference \
  -H "Content-Type: application/json" \
  -d '{"start":"2026-01-01","end":"2026-12-24"}'

Beispielantwort

{
  "days": 357,
  "direction": "forward",
  "weeks": 51,
  "restDays": 0,
  "years": 0,
  "months": 11,
  "monthDays": 23,
  "workdays": 255
}

Zeit zu einem Datum addieren oder abziehen

POSThttps://api.no.tools/v1/date-calculator/add

Parameter

NameTypStandard
datePflichtstring
amountPflicht
Negative values subtract
integer -100000–100000
unitPflicht"days" | "weeks" | "months" | "years" | "workdays"

Beispielanfrage

curl https://api.no.tools/v1/date-calculator/add \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-10-15","amount":10,"unit":"workdays"}'

Beispielantwort

{
  "date": "2026-10-29",
  "weekday": 4,
  "isoWeek": {
    "year": 2026,
    "week": 44
  }
}

DNS-Lookup

Tool öffnen

DNS-Einträge abfragen

POSThttps://api.no.tools/v1/dns-lookup/lookup

Parameter

NameTypStandard
namePflicht
Domain, URL or e-mail address; an IP address triggers a reverse (PTR) lookup
string
types = ["A","AAAA","CNAME","MX","NS","TXT","SOA","CAA"]
Record types to query
("A" | "AAAA" | "CNAME" | "MX" | "NS" | "TXT" | "SOA" | "CAA" | "SRV" | "PTR" | "DS" | "DNSKEY" | "HTTPS")[]["A","AAAA","CNAME","MX","NS","TXT","SOA","CAA"]
resolver = "cloudflare"
DNS-over-HTTPS resolver
"cloudflare" | "google""cloudflare"

Beispielanfrage

curl https://api.no.tools/v1/dns-lookup/lookup \
  -H "Content-Type: application/json" \
  -d '{"name":"no.tools","types":["A"]}'

Beispielantwort

{
  "name": "no.tools",
  "results": [
    {
      "type": "A",
      "status": "NOERROR",
      "authenticated": false,
      "records": [
        {
          "name": "no.tools",
          "type": "A",
          "ttl": 300,
          "data": "172.67.168.128"
        },
        {
          "name": "no.tools",
          "type": "A",
          "ttl": 300,
          "data": "104.21.26.196"
        }
      ]
    }
  ]
}

EXIF-Viewer & Metadaten-Entferner

Tool öffnen

Foto-Metadaten auslesen (EXIF, GPS, XMP …)

POSThttps://api.no.tools/v1/exif-viewer/read

Parameter

NameTypStandard
dataBase64Pflicht
Image file (JPEG, PNG or WebP) as Base64
string

Beispielanfrage

curl https://api.no.tools/v1/exif-viewer/read \
  -H "Content-Type: application/json" \
  -d '{"dataBase64":"/9j/4QEhRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAAyAEQAAIAAAAHAAAAzodpAAQAAAABAAAAUIglAAQAAAABAAAAeAAAAAAA…"}'

Beispielantwort

{
  "format": "jpeg",
  "hasMetadata": true,
  "gps": {
    "lat": 53.55,
    "lon": 9.983333333333333
  },
  "tags": [
    {
      "key": "Make",
      "group": "camera",
      "value": "Canon"
    },
    {
      "key": "Model",
      "group": "camera",
      "value": "EOS R6"
    },
    {
      "key": "DateTimeOriginal",
      "group": "capture",
      "value": "2026:07:14 18:30:00"
    },
    {
      "key": "GPSPosition",
      "group": "location",
      "value": "53.550000, 9.983333"
    }
  ],
  "otherTags": 0,
  "thumbnail": false,
  "xmp": false,
  "iptc": false,
  "comments": [],
  "texts": [],
  "other": []
}

Alle Metadaten verlustfrei entfernen

POSThttps://api.no.tools/v1/exif-viewer/strip

Parameter

NameTypStandard
dataBase64Pflicht
Image file (JPEG, PNG or WebP) as Base64
string

Beispielanfrage

curl https://api.no.tools/v1/exif-viewer/strip \
  -H "Content-Type: application/json" \
  -d '{"dataBase64":"/9j/4QEhRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAAyAEQAAIAAAAHAAAAzodpAAQAAAABAAAAUIglAAQAAAABAAAAeAAAAAAA…"}'

Beispielantwort

{
  "dataBase64": "/9j/wAARCAACAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9…",
  "format": "jpeg",
  "bytesBefore": 909,
  "bytesAfter": 618
}

Hash-Generator

Tool öffnen

Hash von Text oder Binärdaten berechnen

POSThttps://api.no.tools/v1/hash-generator/hash

Parameter

NameTypStandard
text
Text to hash (UTF-8). Provide either text or dataBase64.
string
dataBase64
Binary data as Base64, e.g. a file’s content
string
algorithms = ["MD5","SHA-1","SHA-256","SHA-384","SHA-512"]
Algorithms to calculate
("MD5" | "SHA-1" | "SHA-256" | "SHA-384" | "SHA-512")[]["MD5","SHA-1","SHA-256","SHA-384","SHA-512"]
encoding = "hex"
Output encoding of the digests
"hex" | "base64""hex"
uppercase = false
Uppercase hex digits
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/hash-generator/hash \
  -H "Content-Type: application/json" \
  -d '{"text":"no.tools","algorithms":["SHA-256","MD5"]}'

Beispielantwort

{
  "hashes": {
    "SHA-256": "6e56313bdb9441c7c59f219ee9b94c935c9b218e14e88e0e6028f2767110c436",
    "MD5": "147dd04ae6c853d552407c27e7f88a61"
  }
}

JSON-Formatierer & Validator

Tool öffnen

JSON formatieren

POSThttps://api.no.tools/v1/json-formatter/format

Parameter

NameTypStandard
jsonPflicht
JSON document as text
string
indent = 2
Indentation: 2, 4 or "tab"
2 | 4 | "tab"2
sortKeys = false
Sort object keys alphabetically (recursively)
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/json-formatter/format \
  -H "Content-Type: application/json" \
  -d '{"json":"{\"name\":\"no.tools\",\"tools\":31,\"tags\":[\"free\",\"private\"]}","indent":2}'

Beispielantwort

{
  "json": "{\n  \"name\": \"no.tools\",\n  \"tools\": 31,\n  \"tags\": [\n    \"free\",\n    \"private\"\n  ]\n}",
  "stats": {
    "type": "object",
    "keys": 3,
    "depth": 2
  }
}

JSON minifizieren

POSThttps://api.no.tools/v1/json-formatter/minify

Parameter

NameTypStandard
jsonPflicht
JSON document as text
string
sortKeys = false
Sort object keys alphabetically (recursively)
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/json-formatter/minify \
  -H "Content-Type: application/json" \
  -d '{"json":"{\n  \"b\": 1,\n  \"a\": [1, 2]\n}","sortKeys":true}'

Beispielantwort

{
  "json": "{\"a\":[1,2],\"b\":1}"
}

JSON prüfen

POSThttps://api.no.tools/v1/json-formatter/validate

Parameter

NameTypStandard
jsonPflicht
JSON document as text
string

Beispielanfrage

curl https://api.no.tools/v1/json-formatter/validate \
  -H "Content-Type: application/json" \
  -d '{"json":"{\"a\": 1,}"}'

Beispielantwort

{
  "valid": false,
  "error": {
    "message": "Expected double-quoted property name in JSON at position 8 (line 1 column 9)",
    "line": 1,
    "column": 9
  }
}

JWT-Decoder

Tool öffnen

JWT dekodieren (ohne Prüfung)

POSThttps://api.no.tools/v1/jwt-decoder/decode

Parameter

NameTypStandard
tokenPflicht
JWT (a leading "Bearer " is ignored)
string

Beispielanfrage

curl https://api.no.tools/v1/jwt-decoder/decode \
  -H "Content-Type: application/json" \
  -d '{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE…"}'

Beispielantwort

{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
  },
  "status": null,
  "times": {
    "iat": "2018-01-18T01:30:22.000Z"
  }
}

JWT-Signatur prüfen

POSThttps://api.no.tools/v1/jwt-decoder/verify

Parameter

NameTypStandard
tokenPflicht
JWT (a leading "Bearer " is ignored)
string
keyPflicht
HMAC secret, PEM public key, JWK or JWKS (matched by kid)
string
secretEncoding = "utf8"
Encoding of an HMAC secret
"utf8" | "base64""utf8"

Beispielanfrage

curl https://api.no.tools/v1/jwt-decoder/verify \
  -H "Content-Type: application/json" \
  -d '{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE…","key":"your-256-bit-secret"}'

Beispielantwort

{
  "valid": true,
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
  },
  "status": null,
  "times": {
    "iat": "2018-01-18T01:30:22.000Z"
  }
}

Lorem-Ipsum-Generator

Tool öffnen

Lorem-Ipsum-Blindtext erzeugen

POSThttps://api.no.tools/v1/lorem-ipsum/generate

Parameter

NameTypStandard
unit = "paragraphs""paragraphs" | "sentences" | "words""paragraphs"
count = 3
Up to 200 paragraphs/sentences or 5000 words
integer 1–50003
startClassic = true
Start with “Lorem ipsum dolor sit amet …”
booleantrue
html = false
Wrap paragraphs in <p> tags
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/lorem-ipsum/generate \
  -H "Content-Type: application/json" \
  -d '{"unit":"sentences","count":2}'

Beispielantwort

{
  "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Unde aliqua eos consequat omnis, ad duis cu…"
}

Zahlensysteme & römische Zahlen

Tool öffnen

Ganze Zahlen zwischen Basis 2–36 umrechnen

POSThttps://api.no.tools/v1/number-base-converter/convert

Parameter

NameTypStandard
valuePflicht
Integer as text; sign, separators and 0x/0b/0o prefixes are allowed
string
base = 10
Base of the input
integer 2–3610
to = [2,8,10,16]
Target bases
integer 2–36[][2,8,10,16]
uppercase = falsebooleanfalse

Beispielanfrage

curl https://api.no.tools/v1/number-base-converter/convert \
  -H "Content-Type: application/json" \
  -d '{"value":"ff","base":16}'

Beispielantwort

{
  "results": {
    "2": "11111111",
    "8": "377",
    "10": "255",
    "16": "ff"
  },
  "twosComplement": {
    "8": "ff",
    "16": "00ff",
    "32": "000000ff",
    "64": "00000000000000ff"
  }
}

Römische Zahlen umrechnen

POSThttps://api.no.tools/v1/number-base-converter/roman

Parameter

NameTypStandard
valuePflicht
A number (1–3999) or a Roman numeral
integer -9007199254740991–9007199254740991 | string

Beispielanfrage

curl https://api.no.tools/v1/number-base-converter/roman \
  -H "Content-Type: application/json" \
  -d '{"value":"MCMXCIV"}'

Beispielantwort

{
  "number": 1994,
  "roman": "MCMXCIV"
}

Passwort-Generator

Tool öffnen

Zufallspasswörter erzeugen

POSThttps://api.no.tools/v1/password-generator/password

Parameter

NameTypStandard
length = 20
Length (4–128)
integer 4–12820
lowercase = truebooleantrue
uppercase = truebooleantrue
digits = truebooleantrue
symbols = truebooleantrue
excludeAmbiguous = false
Exclude look-alikes (I l 1 O 0 o)
booleanfalse
count = 1
Number of passwords (1–50)
integer 1–501

Beispielanfrage

curl https://api.no.tools/v1/password-generator/password \
  -H "Content-Type: application/json" \
  -d '{"length":16,"count":2}'

Beispielantwort

{
  "passwords": [
    "iJxHYF[>:fu84m%0",
    "&HV8#b/zWz<_-d)Z"
  ],
  "entropyBits": 103.6,
  "strength": "veryStrong",
  "crackSeconds": 774836571258945800000
}

Passphrasen erzeugen

POSThttps://api.no.tools/v1/password-generator/passphrase

Parameter

NameTypStandard
words = 5
Number of words (3–12)
integer 3–125
separator = "-"string"-"
capitalize = falsebooleanfalse
includeNumber = false
Append a digit to one random word
booleanfalse
count = 1
Number of passwords (1–50)
integer 1–501

Beispielanfrage

curl https://api.no.tools/v1/password-generator/passphrase \
  -H "Content-Type: application/json" \
  -d '{"words":5,"capitalize":true}'

Beispielantwort

{
  "passwords": [
    "Milk-Donut-Turtle-Ivory-Satin"
  ],
  "entropyBits": 49.9,
  "strength": "fair",
  "crackSeconds": 51518.1083243887
}

Prozent- & MwSt-Rechner

Tool öffnen

p % von einem Wert

POSThttps://api.no.tools/v1/percent-calculator/of

Parameter

NameTypStandard
percentPflichtnumber
basePflichtnumber

Beispielanfrage

curl https://api.no.tools/v1/percent-calculator/of \
  -H "Content-Type: application/json" \
  -d '{"percent":20,"base":150}'

Beispielantwort

{
  "result": 30
}

Wie viel Prozent sind part von whole?

POSThttps://api.no.tools/v1/percent-calculator/ratio

Parameter

NameTypStandard
partPflichtnumber
wholePflichtnumber

Beispielanfrage

curl https://api.no.tools/v1/percent-calculator/ratio \
  -H "Content-Type: application/json" \
  -d '{"part":30,"whole":120}'

Beispielantwort

{
  "result": 25
}

Grundwert berechnen

POSThttps://api.no.tools/v1/percent-calculator/base

Parameter

NameTypStandard
partPflicht
The known part
number
percentPflicht
Which percentage the part is
number

Beispielanfrage

curl https://api.no.tools/v1/percent-calculator/base \
  -H "Content-Type: application/json" \
  -d '{"part":30,"percent":20}'

Beispielantwort

{
  "result": 150
}

Prozentuale Veränderung

POSThttps://api.no.tools/v1/percent-calculator/change

Parameter

NameTypStandard
fromPflichtnumber
toPflichtnumber

Beispielanfrage

curl https://api.no.tools/v1/percent-calculator/change \
  -H "Content-Type: application/json" \
  -d '{"from":80,"to":100}'

Beispielantwort

{
  "result": 25
}

Prozent aufschlagen oder abziehen

POSThttps://api.no.tools/v1/percent-calculator/apply

Parameter

NameTypStandard
basePflichtnumber
percentPflicht
Negative for discounts, e.g. -15
number

Beispielanfrage

curl https://api.no.tools/v1/percent-calculator/apply \
  -H "Content-Type: application/json" \
  -d '{"base":200,"percent":-15}'

Beispielantwort

{
  "result": 170
}

Netto ↔ Brutto mit MwSt

POSThttps://api.no.tools/v1/percent-calculator/vat

Parameter

NameTypStandard
amountPflichtnumber
rate = 19
VAT rate in percent
number 0–10019
direction = "net-to-gross""net-to-gross" | "gross-to-net""net-to-gross"

Beispielanfrage

curl https://api.no.tools/v1/percent-calculator/vat \
  -H "Content-Type: application/json" \
  -d '{"amount":119,"direction":"gross-to-net"}'

Beispielantwort

{
  "net": 100,
  "vat": 19,
  "gross": 119
}

QR-Code-Generator

Tool öffnen

QR-Code als SVG erstellen

POSThttps://api.no.tools/v1/qr-code-generator/create

Parameter

NameTypStandard
contentPflicht
What the QR code contains: text/link, Wi-Fi credentials, contact (vCard) or e-mail
object
content.typePflicht"text" | "wifi" | "contact" | "email"
content.textPflicht
nur wenn type = "text" Link or any text
string
content.ssidPflicht
nur wenn type = "wifi"
string
content.password = ""
nur wenn type = "wifi"
string""
content.security = "WPA"
nur wenn type = "wifi"
"WPA" | "WEP" | "nopass""WPA"
content.hidden = false
nur wenn type = "wifi"
booleanfalse
content.firstName = ""
nur wenn type = "contact"
string""
content.lastName = ""
nur wenn type = "contact"
string""
content.organization = ""
nur wenn type = "contact"
string""
content.title = ""
nur wenn type = "contact"
string""
content.phone = ""
nur wenn type = "contact"
string""
content.email = ""
nur wenn type = "contact"
string""
content.website = ""
nur wenn type = "contact"
string""
content.toPflicht
nur wenn type = "email"
string
content.subject = ""
nur wenn type = "email"
string""
content.body = ""
nur wenn type = "email"
string""
errorCorrection = "M"
Error correction level (7 %, 15 %, 25 %, 30 %)
"L" | "M" | "Q" | "H""M"
margin = 2
Quiet zone in modules
integer 0–162
dark = "#000000"
Foreground color
string"#000000"
light = "#ffffff"
Background color
string"#ffffff"

Beispielanfrage

curl https://api.no.tools/v1/qr-code-generator/create \
  -H "Content-Type: application/json" \
  -d '{"content":{"type":"text","text":"https://no.tools"}}'

Beispielantwort

{
  "payload": "https://no.tools",
  "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29 29\" shape-rendering=\"crispEdges\"><path fill=…"
}

QR-Code aus Text oder Link

POSThttps://api.no.tools/v1/qr-code-generator/text

Parameter

NameTypStandard
textPflicht
Link or any text
string
errorCorrection = "M"
Error correction level (7 %, 15 %, 25 %, 30 %)
"L" | "M" | "Q" | "H""M"
margin = 2
Quiet zone in modules
integer 0–162
dark = "#000000"
Foreground color
string"#000000"
light = "#ffffff"
Background color
string"#ffffff"

Beispielanfrage

curl https://api.no.tools/v1/qr-code-generator/text \
  -H "Content-Type: application/json" \
  -d '{"text":"https://no.tools"}'

Beispielantwort

{
  "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29 29\" shape-rendering=\"crispEdges\"><path fill=…"
}

Zufallsgenerator

Tool öffnen

Zufallszahlen

POSThttps://api.no.tools/v1/random-generator/numbers

Parameter

NameTypStandard
min = 1integer -9007199254740991–90071992547409911
max = 100integer -9007199254740991–9007199254740991100
count = 1integer 1–100001
unique = false
No duplicates (e.g. lottery numbers)
booleanfalse
sort = falsebooleanfalse

Beispielanfrage

curl https://api.no.tools/v1/random-generator/numbers \
  -H "Content-Type: application/json" \
  -d '{"min":1,"max":49,"count":6,"unique":true,"sort":true}'

Beispielantwort

{
  "numbers": [
    25,
    26,
    36,
    37,
    41,
    49
  ]
}

Würfeln

POSThttps://api.no.tools/v1/random-generator/dice

Parameter

NameTypStandard
count = 1integer 1–1001
sides = 6integer 2–10006

Beispielanfrage

curl https://api.no.tools/v1/random-generator/dice \
  -H "Content-Type: application/json" \
  -d '{"count":2,"sides":6}'

Beispielantwort

{
  "rolls": [
    2,
    5
  ],
  "sum": 7
}

Münzen werfen

POSThttps://api.no.tools/v1/random-generator/coins

Parameter

NameTypStandard
count = 1integer 1–10001

Beispielanfrage

curl https://api.no.tools/v1/random-generator/coins \
  -H "Content-Type: application/json" \
  -d '{"count":3}'

Beispielantwort

{
  "flips": [
    "heads",
    "tails",
    "tails"
  ],
  "heads": 1,
  "tails": 2
}

Einträge aus einer Liste auslosen

POSThttps://api.no.tools/v1/random-generator/pick

Parameter

NameTypStandard
itemsPflicht
Entries, e.g. names
string[]
count = 1integer 1–100001

Beispielanfrage

curl https://api.no.tools/v1/random-generator/pick \
  -H "Content-Type: application/json" \
  -d '{"items":["Anna","Ben","Cara","David"],"count":1}'

Beispielantwort

{
  "picked": [
    "David"
  ]
}

Liste mischen

POSThttps://api.no.tools/v1/random-generator/shuffle

Parameter

NameTypStandard
itemsPflicht
Entries, e.g. names
string[]

Beispielanfrage

curl https://api.no.tools/v1/random-generator/shuffle \
  -H "Content-Type: application/json" \
  -d '{"items":["Anna","Ben","Cara","David"]}'

Beispielantwort

{
  "items": [
    "Anna",
    "Cara",
    "David",
    "Ben"
  ]
}

Liste in Teams aufteilen

POSThttps://api.no.tools/v1/random-generator/teams

Parameter

NameTypStandard
itemsPflicht
Entries, e.g. names
string[]
teams = 2integer 1–10002

Beispielanfrage

curl https://api.no.tools/v1/random-generator/teams \
  -H "Content-Type: application/json" \
  -d '{"items":["Anna","Ben","Cara","David","Emil"],"teams":2}'

Beispielantwort

{
  "teams": [
    [
      "David",
      "Emil",
      "Ben"
    ],
    [
      "Anna",
      "Cara"
    ]
  ]
}

Regex-Tester

Tool öffnen

Regulären Ausdruck ausführen (JavaScript)

POSThttps://api.no.tools/v1/regex-tester/test

Parameter

NameTypStandard
patternPflicht
Pattern without surrounding slashes
string
flags = "g"string"g"
textPflichtstring
replacement
Optional replacement ($1, $<name>, $&)
string
limit = 100
Maximum number of matches returned
integer 1–1000100

Beispielanfrage

curl https://api.no.tools/v1/regex-tester/test \
  -H "Content-Type: application/json" \
  -d '{"pattern":"(?<year>\\d{4})-(\\d{2})","text":"Releases: 2025-10 and 2026-03","replacement":"$2/$<year>"}'

Beispielantwort

{
  "matches": [
    {
      "index": 10,
      "end": 17,
      "text": "2025-10",
      "groups": [
        "2025",
        "10"
      ],
      "named": {
        "year": "2025"
      }
    },
    {
      "index": 22,
      "end": 29,
      "text": "2026-03",
      "groups": [
        "2026",
        "03"
      ],
      "named": {
        "year": "2026"
      }
    }
  ],
  "truncated": false,
  "replaced": "Releases: 10/2025 and 03/2026"
}

IP-Subnetzrechner

Tool öffnen

IPv4-Subnetz berechnen

POSThttps://api.no.tools/v1/subnet-calculator/calculate

Parameter

NameTypStandard
addressPflicht
e.g. "192.168.1.10/24" or "192.168.1.10 255.255.255.0"
string
splitPrefix
Optionally split the network into subnets with this prefix
integer 0–32
limit = 64
Maximum number of subnets returned when splitting
integer 1–25664

Beispielanfrage

curl https://api.no.tools/v1/subnet-calculator/calculate \
  -H "Content-Type: application/json" \
  -d '{"address":"192.168.1.10/24","splitPrefix":26}'

Beispielantwort

{
  "cidr": "192.168.1.0/24",
  "network": "192.168.1.0",
  "broadcast": "192.168.1.255",
  "netmask": "255.255.255.0",
  "wildcard": "0.0.0.255",
  "firstHost": "192.168.1.1",
  "lastHost": "192.168.1.254",
  "total": 256,
  "usable": 254,
  "address": "192.168.1.10",
  "type": "private",
  "class": "C",
  "binary": {
    "address": "11000000.10101000.00000001.00001010",
    "netmask": "11111111.11111111.11111111.00000000"
  },
  "reverseDns": "10.1.168.192.in-addr.arpa",
  "split": {
    "total": 4,
    "subnets": [
      {
        "cidr": "192.168.1.0/26",
        "network": "192.168.1.0",
        "broadcast": "192.168.1.63",
        "netmask": "255.255.255.192",
        "wildcard": "0.0.0.63",
        "firstHost": "192.168.1.1",
        "lastHost": "192.168.1.62",
        "total": 64,
        "usable": 62
      },
      {
        "cidr": "192.168.1.64/26",
        "network": "192.168.1.64",
        "broadcast": "192.168.1.127",
        "netmask": "255.255.255.192",
        "wildcard": "0.0.0.63",
        "firstHost": "192.168.1.65",
        "lastHost": "192.168.1.126",
        "total": 64,
        "usable": 62
      },
      {
        "cidr": "192.168.1.128/26",
        "network": "192.168.1.128",
        "broadcast": "192.168.1.191",
        "netmask": "255.255.255.192",
        "wildcard": "0.0.0.63",
        "firstHost": "192.168.1.129",
        "lastHost": "192.168.1.190",
        "total": 64,
        "usable": 62
      },
      {
        "cidr": "192.168.1.192/26",
        "network": "192.168.1.192",
        "broadcast": "192.168.1.255",
        "netmask": "255.255.255.192",
        "wildcard": "0.0.0.63",
        "firstHost": "192.168.1.193",
        "lastHost": "192.168.1.254",
        "total": 64,
        "usable": 62
      }
    ]
  }
}

Text ↔ Hex / Binär / ASCII

Tool öffnen

Text → Bytes (Hex, Binär, Dezimal, Oktal)

POSThttps://api.no.tools/v1/text-converter/encode

Parameter

NameTypStandard
textPflicht
Text, encoded as UTF-8
string
format = "hex""hex" | "binary" | "decimal" | "octal""hex"
separator = " "string" "
uppercase = false
Uppercase hex digits
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/text-converter/encode \
  -H "Content-Type: application/json" \
  -d '{"text":"Hallo ä"}'

Beispielantwort

{
  "bytes": "48 61 6c 6c 6f 20 c3 a4",
  "count": 8
}

Bytes → Text

POSThttps://api.no.tools/v1/text-converter/decode

Parameter

NameTypStandard
bytesPflicht
Byte values separated by spaces, commas or colons (hex/binary may be unseparated)
string
format = "hex""hex" | "binary" | "decimal" | "octal""hex"

Beispielanfrage

curl https://api.no.tools/v1/text-converter/decode \
  -H "Content-Type: application/json" \
  -d '{"bytes":"48 61 6c 6c 6f 20 c3 a4"}'

Beispielantwort

{
  "text": "Hallo ä"
}

Textvergleich (Diff)

Tool öffnen

Zeilenweiser Vergleich (nebeneinander)

POSThttps://api.no.tools/v1/text-diff/lines

Parameter

NameTypStandard
originalPflichtstring
changedPflichtstring
ignoreCase = falsebooleanfalse
ignoreWhitespace = falsebooleanfalse

Beispielanfrage

curl https://api.no.tools/v1/text-diff/lines \
  -H "Content-Type: application/json" \
  -d '{"original":"one\ntwo\nthree","changed":"one\n2\nthree\nfour"}'

Beispielantwort

{
  "identical": false,
  "added": 2,
  "removed": 1,
  "rows": [
    {
      "type": "same",
      "left": {
        "no": 1,
        "text": "one"
      },
      "right": {
        "no": 1,
        "text": "one"
      }
    },
    {
      "type": "mod",
      "left": {
        "no": 2,
        "text": "two",
        "parts": [
          {
            "type": "del",
            "value": "two"
          }
        ]
      },
      "right": {
        "no": 2,
        "text": "2",
        "parts": [
          {
            "type": "add",
            "value": "2"
          }
        ]
      }
    },
    {
      "type": "same",
      "left": {
        "no": 3,
        "text": "three"
      },
      "right": {
        "no": 3,
        "text": "three"
      }
    },
    {
      "type": "add",
      "right": {
        "no": 4,
        "text": "four"
      }
    }
  ]
}

Fortlaufender Vergleich nach Wörtern oder Zeichen

POSThttps://api.no.tools/v1/text-diff/inline

Parameter

NameTypStandard
originalPflichtstring
changedPflichtstring
ignoreCase = falsebooleanfalse
ignoreWhitespace = falsebooleanfalse
granularity = "words""words" | "chars""words"

Beispielanfrage

curl https://api.no.tools/v1/text-diff/inline \
  -H "Content-Type: application/json" \
  -d '{"original":"The quick brown fox","changed":"The quick red fox"}'

Beispielantwort

{
  "identical": false,
  "parts": [
    {
      "type": "same",
      "value": "The quick "
    },
    {
      "type": "del",
      "value": "brown"
    },
    {
      "type": "add",
      "value": "red"
    },
    {
      "type": "same",
      "value": " fox"
    }
  ]
}

Unix-Timestamp-Umrechner

Tool öffnen

Unix-Zeitstempel oder Datum umrechnen

POSThttps://api.no.tools/v1/timestamp-converter/convert

Parameter

NameTypStandard
input
Unix timestamp or date string (ISO 8601, RFC 2822); omit for now
number | string
unit = "auto"
Unit of a numeric timestamp
"auto" | "s" | "ms" | "us" | "ns""auto"
timeZone = "UTC"
IANA time zone for the "local" field, e.g. Europe/Berlin
string"UTC"
locale = "en"
Language of the relative time
"en" | "de""en"

Beispielanfrage

curl https://api.no.tools/v1/timestamp-converter/convert \
  -H "Content-Type: application/json" \
  -d '{"input":1760000000,"timeZone":"Europe/Berlin"}'

Beispielantwort

{
  "iso": "2025-10-09T08:53:20.000Z",
  "rfc2822": "Thu, 09 Oct 2025 08:53:20 GMT",
  "local": "2025-10-09 10:53:20",
  "unix": {
    "s": "1760000000",
    "ms": "1760000000000",
    "us": "1760000000000000",
    "ns": "1760000000000000000"
  },
  "detectedUnit": "s",
  "relative": "last year",
  "weekday": "Thursday",
  "isoWeek": {
    "year": 2025,
    "week": 41
  },
  "dayOfYear": 282
}

Einheitenumrechner

Tool öffnen

Einheiten umrechnen

POSThttps://api.no.tools/v1/unit-converter/convert

Parameter

NameTypStandard
valuePflichtnumber
categoryPflicht
One of: length, mass, temperature, volume, area, speed, time, data, pressure, energy
"length" | "mass" | "temperature" | "volume" | "area" | "speed" | "time" | "data" | "pressure" | "energy"
fromPflicht
Source unit id, e.g. "km" or "c"
string
to
Target unit id. Omit to get every unit of the category.
string

Beispielanfrage

curl https://api.no.tools/v1/unit-converter/convert \
  -H "Content-Type: application/json" \
  -d '{"value":5,"category":"length","from":"mi","to":"km"}'

Beispielantwort

{
  "input": {
    "unit": "mi",
    "symbol": "mi",
    "value": 5
  },
  "results": [
    {
      "unit": "km",
      "symbol": "km",
      "value": 8.04672
    }
  ]
}

URL Kodieren / Dekodieren

Tool öffnen

Text prozentkodieren

POSThttps://api.no.tools/v1/url-encoder/encode

Parameter

NameTypStandard
textPflichtstring
scope = "component"
component: also encodes & = ? / …; full: keeps the URL structure
"component" | "full""component"
spaceAsPlus = false
Encode spaces as + (form encoding)
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/url-encoder/encode \
  -H "Content-Type: application/json" \
  -d '{"text":"Grüße & Küsse"}'

Beispielantwort

{
  "encoded": "Gr%C3%BC%C3%9Fe%20%26%20K%C3%BCsse"
}

Prozentkodierung dekodieren

POSThttps://api.no.tools/v1/url-encoder/decode

Parameter

NameTypStandard
textPflichtstring
plusAsSpace = false
Treat + as space
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/url-encoder/decode \
  -H "Content-Type: application/json" \
  -d '{"text":"Gr%C3%BC%C3%9Fe%20%26%20K%C3%BCsse"}'

Beispielantwort

{
  "decoded": "Grüße & Küsse"
}

URL in Bestandteile zerlegen

POSThttps://api.no.tools/v1/url-encoder/parse

Parameter

NameTypStandard
urlPflicht
Absolute URL including the scheme
string

Beispielanfrage

curl https://api.no.tools/v1/url-encoder/parse \
  -H "Content-Type: application/json" \
  -d '{"url":"https://no.tools/de/api?ref=docs&lang=de#base64"}'

Beispielantwort

{
  "parts": [
    {
      "key": "protocol",
      "value": "https"
    },
    {
      "key": "host",
      "value": "no.tools"
    },
    {
      "key": "path",
      "value": "/de/api"
    },
    {
      "key": "query",
      "value": "ref=docs&lang=de"
    },
    {
      "key": "fragment",
      "value": "base64"
    }
  ],
  "params": [
    {
      "key": "ref",
      "value": "docs"
    },
    {
      "key": "lang",
      "value": "de"
    }
  ]
}

UUID-/ULID-Generator

Tool öffnen

UUIDs oder ULIDs erzeugen

POSThttps://api.no.tools/v1/uuid-generator/generate

Parameter

NameTypStandard
type = "v4"
v4 = random, v7 = time-ordered, ulid = time-ordered Crockford Base32
"v4" | "v7" | "ulid""v4"
count = 1
Number of IDs (1–1000)
integer 1–10001
uppercase = falsebooleanfalse
hyphens = true
UUIDs only
booleantrue
braces = false
UUIDs only: wrap in { }
booleanfalse

Beispielanfrage

curl https://api.no.tools/v1/uuid-generator/generate \
  -H "Content-Type: application/json" \
  -d '{"type":"v7","count":3}'

Beispielantwort

{
  "ids": [
    "01a13eb8-5d15-7e9c-8504-1d88e03b4ad2",
    "01a13eb8-5d15-7bdd-9c61-759514152a3a",
    "01a13eb8-5d15-7653-bf79-7071a30863a9"
  ]
}

UUID oder ULID analysieren

POSThttps://api.no.tools/v1/uuid-generator/decode

Parameter

NameTypStandard
idPflicht
UUID (any version, with or without hyphens/braces) or ULID
string

Beispielanfrage

curl https://api.no.tools/v1/uuid-generator/decode \
  -H "Content-Type: application/json" \
  -d '{"id":"01890a5d-ac96-774b-bcce-b302099a8057"}'

Beispielantwort

{
  "kind": "uuid",
  "normalized": "01890a5d-ac96-774b-bcce-b302099a8057",
  "version": 7,
  "variant": "rfc9562",
  "timestamp": "2023-06-30T03:34:18.518Z"
}

Wort- & Zeichenzähler

Tool öffnen

Wörter, Zeichen und mehr zählen

POSThttps://api.no.tools/v1/word-counter/stats

Parameter

NameTypStandard
textPflichtstring
topWords = 10
Number of most frequent words (3+ letters)
integer 0–10010

Beispielanfrage

curl https://api.no.tools/v1/word-counter/stats \
  -H "Content-Type: application/json" \
  -d '{"text":"no.tools counts words. Words, characters and sentences!","topWords":3}'

Beispielantwort

{
  "characters": 55,
  "charactersNoSpaces": 49,
  "words": 8,
  "sentences": 3,
  "paragraphs": 1,
  "lines": 1,
  "uniqueWords": 7,
  "avgWordLength": 5.63,
  "readingMinutes": 0.04,
  "speakingMinutes": 0.06,
  "bytes": 55,
  "topWords": [
    {
      "word": "words",
      "count": 2
    },
    {
      "word": "and",
      "count": 1
    },
    {
      "word": "characters",
      "count": 1
    }
  ]
}

Text umwandeln (Schreibweise, Zeilen, Aufräumen)

POSThttps://api.no.tools/v1/word-counter/transform

Parameter

NameTypStandard
textPflichtstring
transformPflicht"upper" | "lower" | "title" | "sentence" | "camel" | "pascal" | "snake" | "kebab" | "constant" | "sortAsc" | "sortDesc" | "reverseLines" | "dedupe" | "removeEmpty" | "trimLines" | "collapseSpaces" | "reverse"
locale
Locale for case conversion, e.g. "tr" or "de"
string

Beispielanfrage

curl https://api.no.tools/v1/word-counter/transform \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello no.tools API","transform":"kebab"}'

Beispielantwort

{
  "text": "hello-no-tools-api"
}