Hoppscotch (formerly Postwoman) is a fast, open-source alternative to Postman. It runs entirely in the browser, handles REST, GraphQL, WebSocket, SSE, and MQTT from a single clean interface, and can be self-hosted so your API collections and environment variables never touch an external cloud. For developers who work with sensitive internal APIs or just want a leaner tool, it is hard to beat.
Why Hoppscotch?
- No Electron, no bloat: Hoppscotch is a Progressive Web App — it runs in any modern browser and feels snappy because it doesn’t carry the overhead of a desktop app runtime.
- Multi-protocol support: Test REST endpoints, explore GraphQL schemas, debug WebSocket connections, and even poke MQTT brokers — all from the same tool.
- Self-hosted collections: Keep your API workspaces on your own server. No sign-up required, and team sharing works entirely within your infrastructure.
Hoppscotch with Docker
The simplest way to run Hoppscotch locally is with the all-in-one Docker image. For a full setup with persistent workspaces and team features you would wire up a database backend, but for local API testing the single container is all you need.
docker --version
Docker Compose
#version: '3.8'
services:
hoppscotch:
# Image to pull from Docker Hub
image: hoppscotch/hoppscotch:latest
# Assigns the name to the container
container_name: hoppscotch
# Port mapping: HostPort:ContainerPort
ports:
- "3003:3000"
# Policy to restart the container if it stops,
restart: unless-stopped
environment:
# Fixes the 'Cannot read properties of undefined (reading 'split')' error.
# The value below explicitly whitelists the common local host addresses.
# You MUST change this value if your frontend is on a different domain/port.
- WHITELISTED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000Bring it up with:
docker compose up -d
The WHITELISTED_ORIGINS variable controls which origins the backend will accept requests from. If you are accessing Hoppscotch from a different host or port, add that origin to the list — otherwise you will see Cannot read properties of undefined (reading 'split') errors in the UI.
Accessing Hoppscotch
Once the container is running, open:
http://localhost:3003
The full Hoppscotch interface loads immediately. You can start making API requests right away — no account, no API key, no onboarding flow.
Conclusion
Hoppscotch is a practical, privacy-friendly API client that is trivially easy to self-host. If your team is currently on Postman and chafing at the pricing or the account requirements, this is a natural drop-in replacement. Wire it behind Nginx Proxy Manager for HTTPS, hit your own n8n webhooks during development, and use the containers primer if Docker is still new.
The Hoppscotch project
FAQ
Hoppscotch vs Postman — what is missing?
The big gap is the polished cloud sync and team workspace experience that Postman ships out of the box. With Hoppscotch you bring your own backend (or skip it for solo use). On the protocol side, Hoppscotch covers REST, GraphQL, WebSocket, SSE, and MQTT — the same surface area most engineers actually use day to day.
Do I need the database backend?
For solo testing, no — collections live in browser local storage. Add the Postgres-backed AIO backend when you want shared workspaces, persistent collections across browsers, or team auth.
What is the browser extension for?
Can it run completely offline?
Yes — Hoppscotch is a Progressive Web App, so it caches and runs without network. The only thing that needs the internet is the actual API call you are testing.
Does it support OAuth flows and pre-request scripts?
Yes — OAuth 1.0a, OAuth 2.0 (multiple grant types), Bearer, Basic, API Key, AWS Signature, and a JavaScript pre-request scripting environment for token rotation, signing, or templating.
Is it a good fit for CI?
For interactive testing, yes. For automated CI tests, the Hoppscotch CLI runs collections from the command line and reports pass/fail. You can also run it as a step in GitHub Actions or GitLab CI.
Comments