Time and timezones, encoding and hashing, colour maths, statistics, checksum validation,
QR codes, placeholder data and reference datasets — all as plain JSON over HTTPS.
No signup, no API key, no client library. Every endpoint on this page is live:
press Run and you are calling the real thing.
Tries a long list of common layouts, including unix timestamps in seconds and milliseconds, and reports which one matched.
Parameter
Type
Description
Value
timerequired
string
Date or timestamp to parse
tz
string
Timezone to assume when the input carries no offset
default UTC
Example response
{
"input": "7 Aug 2026 22:00",
"matched_layout": "2 Jan 2006 15:04",
"rfc3339": "2026-08-07T22:00:00+02:00",
"timezone": "Europe/Stockholm",
"unix": 1786136400,
"weekday": "Friday"
}
GET/v1/time/cron
Explain a cron expression and list its next runs
Parses a standard five-field cron expression, or a @macro such as @daily, and returns a plain-English description plus the next fire times in the timezone you choose.
Returns the address the request arrived from. Behind a reverse proxy this reads X-Forwarded-For, but only when the immediate peer is a configured trusted proxy.
Parameter
Type
Description
Value
format
string
json or text; text returns the bare address for shell use
default json
Returns the method, path, query, headers and body exactly as this server received them. The quickest way to find out what your client, proxy or CDN is actually sending.
Useful for exercising a client's error and retry paths. Any code between 200 and 599 is returned verbatim.
Parameter
Type
Description
Value
codepathrequired
integer
HTTP status code to return, 200-599
Example response
{
"description": "The server is temporarily overloaded or down for maintenance. Send Retry-After.",
"name": "Service Unavailable",
"status": 503
}
GET/v1/delay/{seconds}
Respond after a delay
Holds the response open for the requested number of seconds, for testing client timeouts. Capped at 10 seconds.
Parameter
Type
Description
Value
secondspathrequired
number
Seconds to wait, 0-10 (fractions allowed)
Example response
{
"delay_seconds": 2,
"slept_ms": 2001
}
GET/v1/user-agent
Parse a User-Agent string
Parses the caller's User-Agent, or one supplied via ?ua=. Detection is heuristic — user agent strings are a pile of historical fiction — so treat the result as a strong hint rather than fact.
Parameter
Type
Description
Value
ua
string
User-Agent to parse instead of your own
Example response
{
"browser": "Chrome",
"browser_version": "120.0",
"device": "desktop",
"is_bot": false,
"os": "macOS",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36"
}
Random
GET/v1/uuid
Generate UUIDs
Version 4 UUIDs are fully random. Version 7 embeds a millisecond timestamp in the high bits, so they sort chronologically — useful as database keys.
Generate passwords with an honest entropy estimate
Memorable passwords are drawn from the EFF short diceware list; random ones from a character set. Entropy is computed from the actual pool size, so you can see what you are really getting.
Returns SVG by default, which stays sharp at any size and embeds straight into HTML. Ask for png to get a raster image, or json to get the raw module grid and draw it yourself.
Parameter
Type
Description
Value
textrequired
string
Content to encode. Alternatively POST it as the body.
format
string
svg, png or json
default svg
size
integer
Image size in pixels, 64-1024
default 256
level
string
Error correction: low, medium, high or highest
default medium
dark
string
Module colour
default #000000
light
string
Background colour; use none for transparent
default #ffffff
Example response
{
"format": "json",
"level": "medium",
"modules": 25,
"note": "Set format=svg or format=png to receive the image itself.",
"text": "https://example.com"
}
GET/v1/badge
Generate an SVG status badge
The familiar two-tone README badge, rendered server-side as SVG. Drop the URL straight into a Markdown image tag.
Parameter
Type
Description
Value
label
string
Left-hand text
default build
valuerequired
string
Right-hand text
color
string
Right-hand colour: a name like brightgreen, or any hex value
default brightgreen
label_color
string
Left-hand colour
default #555
style
string
flat or square
default flat
Example response
{
"note": "Returns image/svg+xml. Embed with "
}
Fake
GET/v1/fake/person
Generate fake people
Placeholder records for seeding a database or filling a demo. Every value is invented: email domains are RFC 2606 reserved names, so nothing here can reach a real person.
Unicode-aware: accented letters are folded to their ASCII base (Skära becomes skara), and anything left over is dropped.
Parameter
Type
Description
Value
text
string
Text to slugify. Alternatively POST it as the body.
separator
string
Character to join words with
default -
Example response
{
"input": "Räksmörgås på Skärgården!",
"slug": "raksmorgas-pa-skargarden"
}
GETPOST/v1/case
Convert between naming conventions
Returns every common case style at once, so you can pick the one you needed without asking twice.
Parameter
Type
Description
Value
text
string
Text to convert. Alternatively POST it as the body.
Example response
{
"camel": "helloWorldExample",
"constant": "HELLO_WORLD_EXAMPLE",
"dot": "hello.world.example",
"input": "hello world example",
"kebab": "hello-world-example",
"lower": "hello world example",
"pascal": "HelloWorldExample",
"sentence": "Hello world example",
"snake": "hello_world_example",
"title": "Hello World Example",
"upper": "HELLO WORLD EXAMPLE"
}
GET/v1/lorem
Generate placeholder text
Parameter
Type
Description
Value
paragraphs
integer
Number of paragraphs, 1-50
default 3
sentences
integer
Sentences per paragraph, 1-30
default 5
words
integer
If set, return exactly this many words instead, 1-2000
default 0
Example response
{
"paragraphs": [
"Lorem ipsum dolor sit amet, consectetur adipiscing elit."
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"word_count": 8
}
Encoding
GETPOST/v1/hash
Hash text with several algorithms at once
Returns every digest in one response, so you do not have to guess which one you needed. POST the raw body to hash bytes that do not survive a query string.
Parameter
Type
Description
Value
text
string
Input text. Alternatively POST the raw bytes as the request body.
Splits the token and decodes its header and payload, expanding the standard time claims. The signature is NOT verified — this tells you what a token says, never whether to trust it. POST only, so tokens stay out of browser history and proxy logs.
Returns the ratio and whether it clears WCAG 2.1 AA and AAA for normal and large text. This is the calculation people most often get wrong by hand — the channel values need linearising first.
Parameter
Type
Description
Value
foregroundrequired
string
Text colour
backgroundrequired
string
Background colour
Example response
{
"background": "#ffffff",
"foreground": "#767676",
"passes": {
"aa_large": true,
"aa_normal": true,
"aaa_large": true,
"aaa_normal": false
},
"ratio": 4.54,
"ratio_label": "4.54:1",
"verdict": "Passes AA for all text, AAA for large text only."
}
GET/v1/color/palette
Generate a harmonious palette from one colour
Parameter
Type
Description
Value
colorrequired
string
Hex (#2f6feb), rgb(47,111,235), hsl(220,83%,55%) or a CSS colour name
scheme
string
complementary, analogous, triadic, tetradic, monochromatic or shades
default analogous
count
integer
Colours to return for monochromatic and shades, 2-12
default 5
Covers length, mass, temperature, data, time, speed, area, volume, pressure and energy. Binary and decimal data prefixes are distinct: a MB is 1,000,000 bytes and a MiB is 1,048,576.
Verifies the Luhn check digit and names the issuing scheme from the leading digits. Nothing is stored or logged — the query string never reaches the access log — but send test numbers, not live ones.
Validate a Swedish personnummer or organisationsnummer
Handles personnummer, samordningsnummer (coordination numbers, where the day has 60 added) and organisationsnummer, all of which carry a Luhn check digit. Send test numbers only.
{
"categories": [
"biology",
"computing",
"space"
],
"count": 1,
"facts": [
{
"id": 1,
"category": "space",
"text": "A day on Venus is longer than its year: it rotates once every 243 Earth days but orbits the Sun every 225."
}
]
}
Computed from calendar rules, including the Gregorian Easter algorithm, so any year works without a lookup table. Statutory holidays and widely observed non-statutory days are distinguished.
Parameter
Type
Description
Value
countryrequired
string
ISO 3166-1 alpha-2 code; see the supported list in the response
year
integer
Year to compute, 1900-2200; defaults to the current year
include_observances
boolean
Include non-statutory days such as Christmas Eve
default true
Codes, names and minor units — how many decimal places the currency actually has. JPY has none; KWD has three. Getting this wrong is a classic source of rounding bugs. These are static facts, not exchange rates.
What each code means and which RFC defines it. For a server that actually returns a code, use /v1/status/{code} instead.
Parameter
Type
Description
Value
code
integer
Single code to look up
class
string
Restrict to a class: 1xx, 2xx, 3xx, 4xx or 5xx
Example response
{
"count": 1,
"statuses": [
{
"code": 418,
"name": "I'm a Teapot",
"spec": "RFC 2324",
"description": "An April Fools' joke from the Hyper Text Coffee Pot Control Protocol, kept alive by tradition."
}
]
}
GET/v1/emoji
Search emoji by name
The full Unicode emoji list with names, groups and codepoints. Leave the query empty and set random=true for a random pick.
Parameter
Type
Description
Value
q
string
Match on name, group or subgroup
group
string
Restrict to one group
random
boolean
Return a random selection instead of the first matches