Hoppscotch
A fast, open-source API development platform that runs entirely in the browser.
Test REST, GraphQL, WebSocket, SSE, and real-time APIs — no desktop install required.
Automate collection runs in CI/CD with the hopp CLI.
What is Hoppscotch?
Hoppscotch (formerly Postwoman) is an open-source API development ecosystem. What started as a browser-based alternative to Postman has grown into a comprehensive platform supporting REST, GraphQL, WebSocket, Server-Sent Events, Socket.IO, and MQTT — all from a single interface at hoppscotch.io.
Because it runs in the browser, there is nothing to install for basic use. Collections and workspaces are stored locally via IndexedDB or synced to an account. For teams requiring data sovereignty, a Docker Compose deployment puts all data in your own PostgreSQL instance. The @hoppscotch/cli package extends the platform into automated pipeline testing.
Key Features
- Multi-protocol support — REST, GraphQL, WebSocket, SSE, Socket.IO, and MQTT in one unified interface
- Collections and workspaces — organize requests into nested folders; share with teammates via team workspaces
- Environment variables — define named environments (dev/staging/prod) and switch with one click; supports secret masking
- Pre-request and test scripts — JavaScript scripting using the pw API for lifecycle automation and response assertions
- GraphQL schema browser — introspection-based explorer with autocomplete, variable panels, and subscription support
- Hoppscotch CLI (hopp) — run collection files from the terminal with environment injection and JUnit XML reporting
- Self-hosting — Docker Compose setup with PostgreSQL, OAuth SSO, and an admin dashboard
- History and shareable links — persistent request history and one-click URL sharing for individual requests
CLI Installation and Usage
# Install the Hoppscotch CLI globally npm install -g @hoppscotch/cli # Verify installation hopp --version # Run a collection against a staging environment hopp test collections/api-tests.json --env environments/staging.json # Output JUnit XML for CI reporting hopp test collections/api-tests.json --reporter-junit results/junit.xml
Environment Variables
Define variables in the web app or via a JSON file, then reference them using the <<VARIABLE_NAME>> syntax in any request field — URL, headers, body, or authorization.
// hoppscotch-env.json
{
"name": "Staging",
"variables": [
{ "key": "BASE_URL", "value": "https://api.staging.example.com", "secret": false },
{ "key": "API_KEY", "value": "sk-staging-abc123", "secret": true },
{ "key": "USER_ID", "value": "42", "secret": false }
]
}
// Reference variables using <> in any request field
// GET <>/users/<>
// Authorization: Bearer <> Test Scripts
The pw scripting object is available in pre-request and post-response panels. Use pw.test(), pw.expect(), and pw.env.set() for dynamic behavior and assertions.
// Pre-request script — set a dynamic timestamp
pw.env.set("TIMESTAMP", new Date().toISOString());
// Post-response test script
pw.test("Status is 200", () => {
pw.expect(pw.response.status).toBe(200);
});
pw.test("Response has user id", () => {
const body = pw.response.body;
pw.expect(body).toHaveProperty("id");
pw.expect(body.id).toBeGreaterThan(0);
});
pw.test("Content-Type is JSON", () => {
pw.expect(pw.response.headers["content-type"]).toContain("application/json");
}); GraphQL Support
The GraphQL tab auto-fetches your schema via introspection. Build queries with the schema explorer, provide variables in a JSON panel, and open live subscription connections over WebSocket — all in the browser.
# GraphQL query in Hoppscotch GraphQL tab
query GetUser($id: ID!) {
user(id: $id) {
id
name
email
createdAt
}
}
# Variables panel (JSON)
{
"id": "42"
}
# Subscription example
subscription OnMessageAdded($roomId: ID!) {
messageAdded(roomId: $roomId) {
id
content
author { name }
}
} Hoppscotch vs Postman
| Feature | Hoppscotch | Postman |
|---|---|---|
| License | Open source (MIT) | Proprietary |
| Deployment | Web app + self-host | Desktop app + cloud |
| Desktop install required | No | Yes |
| Self-hosting | Yes (Docker) | No |
| WebSocket / SSE native | Yes | Partial |
| Ecosystem maturity | Growing | Mature |
Pros and Cons
Pros
- ✓ Zero install friction — open a browser tab and start testing
- ✓ Fully open source with active community development
- ✓ Self-hostable for data-sensitive teams
- ✓ Native WebSocket, SSE, Socket.IO, and MQTT support
- ✓ Free CLI for CI/CD pipeline integration
Cons
- ✗ Smaller integration ecosystem than Postman
- ✗ Team collaboration requires self-hosting or a paid cloud plan
- ✗ Script API (pw.*) is less documented than Postman's pm.*
- ✗ No built-in mock server feature
- ✗ Browser extension may be needed for localhost requests in some setups
Frequently Asked Questions
What is Hoppscotch?▼
Hoppscotch is a free, open-source API development platform that runs in the browser. It supports REST, GraphQL, WebSocket, Server-Sent Events, Socket.IO, and MQTT from a single web interface. Unlike Postman, it requires no desktop installation and can be self-hosted. The @hoppscotch/cli package enables automated collection runs in CI/CD pipelines.
How does Hoppscotch differ from Postman?▼
Hoppscotch is fully open source (MIT) and web-based, while Postman is proprietary and requires a desktop install. Hoppscotch loads instantly in a browser tab with no account requirement for basic use and can be self-hosted for full data control. Postman has a more mature ecosystem and broader marketplace integrations. For teams needing self-hosted solutions or lightweight tooling, Hoppscotch is often preferred.
Can Hoppscotch be used in CI/CD pipelines?▼
Yes. Install @hoppscotch/cli globally with npm install -g @hoppscotch/cli and use the hopp command to run collection JSON files from the terminal. Pass environment files with --env and output JUnit XML with --reporter-junit. This integrates with GitHub Actions, GitLab CI, Jenkins, and other pipeline systems.
How do I set up environment variables in Hoppscotch?▼
In the web app, open the Environments panel in the left sidebar, create an environment, and add key-value pairs. Reference them in any request field using the <<VARIABLE_NAME>> syntax. Mark variables as secret to mask their values in the UI. For CLI usage, export environments as JSON and pass them with the --env flag.
Does Hoppscotch support GraphQL subscriptions?▼
Yes. The dedicated GraphQL tab supports queries, mutations, and subscriptions over WebSocket. Hoppscotch auto-fetches the API schema via introspection. You write queries in the editor, provide variables in a JSON panel, and open live subscription connections — all in the browser.
How do I self-host Hoppscotch?▼
Clone the hoppscotch/hoppscotch repository, copy .env.example to .env, and fill in your PostgreSQL database URL, SMTP server, and OAuth credentials. Run docker compose up to start the app, admin dashboard, and backend services. All data is stored in your own PostgreSQL instance.
Related Products
on GumroadAPI Testing Cheatsheet Pack
Quick-reference cheatsheets for REST, GraphQL, and WebSocket testing. Includes Postman collections, shell scripts for smoke tests and load tests, and JWT decoder.
Buy on Gumroad →Developer Productivity Bundle
Stop rebuilding the same setup every project. 51 VSCode snippets, 40 Git aliases, 5 Docker Compose stacks, 5 GitHub Actions workflows, 5 README templates, and a dotfiles kit. Set up a professional dev environment in under an hour.
Buy on Gumroad →AI Prompt Engineering Toolkit
58 structured prompt templates for Claude, ChatGPT, and Gemini — organized by use case. Code Review, Debugging, Documentation, Architecture, and 10 model-specific tips. Stop writing prompts from scratch.
Buy on Gumroad →You Might Also Need
GraphQL Query Builder
Build GraphQL queries visually from your schema SDL. Select root fields, pick sub-fields, add arguments, and generate query/mutation/subscription strings instantly. Supports nested types.
Open free tool →
OpenAPI Validator
Paste your OpenAPI 3.x spec (YAML or JSON) to validate structure, find missing required fields, detect duplicate paths, check for missing operationIds, and get errors and warnings with path references.
Open free tool →
GraphQL Fragment Generator
Paste a GraphQL schema type definition and auto-generate reusable fragments. Supports nested types, interfaces, and unions with optional __typename and nested expansion.
Open free tool →
More Free Tools
Related Articles
curl 深度使用手冊:API 測試從入門到進階
curl 是每位開發者必備的 CLI 工具。本文涵蓋 GET/POST/PUT/DELETE 請求、認證、header 設定、檔案上傳、除錯技巧,以及 REST API 測試的完整實戰範例。
GraphQL Federation vs REST Microservices: Which Architecture in 2026?
Compare GraphQL Federation vs REST microservices — Apollo Federation, schema stitching, performance, team scaling, migration paths, and when to choose each in 2026.
tRPC vs GraphQL vs REST: Type-Safe APIs in 2026
Compare tRPC, GraphQL, and REST for building type-safe APIs in 2026. Covers DX, performance, bundle size, schema management, and when to use each approach.
API Testing Best Practices 2026: Postman vs Insomnia vs Bruno
Complete guide to API testing in 2026. Compare Postman, Insomnia, and Bruno, learn best practices for REST and GraphQL testing, and build automation pipelines that catch regressions before production.
MSW 2.0: The Best Way to Mock APIs in Frontend Tests
A complete guide to Mock Service Worker (MSW) 2.0 — setup, request handlers, Vitest and Jest integration, Storybook mocking, and best practices for realistic API mocking in frontend tests.
Enjoying this tool? Get more like it.
Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.
Unlock AI-Powered Dev Tools
- ⚡ AI Code Review, Doc Generator & SQL Builder
- ⚡ All premium templates & early access
- ⚡ Member discounts on Gumroad products
$9/mo after trial · Cancel anytime
Want the full toolkit?
Get DevPlaybook Pro
Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.
MIT licensed · Instant download · No subscription
See what's included → Browse all deals →