URL Encoder / Decoder API Reference
Encode any string for safe use in a URL or query parameter using percent-encoding (RFC 3986), or decode a percent-encoded string back to plain text. Supports both full URL encoding (preserves ://?=& structure) and component encoding (encodes every special character). Shows a character-by-character encoding table for reference.
Endpoint
/api/url-encoderFull URL: https://quickhelp.dev/api/url-encoder
Request
Content-Type: application/json. No authentication required for the anonymous free tier (30 req/min per IP).
| Field | Type | Required | Description |
|---|---|---|---|
| input | string | Yes | The string to encode or decode |
| mode | default | No | encode-component — encodes every character except A–Z a–z 0–9 - _ . ! ~ * ' ( ); encode-full — preserves URL structure characters (: / ? # [ ] @ ! $ & ' ( ) * + , ; =); decode — converts %XX sequences back to plain text |
Response
Returns application/json. On error, returns a JSON object with an error string field and an appropriate HTTP status code.
| Field | Type | Description |
|---|---|---|
| output | string | The encoded or decoded result |
| mode | enum | — |
| changed | boolean | True if the output differs from the input |
| encoding_table | array | Characters that were changed, for reference (encode modes only) |
Example
Encode a query parameter value
curl
curl -X POST https://quickhelp.dev/api/url-encoder \
-H 'Content-Type: application/json' \
-d '{"input":"hello world & more=stuff","mode":"encode-component"}'Request body
{
"input": "hello world & more=stuff",
"mode": "encode-component"
}Response
{
"output": "hello%20world%20%26%20more%3Dstuff",
"mode": "encode-component",
"changed": true,
"encoding_table": [
{
"original": " ",
"encoded": "%20"
},
{
"original": "&",
"encoded": "%26"
},
{
"original": "=",
"encoded": "%3D"
}
]
}Error codes
| Status | Meaning |
|---|---|
| 200 | Success — result in response body |
| 400 | Bad request — invalid input; error field describes the problem |
| 404 | Tool not found |
| 429 | Rate limit exceeded (30 req/min anonymous, 300 req/min free key) |
| 500 | Internal server error — transient; retry with exponential back-off |
OpenAPI spec
The full OpenAPI 3.1 specification for all tools is available at /openapi.json. Import it into Postman, Insomnia, or any OpenAPI-compatible client to get all endpoints with schema validation automatically.