Rufus formats drives and builds bootable media, and its OOBE defaults remove the TPM and Secure Boot checks
The Reliable USB Formatting Utility
At a glance
- What is it?
- Rufus is a single, portable C utility that formats drives and writes bootable media onto them, released under GPL-3.0 and built with either Visual Studio 2026 or MinGW. The details that decide whether you want it are the automatic OOBE configuration, the counterfeit flash detection, and the fact that the newest release is three months behind the code in the tree.
- Who is it for?
- Rufus is the right tool if you need to put Windows or Linux installation media on a USB drive and want checksum verification and a counterfeit drive check along the way. It is the wrong tool if your process requires the Windows setup screens to be answered by a person, since the OOBE parameters are filled in for you, and the README documents no build for Linux or macOS.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 3 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 1, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Two build systems in one tree, with the autotools output committed
Compilation is a single sentence in the README: use either Visual Studio 2026 or MinGW, then invoke the .sln or configure and make respectively. Underneath that sentence is a tree carrying both toolchains at once, which is the shape to understand before you patch anything.
The Visual Studio side is rufus.sln at the root plus a .vs/ directory, with a CI workflow named vs2026.yml. The MinGW side is a full autotools setup: configure.ac, Makefile.am, bootstrap.sh, aclocal.m4 and a .mingw/ directory, with a CI workflow named mingw.yml. The generated output of that second system is also checked in, so Makefile.in, configure, install-sh, missing and compile are all in the repository root rather than produced on your machine.
That last detail is deliberate. A fresh clone can run configure and make without an autotools installation, which is what makes the MinGW path usable on a machine that has only a compiler. The cost is that a change to configure.ac or Makefile.am has to be followed by a regeneration and a commit, and a pull request that edits one without the other builds differently depending on whether the contributor regenerated first. Two toolchains in one repository is the price of supporting both.
Seven underscore scripts are what make a release repeatable
The top-level entries say more about how this project is run than the feature list does. There is _chver.sh for changing the version, _release.sh for the release itself, and _sign.cmd for signing, which tells you that binaries are signed as part of the process rather than by hand. Around them sit _coverity.cmd, _detect-amend.sh, _pre-commit.sh and _set_git_hooks.sh. A script that detects amended commits is a script guarding a release tag, and _set_git_hooks.sh says the hooks are installed by the project's own tooling rather than left to each contributor.
Continuous integration runs both toolchains, with a workflow per compiler family, and the README carries a Coverity badge alongside them, so static analysis is part of the normal build rather than an occasional audit. ChangeLog.txt sits in the root as a tracked file, which is where the version history a user reads between releases is kept.
For a contributor the practical consequence is small and useful: the release path is scripted and signed, so building from source and running the binaries a maintainer publishes are two routes to the same artefact rather than two different programs. For anyone auditing a download, the signing step and the ChangeLog file are the two places to look, and neither is described in the README, which links the official website and the releases page instead.
The newest binary is three months behind the code in the tree
The release record is v4.15 on 2026-06-30, v4.14 on 2026-04-30, and v4.13 on 2026-02-17, so the cadence is roughly every two months. The repository's last push was on 2026-09-28, which means the default branch has moved for about three months since v4.15 was tagged. There is no release in the tree that matches the code you would clone today.
That is normal for a project that ships a compiled binary, and it matters for one specific question: if you are chasing a bug, is the fix in the version you have? For Rufus the answer is decided by the binary, not by the branch, and the branch is the faster-moving of the two. Read ChangeLog.txt in the tree rather than assuming the latest tag contains it.
The tag names carry intent as well as numbers. v4.13 is tagged as a BUGFIX RELEASE while v4.14 and v4.15 are not labelled, so the project's own naming distinguishes a corrective release from a routine one. If your policy requires knowing whether an update is a fix or a feature, that suffix is the signal the maintainer gives, and it is worth reading before you roll a version out to a machine fleet.
OOBE parameters are filled in for you, and the hardware checks come out
Two features in the list carry more policy weight than the rest, and they belong together. Rufus can create Windows 11 installation drives for PCs that don't have TPM or Secure Boot, and it can improve the Windows installation experience by automatically setting up OOBE parameters, with a local account and privacy options named as examples.
Read the consequences rather than the marketing. Out-of-the-box experience is the sequence of questions Windows shows on first boot, and configuring it automatically means the person installing the machine does not answer those questions. A local account instead of a Microsoft account is a different identity model, and the privacy options are a decision your organisation may need to make itself rather than accept as a default. The same feature that makes deployment unattended also removes the step where a user would choose.
If you run devices under a compliance regime, this is the part of Rufus to review rather than the formatting code, and the OOBE settings are configured at imaging time, so changing your mind means re-imaging the drive. The README does not enumerate which OOBE parameters are set or what the defaults are, so the list of questions your users will not be asked is something you have to establish from the project's FAQ and from a test image.
Checksums cover the image, bad blocks cover the drive lying about its size
Two different failure modes get two different tools here, and the distinction is the useful part.
The checksum feature computes MD5, SHA-1, SHA-256 and SHA-512 of the selected image. That is the answer to a corrupted download or the wrong file, and it is also the verification step for media you did not fetch yourself, since Rufus can download official Microsoft Windows 8, Windows 10 and Windows 11 retail ISOs as well as UEFI Shell ISOs. The README does not say from where those downloads are served, so a checksum you compute yourself is the part of that path you control.
The bad blocks check is a different thing: it performs bad blocks checks, including detection of what the README calls fake flash drives. A counterfeit drive advertises a capacity it does not have, so writing an image to it fails partway through or produces a drive that disappears on a different machine. That failure looks like a Rufus problem and is not one.
What the README does not say is when the check runs or how long it takes, and a full surface scan is proportional to the size of the device. If you are imaging a batch of drives, find that answer in the FAQ and the log before scheduling the work rather than discovering it halfway through the first stick.
The 38 languages and the security notes are wiki pages, not files in the tree
Documentation for Rufus is split across three places, and the split is not obvious from the repository. The README is a feature list, a compilation note and a link block. The FAQ is a wiki page, the security and safety measures are a separate wiki page, and the official website carries the news and the downloads. There is also a SECURITY.md in the tree, which is the one piece of the documentation set that is versioned with the code.
The clearest example of the consequence is the localisation claim. The README says 38 languages are natively supported and links to an anchor in the FAQ wiki, so the list of languages lives in a wiki page rather than in the repository. A translation can therefore change without a release, and the number in the README is a snapshot rather than a list you can audit. The same applies to the security and safety measures, which is the document you would want to read before running a downloaded executable on a machine that holds credentials.
Rufus does say what it does while it does it: it provides information about what it is doing through its own log or through the Windows debug facility, with a link to DebugView. So the tool tells you about itself at runtime, and the static explanation of its behaviour is the part that lives off the repository. Read the log when something does not do what you expected, and treat the wiki as documentation that can change under you.
No installation required, and no build documented for anything but Windows
Acquiring Rufus is a download and nothing else. The feature list says small footprint, no installation required, and portable, Secure Boot compatible, and the link block points to the official website and the GitHub releases page. The README contains no install command, because there is no install step to run: you take the executable and run it.
That also fixes the platform question. Compilation is documented as Visual Studio 2026 or MinGW, invoking the .sln or configure and make, and the project describes a single portable utility. There is no Linux build, no macOS build and no mention of either in the README, and the two CI workflows in the tree are named for the two Windows toolchains. If a search result offers you a Linux or macOS build, it is not coming from this repository.
For anyone building it, the licence position is explicit and unusual in a good way. Rufus is GPL v3, and the README states that the freely available Visual Studio Community Edition may be used to build, run or develop for Rufus, and that under that licence this applies whether you are an individual or a corporate user. So a company can compile the tool without a commercial compiler licence, and the source and the licence file are both in the tree next to the code.
Editorial conclusion
Rufus is the right tool if you need to put Windows or Linux installation media on a USB drive and want checksum verification and a counterfeit drive check along the way. It is the wrong tool if your process requires the Windows setup screens to be answered by a person, since the OOBE parameters are filled in for you, and the README documents no build for Linux or macOS. Verify first by reading SECURITY.md and the security wiki page against your own policy, then by running the bad blocks check on media you did not buy from a known seller.
Frequently asked questions
Is Rufus free and safe?
Rufus is 100% Free Software under GPL v3, described as a small-footprint utility that needs no installation and is portable and Secure Boot compatible. For what it does to a drive, the project points to its security and safety measures wiki page, and SECURITY.md sits in the repository.
How do I install Rufus on Windows 11?
You do not install it. The README lists small footprint and no installation required among its features, and describes Rufus as portable. The project points to the official website and the GitHub releases page for the executable.
How do I use Rufus to create a bootable USB drive?
Rufus creates DOS bootable drives with FreeDOS or MS-DOS, BIOS or UEFI bootable drives including UEFI bootable NTFS, drives from bootable ISOs, and drives from bootable disk images including compressed ones. It can also compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image, and can perform runtime validation of UEFI bootable media.
How do I use Rufus to format an SD card to FAT32?
The formats the README lists are FAT, FAT32, NTFS, UDF, exFAT, ReFS, ext2 and ext3, and they apply to USB drives, flash cards and virtual drives. Rufus can also create persistent Linux partitions on the drive it formats.
How do I use Rufus to install Windows 11 on hardware without TPM or Secure Boot?
Rufus can create Windows 11 installation drives for PCs that don't have TPM or Secure Boot. It also sets up OOBE parameters automatically, with a local account and privacy options among the examples given, so those choices are made at imaging time instead of during setup.
How do I use Rufus on Linux?
The README documents no Linux build or release. What it documents is compilation with either Visual Studio 2026 or MinGW, invoking the .sln or configure and make, plus a utility described as a small footprint, needing no installation, and portable.
Official sources
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.
[](https://hysenlabs.com/projects/pbatard-rufus)