CLI tool
XboxDev/extract-xiso avatar
XboxDev/extract-xiso

extract-xiso packs and unpacks Xbox XISO images from the command line

Xbox ISO Creation/Extraction utility. Imported from SourceForge.

1,256 stars138 forksCNOASSERTION

At a glance

What is it?
extract-xiso is a small C program with four modes, create, list, rewrite and extract, for working with Xbox XISO images. It is a format utility rather than a game tool, aimed at anyone who has an XISO on disk and needs to see inside it or rebuild it.
Who is it for?
extract-xiso fits anyone who already has an XISO image and needs to look at it, back it up as a directory, or rebuild one from files, because the four modes cover exactly those operations and the binary is small enough to build anywhere. It is the wrong tool if you need to read a different container format, since the documented formats are XISO and the media patching is limited to the Xbox media enable path with a switch to disable it.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 43 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Four modes cover the whole life of an XISO file

extract-xiso is a command line utility for the creation, modification and extraction of XISOs, and its interface is organised around four modes rather than around a long option list. Create, with the -c flag, builds an XISO from a directory. List, with -l, prints the file contents within an XISO. Rewrite, with -r, rewrites the filesystem structure of an XISO. Extract, with -x, expands the contents of an XISO into a directory. Extract is the default mode when no arguments are given, which is why the bare invocation in the documentation works at all. The program was created by a developer whose contact address is in the file header and is now maintained and modernized by the XboxDev organization, which is a useful detail because the project was imported from SourceForge and the homepage still points there. The mode structure is the whole API, and it is small enough to hold in your head.

Extract defaults to the current directory and accepts a target with -d

Extraction is the mode most people will meet first, because it is the default. Running the utility with an XISO and nothing else writes the contents into a directory named after the image, so ./extract-xiso ./halo-ce.iso expands into ./halo-ce. A target directory can be given explicitly with the -d option, as in the second example in the documentation, which extracts into a path you name. The -d flag is not exclusive to extraction. The options list gives it a second meaning: in extract mode it expands the xiso in the given directory, and in rewrite mode it rewrites the xiso in the given directory. The same letter doing two related jobs is a small piece of flag design that you have to remember, and it is the kind of detail that trips people up the first time. The -x flag exists if you want to be explicit about the mode rather than relying on the default.

Create writes to the current directory unless you name an output path

The create mode is the inverse of extraction, and it follows the same positional convention. With one directory argument, the tool produces an ISO file in the current directory named after the source directory, so ./extract-xiso -c ./halo-2 creates halo-2.iso in the place you are standing. With a second argument, that argument is the output path, so the documented example puts the result in /home/me/games/halo-ce.iso while reading from ./halo-ce. The same shape appears in the list mode, where you can pass several XISOs and get the contents of each, and in rewrite mode, where the documentation notes that it can be batched over multiple images. That consistency is worth something when you are processing a library of images, since the argument order does not change between modes and only the flag does.

bash
# Create halo-2.iso in the current directory containing the files within ./halo-2.iso
./extract-xiso -c ./halo-2

# Create halo-ce.iso in the /home/me/games directory containing files in the ./halo-ce directory
./extract-xiso -c ./halo-ce /home/me/games/halo-ce.iso

The list mode takes the same kind of path arguments and prints the contents, which is the fastest way to check what is inside an image before extracting hundreds of megabytes of it.

Rewrite rebuilds the filesystem structure and can delete the original with -D

Rewrite is the mode that has no equivalent in the usual archive tools, and it is the reason this utility is more than an unpacker. Rewriting an XISO rebuilds its filesystem structure, and it can be batched over multiple images in one invocation. The option that gives this mode its teeth is -D, which deletes the old XISO after processing. The rewrite mode also accepts -d, where it rewrites the xiso in the named directory rather than in place. Two other options interact with create and rewrite rather than with extract. The -m flag disables the automatic .xbe media enable patching in create or rewrite mode, and the documentation marks it as not recommended, which tells you the patching is on by default and that the author would rather you did not touch it. And -s skips the $SystemUpdate folder, which lets you produce an image without that particular system directory if you are rebuilding something that should not carry it.

The option set is ten flags, and three of them are about output volume

The complete option list is short enough to read in one pass, and it is presented in the documentation as a plain block. -d takes a directory argument and means one thing in extract mode and another in rewrite mode. -D deletes the old xiso after processing in rewrite mode. -h prints the help text and exits, and -v prints version information and exits. -m disables the automatic.xbe media enable patching in create or rewrite mode, with the note that it is not recommended. -s skips the $SystemUpdate folder. The remaining two are about how much the program talks to you. -q runs quiet and suppresses all non-error output, so errors still reach you, while -Q runs silent and suppresses all output. The distinction between quiet and silent is a small thing that scripts benefit from, since a batch job that needs to report failures but not progress can use -q instead of redirecting and re-parsing everything. These eight flags are the entire interface, and there is no configuration file, no library API and no plugin system.

Building it needs cmake, make and gcc, and produces one binary

The build is a conventional CMake project, and the requirements are listed as cmake, make and gcc. After installing those with your distribution's package manager, or with homebrew on macOS, you clone, make a build directory, and run the two build commands.

bash
# Clone Repo
git clone https://github.com/XboxDev/extract-xiso.git

# cd into directory
cd extract-xiso

# Create working directory
mkdir build
cd build

# Build project
cmake ..
make

The compiled binary ends up in the extract-xiso/build directory as extract-xiso. The repository layout is small, which is worth noting for anyone who wants to read the source. The top level holds CMakeLists.txt, the LICENSE.TXT, a file named released_version_is_2.7.1, a win32 directory for the Windows specific parts, and a single C source file, extract-xiso.c. The version marker file suggests a scripted way of tracking which upstream version the tree corresponds to, and the presence of a win32 directory alongside the cross platform build tells you the Windows path is handled separately from the CMake flow. The primary language of the project is C, and one source file is a reasonable size for a tool of this scope.

The licence is the thing to check before you rely on it

This is the part to slow down on. The project is described as multi-platform and open source in its own feature list, and the repository is a fork of a tool that predates the current GitHub ecosystem, having been imported from SourceForge. But the licence recorded for the repository is one GitHub cannot classify, and the licence text lives in LICENSE.TXT at the root rather than in a file whose terms can be summarised. That distinction matters in practice. A permissive licence with a clear grant of use, modification and redistribution is something you can reason about in a compliance review, while a custom licence may impose conditions that are not obvious from its length or from the fact that the source is public. The release naming also differs from the usual convention, since the tags are dated build identifiers such as build-202609111233 rather than semantic versions, with the most recent on 2026-09-11. The last push was on 2026-09-11 and the repository is not archived.

Editorial conclusion

extract-xiso fits anyone who already has an XISO image and needs to look at it, back it up as a directory, or rebuild one from files, because the four modes cover exactly those operations and the binary is small enough to build anywhere. It is the wrong tool if you need to read a different container format, since the documented formats are XISO and the media patching is limited to the Xbox media enable path with a switch to disable it. Before you use it on anything you care about, read the LICENSE.TXT file, since the project carries a custom licence that GitHub cannot classify and the terms are not the usual open source ones, and test a rewrite on a copy rather than on your only image. The last push was on 2026-09-11 and the repository is not archived.

Frequently asked questions

What modes does extract-xiso support?

It runs in four modes: create (-c) to build an XISO from a directory, list (-l) to print the contents of an XISO, rewrite (-r) to rewrite the filesystem structure of an XISO, and extract (-x) to expand an XISO into a directory. Extract is the default when no arguments are given.

How do I extract an Xbox XISO to a specific directory?

Pass the target directory with the -d option, for example ./extract-xiso ./halo-2.iso -d /home/games/halo-2/. Without a target, the tool extracts into a directory named after the image in the current directory.

How do I build extract-xiso from source?

Install cmake, make and gcc, clone the repository, create a build directory, then run cmake .. and make. The compiled binary is placed in the extract-xiso/build directory as extract-xiso.

What does the -D option do in extract-xiso?

In rewrite mode, -D deletes the old xiso after processing. The rewrite mode can also be batched over several images in one invocation, and the -d option makes it rewrite the xiso in a named directory.

What licence does extract-xiso use?

The repository licence is a custom one that GitHub cannot classify, with the text in LICENSE.TXT at the repository root. The project describes itself as open source and multi-platform, so read that file for the actual terms before relying on it.

Official sources

  1. Issues
  2. Project website
  3. README
  4. Releases
  5. XboxDev/extract-xiso on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/xboxdev-extract-xiso.svg)](https://hysenlabs.com/projects/xboxdev-extract-xiso)

Was this useful?