{"id":1910,"date":"2026-10-15T15:13:00","date_gmt":"2026-10-15T19:13:00","guid":{"rendered":"https:\/\/www.xconvert.com\/blog\/?p=1910"},"modified":"2026-08-31T23:05:50","modified_gmt":"2026-09-01T03:05:50","slug":"tar-gz-tgz-xz-explained","status":"publish","type":"post","link":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained","title":{"rendered":"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">You download a release from GitHub and get <code>project-2.4.1.tar.gz<\/code>. The mirror offers <code>project-2.4.1.tar.xz<\/code> too, and something called <code>.tgz<\/code>, and further down the page a <code>.tbz2<\/code>. They look like four different formats. They are not: they are one format with three different squeezers bolted on, and one of them is just a nickname. Once you see the two-layer structure, every Linux archive ending decodes itself \u2014 and the differences that actually matter (why you cannot pull one file out of a <code>.tar.gz<\/code>, why <code>xz<\/code> can refuse to open on a small machine) stop being mysterious.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Quick answer:<\/strong> <code>.tar<\/code> is an <strong>archive<\/strong> \u2014 it glues many files into one stream and compresses nothing. <code>.gz<\/code>, <code>.bz2<\/code> and <code>.xz<\/code> are <strong>compressors<\/strong> \u2014 each squeezes a single stream and knows nothing about files. Stack them and you get <code>.tar.gz<\/code> (tar + gzip), <code>.tar.bz2<\/code> (tar + bzip2), <code>.tar.xz<\/code> (tar + xz). The short forms are the same thing with a shorter name: <strong><code>.tgz<\/code> = <code>.tar.gz<\/code><\/strong> (gzip\u2019s own man page says so), <code>.tbz2<\/code>\/<code>.tbz<\/code> = <code>.tar.bz2<\/code>, <code>.txz<\/code> = <code>.tar.xz<\/code>. Practical ranking: <strong>gzip<\/strong> for maximum compatibility and speed, <strong>xz<\/strong> for the smallest file at a real cost in time and RAM, <strong>bzip2<\/strong> mostly for older archives you have been handed.<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Jump to a section<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"#two-layers\">Two layers, not one<\/a><\/li><li><a href=\"#decoder\">Every ending you will actually meet, decoded<\/a><\/li><li><a href=\"#vs-zip\">Why a .tar.gz behaves nothing like a .zip<\/a><\/li><li><a href=\"#tradeoff\">gzip vs bzip2 vs xz: what you are trading<\/a><\/li><li><a href=\"#tool\">Extract a TAR.GZ, TGZ or TAR.XZ on xconvert<\/a><\/li><li><a href=\"#faq\">FAQ<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"two-layers\">Two layers, not one<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Layer one \u2014 the archiver.<\/strong> <code>tar<\/code> (short for <em>tape archive<\/em>) walks a directory tree and writes every file, plus its name, permissions, ownership and timestamps, into one continuous stream. It does no compression at all. A <code>.tar<\/code> of a folder is roughly the size of the folder.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Layer two \u2014 the compressor.<\/strong> <code>gzip<\/code>, <code>bzip2<\/code>, <code>xz<\/code> and <code>zstd<\/code> each take <em>one<\/em> stream of bytes and make it smaller. None of them understands files, directories or permissions. RFC 1952, which defines the gzip file format, is explicit that it \u201ccan compress or decompress a data stream (as opposed to a randomly accessible file) to produce another data stream.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Put them together and the naming falls out of the pipeline. GNU tar\u2019s own compression options say it plainly: <code>-z<\/code> \/ <code>--gzip<\/code> \u201cFilter the archive through gzip\u201d, <code>-j<\/code> \/ <code>--bzip2<\/code> through bzip2, <code>-J<\/code> \/ <code>--xz<\/code> through xz. So <code>tar czf archive.tar.gz .<\/code> builds the tar stream and pipes it through gzip \u2014 hence two extensions, in the order the work happened.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is also why the two halves show up alone. A bare <code>.gz<\/code> is one compressed file with no archive inside it (<code>data.csv.gz<\/code> is just <code>data.csv<\/code>, smaller). A bare <code>.tar<\/code> is a bundle nobody compressed \u2014 common when the contents are already-compressed media, where a second squeeze would gain nothing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"decoder\">Every ending you will actually meet, decoded<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Ending<\/th><th>Same thing as<\/th><th>What it actually is<\/th><th>Standard command<\/th><\/tr><\/thead><tbody><tr><td><code>.tar<\/code><\/td><td>\u2014<\/td><td>Archive of many files, <strong>no compression<\/strong><\/td><td><code>tar xf<\/code><\/td><\/tr><tr><td><code>.gz<\/code><\/td><td>\u2014<\/td><td>One gzip-compressed stream, <strong>not an archive<\/strong><\/td><td><code>gunzip<\/code><\/td><\/tr><tr><td><code>.tar.gz<\/code><\/td><td><code>.tgz<\/code> (and <code>.taz<\/code>, contested \u2014 see below)<\/td><td>tar archive filtered through gzip<\/td><td><code>tar xzf<\/code><\/td><\/tr><tr><td><code>.tgz<\/code><\/td><td><code>.tar.gz<\/code><\/td><td>Shorthand \u2014 gunzip \u201crecognizes the special extensions <code>.tgz<\/code> and <code>.taz<\/code> as shorthands for <code>.tar.gz<\/code> and <code>.tar.Z<\/code>\u201d<\/td><td><code>tar xzf<\/code><\/td><\/tr><tr><td><code>.bz2<\/code><\/td><td>\u2014<\/td><td>One bzip2-compressed stream<\/td><td><code>bunzip2<\/code><\/td><\/tr><tr><td><code>.tar.bz2<\/code><\/td><td><code>.tbz2<\/code>, <code>.tbz<\/code>, <code>.tz2<\/code><\/td><td>tar archive filtered through bzip2<\/td><td><code>tar xjf<\/code><\/td><\/tr><tr><td><code>.xz<\/code><\/td><td>\u2014<\/td><td>One xz (LZMA2) stream<\/td><td><code>unxz<\/code><\/td><\/tr><tr><td><code>.tar.xz<\/code><\/td><td><code>.txz<\/code><\/td><td>tar archive filtered through xz<\/td><td><code>tar xJf<\/code><\/td><\/tr><tr><td><code>.zst<\/code> \/ <code>.tar.zst<\/code><\/td><td><code>.tzst<\/code><\/td><td>tar archive filtered through zstd<\/td><td><code>tar --zstd -xf<\/code><\/td><\/tr><tr><td><code>.Z<\/code> \/ <code>.tar.Z<\/code><\/td><td><code>.taZ<\/code>, and <code>.taz<\/code> per gzip<\/td><td>Legacy <code>compress<\/code> (LZW). GNU tar recommends against creating new ones<\/td><td><code>uncompress<\/code>, <code>gzip -d<\/code><\/td><\/tr><tr><td><code>.zip<\/code>, <code>.7z<\/code>, <code>.rar<\/code><\/td><td>\u2014<\/td><td>Archiver <strong>and<\/strong> compressor in one file format<\/td><td><code>unzip<\/code>, <code>7z<\/code>, <code>unrar<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two footnotes on the aliases. GNU tar\u2019s <code>--auto-compress<\/code> documents the suffixes it maps to a compressor \u2014 <code>.gz<\/code>, <code>.tgz<\/code>, <code>.taz<\/code>, <code>.bz2<\/code>, <code>.tz2<\/code>, <code>.tbz2<\/code>, <code>.tbz<\/code>, <code>.xz<\/code>, <code>.zst<\/code>, <code>.tzst<\/code>, <code>.Z<\/code>, <code>.taZ<\/code> and the lzip\/lzma\/lzop set. You will also meet <code>.tb2<\/code> in the wild for tar+bzip2, which is not in that documented list.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>And the two tools disagree about <code>.taz<\/code>.<\/strong> gzip\u2019s man page says <code>gunzip<\/code> \u201crecognizes the special extensions <code>.tgz<\/code> and <code>.taz<\/code> as shorthands for <code>.tar.gz<\/code> and <code>.tar.Z<\/code> respectively\u201d \u2014 so to gzip, <code>.taz<\/code> means the old <code>compress<\/code> format. GNU tar\u2019s <code>--auto-compress<\/code> table maps <code>.taz<\/code> to <strong>gzip<\/strong> and reserves <code>.taZ<\/code> (capital Z) for <code>compress<\/code>. Both are current documentation; they simply resolve the same suffix differently. In practice this costs you nothing, for the reason below: tar sniffs the file rather than trusting the name. But if you are writing a script that dispatches on the extension alone, <code>.taz<\/code> is the one suffix you should not guess at. None of it usually matters, because tar identifies compression by <strong>signature<\/strong> \u2014 the magic bytes at the start of the file \u2014 and only falls back to the suffix if that fails. In practice <code>tar xf whatever<\/code> just works.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"vs-zip\">Why a .tar.gz behaves nothing like a .zip<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Both give you \u201cone file containing many files,\u201d so people assume they are interchangeable. Structurally they are opposites, and three consequences follow.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><\/th><th><code>.tar.gz<\/code> \/ <code>.tar.xz<\/code><\/th><th><code>.zip<\/code><\/th><\/tr><\/thead><tbody><tr><td>What gets compressed<\/td><td>The whole tar stream, as one solid block<\/td><td>Each entry, separately<\/td><\/tr><tr><td>Index<\/td><td>None \u2014 you read from the start<\/td><td>A <strong>central directory<\/strong> at the end of the file<\/td><\/tr><tr><td>Pull out one file<\/td><td>Must decompress everything up to it<\/td><td>Seek straight to that entry<\/td><\/tr><tr><td>Add or delete a member later<\/td><td>Not possible without rebuilding<\/td><td>Supported<\/td><\/tr><tr><td>Damage in the middle<\/td><td>Everything after it is likely lost<\/td><td>Usually only that entry is lost<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The ZIP layout is right there in PKWARE\u2019s own specification: a local file header and data for each file in turn, then a central directory at the end, with every entry carrying its own compression method, CRC-32 and compressed\/uncompressed sizes. That per-entry independence is what buys random access.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A <code>.tar.gz<\/code> has none of that, and GNU tar states the fallout directly: \u201ccompressed archives cannot be modified, i.e., you cannot update (<code>--update<\/code>) them or delete (<code>--delete<\/code>) members from them or add (<code>--append<\/code>) members to them.\u201d The manual is equally blunt about damage: \u201cCompressed archives are easily corrupted, because compressed files have little redundancy\u2026 If you lose a few blocks, the dynamic construction of the compression tables becomes unsynchronized, and there is little chance that you could recover later in the archive.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The upside of the solid stream is compression ratio. Because gzip sees the whole tar as one continuous run of bytes, redundancy <em>between<\/em> files \u2014 a thousand near-identical source files, repeated boilerplate headers \u2014 gets compressed away. ZIP, compressing each entry in isolation, cannot exploit that. This is exactly why source releases ship as tarballs and why a folder of small text files is usually meaningfully smaller as <code>.tar.gz<\/code> than as <code>.zip<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tradeoff\">gzip vs bzip2 vs xz: what you are trading<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"789\" src=\"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/gzip-bzip2-xz.png\" alt=\"Comparison grid of gzip, bzip2 and xz showing algorithm, tar flag, default preset, short tar suffix and memory needed at the default preset\" class=\"wp-image-1908\" srcset=\"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/gzip-bzip2-xz.png 1600w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/gzip-bzip2-xz-300x148.png 300w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/gzip-bzip2-xz-1024x505.png 1024w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/gzip-bzip2-xz-768x379.png 768w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/gzip-bzip2-xz-1536x757.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>gzip<\/strong> uses \u201cLempel-Ziv coding (LZ77)\u201d per its man page \u2014 DEFLATE, standardised in RFC 1951 with the file wrapper in RFC 1952. Its default level is <code>-6<\/code>, and the man page\u2019s own rule of thumb is that \u201ctext such as source code or English is reduced by 60-70%.\u201d It is the safest choice by a distance: every system that can open an archive at all can open a <code>.tar.gz<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>bzip2<\/strong> compresses \u201cusing the Burrows-Wheeler block sorting text compression algorithm, and Huffman coding,\u201d in blocks of 100 k to 900 k bytes, with 900 k (<code>-9<\/code>) as the default. Its numbers are modest and predictable: roughly 400 k + 8 \u00d7 block size to compress, so about 7.6 MB at the default, and \u201cfor files compressed with the default 900 k block size, <code>bunzip2<\/code> will require about 3700 kbytes to decompress.\u201d It is also the only one of the three that ships a dedicated salvage tool, <code>bzip2recover<\/code>, for pulling undamaged blocks out of a broken file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>xz<\/strong> uses LZMA2 and generally produces the smallest of the three, but the man page is unusually candid about the price. The default preset is <code>-6<\/code>. \u201cThe selected compression settings determine the memory requirements of the decompressor, thus using a too high preset level might make it painful to decompress the file on an old system with little RAM. Specifically, it\u2019s not a good idea to blindly use <code>-9<\/code> for everything like it often is with gzip(1) and bzip2(1).\u201d The published table backs that up: <code>-6<\/code> needs about <strong>94 MiB to compress and 9 MiB to decompress<\/strong>, while <code>-9<\/code> needs about <strong>674 MiB to compress and 65 MiB to decompress<\/strong>. That is roughly a hundred times bzip2\u2019s compression footprint for a single-digit-percent gain on many inputs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The practical rule: <strong>ship <code>.tar.gz<\/code> unless something specific says otherwise.<\/strong> Reach for <code>.tar.xz<\/code> when the file is large, downloaded many times, and compressed once \u2014 the classic source-tarball case. Treat <code>.tar.bz2<\/code> as a format you receive rather than one you create.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tool\">Extract a TAR.GZ, TGZ or TAR.XZ on xconvert<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you are on Windows without 7-Zip, on a locked-down machine, or just do not want to install anything, you can unpack the archive in the browser instead of at a shell:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Open <a href=\"https:\/\/www.xconvert.com\/extract-tar.gz\">xconvert.com\/extract-tar.gz<\/a> \u2014 the page is titled <strong>Extract TAR.GZ<\/strong> and shows <strong>Supports: TAR.GZ<\/strong> under the drop zone.<\/li><li>Drag your archive onto the drop zone, or click <strong>Upload<\/strong> (From my Computer, Google Drive or Dropbox).<\/li><li>There are no settings to choose. Extraction has no quality or ratio to tune \u2014 <strong>Advanced Options<\/strong> stays empty on this page by design.<\/li><li>Click <strong>Extract<\/strong>, then pull individual files, whole subfolders, or the complete unpacked archive.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Have a different ending? There are dedicated pages for <a href=\"https:\/\/www.xconvert.com\/extract-tgz\">.tgz<\/a>, <a href=\"https:\/\/www.xconvert.com\/extract-tar\">.tar<\/a>, <a href=\"https:\/\/www.xconvert.com\/extract-tar.xz\">.tar.xz<\/a>, <a href=\"https:\/\/www.xconvert.com\/extract-tar.bz2\">.tar.bz2<\/a>, <a href=\"https:\/\/www.xconvert.com\/extract-zip\">.zip<\/a> and <a href=\"https:\/\/www.xconvert.com\/extract-7z\">.7z<\/a> \u2014 or use <a href=\"https:\/\/www.xconvert.com\/extract-archive\">Extract Archive<\/a>, which accepts 7z, rar, tar, tar.bz2, tar.gz, tar.xz, tb2, tgz, tz2 and zip and works out which it is.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your file uploads over an encrypted connection, is extracted on our servers, and is deleted automatically a few hours later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the step-by-step version across Linux, macOS and Windows, see <a href=\"https:\/\/www.xconvert.com\/blog\/extract-a-tar-gz-file\">How to Extract a TAR.GZ \/ TGZ File<\/a>. If you are choosing a format to <em>create<\/em> rather than open, <a href=\"https:\/\/www.xconvert.com\/blog\/zip-vs-rar-vs-7z\">ZIP vs RAR vs 7z<\/a> covers the other family.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<h5 class=\"wp-block-heading\">Is .tgz the same as .tar.gz?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Yes, byte for byte. It is purely a naming convention from systems that only allowed a three-character extension. gzip\u2019s man page states it outright: \u201cgunzip also recognizes the special extensions <code>.tgz<\/code> and <code>.taz<\/code> as shorthands for <code>.tar.gz<\/code> and <code>.tar.Z<\/code> respectively.\u201d Anything that opens one opens the other, and renaming between them changes nothing inside the file.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Why can\u2019t I extract just one file out of a .tar.gz?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Because the compression wraps the entire archive as one stream, and gzip\u2019s format offers no random access \u2014 RFC 1952 describes it as compressing \u201ca data stream (as opposed to a randomly accessible file).\u201d To reach file number 900 the tool has to decompress files one through 899 first. ZIP does not have this problem because each entry is compressed independently and indexed in a central directory at the end of the file.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Should I use tar.gz or tar.xz?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\"><code>.tar.gz<\/code> if anyone else has to open it, or if you are compressing repeatedly \u2014 it is universally supported and fast. <code>.tar.xz<\/code> if the archive is large, compressed once, and downloaded many times, and you can spare the time and memory. Note the xz man page\u2019s warning against reflexively using <code>-9<\/code>: at that preset it wants roughly 674 MiB to compress and 65 MiB to decompress, which can genuinely fail on constrained machines.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">What is a .gz file with no .tar in the name?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">A single compressed file. <code>access.log.gz<\/code> decompresses to <code>access.log<\/code> and nothing else \u2014 there is no directory structure inside, because gzip never had one. If you decompress it and get one file rather than a folder, that is correct behaviour, not a broken download.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Can I add a file to an existing .tar.gz?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Not in place. GNU tar\u2019s manual states that compressed archives \u201ccannot be modified\u201d \u2014 no <code>--append<\/code>, <code>--update<\/code>, <code>--delete<\/code> or <code>--concatenate<\/code>. You have to decompress to a plain <code>.tar<\/code>, add the member, and re-compress. Uncompressed <code>.tar<\/code> archives <em>can<\/em> be appended to, which is one of the few remaining reasons to keep one uncompressed.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">My .tar.gz is corrupted \u2014 is any of it recoverable?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Partially, at best. GNU tar warns that with compressed archives \u201cthere is little chance that you could recover later in the archive\u201d once blocks are lost. For gzip, the man page\u2019s advice is <code>zcat file &gt; recovered<\/code> to salvage everything up to the point of failure. bzip2 is the exception: it ships <code>bzip2recover<\/code>, which extracts the undamaged blocks from a broken <code>.bz2<\/code> into separate files.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Last verified 2026-08-31.<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.gnu.org\/software\/tar\/manual\/html_node\/gzip.html\">GNU tar manual \u2014 Creating and Reading Compressed Archives<\/a> \u2014 the <code>-z<\/code>\/<code>-j<\/code>\/<code>-J<\/code> filters, the <code>--auto-compress<\/code> suffix list, and the \u201ccannot be modified\u201d and corruption warnings.<\/li><li><a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc1952\">RFC 1952 \u2014 GZIP file format specification version 4.3<\/a> \u2014 gzip as a stream format with no random access; DEFLATE as the method.<\/li><li><a href=\"https:\/\/manpages.ubuntu.com\/manpages\/noble\/man1\/gzip.1.html\">gzip(1) man page<\/a> \u2014 LZ77, default level <code>-6<\/code>, 60\u201370% typical text reduction, and <code>.tgz<\/code>\/<code>.taz<\/code> as shorthands.<\/li><li><a href=\"https:\/\/manpages.ubuntu.com\/manpages\/noble\/man1\/bzip2.1.html\">bzip2(1) man page<\/a> \u2014 Burrows-Wheeler plus Huffman, 100 k\u2013900 k block sizes, ~3700 kbytes to decompress at the default, and <code>bzip2recover<\/code>.<\/li><li><a href=\"https:\/\/manpages.ubuntu.com\/manpages\/noble\/man1\/xz.1.html\">xz(1) man page<\/a> \u2014 LZMA2, default preset <code>-6<\/code>, and the memory table (94 MiB \/ 9 MiB at <code>-6<\/code>; 674 MiB \/ 65 MiB at <code>-9<\/code>).<\/li><li><a href=\"https:\/\/pkware.cachefly.net\/webdocs\/APPNOTE\/APPNOTE-6.3.1.TXT\">PKWARE APPNOTE.TXT 6.3.1 \u2014 .ZIP File Format Specification<\/a> \u2014 per-entry local headers and the central directory at the end of the file.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>tar bundles, gzip\/bzip2\/xz squeeze, and .tgz is just .tar.gz. Every Linux archive ending decoded \u2014 plus why you can&#8217;t pull one file out of a .tar.gz.<\/p>\n","protected":false},"author":4,"featured_media":1907,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,14],"tags":[],"class_list":["post-1910","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to-guides","category-tools"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean<\/title>\n<meta name=\"description\" content=\"tar bundles, gzip\/bzip2\/xz squeeze, and .tgz is just .tar.gz. Every Linux archive ending decoded \u2014 plus why you can&#039;t pull one file out of a .tar.gz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean\" \/>\n<meta property=\"og:description\" content=\"tar bundles, gzip\/bzip2\/xz squeeze, and .tgz is just .tar.gz. Every Linux archive ending decoded \u2014 plus why you can&#039;t pull one file out of a .tar.gz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained\" \/>\n<meta property=\"og:site_name\" content=\"XConvert Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/xconvertcom\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-15T19:13:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-17.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"840\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Stephanie Taylor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@xconvert_com\" \/>\n<meta name=\"twitter:site\" content=\"@xconvert_com\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Stephanie Taylor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained\"},\"author\":{\"name\":\"Stephanie Taylor\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#\\\/schema\\\/person\\\/ae9300506c0e9e85f1a6ece4d762980d\"},\"headline\":\"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean\",\"datePublished\":\"2026-10-15T19:13:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained\"},\"wordCount\":2017,\"image\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-17.png\",\"articleSection\":[\"How To Guides\",\"Tools\"],\"inLanguage\":\"en-CA\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained\",\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained\",\"name\":\"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-17.png\",\"datePublished\":\"2026-10-15T19:13:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#\\\/schema\\\/person\\\/ae9300506c0e9e85f1a6ece4d762980d\"},\"description\":\"tar bundles, gzip\\\/bzip2\\\/xz squeeze, and .tgz is just .tar.gz. Every Linux archive ending decoded \u2014 plus why you can't pull one file out of a .tar.gz.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained#primaryimage\",\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-17.png\",\"contentUrl\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-17.png\",\"width\":1600,\"height\":840,\"caption\":\"The xconvert TAR.GZ extractor at \\\/extract-tar.gz with the Upload button highlighted \u2014 unpack a .tar.gz or .tgz archive in the browser\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/tar-gz-tgz-xz-explained#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.xconvert.com\\\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/\",\"name\":\"XConvert Blog\",\"description\":\"Blog for XConvert file converter\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-CA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#\\\/schema\\\/person\\\/ae9300506c0e9e85f1a6ece4d762980d\",\"name\":\"Stephanie Taylor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g\",\"caption\":\"Stephanie Taylor\"},\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/author\\\/stephanie\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean","description":"tar bundles, gzip\/bzip2\/xz squeeze, and .tgz is just .tar.gz. Every Linux archive ending decoded \u2014 plus why you can't pull one file out of a .tar.gz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained","og_locale":"en_US","og_type":"article","og_title":"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean","og_description":"tar bundles, gzip\/bzip2\/xz squeeze, and .tgz is just .tar.gz. Every Linux archive ending decoded \u2014 plus why you can't pull one file out of a .tar.gz.","og_url":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained","og_site_name":"XConvert Blog","article_publisher":"https:\/\/www.facebook.com\/xconvertcom","article_published_time":"2026-10-15T19:13:00+00:00","og_image":[{"width":1600,"height":840,"url":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-17.png","type":"image\/png"}],"author":"Stephanie Taylor","twitter_card":"summary_large_image","twitter_creator":"@xconvert_com","twitter_site":"@xconvert_com","twitter_misc":{"Written by":"Stephanie Taylor","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained#article","isPartOf":{"@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained"},"author":{"name":"Stephanie Taylor","@id":"https:\/\/www.xconvert.com\/blog\/#\/schema\/person\/ae9300506c0e9e85f1a6ece4d762980d"},"headline":"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean","datePublished":"2026-10-15T19:13:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained"},"wordCount":2017,"image":{"@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained#primaryimage"},"thumbnailUrl":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-17.png","articleSection":["How To Guides","Tools"],"inLanguage":"en-CA"},{"@type":"WebPage","@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained","url":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained","name":"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean","isPartOf":{"@id":"https:\/\/www.xconvert.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained#primaryimage"},"image":{"@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained#primaryimage"},"thumbnailUrl":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-17.png","datePublished":"2026-10-15T19:13:00+00:00","author":{"@id":"https:\/\/www.xconvert.com\/blog\/#\/schema\/person\/ae9300506c0e9e85f1a6ece4d762980d"},"description":"tar bundles, gzip\/bzip2\/xz squeeze, and .tgz is just .tar.gz. Every Linux archive ending decoded \u2014 plus why you can't pull one file out of a .tar.gz.","breadcrumb":{"@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained"]}]},{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained#primaryimage","url":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-17.png","contentUrl":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-17.png","width":1600,"height":840,"caption":"The xconvert TAR.GZ extractor at \/extract-tar.gz with the Upload button highlighted \u2014 unpack a .tar.gz or .tgz archive in the browser"},{"@type":"BreadcrumbList","@id":"https:\/\/www.xconvert.com\/blog\/tar-gz-tgz-xz-explained#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.xconvert.com\/blog"},{"@type":"ListItem","position":2,"name":"TAR, GZ, TGZ, XZ: What Those Linux Archive Endings Mean"}]},{"@type":"WebSite","@id":"https:\/\/www.xconvert.com\/blog\/#website","url":"https:\/\/www.xconvert.com\/blog\/","name":"XConvert Blog","description":"Blog for XConvert file converter","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.xconvert.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-CA"},{"@type":"Person","@id":"https:\/\/www.xconvert.com\/blog\/#\/schema\/person\/ae9300506c0e9e85f1a6ece4d762980d","name":"Stephanie Taylor","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/secure.gravatar.com\/avatar\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g","caption":"Stephanie Taylor"},"url":"https:\/\/www.xconvert.com\/blog\/author\/stephanie"}]}},"_links":{"self":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts\/1910","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/comments?post=1910"}],"version-history":[{"count":1,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts\/1910\/revisions"}],"predecessor-version":[{"id":1911,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts\/1910\/revisions\/1911"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/media\/1907"}],"wp:attachment":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/media?parent=1910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/categories?post=1910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/tags?post=1910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}