Zstandard MIME Type
application/zstd means, how to identify and decompress Zstandard data, and how Poly handles .zst files. MIME type details for application/zstd
In active use| MIME type | application/zstd |
|---|---|
| Extensions | .zst |
| Magic number | 28 B5 2F FD |
| First standardized | 2016 |
| Created by | Yann Collet at Facebook |
| Browser support | No native file preview |
| Example applications | Zstandard CLI, GNU tar |
| Poly support | Partial. Poly recognizes .zst as application/zstd and stores, syncs, shares, and versions the file, but does not decompress it. |
| Indexed by Poly | Partial. Poly indexes the Zstandard file's name and ordinary file properties, but not the compressed data or any tar members. |
| Preview in Poly | No. Poly has no in-app Zstandard decompressor or archive browser; download the file and open it with a compatible utility. |
| Poly agent | No. The Poly agent cannot read or reason about content inside a Zstandard stream. |
What does application/zstd mean?
The application/zstd media type identifies a byte stream compressed with Zstandard, usually shortened to zstd and stored in a .zst file. Zstandard is lossless, so decompression reproduces the original bytes exactly.1
The format compresses a stream of bytes. It does not provide a directory of files, filenames, permissions, or other multi-file archive features. A .tar.zst file combines two layers: a TAR archive supplies the file tree, then Zstandard compresses the complete tar stream.
application/zstd is also different from HTTP Content-Encoding: zstd. The media type says that the representation itself is Zstandard data. A content encoding is a transport layer that a compatible browser removes before interpreting the response's original media type.12Where did Zstandard come from?
Yann Collet developed Zstandard at Facebook for fast, general-purpose lossless compression. Facebook announced the stable Zstandard 1.0 release on August 31, 2016. The design combined LZ77-style matching with Finite State Entropy and Huffman coding, with particular attention to fast decompression and modern processors.3
The IETF first documented the format and registered application/zstd in RFC 8478 in 2018. RFC 8878 replaced that document in February 2021. It registers the media type, the zstd HTTP content coding, and the +zstd structured syntax suffix.1
RFC 8878 is an Informational RFC, not an Internet Standards Track specification. The media type is nevertheless registered with IANA for common use, with .zst as its registered extension and no deprecated aliases.1
How do you identify a .zst file?
A normal Zstandard frame begins with this four-byte signature:14
28 B5 2F FD
The RFC writes the same value as 0xFD2FB528 in little-endian form. The byte sequence is useful for identification, but it does not prove that the rest of the stream is valid.
A .zst stream can concatenate multiple independent frames. It can also contain skippable frames, whose magic numbers range from 50 2A 4D 18 through 5F 2A 4D 18. Skippable frames carry application-defined data that a compliant decoder ignores.4
Use the reference command-line tool to validate the complete compressed input without saving its output:
zstd --test download.zst
You can inspect available size, ratio, and checksum information with zstd --list download.zst. Some fields are optional and may not be present.5
How do you open an application/zstd file?
Web browsers do not provide a general-purpose .zst file viewer. Browser support for Zstandard HTTP content encoding does not turn a downloaded .zst file into a browsable document. Save the file and use a decompression utility.
The reference zstd tool provides zstd, unzstd, and zstdcat. To decompress while keeping the compressed input:
zstd -dk report.csv.zst
The Zstandard frame does not store the source filename or file attributes. The CLI normally derives the output name by removing .zst.5 The decompressed result could be text, an image, a database, a TAR archive, or any other byte sequence.
For a .tar.zst archive, inspect member names before extracting:
tar --zstd -tf source.tar.zst
tar --zstd -xf source.tar.zst -C empty-directory
GNU tar supports the .zst and .tzst suffixes and can invoke the zstd program as its compression filter.6
Support in Poly
Poly recognizes .zst filenames as application/zstd and classifies them as archives. It can store, sync, share, version, download, and find the file by name.
Poly treats the compressed stream as opaque:
- It does not decompress the Zstandard data or inspect a TAR archive inside it.
- It does not index decompressed text, tar member names, or member metadata.
- It does not generate a thumbnail or provide an in-app archive browser.
- The Poly agent cannot read or reason about the compressed payload.
Poly's filename inference recognizes the final .zst extension, including a compound name such as backup.tar.zst. It does not map the .tzst shorthand to application/zstd.
Download and decompress the file with a trusted utility when you need its contents. Adding the decompressed result to Poly separately lets that result use the preview and indexing pipeline for its own format.
Zstandard, Gzip, XZ, and TAR are different layers
These formats solve related but distinct problems:
| Format | Typical extension | What it provides |
|---|---|---|
| Zstandard | .zst | Fast, tunable lossless compression for a byte stream |
| Gzip | .gz | DEFLATE compression in a Gzip wrapper |
| XZ | .xz | A stream container commonly using LZMA2 compression |
| TAR with Zstandard | .tar.zst or .tzst | A TAR member archive wrapped in Zstandard compression |
Renaming backup.tar.zst to backup.tar does not decompress it. One Zstandard decompression step produces the tar stream, after which a tar program can list or extract the members.
To convert a .tar.zst file to ZIP, first extract it safely, then create a new ZIP archive from the extracted tree. For a plain .zst file, decompress it first and identify the resulting format before choosing a conversion target.
Dictionaries and interoperability
Zstandard can use a trained dictionary to improve compression of many small, similar inputs. The dictionary is not embedded in the compressed content. A frame may carry a dictionary ID, but the decoder still needs the matching dictionary from somewhere else.14
The reference CLI uses -D dictionary for both compression and decompression. Without the correct dictionary, a dictionary-dependent file cannot be reconstructed.5
RFC 8878 says content sent as application/zstd should not depend on a dictionary unless the parties have a private dictionary-negotiation arrangement. Following that rule keeps a standalone MIME payload decodable without an undocumented external file.1
Safety, integrity, and metadata
Compressed data can expand far beyond its downloaded size. A frame can also request a large decoder window, and the decompressed size may be absent from its header. Apply memory, output-size, and time limits when processing untrusted files. The reference CLI provides --memory to cap decompression memory.45
Zstandard frames can include an optional 32-bit content checksum. The reference CLI enables the check by default when compressing files, but the format does not require it.45 A valid checksum detects accidental corruption. It does not authenticate the source or establish that the decompressed content is safe.
Skippable frames deserve separate privacy attention. Their user-defined payload can contain tracking identifiers or other metadata that ordinary decompression silently ignores. The format specification recommends scanning for skippable frames when hidden metadata is a concern.4
Footnotes
- Internet Engineering Task Force. RFC 8878: Zstandard Compression and the
application/zstdMedia Type. The RFC defines the format, media type, extension, magic number, dictionary interoperability rule, content coding, and structured syntax suffix. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 - MDN Web Docs. Content-Encoding Header. MDN explains HTTP content encoding and lists
zstdas the coding defined by RFC 8878. ↩ - Meta Engineering. Smaller and Faster Data Compression with Zstandard. The announcement introduces Zstandard 1.0, its design goals, implementation, and entropy-coding approach. ↩
- Meta Platforms. Zstandard Compression Format. The format specification documents frames, signatures, optional checksums, window limits, dictionaries, concatenation, and skippable metadata. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
- Meta Platforms. Zstandard Command-Line Interface Manual. The manual documents
.zstnaming, decompression, testing, listing, dictionaries, checksums, and memory limits. ↩ ↩2 ↩3 ↩4 ↩5 - Free Software Foundation. GNU tar Manual: Creating and Reading Compressed Archives. The manual documents the Zstandard filter and the
.zstand.tzstsuffixes. ↩