Bandage: a graph viewer for de novo assembly graphs
a Bioinformatics Application for Navigating De novo Assembly Graphs Easily
At a glance
- What is it?
- Bandage is a Qt and C++ desktop program that draws the assembly graphs produced by de novo assemblers such as Velvet, SPAdes and MEGAHIT, so you can see not just the contigs but the connections between them, label them, colour them and pull sequence out of the viewer. The author has said in public that the project is effectively unmaintained, and points to active forks.
- Who is it for?
- Bandage suits a bioinformatics student or researcher who needs to look at an assembly graph and understand its structure, especially when the contigs alone do not tell the story of an assembly. It does not suit anyone who needs a tool with an active upstream, because the author states in the readme that he does not have the time to give it the attention it deserves and that his C++ and Qt skills are too rusty for more than trivial changes.
- 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 109 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
The connections between contigs are the point
Bandage is a GUI program for interacting with the assembly graphs made by de novo assemblers such as Velvet, SPAdes and MEGAHIT, and the project's own description tells you exactly what problem it solves.
De novo assembly graphs contain not only the assembled contigs but also the connections between those contigs, which were previously not easily accessible. Bandage visualises the assembly graphs, with the connections, using graph layout algorithms. The nodes in the drawn graph represent contigs, and they can be automatically labelled with their ID, their length or their depth. Users can move, label and colour nodes, and sequence information can be extracted directly from the graph viewer.
The last sentence of the intro is the argument for the tool. By displaying the connections between contigs, Bandage opens up new possibilities for analysing and improving de novo assemblies that are not possible by looking at contigs alone. A contig file tells you what sequences you have; a graph tells you how the assembler believed those sequences fit together, including the places where two bubbles competed and the assembler had to pick one.
That graph view is the thing no other tool in the pipeline gives you. The assemblers themselves produce the graph, most pipelines throw it away after the contigs are written, and the analyst is left with a FASTA file and a set of statistics. Bandage puts the discarded intermediate back in front of you.
The documentation lives in two places, which is unusual and useful. There is a GitHub wiki for the full documentation, and there is help built into the program: throughout the interface you find help icons next to controls and settings, and clicking one shows a description of that element.
The 2022 update is the maintainer's own status report
The most important section of the readme is the 2022 update, and it is a status report rather than a feature announcement.
The author writes that Bandage is now about seven years old, and that despite its popularity he sadly does not have the time to give it the attention it deserves. He goes further: the codebase is too large and his C++ and Qt skills are too rusty for him to make anything more than trivial changes.
What follows is a careful middle position. He is not declaring Bandage completely abandoned, because he still thinks it is a useful tool, but he does not expect much development or support on the repository. What he will do is strive to ensure Bandage continues to run well on modern systems. The v0.9.0 release from January 2022 is the example given: it compiles using modern versions of Qt and runs natively on Apple Silicon Macs.
The recommendation he makes for anyone wanting a specific new feature is to look at the forks. A number of enterprising users have forked Bandage, and the most active of them is named as BandageNG, with a page listing the active forks.
That is a genuinely useful piece of information for anyone evaluating the tool, and it is unusual to see it stated this plainly. Most mature projects have a repository that says nothing about its future. This one tells you exactly what state it is in and where to go instead.
The dates line up with the rest of the metadata. The three most recent releases are v0.9.0 from 2022-01-07, v0.8.1 from 2016-12-15 and v0.8.0 from 2016-05-01. The repository is not archived, the default branch is main, and the last push was on 2026-07-07, so the code is still moving even though the author does not claim to be driving it.
Binaries for four platforms, and a macOS quirk
Pre-built 64-bit binaries for Ubuntu Linux, CentOS, macOS and Windows are available in the GitHub releases section and from the project website, and the readme explains the details that trip people up.
On macOS you may get a warning when you download and run the Mac binary, saying that Bandage cannot be opened because it is from an unidentified developer or is damaged and cannot be opened. The fix is to right click the file and select Open to override the warning, and if that does not work, clear the quarantine extended attribute from the command line with xattr -cr Bandage.app.
That second method is the one people search for, and it is a consequence of how macOS treats downloaded applications rather than a fault in Bandage.
The Linux binaries come in two varieties, dynamically linked and statically linked. The documentation says the dynamically linked binary is preferable, but it has more dependencies, naming Qt 5 as one of them, and if you have problems with the dynamically linked binary you should try the statically linked version instead. That is a sensible default: the static build is the one that works on an unfamiliar system, and the dynamic one is the one that plays nicely with a system Qt installation.
The project website is at rrwick.github.io/Bandage, and it is where the documentation and the download links live alongside the GitHub releases.
Building from source needs Qt 5.15 and Qt Creator
If the compiled binaries do not work for you, the readme gives a seven step source build that is a good example of a project documenting its own build for contributors rather than for packagers.
First you need a compiler and the usual developer tools, which on macOS means Xcode and its command line tools, and on Ubuntu a specific apt install line covering build-essential, git and two graphics libraries, libgl1-mesa-dev and libxcb-xinerama0.
Then the Qt SDK, version 5.15 or later, with a double check that the version you install is compatible with your operating system, and the readme links the supported platforms pages for both Qt 5 and Qt 6.
After that you clone the Bandage code from GitHub, open the Qt Creator program and load the Bandage.pro file from the Bandage directory, and let the project configure itself. The defaults should be fine, so click Configure Project. You then change to the release build configuration by clicking where it says Debug in the bottom left area of Qt Creator, and build and run by clicking the green arrow. The executable ends up in a new folder beginning with build-Bandage-Desktop.
The instructions are written for someone using an IDE, not a command line, which is a deliberate choice for a Qt project and consistent with the build_scripts/ directory at the repository root. The top-level layout also shows the parts of the program: graph/ for the graph handling, program/ and ui/ for the application, command_line/ for the non-interactive mode, blast/ for the BLAST integration, tests/ and a separate BandageTests.pro file, and an ogdf/ directory.
That ogdf/ directory is worth a note. The credits section states that Bandage makes use of the OGDF library for performing graph layout algorithms, and thanks the OGDF developers for their work. The library is vendored into the repository rather than being an external dependency you install.
A published tool with a paper behind it
Bandage is not a script someone wrote for themselves, and the project has a citation entry for it.
If you use Bandage in your research you are asked to cite the publication: Wick, Schultz, Zobel and Holt from 2015, Bandage: interactive visualisation of de novo genome assemblies, in Bioinformatics at volume 31 issue 20, pages 3350 to 3352.
The software credits name the OGDF library for the graph layout algorithms, and thank two individuals, Rayan Chikhi and Elmar Pruesse, for their contributions to the code. Chikhi's name is familiar to anyone in the assembly field, since he wrote ABySS and SPAdes, which tells you that the person credited here has been in the same room as the assemblers Bandage visualises.
Contributing is handled personally. The readme says new contributors are welcome, and that if you are interested or have ideas you should contact the author, Ryan, at the email address given. There is a code_of_conduct.md at the repository root.
The licence is the GNU General Public License version 3, with the COPYING file at the root, which for a bioinformatics tool used in academic work is the conventional choice and means a derived tool has to be released under the same terms.
The honest summary of the project is this. Bandage solved a real and specific problem, it did so well enough to be published and to be forked, and the person who wrote it has said publicly that he cannot keep it moving. That makes it a tool to use with a fork in mind rather than to depend on.
Editorial conclusion
Bandage suits a bioinformatics student or researcher who needs to look at an assembly graph and understand its structure, especially when the contigs alone do not tell the story of an assembly. It does not suit anyone who needs a tool with an active upstream, because the author states in the readme that he does not have the time to give it the attention it deserves and that his C++ and Qt skills are too rusty for more than trivial changes. Before relying on it, check the BandageNG fork mentioned in the readme, and note that the newest tagged release is v0.9.0 from 2022-01-07 while the last push was on 2026-07-07.
Frequently asked questions
What does Bandage do?
It is a GUI program for interacting with the assembly graphs made by de novo assemblers such as Velvet, SPAdes and MEGAHIT. It visualises the graphs with their connections using graph layout algorithms, and the contig nodes can be labelled by ID, length or depth, moved, coloured, and have sequence extracted from the viewer.
Is Bandage still maintained?
The author states in the 2022 update that the codebase is too large and his C++ and Qt skills are too rusty for more than trivial changes, and that he does not expect much development or support, while still aiming to keep it running well on modern systems. He points to the active forks, naming BandageNG as the most active.
How do I install Bandage on Ubuntu or macOS?
Compiled 64-bit binaries for Ubuntu Linux, CentOS, macOS and Windows are in the GitHub releases section and on the project website. On macOS a downloaded binary may trigger an unidentified developer warning, which is overridden by right clicking and choosing Open, or by clearing the quarantine attribute with xattr -cr Bandage.app.
What do I need to build Bandage from source?
A compiler and the usual developer tools, including Xcode and its command line tools on macOS, the Qt SDK at version 5.15 or later, and Qt Creator, where you load the Bandage.pro file, configure the project, switch to the release configuration and build. The executable lands in a folder beginning with build-Bandage-Desktop.
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/rrwick-bandage)Was this useful?