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

Everything you submit here is recorded and kept. We store every request and response, including the headers, bodies, and parameters of every request you make, your IP address, approximate location, and network/browser fingerprints. By using httpresponder.com, you understand and agree to this. Data notice →

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 →