sveltejs/kit · error · SvelteKitError
Could not deserialize binary form: got version ${header[0]},
Error message
Could not deserialize binary form: got version ${header[0]}, expected version ${BINARY_FORM_VERSION} What it means
Deserialization guard for binary form bodies: the first header byte encodes the binary form format version, and it does not match BINARY_FORM_VERSION expected by this runtime — i.e. client and server were built with different serialization versions. deserialize_error reports both the received and expected version numbers.
Source
Thrown at packages/kit/src/runtime/form-utils.js:249
}
if (total < length || parts.length === 0) return null;
// If the buffer is completely contained in one chunk, return the subarray as-is
if (parts.length === 1) return parts[0];
const buffer = new Uint8Array(length);
let cursor = 0;
for (const part of parts) {
buffer.set(part, cursor);
cursor += part.byteLength;
}
return buffer;
}
const header = await get_buffer(0, HEADER_BYTES);
if (!header) throw deserialize_error('too short');
if (header[0] !== BINARY_FORM_VERSION) {
throw deserialize_error(`got version ${header[0]}, expected version ${BINARY_FORM_VERSION}`);
}
const header_view = new DataView(header.buffer, header.byteOffset, header.byteLength);
const data_length = header_view.getUint32(1, true);
const file_offsets_length = header_view.getUint16(5, true);
// Validation uses embedded binary header fields (data_length, file_offsets_length)
// rather than Content-Length, which proxies/middleboxes may strip or corrupt.
// See: https://github.com/sveltejs/kit/issues/15299
// Read the form data
const data_buffer = await get_buffer(HEADER_BYTES, data_length);
if (!data_buffer) throw deserialize_error('data too short');
/** @type {Array<number | undefined>} */
let file_offsets;
/** @type {number} */
let files_start_offset;
if (file_offsets_length > 0) {View on GitHub (pinned to 03f1687fe6)
Solutions
- Rebuild/redeploy client and server from the same SvelteKit version so the format version matches
- Clear cached stale service-worker/build assets holding the old serializer
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/kit/src/runtime/form-utils.js:249 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of sveltejs/kit@03f1687fe6 (2026-09-02).
Data as JSON: /api/errors/f3fde33205bb2167.
Report an issue: GitHub.