Skip to main content
← All Tools · 🛠️ API Testing & CI/CD

Hoppscotch — Open-Source API Development & Testing Platform

Open-source, web-based API testing tool — test REST, GraphQL, WebSocket, and gRPC APIs directly in the browser without installing desktop software. Self-hostable with team collaboration.

Free Open source (MIT); Hoppscotch Enterprise self-hosted from $19/user/month
api-testingrestgraphqlwebsocketgrpcbrowseropen-source

✅ Pros

  • + No installation — runs entirely in the browser at hoppscotch.io
  • + Supports REST, GraphQL, WebSocket, SSE, Socket.io, MQTT, gRPC
  • + Open source — self-host for privacy and team features
  • + Clean, fast UI — faster to load than Electron apps
  • + PWA: installable as a desktop-like app

⚠️ Cons

  • − Browser-based limits some capabilities (CORS issues with local APIs)
  • − Requires Hoppscotch Proxy extension for localhost testing
  • − Less powerful scripting than Postman
  • − Team features require Enterprise (self-hosted)

Overview

Hoppscotch (formerly Postwoman) is the browser-native API testing tool. It runs at hoppscotch.io in any browser — no download, no account required for basic use. Its breadth of protocol support (REST, GraphQL, WebSocket, gRPC, MQTT, SSE) makes it uniquely versatile for developers working across different API types.

REST API Testing

GET https://api.example.com/products?category=electronics&limit=10

Headers:
  Authorization: Bearer {{token}}
  Accept: application/json

Response:
[
  { "id": "prod-1", "name": "Widget", "price": 29.99 },
  ...
]

GraphQL Explorer

  • Paste your GraphQL endpoint
  • Hoppscotch introspects the schema automatically
  • IntelliSense for queries, mutations, and subscriptions
subscription OrderUpdates($orderId: ID!) {
  orderStatus(id: $orderId) {
    status
    updatedAt
    trackingNumber
  }
}

WebSocket Testing

Hoppscotch’s WebSocket client handles the full lifecycle:

Connect: wss://socket.example.com/notifications

Send: { "type": "subscribe", "channel": "orders" }
Receive: { "type": "order.created", "data": { "orderId": "123" } }

// Disconnect when done

Self-Hosting with Docker

# docker-compose.yml
services:
  hoppscotch:
    image: hoppscotch/hoppscotch:latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://hoppscotch:password@postgres/hoppscotch
      JWT_SECRET: your-secret-key
      VITE_BASE_URL: http://localhost:3000

  postgres:
    image: postgres:16
    environment:
      POSTGRES_DB: hoppscotch
      POSTGRES_USER: hoppscotch
      POSTGRES_PASSWORD: password

Localhost Testing

Hoppscotch runs in the browser, which means CORS policies apply to requests to localhost. Use the official browser extension:

1. Install "Hoppscotch Browser Extension" (Chrome/Firefox)
2. Enable in Hoppscotch settings → Interceptor → Browser Extension
3. Now requests bypass CORS — can reach http://localhost:3000

Comparison: Browser vs Desktop API Clients

HoppscotchPostmanBruno
InstallationNone (browser)Desktop appDesktop app
Offline supportLimitedFullFull
WebSocket✅Limited❌
MQTT/SSE✅❌❌
Self-hostable✅❌N/A
Git syncVia exportNoNative

Hoppscotch is ideal for: quick API exploration without installing software, testing WebSocket APIs, or when you need a browser-accessible tool for a team without admin rights on their machines.


Concrete Use Case: Testing a GraphQL API with WebSocket Subscriptions for Order Tracking

Imagine you are building an order tracking system with a GraphQL backend. Orders flow through a microservice architecture, and your frontend subscribes to real-time status updates via WebSocket. Hoppscotch lets you test this entire flow without writing any code or spinning up Postman.

Step 1: Test the REST endpoints that create and fetch orders. Before touching GraphQL, you verify the underlying REST API:

POST https://api.orders.example.com/v1/orders
Content-Type: application/json
Authorization: Bearer {{token}}

{
  "customerId": "cust-42",
  "items": [{ "sku": "WIDGET-A", "quantity": 3 }],
  "shippingAddress": { "zip": "10001", "country": "US" }
}

Response: 201 Created
{ "orderId": "ord-789", "status": "pending" }

You store ord-789 as a Hoppscotch environment variable for reuse.

Step 2: Query order status via GraphQL. You switch to the GraphQL tab, paste the endpoint https://api.orders.example.com/graphql, and run:

query GetOrderStatus($orderId: ID!) {
  order(id: $orderId) {
    orderId
    status
    estimatedDelivery
    trackingNumber
    items {
      sku
      quantity
    }
  }
}

Variables:
{
  "orderId": "ord-789"
}

You get back the full order object. The schema introspection works automatically — Hoppscotch pulls the full schema and provides IntelliSense for field names.

Step 3: Subscribe to live updates via WebSocket. Real-time tracking requires a WebSocket subscription. In Hoppscotch, you switch to the WebSocket client and connect to wss://api.orders.example.com/ws:

CONNECT
Headers:
  Authorization: Bearer {{token}}

SEND (after connect):
{
  "type": "subscribe",
  "id": "sub-1",
  "payload": {
    "query": "subscription OnOrderUpdate($orderId: ID!) { orderStatus(id: $orderId) { status updatedAt trackingNumber } }",
    "variables": { "orderId": "ord-789" }
  }
}

RECEIVE (simulated update from your backend):
{
  "type": "next",
  "id": "sub-1",
  "payload": {
    "data": {
      "orderStatus": {
        "status": "shipped",
        "updatedAt": "2026-04-05T10:23:00Z",
        "trackingNumber": "1Z999AA10123456784"
      }
    }
  }
}

You verify the subscription fires correctly and the payload structure matches what your frontend expects.

Step 4: Export the collection for teammates. Once your tests pass, you export the entire collection as a JSON file:

Hoppscotch → Collection → Export → JSON

Your frontend teammate imports it and immediately has the exact same requests, environment variables, and WebSocket setup — no manual recreation. For a team using Hoppscotch Enterprise (self-hosted), this can be shared via the team workspace directly.

This end-to-end workflow — REST → GraphQL → WebSocket subscription → export — is where Hoppscotch’s multi-protocol support shines. No other free tool handles this spectrum in a browser tab.


Hoppscotch vs Postman vs Insomnia: Comparison

HoppscotchPostmanInsomnia
PlatformBrowser (PWA), self-hostableDesktop app (Electron), webDesktop app (Electron), self-hostable
REST✅✅✅
GraphQL✅ (schema introspection + IntelliSense)✅✅
WebSocket✅⚠️ (limited, newer)✅
gRPC✅❌❌
MQTT / SSE / Socket.io✅❌❌
Mock servers✅ (via Hoppscotch Microservices)✅ (Postman Mock Servers)✅ (via plugins)
Collection scriptingBasic pre-request scriptsJavaScript, extensiveJavaScript, extensive
Environment variables✅✅✅
Git sync / version controlVia export (OSS); native in Enterprise❌ (manual backup)✅ (native Git sync via folder sync)
Team collaborationEnterprise (self-hosted)✅ (Postman workspaces)✅ (via Git + self-hosted)
CI/CD integrationVia CLI or import/export✅ (Postman CLI / Newman)✅ (Inso CLI)
Offline modeLimited✅✅
Self-hostable✅ (Docker, open source)❌✅ (Ingestion API + open source)
Learning curveLow — immediate browser useMedium — feature-rich but complexLow-Medium
Free tierFull feature set (browser), open sourceLimited (3 collaborators, mock servers capped)Free (open source)
Paid pricingEnterprise from ~$19/user/monthFrom $14/user/month (Standard)Free tier + paid plans from $8/user/month
Best forDevelopers needing multi-protocol browser access without installsLarge teams needing a mature, enterprise-grade API platformDevelopers who prefer native apps and Git-based workflows

Key tradeoffs:

  • Hoppscotch wins on accessibility (no install, immediate browser access) and protocol breadth (gRPC, MQTT, SSE). Its weakness is scripting depth and team features in the free tier.
  • Postman is the industry standard for enterprise teams — the most mature collection ecosystem, extensive CI/CD via Newman, and broad team features. But it is heavy (Electron), expensive for large teams, and WebSocket/MQTT support lags.
  • Insomnia is the best choice for developers who value a native app experience, want Git-based workflow (collections as code), and don’t need the broadest protocol support.

When to Use / When Not to Use

When to use Hoppscotch

  • Quick API exploration with zero setup: You open a browser tab, paste a URL, and start making requests. No account creation, no desktop install, no admin rights required. This is Hoppscotch’s strongest use case.
  • Testing WebSocket, gRPC, MQTT, or SSE APIs: The protocol breadth is unmatched by Postman in the free tier. If you work with real-time systems (IoT, live dashboards, notification services), Hoppscotch handles these natively.
  • GraphQL schema exploration: The built-in introspection and query IntelliSense make it fast to explore a new GraphQL API without a schema file.
  • Sharing API tests with teammates without a commercial account: Export/import collections via JSON files means anyone can open your requests regardless of their own Hoppscotch plan.
  • Self-hosting for privacy-sensitive teams: Docker deployment gives you full control over your data. An enterprise team that cannot use cloud-based tools can run Hoppscotch on their own infrastructure.
  • Teams on restricted machines: Users who cannot install desktop software (locked-down corporate laptops, shared lab machines) can still use Hoppscotch from any browser.

When NOT to use Hoppscotch

  • Complex scripting and test automation: Postman’s JavaScript pre-request/post-response scripts are more mature. If you need deep request chaining, dynamic variable computation, or extensive test assertions, Postman or Insomnia will be less frustrating.
  • Large team collaboration workflows: Postman’s built-in workspaces and Insomnia’s Git sync are more robust than Hoppscotch’s free tier sharing. If you need role-based access, versioned collections, and fine-grained permissions without self-hosting, Postman Enterprise or Insomnia Teams are more capable.
  • CI/CD pipelines with Postman Collections: If your pipeline already uses Newman (Postman’s CLI) or inso (Insomnia’s CLI), switching to Hoppscotch introduces new tooling friction. Stick with the tool that has established CLI support in your pipeline.
  • Local development with CORS restrictions: Hoppscotch’s browser origin triggers CORS on many local backends. The Browser Extension workaround exists, but it is an extra setup step that desktop apps don’t need. If you’re constantly hitting localhost APIs, a native app (Insomnia/Postman) avoids this entirely.
  • gRPC streaming in production workflows: While Hoppscotch supports gRPC reflection, its support for streaming RPCs (bidirectional, server-side, client-side) is less battle-tested than the REST and WebSocket paths. If you are building heavily on gRPC streaming, a specialized tool like BloomRPC or a full gRPC GUI may be preferable.
  • Offline work on planes or low-connectivity environments: Hoppscotch requires browser access. For fully offline API testing, use Insomnia or Postman desktop apps.

Hoppscotch is the right choice when accessibility and protocol breadth matter more than enterprise collaboration depth — particularly for solo developers, small teams, and anyone who needs to test APIs quickly on a machine where they cannot install software.