Open-source project
Otiel/BandcampDownloader avatar
Otiel/BandcampDownloader

Bandcamp Downloader: saving the streams Bandcamp already serves

A Windows app used to download albums from Bandcamp.

1,241 stars84 forksC#NOASSERTION

At a glance

What is it?
BandcampDownloader is a Windows WPF application that saves the 128 kbps MP3 files a Bandcamp page already streams, tags them with ID3 metadata, grabs cover art, and writes a playlist file. The README is explicit that it offers only what is freely available on Bandcamp, and it includes Bandcamp's own published answer to the question of whether this counts as theft.
Who is it for?
Adopt BandcampDownloader if you want the free Bandcamp streams as files you can play in another player, and you accept the 128 kbps quality and the terms Bandcamp sets for its own streams. Do not adopt it expecting the lossless files sold as albums, because it retrieves what the page streams and nothing else.
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 4 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 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What it actually retrieves

BandcampDownloader is a Windows application that helps downloading albums from bandcamp.com by retrieving the 128 kbps MP3 files streamed on the website. The stated aim is to ease the life of those who prefer to listen to music on their favorite player rather than on their web browser, and the important qualifier is that it offers only what is already freely available on Bandcamp.

That qualifier is the whole scope of the project. There is no ripping of protected files, no account handling, no access to anything gated. The source is the same stream the page plays, at the same bitrate, which is why the result is what it is.

The supported URL shapes are the three you would expect. Album pages at https://[artist].bandcamp.com/album/[album], track pages at https://[artist].bandcamp.com/track/[track], and artist pages at https://[artist].bandcamp.com, which is the one that walks the whole catalogue rather than a single release.

The application is written in C# as a WPF desktop application, so it is Windows only, and the repository is a .NET project with a dotnet.yml workflow. The licence is MIT per the README, though the repository metadata reports a custom licence that GitHub cannot classify, so the LICENSE file is the text to read. The last push to the repository was on 2026-10-15, and the recent releases are v1.5.2 from 2025-12-01, v1.5.1 from 2025-11-30, and v1.5.0 from 2025-11-30.

Tagging, cover art, and playlists

The feature list is short, and each item is about turning a raw stream into something a music library will accept.

The application can add ID3 tags to tracks, and the list of fields is specific: Album, Artist, Album Artist, Title, Track number, Year, and Lyrics if available. Album Artist being separate from Artist is the detail that matters, because it is the field that lets a compilation group correctly, and getting it wrong is the classic complaint about tagged libraries.

Cover art is downloaded to the tags and also placed in the folder, so the artwork is available both to a player reading the tags and to something browsing the directory. And it can create a playlist file, with the supported formats listed as m3u, pls, wpl, and zpl, which covers the four playlist formats that players on Windows actually look for.

Personalisation is through settings, and the README shows a separate screenshot for the settings page alongside the main one, which is the usual sign of an application with a fair number of options rather than a fixed behaviour.

The repository layout is small and conventional for a .NET desktop project, with src/ holding the code, tools/ holding helper scripts, docs/ holding the images and the translation guide, and the CHANGELOG.md that the release notes section points to.

The piracy section, and Bandcamp's own answer

The most unusual thing in the README is a section titled Piracy, and it is unusual because it is candid rather than evasive.

It opens with you'll do what you want to do with this app, but remember to buy albums from your favorite artists if you want to support them. And then it quotes Bandcamp directly, from the Bandcamp help centre article about people stealing music by extracting the underlying MP3-128 from the stream.

The quoted answer is worth reading in full because it explains the design constraint the whole project is built around. The artist describes someone showing them an easy way to steal the music using RealPlayer, or RipTheWeb, or by going into Temporary Internet Files and renaming. Then comes the punchline: nothing. Since streams on Bandcamp are full-length, it is true that someone could use one of the above methods to access the underlying MP3-128. And sure, we could throw some technical hurdles in their way, but if they hit one of those hurdles, it is not like they would slap their forehead and open their wallet. Instead, they would just move on to some other site where those restrictions are not in place, and you would have squandered the chance to make your own site the premier destination for those seemingly cheap but enthusiastic and potentially later money-spending fans.

That is a deliberate business decision by the platform, not an oversight. The consequence for a tool like this one is precise: because the streams are full length and the platform chooses not to add hurdles, there is a stable, documented way to retrieve the same file the player is already playing, and that file is 128 kbps. The application is a convenience wrapper around a capability Bandcamp has decided to leave open.

The ethical question is therefore not the extraction, it is the use. The project's own answer is to buy the albums.

Translation, and the difference from a command line tool

The project is localised through Weblate, and the contributing section asks for help translating the application by going to the Weblate project, with the documentation in docs/help-translate.md for more information. There is a translation status badge in the README header.

That detail is worth noticing for a small utility. The audience for a Bandcamp downloader includes people whose first language is not English, and the localisation effort is a sign the project has users beyond the original author's circle.

The comparison with a command line tool is instructive, and the difference is not really about capability. A command line downloader and this application retrieve the same file from the same page, and the resulting MP3 with the same tags is the same either way. What the WPF application adds is the part that a script cannot do well: choosing the album in a browsable interface, watching the progress, and setting preferences once rather than passing arguments.

The cost of the GUI approach is the platform. WPF is Windows only, and there is no cross platform build in this repository, so a Linux or macOS user is out of luck with this tool. That is a real limitation for a project whose subject matter, music bought from independent artists, attracts a large international audience, and it is the clearest structural reason why a command line equivalent tends to exist alongside a desktop one.

The stack also shows what a WPF application of this kind tends to involve. The icons are credited to Yusuke Kamiyamane under a Creative Commons Attribution 3.0 Licence, and the list of open source libraries used is published as a dependency graph on the repository, which is the modern way to show what a .NET project pulls in.

Editorial conclusion

Adopt BandcampDownloader if you want the free Bandcamp streams as files you can play in another player, and you accept the 128 kbps quality and the terms Bandcamp sets for its own streams. Do not adopt it expecting the lossless files sold as albums, because it retrieves what the page streams and nothing else. Verify first that the artist permits downloading, since the README is clear that the responsibility for that sits with the user.

Frequently asked questions

What does BandcampDownloader download?

The 128 kbps MP3 files that are streamed on the Bandcamp website. It retrieves what is already freely available on Bandcamp, from album pages, track pages, and artist pages, so the result is the stream quality rather than a lossless file.

Which platforms does BandcampDownloader run on?

Windows only. It is a C# WPF desktop application, and the repository carries a dotnet.yml workflow for the .NET build. There is no cross platform build in this repository.

What metadata does BandcampDownloader write?

ID3 tags for Album, Artist, Album Artist, Title, Track number, Year, and Lyrics where available. It also downloads cover art into the tags and into the folder, and can create playlist files in m3u, pls, wpl, and zpl formats.

How does the project answer the question of whether downloading is piracy?

The README has a Piracy section that says to buy albums from your favorite artists to support them, and it quotes Bandcamp's own help centre answer, which explains that since streams on Bandcamp are full-length, someone could access the underlying MP3-128, and that the platform chooses not to add technical hurdles because users would simply move to another site.

How can I help translate BandcampDownloader?

Translation runs through the Weblate project linked from the README, and there is a translation status badge in the header. The repository includes docs/help-translate.md with more information for contributors.

Official sources

  1. Issues
  2. Otiel/BandcampDownloader on GitHub
  3. README
  4. Releases
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/otiel-bandcampdownloader.svg)](https://hysenlabs.com/projects/otiel-bandcampdownloader)

Was this useful?