Parse HTTP/2 protocol frames from raw hex or text, measure CSS animation frame rates in real time, and decode WebSocket frame payloads. Client-side, no server required.
Three frame inspection tools for developers: HTTP/2 protocol frame parsing, live animation FPS measurement, and WebSocket frame decoding.
Measures the browser's rendering frame rate using requestAnimationFrame and the Performance API. Shows live FPS, frame time, and a 60-frame history chart.
This tool schedules a callback via requestAnimationFrame each frame and measures the time between consecutive callbacks using performance.now(). The inverse of frame time gives FPS. The browser targets 60 FPS (16.67ms/frame) for smooth animations. Drops below 30 FPS are visually choppy.
Every HTTP/2 message is broken into frames. Understanding frame structure is essential for debugging HTTP/2 connections.
Every HTTP/2 frame starts with a 9-byte header containing three fields. Length (24 bits, 3 bytes): payload size in bytes, max 2^24-1. Type (8 bits, 1 byte): frame type (0x0=DATA, 0x1=HEADERS, etc.). Flags (8 bits, 1 byte): type-specific flags. Reserved bit + Stream ID (31 bits, 4 bytes): which stream this frame belongs to (0 = connection-level).
+-----------------------------------------------+ | Length (24) | +---------------+---------------+---------------+ | Type (8) | Flags (8) | +-+-------------+---------------+------+--------+ |R| Stream ID (31) | +=+=============================================+ | Frame Payload (Length bytes) | +-----------------------------------------------+
Wireshark: Capture on the network interface. Filter: http2. Right-click a frame → Copy → Bytes as Hex Stream. Requires decrypted TLS (set SSL key log file in browser settings first).
Chrome net-log: Navigate to chrome://net-export/ → Start Logging → visit your site → Stop → Save. The JSON export contains HTTP/2 frame events with raw bytes.
curl: Use curl --http2 -v https://example.com for verbose HTTP/2 output including frame type labels.
| Type | Hex | Direction | Flags | Purpose |
|---|---|---|---|---|
| DATA | 0x0 | Both | END_STREAM, PADDED | HTTP response/request body payload |
| HEADERS | 0x1 | Both | END_STREAM, END_HEADERS, PADDED, PRIORITY | HTTP headers (HPACK compressed) |
| PRIORITY | 0x2 | Client→Server | None | Stream prioritization (deprecated in HTTP/3) |
| RST_STREAM | 0x3 | Both | None | Terminate a stream with error code |
| SETTINGS | 0x4 | Both | ACK | Configure connection parameters |
| PUSH_PROMISE | 0x5 | Server→Client | END_HEADERS, PADDED | Server push notification (deprecated in Chrome) |
| PING | 0x6 | Both | ACK | Round-trip latency measurement |
| GOAWAY | 0x7 | Both | None | Graceful shutdown with last stream ID |
| WINDOW_UPDATE | 0x8 | Both | None | Flow control window size increment |
| CONTINUATION | 0x9 | Both | END_HEADERS | Continue a HEADERS frame sequence |