Tesla Dashcam SEI Decoder · The Vehicle Network App
Learning Tool
Example data only — not a general-purpose decoder
Hex Map
Fields
SEI Explorer
Learn

Tesla Dashcam SEI Decoder

This tool walks you through exactly how telemetry data is hidden inside a Tesla dashcam video file — and how a forensic examiner reads it. It uses one verified reference MP4 file with confirmed, independently decoded values.

Every byte shown here is from a real Tesla dashcam clip. Every value has been verified against Tesla's own SEI Explorer tool. This is not a simulation — it is a learning tool built on real forensic data.

Decoded and built by Noel Lowdon, Harper Shaw Investigation Consultants Ltd in collaboration with Claude (Anthropic) — an AI assistant used to perform, verify, and explain the decode process and build this interactive tool.

1
Click "Load Event Data" in the sidebar to display the raw hex bytes from the file's first frame.
2
Click any coloured byte in the Hex Map. A step-by-step decoder walks you through the arithmetic in plain English.
3
Use the Fields tab to see all decoded values at a glance, each verified against the manufacturer's own extraction tool.
4
Visit the Learn tab for explanations of every concept — what hex is, how the MP4 container works, what IEEE 754 means, how protobuf encodes data.
A note before you start

This tool has been made freely available to support learning and professional development within the vehicle forensics community. It is built on a single verified reference file and is intended to illustrate how Tesla dashcam SEI telemetry is structured and decoded — not to serve as a substitute for validated casework tools or peer-reviewed methodology.

Every effort has been made to ensure the content is accurate. All decoded values have been independently verified against the Tesla SEI Explorer. However, vehicle systems and file formats can vary, and this tool should be treated as educational material rather than definitive technical guidance.

If you spot an inaccuracy, have a correction, or want to contribute to improving the content, please contact training@harpershaw.co.uk — feedback from the community is genuinely welcomed and helps keep this resource accurate for everyone.
Decoding
Load event data from the sidebar first to see the decoded field summary.

What is hexadecimal?

Computers store everything as binary — 1s and 0s. Eight binary digits make one byte. Each byte can hold a value from 0 to 255. Writing long strings of 1s and 0s is unreadable, so we use hexadecimal instead: a counting system using digits 0–9 and letters A–F, giving 16 symbols. In hex, each byte takes exactly two characters.

Think of it like this

Ordinary counting uses ten symbols (0–9) — when you reach 9 you carry over and write 10. Hex uses sixteen — when you reach F (= 15) you carry over and write 10. Hex 10 = decimal 16. It is just a different way of writing the same number. The byte FF = 255. The byte 41 = 65 (also the letter 'A' in ASCII). Same number, different notation.

Why use hex? Because each byte always takes exactly two characters, it is easy to see where one byte ends and the next begins. When you see 25 82 2D 48 41 you are looking at exactly 5 bytes — no ambiguity, no guesswork.

In a hex editor like 010 Editor, every byte in every file is visible. A video file, an image, a Word document — all ultimately a sequence of numbers. A hex editor shows those numbers directly, without any software interpretation filtering what you see.

Common conversions

00 = 0  ·  0A = 10  ·  0C = 12  ·  10 = 16  ·  59 = 89  ·  FF = 255. Each byte is always exactly two hex characters — never more, never fewer.

Try it — live conversion
Panel 1 · Hex byte → Binary → Decimal
Enter any hex byte
Binary (8 bits)
Decimal
Panel 2 · 4 hex bytes → IEEE 754 float (vehicle speed pre-loaded)
Byte 1
Byte 2
Byte 3
Byte 4
Reversed (little-endian)
32 bits — colour coded
Sign Exponent (8 bits) Mantissa (23 bits)
Result

The MP4 container format

An MP4 file is a container — a structured wrapper holding multiple types of data in labelled sections called boxes. Every box starts with its size in bytes, then a four-character name. Boxes nest inside each other like Russian dolls.

Think of it like this

Imagine a removal van. Open the back: labelled boxes. Open a box: sealed envelopes. Open an envelope: a letter. A video file works the same way — nested containers. The video on screen is just one box. Inside the others is data that never appears during normal playback.

The reference file has four top-level boxes:

BoxOffsetSizeWhat it contains
ftyp0x0032 BFile Type — declares this is MP4. Always first.
free0x208 BEmpty padding. Nothing significant.
mdat0x2879 MBMedia Data — all video frames and embedded SEI telemetry.
moovend273 KBMovie index — timestamps, frame locations. Written last when recording stops cleanly.
Forensic significance — IsStreamable: No

Tesla records continuously into mdat and only writes moov when recording stops cleanly. Power cut at impact → moov never written → file appears unreadable in a standard video player. But the raw mdat block — and every SEI telemetry unit inside it — is still on the drive and recoverable. Absence of a readable file is not absence of data.

NAL units and SEI telemetry

Inside mdat the video stream is divided into chunks called NAL units (Network Abstraction Layer). Each starts with a one-byte header identifying its type. In the avcC format used here, each NAL unit is also preceded by a 4-byte length field.

Think of it like this

NAL units are standardised shipping containers. The one-byte header is the label — Type 5 is a video frame, Type 7 is config paperwork, Type 6 is a reserved container for custom cargo. The manufacturer fills Type 6 with telemetry data, one per frame, attached to every frame of dashcam footage unseen by normal video players.

Type byteNameContents
0x07SPSCodec config — resolution, frame rate, profile. Written once at stream start.
0x08PPSPicture config. Housekeeping, not video content.
0x06SEISupplemental Enhancement Information — vendor custom data. One per frame here.
0x05IDR FrameA complete keyframe — the actual video content.

Each SEI unit contains a 16-byte UUID starting 42 42 42 69, followed by 66 bytes of protobuf-encoded telemetry. The SEI Explorer tool recognises this UUID and decodes it across all 2,174 frames.

Search result — verified

Searching the 79MB file for 42 42 42 69 08 returned 2,175 hits — 2,174 genuine SEI units plus one coincidental byte match in the compressed video data. The genuine count matches MediaInfo's frame count exactly.

89
bytes per SEI unit
1 NAL type + 1 payload type + 1 size + 16 UUID + 66 protobuf
2,174
SEI units in file
One per frame. Written at time of recording, not added afterwards.

IEEE 754 floating point

IEEE 754 is the published international standard for storing decimal numbers in binary — used in virtually every processor, language, and file format on earth. It is used here for speed, accelerator pedal, and steering angle.

A 32-bit float splits its 32 bits into three parts:

Sign
0
Exponent (8 bits)
1
0
0
0
0
0
1
0
Mantissa (23 bits)
1
0
0
1
0
0
0

Sign=0 (positive) · Exponent 10000010=130, minus bias 127=3 · Mantissa=1.5639 · Result: 1.5639 × 2³ = 12.511 m/s

Think of it like this

Scientific notation writes 12,500 as 1.25 × 10⁴ — a mantissa and an exponent. IEEE 754 does the same thing in binary. The mantissa holds the significant digits, the exponent says how many times to multiply by 2, the sign bit says positive or negative.

Worked example — vehicle speed

Raw bytes at offset 0x68: 82 2D 48 41

Stored little-endian — reverse first: 41 48 2D 82

As 32 binary bits: 0100 0001 0100 1000 0010 1101 1000 0010

Sign = 0 (positive). Exponent = 10000010 = 130 − 127 = 3. Mantissa = 1.5639.

Result: 1.5639 × 2³ = 1.5639 × 8 = 12.511 m/s = 45.04 km/h

Verified

SEI Explorer CSV: 12.511110 m/s. Manual decode: 12.511 m/s. Match confirmed.

Little-endian byte order

Multi-byte values are stored least-significant byte first. Always reverse 4-byte floats and 8-byte doubles before applying IEEE 754. This is standard on x86 and ARM processors — not specific to this vehicle or format.

Protobuf varints

Telemetry is encoded using Google's Protocol Buffers — an efficient binary format. Each field starts with a tag byte encoding the field number and wire type. For whole numbers, protobuf uses a varint: each byte contributes 7 data bits, and the 8th bit is a continuation flag — 1 means more bytes follow, 0 means stop.

Think of it like this

Instead of always using 4 bytes for a number, protobuf uses only as many bytes as needed. The number 1 needs one byte. The number 150,030 needs three. Each byte's MSB acts like a flag on a parcel — ticked means "there's another parcel after this," blank means "this is the last one."

Worked example — frame sequence number

Tag 18 = field 3, wire type 0 (varint). Data bytes: 8E 94 09

8E = 10001110 → MSB=1, continues. Data bits: 0001110

94 = 10010100 → MSB=1, continues. Data bits: 0010100

09 = 00001001 → MSB=0, last byte. Data bits: 0001001

Concatenate reversed (LSB first): 0001001 · 0010100 · 0001110 → decimal 150,030

Verified

SEI Explorer CSV: frame_seq_no = 150030. Manual decode: 150,030. Match confirmed. This number places the clip ~69 minutes into the drive — prior footage should exist on the drive.

Tag byte formula

Field number = tag >> 3. Wire type = tag & 0x07. So 0x25: field = 4, wire type = 5 (32-bit float). 0x59: field = 11, wire type = 1 (64-bit double). 0x18: field = 3, wire type = 0 (varint).

GPS coordinates — 64-bit doubles

Speed and steering use 32-bit floats — 4 bytes, ~7 significant figures. GPS coordinates use 64-bit doubles — 8 bytes, ~15 significant figures. The conversion is identical to IEEE 754 float but with exponent bias 1023 instead of 127.

Why the extra precision matters

A 32-bit float locates you to within ~1–2 metres. A 64-bit double locates you to within a fraction of a millimetre. The CSV value reads 53.72891032171984 not 53.72891 — those extra digits are real data, not noise. For forensic GPS evidence that precision is essential.

Verified values from frame 1: latitude 53.7289°N, longitude -1.6932°W — Brighouse/Halifax area, West Yorkshire. By frame 2,174 heading has rotated from 253° to 215°, consistent with steering angle data showing a gradual left turn.

53.7289°N
latitude · frame 1
West Yorkshire. CSV: 53.72891032171984
253°→215°
heading across clip
Consistent with steering 0.2°→−11°. Three independent data fields in agreement.

Why this methodology stands up

The complete chain — from road to report

Vehicle driven → SEI written per frame → USB recovered → MP4 located → container parsed (MediaInfo) → binary examined (010 Editor) → SEI units located by binary search → bytes decoded (IEEE 754 + protobuf) → values verified (SEI Explorer CSV) → findings reported. Every step documented. Every value traceable to a specific byte offset. Every conversion using published mathematics checkable by any qualified examiner independently.

Data written at time of recording. SEI is embedded per-frame by the vehicle's own systems. Cannot be added retrospectively without re-encoding the entire stream, which changes the file hash.

Three independent tools, consistent results. MediaInfo timestamps match encoded dates. Hand-decoded bytes match the SEI Explorer CSV exactly. 010 Editor confirms the container structure MediaInfo reported.

False values provably absent, not assumed. Protobuf omits fields at their default value. Brake=false, indicators=false, autopilot=NONE are absent from every frame's binary payload. Absence is the proof — not missing data, but the encoding working exactly as the published specification says.

3
independent tools
MediaInfo · 010 Editor · SEI Explorer — consistent results throughout.
2,174
frames verified
Gear=Drive, Autopilot=None, Brake=false in every single frame.

As we say at Harper Shaw: assume nothing, believe nobody, check everything.

Glossary

Tesla Dashcam SEI Explorer
Screenshot from live forensic session · 9 May 2026 · File: 2026-05-04_16-05-52-front.mp4 · Frame 1 of 2,174
Tesla SEI Explorer showing dashcam footage with decoded telemetry panel
What you are looking at The Tesla SEI Explorer running in a browser, loaded with the reference file 2026-05-04_16-05-52-front.mp4. The dashcam footage plays on the left. The panel on the right shows the telemetry decoded from the SEI data embedded in that exact frame — the same bytes that are colour-coded in the Hex Map tab. Frame 1 of 2,174. All processing happens locally in the browser; no data is uploaded.
What this tab shows
This is the Tesla SEI Explorer — a browser tool that reads the embedded telemetry from dashcam MP4 files and displays it alongside the footage. The decoded values on the right of the screenshot came from bytes physically present in the file. Those same bytes are what the Hex Map tab colour-codes and the stepper walks through. This is the end result of the decode process.
Field by field — frame 1 of 2,174
Frame Seq No 150030 — varint decoded from 18 8E 94 09. Places this clip ~69 minutes into the drive.
Vehicle Speed 12.51 m/s — IEEE 754 float from 25 82 2D 48 41. = 45.04 km/h.
Gear State GEAR_DRIVE — protobuf enum from 10 01. Value 1 = Drive.
Brake / Blinkers / Autopilot — false/NONE — absent from the binary. Protobuf omits default values. Absence is the proof, not an assumption.
Latitude 53.73 / Longitude -1.69 — 64-bit doubles, 8 bytes each. West Yorkshire confirmed.
Heading 253.47° — WSW. Rotates to 215° by frame 2,174, consistent with the steering angle data.