Skip to main content
Fiddler HTTP/2 & HTTP/3 Capture: A Practical Guide
HTTP/HTTPS Capture7 min read

Fiddler HTTP/2 & HTTP/3 Capture: A Practical Guide

Learn how to capture, decrypt, and analyze HTTP/2 and HTTP/3 traffic in Fiddler Classic and Fiddler Everywhere — with step-by-step setup, troubleshooting, and real-world examples.

Share:

Modern web traffic increasingly relies on HTTP/2 and HTTP/3 — protocols designed for speed, multiplexing, and resilience. Yet many developers and testers still struggle to capture, inspect, and debug these encrypted, binary-encoded flows in Fiddler. Unlike HTTP/1.1, where plain-text headers and bodies are trivial to read, HTTP/2 introduces header compression (HPACK), stream multiplexing, and binary framing; HTTP/3 replaces TCP with QUIC over UDP, adding another layer of complexity. Without proper configuration, Fiddler silently drops or misrepresents these requests — leading to blind spots in API testing, performance analysis, and security validation.

This guide walks you through capturing, decrypting, and interpreting HTTP/2 and HTTP/3 traffic using Fiddler Classic (v5.0.20234.59831+) and Fiddler Everywhere (v1.22+). We cover prerequisites, step-by-step setup, real-world troubleshooting, and how to verify correctness — all grounded in production debugging experience.

Prerequisites: What You Need Before Capturing

Before enabling HTTP/2 or HTTP/3 capture, confirm your environment meets these requirements:

  • Fiddler Classic: v5.0.20234.59831 or later (older versions lack full HTTP/3 support and may misreport HTTP/2 frames).
  • Fiddler Everywhere: v1.22+ (HTTP/3 support added in late 2023; requires explicit QUIC enablement).
  • HTTPS Decryption enabled: Both protocols use TLS by default — without https decryption configured, you’ll see only CONNECT tunnels and encrypted payloads.
  • Trusted root certificate installed: Critical for HTTPS decryption. Run Tools > Options > HTTPS > Export Root Certificate to Desktop, then install it into your OS and browser trust stores.
  • Browser or client compatibility: Chrome 90+, Edge 90+, Firefox 91+ (with network.http.http3.enabled = true), and curl 7.66+ support HTTP/3. Confirm your target app negotiates ALPN (e.g., h2, h3) via Wireshark or browser DevTools → Network → Protocol column.

💡 Pro Tip: In Chrome, navigate to chrome://net-internals/#http2 or chrome://net-internals/#quic to verify active HTTP/2 or HTTP/3 sessions. Look for h2 or h3 under the "Protocol" column.

Enabling HTTP/2 Capture in Fiddler Classic

Fiddler Classic captures HTTP/2 automatically — but only if TLS handshake negotiation succeeds and the client sends ALPN h2. No extra toggle is needed, but visibility depends on correct HTTPS decryption setup.

Step-by-step verification:

  1. Launch Fiddler Classic and ensure Capture Traffic (F12) is enabled.
  2. In Tools > Options > HTTPS, confirm:
    • Decrypt HTTPS traffic
    • Ignore server certificate errors
    • Enable QUIC protocol support (required for HTTP/3, but harmless for HTTP/2)
  3. Visit an HTTP/2 site (e.g., https://http2.golang.org) in Chrome.
  4. In Fiddler’s Web Sessions list, right-click any request → Properties. Under the Request Headers tab, look for:
    X-Fiddler-Protocol: HTTP/2.0
    
    This confirms successful HTTP/2 capture.

If you see X-Fiddler-Protocol: HTTP/1.1 despite visiting an HTTP/2 site, check:

  • Browser is bypassing proxy for localhost or specific domains (Tools > Options > Connections > Bypass proxy for local addresses must be unchecked for loopback debugging).
  • The server rejected ALPN — inspect the TLS handshake in Inspectors > Raw tab. Look for ALPN extension: h2 in the ClientHello.

Capturing HTTP/3 Traffic: The QUIC Challenge

HTTP/3 runs over QUIC — a UDP-based transport that encrypts everything, including packet headers and connection metadata. Fiddler cannot passively decode raw QUIC packets like Wireshark (which requires SSLKEYLOGFILE). Instead, Fiddler relies on QUIC-aware clients that export keys via the NSS Key Log format, or uses its built-in QUIC stack interception when supported.

Enabling HTTP/3 in Fiddler Classic (v5.0.20234.59831+)

  1. Go to Tools > Options > HTTPS.
  2. Check Enable QUIC protocol support.
  3. Restart Fiddler.
  4. Configure your browser to use Fiddler as system proxy (default: 127.0.0.1:8888).
  5. For Chrome/Edge, launch with flags:
    chrome.exe --proxy-server="127.0.0.1:8888" --unsafely-treat-insecure-origin-as-secure="https://http3.example.com" --user-data-dir=C:/temp/chrome-http3
    
    (Replace domain and path as needed.)
  6. Visit an HTTP/3 test site: https://http3.cloudflare.com or https://quic.nginx.org.

In Fiddler, successful HTTP/3 capture displays:

  • X-Fiddler-Protocol: HTTP/3.0
  • A QUIC icon (⚡) next to the session.
  • Full decrypted headers and response body — if TLS 1.3 key logging is active.

Enabling TLS Key Logging for Full HTTP/3 Decryption

Without TLS key export, Fiddler sees only encrypted QUIC packets. To get full https decryption for HTTP/3:

  1. Set environment variable before launching browser:
    set SSLKEYLOGFILE=C:\fiddler\sslkeylog.log
    
    (Windows) or
    export SSLKEYLOGFILE=/tmp/sslkeylog.log
    
    (macOS/Linux)
  2. Launch Chrome/Edge with --ssl-key-log-file=C:\fiddler\sslkeylog.log.
  3. In Fiddler Classic, go to Tools > Options > HTTPS > Advanced and select Use external SSLKEYLOGFILE for QUIC decryption.
  4. Point to your log file path.

Fiddler will now parse TLS 1.3 secrets and reconstruct HTTP/3 streams — giving you full visibility into headers, push promises, and payload timing.

Fiddler Everywhere: HTTP/2 & HTTP/3 Support Differences

Fiddler Everywhere (FE) handles HTTP/2 transparently — no config required beyond standard fiddler proxy setup. However, HTTP/3 support is limited and opt-in:

  • FE v1.22+ supports HTTP/3 only for Chromium-based browsers (Chrome, Edge) launched with explicit QUIC flags.
  • It does not support SSLKEYLOGFILE-based decryption yet — so HTTP/3 sessions appear as CONNECT + QUIC with encrypted payloads.
  • To enable: Settings > Proxy > Enable HTTP/3 (QUIC) support.
  • Confirm in FE’s Inspectors > Overview tab: look for Protocol: HTTP/3 and Transport: QUIC.

While FE offers a cleaner UI and cross-platform consistency, Fiddler Classic remains the preferred tool for deep fiddler debugging of HTTP/3 due to its mature QUIC stack and TLS key integration.

Troubleshooting Common Capture Failures

Even with correct setup, HTTP/2 and HTTP/3 capture can fail silently. Here’s how to diagnose and fix frequent issues:

❌ Issue: Only CONNECT tunnels appear — no HTTP/2 or HTTP/3 sessions

  • Cause: Browser bypassing proxy or Fiddler not intercepting TLS ALPN.
  • Fix: Disable Bypass proxy for local addresses in Tools > Options > Connections. Also verify browser isn’t using system proxy exclusions (e.g., localhost;127.0.0.1 in Windows proxy settings).

❌ Issue: `X-Fiddler-Protocol: HTTP/1.1` shown for known HTTP/2 sites

  • Cause: Server falling back to HTTP/1.1 due to missing ALPN or TLS version mismatch (e.g., TLS 1.2 only).
  • Fix: In Inspectors > Raw, examine ClientHello. If ALPN extension is absent or lists only http/1.1, the client isn’t advertising h2. Force HTTP/2 in Chrome via chrome://flags/#enable-http2Enabled.

❌ Issue: HTTP/3 sessions show `QUIC` but empty or garbled response body

  • Cause: Missing or misconfigured SSLKEYLOGFILE, or unsupported cipher suite.
  • Fix: Confirm TLS 1.3 is negotiated (check Raw tab for TLS_AES_128_GCM_SHA256). Ensure your SSLKEYLOGFILE path is writable and matches Fiddler’s expected location. Restart both browser and Fiddler after changes.

❌ Issue: Fiddler crashes or hangs during HTTP/3 capture

  • Cause: Known instability with early QUIC builds or high-volume QUIC traffic (e.g., video streaming).
  • Fix: Update to latest Fiddler Classic stable release. Disable Streaming mode (File > Capture Options > Streaming) for large responses. Use filters (@proto:http/3) to isolate sessions.

Interpreting HTTP/2 and HTTP/3 Sessions in Fiddler

Once captured, leverage Fiddler’s inspectors to extract value:

  • HTTP/2 Streams: In Inspectors > Headers, note :method, :path, :status, and :scheme pseudo-headers — these replace HTTP/1.1 start lines. Use TextView or WebForms tabs to view decoded HPACK headers.
  • Server Push: In HTTP/2, look for PUSH_PROMISE frames in Inspectors > Raw (requires View > Other Views > Raw Inspector). Fiddler logs pushed resources as separate sessions with X-Fiddler-IsPushed: true.
  • HTTP/3 Frame Inspection: While Fiddler doesn’t expose QUIC frame types visually, the Timeline tab reveals stream-level latency (e.g., Initial Flight, Handshake Done, Stream Data). Compare with HTTP/2 to quantify 0-RTT and connection migration benefits.
  • Filtering: Use QuickExec (Ctrl+Q) with filters like:
    • @proto:http/2 — show only HTTP/2
    • @proto:http/3 — show only HTTP/3
    • @responsecode:4xx + @proto:http/3 — debug failed HTTP/3 requests

These capabilities make Fiddler a powerful http debugging companion — especially when validating CDN behavior, gRPC-Web endpoints, or service mesh telemetry.

Conclusion: Mastering Modern Web Protocols Starts Here

Capturing HTTP/2 and HTTP/3 traffic in Fiddler isn’t magic — it’s about aligning client configuration, TLS negotiation, and Fiddler’s decryption pipeline. With HTTPS decryption properly configured and QUIC support enabled, you gain full observability into modern web stacks: from header compression and server push to 0-RTT handshakes and connection migration.

Key takeaways:

  • HTTP/2 capture works out-of-the-box in Fiddler Classic — but requires ALPN h2 and valid TLS interception.
  • HTTP/3 demands QUIC stack support and TLS 1.3 key logging for full https decryption; otherwise, you’ll see only encrypted tunnels.
  • Fiddler Classic remains superior to Fiddler Everywhere for HTTP/3 analysis — especially in enterprise fiddler debugging workflows.
  • Always validate capture success using X-Fiddler-Protocol, QUIC icons, and raw TLS inspection — don’t assume.

For deeper protocol analysis, pair Fiddler with Wireshark (for packet-level QUIC) or use Fiddler’s AutoResponder to simulate HTTP/2 server push or HTTP/3 error conditions. And remember: every captured stream is a chance to improve performance, security, and reliability.

Ready to level up? more tutorials, browse HTTP/HTTPS Capture tutorials, or contact us for custom debugging help.

Share:

Related Topics

fiddler tutorialfiddler debugginghttp debuggingfiddler proxyhttps decryption

Get Fiddler Tips & Tutorials

Stay updated with the latest Fiddler tutorials, HTTP debugging guides, request modification tips, and web traffic analysis techniques.

Free forever. New tutorials published daily.

Related Articles