FeaturesGuidesDocumentationPricingGet Started

Test GitHub Webhooks on Localhost

Receive GitHub webhook deliveries on your local machine using a LocalToLink HTTPS tunnel.

Setup

# Terminal 1: your app with webhook handler
npm run dev

# Terminal 2: tunnel
npx localtolink --port 3000

Configure GitHub webhook

In your repository → Settings → Webhooks → Add webhook:

| Field | Value | |-------|-------| | Payload URL | https://YOUR-SUBDOMAIN.localtolink.com/api/github/webhook | | Content type | application/json | | Secret | Your webhook secret (verify in handler) |

Replace YOUR-SUBDOMAIN with the subdomain LocalToLink prints.

Verify signatures

GitHub sends an X-Hub-Signature-256 header. Verify it in your handler:

import crypto from "crypto";

function verifySignature(payload, signature, secret) {
  const hmac = crypto.createHmac("sha256", secret);
  const digest = "sha256=" + hmac.update(payload).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(digest), Buffer.from(signature));
}

Test delivery

Use "Recent Deliveries" in the webhook settings to replay events or check response codes.

Notes

See Test Webhooks Locally for the general webhook hub.

Try it now

Start a tunnel from your project directory — no account required.

$ npx localtolink

See the full CLI reference for flags and exit codes.

LocalToLink CLI 1.0.1 — verified 2026-09-05