HTTP request & response testing.

Point a client at one of these endpoints to inspect a request, decode base64 or return exactly the response you need. No keys. No setup.

https://httpresponder.com · OpenAPI specification

Base64

GET/base64/{encoded}

Decode standard or URL-safe base64 directly from a URL. The decoded bytes are the response body.

curl https://httpresponder.com/base64/SGVsbG8sIHdvcmxkIQ==
GET / POST/base64

Encode UTF-8 text with mode=encode, or POST a JSON object with data and mode. Set content_type for a binary decoded response.

curl -X POST https://httpresponder.com/base64 \
  -H 'content-type: application/json' \
  -d '{"data":"Hello, world!","mode":"encode"}'

Custom responses

GET / POST/respond

Choose the status, body, content_type and response headers. Use base64 for binary response bodies. Works with GET or POST.

curl 'https://httpresponder.com/respond?status=201&body=Created'
GET/mix/{directives}

Combine status (s), headers (h), cookies (c), redirects (r) and a base64 body (b64) in one path.

curl 'https://httpresponder.com/mix/s=201/h=content-type:text%2Fplain/b64=SGVsbG8='
GET/response-headers

Return the query parameters as response headers.

Inspect requests

ANY/anything

Echo the request method, URL, headers, query arguments and body. JSON, URL-encoded forms and multipart uploads are parsed.

curl -X POST https://httpresponder.com/anything -d 'hello=world'
ANY/get · /post · /put · /patch · /delete

Method-specific request echo endpoints. Use the matching HTTP method.

GET/headers

Return incoming request headers as JSON.

ANY/payload

Return the request body unchanged, with its original content type.

GET/ip · /user-agent

Inspect the client IP or User-Agent header.

Status codes & redirects

GET/status/{codes}

Return an HTTP status from 200 to 599. A comma-separated list, such as 200,503, chooses a response at random.

GET/redirect-to

Redirect to the url query parameter. Set status_code to 301, 302, 303, 307 or 308.

GET/redirect/{count}

Follow a chain of redirects before reaching /get. /relative-redirect and /absolute-redirect choose the Location format.

Authentication & cookies

GET/basic-auth/{username}/{password}

Require matching HTTP Basic credentials. Missing or incorrect credentials return 401.

GET/bearer/{expectedToken}

Test Bearer authentication. Omit the expected token to accept any non-empty bearer token.

GET/cookies

Read request cookies. /cookies/set?name=value sets cookies; /cookies/delete?name= removes them.

Delays & streaming

GET/delay/{seconds}

Wait before responding with the request echo. Fractional seconds are supported, up to 10 seconds.

GET/stream/{count}

Stream newline-delimited JSON records.

GET/sse

Stream server-sent events. Control count and duration with query parameters.

GET/drip

Send bytes over time. Configure numbytes, duration, delay and code; total duration is limited to 10 seconds.

Data & caching

GET/bytes/{count}

Return random binary data, up to 1 MiB.

GET/uuid

Generate a random UUID.

GET/json · /html · /xml

Fetch a small document in the specified content type.

GET/gzip · /deflate

Return a compressed request echo.

GET/etag/{tag}

Test If-Match and If-None-Match handling. /cache/{seconds} sets Cache-Control.

All endpoints allow cross-origin requests. HTML responses can execute JavaScript in an isolated origin. Request bodies and generated bytes are limited to 1 MiB; informational 1xx responses are not supported. Full parameters and response schemas →