Ethernet Frame Parser

Paste an Ethernet frame as hex and decode the destination and source MAC, EtherType or 802.3 length, any 802.1Q / Q-in-Q VLAN tags, and the payload. Spaces, colons, dashes, and a 0x prefix are ignored. Runs in your browser; nothing is uploaded.

Decoded frame

About this tool

Ethernet Frame Parser decodes a raw Ethernet II or IEEE 802.3 frame, given as a hex string, into its header fields:

The frame is everything after the preamble/SFD and before the FCS — the 14-byte header (6 dst + 6 src + 2 type) plus the payload. Input may use spaces, colons, dashes, or a leading 0x; they are all ignored.

Example

ff ff ff ff ff ff  00 11 22 33 44 55  08 06  00 01 08 00 ...
└── destination ──┘ └──── source ────┘ └type┘ └─ ARP payload ─┘

Common uses

FAQ

Do I paste the preamble, SFD, or FCS too?

No — paste only the frame itself: the 14-byte header onward. The preamble/SFD is never captured anyway, and the parser doesn't strip an FCS, so if your dump includes it the last 4 bytes will show up as extra payload.

Are stacked (Q-in-Q) VLAN tags decoded?

Yes. The parser walks the tag chain in wire order (outer tag first), recognizing TPIDs 0x8100 (802.1Q C-Tag), 0x88a8 (802.1ad S-Tag), and the legacy 0x9100, and decodes each tag's PCP, DEI, and VID separately.

How does it decide between Ethernet II and IEEE 802.3?

By the type/length field after the MACs (and any VLAN tags): a value of 0x0600 (1536) or greater is an EtherType — Ethernet II — while a value of 1500 or less is an 802.3 payload length. Known EtherTypes (IPv4, ARP, IPv6, LLDP, MPLS, PPPoE, MACsec, …) are shown by name.

What does "locally administered" mean on the source MAC?

It's the U/L bit (bit 2 of the first octet). When set, the address was assigned by software — typical for VMs, bonded interfaces, and phones using MAC randomization — rather than burned in under an IEEE-assigned OUI. A factory MAC shows as globally unique instead.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool parse-ethernet-frame "ffffffffffff 001122334455 0806 0001 0800 0604 0001 ..."

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/parse-ethernet-frame/?frame=ffffffffffff%20001122334455%200806%200001%200800%200604%200001%20...

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.