Utility for downloading fanfiction in bulk from the Archive of Our Own - nianeyna/ao3downloader
Well folks I've been sitting on this little script for ages and finally decided to just go ahead and publish it. What does it do?
you can enter any ao3 link - for example, to your bookmarks or an author's works page - and automatically download all the works and series that are linked from that page in the format of your choice. if there are multiple pages, the script will page through results for you until there are no more fics to download
you can check your fanfic-savin' folder for unfinished fics and automatically update them if there are new chapters. you can also check for new fics in series!
if you're a dinosaur who uses Pinboard, you can back up all the Pinboard bookmarks you have that link to ao3
don't worry about crashing ao3 with this! this baby takes forever to run, guaranteed. anyway ao3 won't let me download stuff too fast even if I wanted to so it's quite safe
I've been working on this for about two years and it's finally in a state where it does everything I want and isn't breaking every two seconds, so I thought it was time to share! I hope y'all get some use out of it.
note: this is a standalone desktop app that DOES NOT DO ANYTHING aside from automate clicking on buttons on the ao3 website. Everything this script does, can be done by hand using ao3's regular features. It is just a utility to facilitate personal backups for offline reading - there's no website or server, I have no access to or indeed interest in the fics other people download using this. No plagiarism is happening here, please don't come after me.
---
2024 update
This is now a fairly mature project that I've been maintaining for quite a while (3 years?? omg), so let's do an FAQ
Question 1: Wait, a python script? That's scary! I don't know anything about running python scripts!
Answer: You don't need to! When I published this program I knew that there would be people who would want to use it that did not know anything about running python scripts. To that end I have provided extremely detailed instructions (accessible at the link above), which have been fine-tuned over the last three years to make them as absolutely easy to follow as possible. Not only do you not need to know anything about python scripts to use this program, you don't even need to know anything about computers at all. Try it and see! ;)
Question 2: I already use Calibre and FanFicFare to download fanfics - isn't this the same thing?
Answer: Nope! In fact, one of the reasons I created ao3downloader is that I tried FanFicFare and found it unsuited to my needs.
- FanFicFare requires a lot of configuration to work well. I wanted something that would get out of my way and just do what I needed it to do with as little prompting as possible. ao3downloader has sensible default behavior that will do what most people want it to do without too much pre-work.
- FanFicFare doesn't handle multi-page downloads very well - you need to enter the link to each page of results individually. What if I want to download dozens, or even hundreds of pages of fanfic? (Honesly, even two pages is too tedious for me...) I want to download all of the results I'm interested in, not just one page at a time. ao3downloader can download up to five thousand pages of fanfiction in one go if you're willing to let it run for that long... and that limit is only because 5,000 is the maximum amount of pages that ao3 itself will show you in a search result.
- FanFicFare doesn't handle ao3's rate limit very well - you need to babysit it and fine-tune the amount of time it pauses between downloads. I want the downloading process to handle itself, so I can completely ignore it until it's finished. ao3downloader will automatically pause when it hits the rate limit, and automatically resume when the rate limit expires. You can also quit ao3downloader entirely, and it will do its best to resume at the same point you left off when you turn it on again.
- FanFicFare uses its own download format, which doesn't match the files I download from ao3 directly - I want them to be consistent. ao3downloader downloads fics using the native download buttons from ao3, so it's exactly the same file as if you downloaded them manually.
- FanFicFare has an option to check incomplete fics for updates, but it relies on you telling it which fics in your library are incomplete. I don't want to have to keep track of that. ao3downloader can scan your existing files for incomplete fics and identify them for you, then check ao3 for updates and only re-download the ones that have new chapters. (It can also scan for incomplete series, and do the same thing!)
Question 2a: That's all great, but I need Calibre's organizational features.
Answer: Me too! That's why I import all the fics I download using ao3downloader into my Calibre library after I'm done downloading them.
Question 2b: That's all great, but I prefer FanFicFare's download format and I don't want the native ao3 one.
Answer: ao3downloader has a special option for this which instead of downloading actual files, will simply harvest a list of links to give to FanFicFare. You won't get ao3downloader's rate limit handling or automatic update functionality, but you will get to avoid entering individual page links! If you choose, you can also include detailed fic metadata in the links download (such as title, author, summary, tags, etc) which will be saved in spreadsheet format.
Question 3: Do I need to enter my ao3 login information? What happens when I enter my login information into this program?
Answer: You only need to enter your login information if you want to use ao3downloader to download archive-locked fics, or to download a page that is only accessible when you are logged in (such as your history or subscriptions). Hopefully the reason behind this requirement is obvious. If you don't need those things, you can simply skip the login prompt and the program will work fine! That said, if you do log in, here's what will happen. 1) ao3downloader will save your login information to a file so you don't have to enter it every time. (If you don't want your login information to be saved, you can turn this behavior off using the included .ini file - just open up the file named settings.ini and read the instructions inside to configure it.) 2) then, ao3downloader will use your login information to log itself in to ao3... aaaand that's it. It's not stored or sent anywhere other than your own computer and archiveofourown.org. In fact, there is absolutely no tracking or spyware in ao3downloader of any kind - I don't even know how many people have downloaded it, let alone what you type into it. And that's the way I like it!
Question 4: I thought of a feature that doesn't exist yet that would be really cool! Can you add it?
Answer: Very possibly! Feel free to contact me via one of the options listed in the readme (that's the page linked above) if you have a feature request.
Question 5: Do I have to pay you?
Answer: Never.
Question 6: But I really want to pay you... do you have a ko-fi?
Answer: Yes. It's on the github page in the sidebar.
Question 7: Does it work on mobile?
Answer: No. :( but watch this space... there may be certain things on the horizon. we'll see!
yeah yeah rainbow capitalism is bad and whatever but like. when I was a child, being pro gay was not the popular or lucrative choice. I'm happy that times have changed.
I miss rainbow capitalism. I do. I miss when it felt like public opinion was still pro gay. I understand it was always an empty gesture, but it mattered in a sense of knowing how socially acceptable being queer is. If that makes sense.
In 2026, the chicest thing a gay actor can do is never explicitly come out as gay but also make it abundantly clear that he is. Coming out is too modern. Staying closeted is too old fashioned. But this method merges contemporary freedom with Old Hollywood glamour and allure, and it weeds out the dumbest people who truly don’t get it. I call it the Pascal Method.
You clearly don't go here or to queer history and signaling, or both, enough to have this conversation and I'm not going to explain it to you. You could have asked questions, you could have done even a modicum of research. You didn't and you made yourself look ignorant. Goodbye.
#I'm fucking crying#this is an instant classic#this is the next meme#i can't believe I'm here to see a baby copypasta nary two hours old#I can't#lol#i laughed way too hard#iconic
trees are very 🥺 because sometimes i’ll stand under the shade of a tree and look up at it and it’ll sway its branches about in the wind and i’m like oh my God i’m alive and YOU’RE alive. we are alive together and made up of the same starry stuff and standing right next to each other in this moment on this earth. do u feel it when i reach out and press my hand to your trunk? can you hear me? i think you’re so neat. and then the sunlight filters through its leaves just so and that lovely green color leaves me dazzled. it’s just very nice to be an alive thing next to a different sort of alive thing
To be clear. Shane's whole thing about Ilya being a Sex God is because of the limerence. Ilya is nineteen and he can get a rhythm going and that's about it. He was throwing shit at the wall when he hit that 'Get on your knees' in Nashville but only he knows that because Shane's brain turned OFF. Ilya said "Let's do a little experiment here" and the results were "Oh my god oh my god oh my god." Shane came hands free because he was that obsessed with the idea of Ilya Rozanov being inside him. Ilya said "Do you like that do you like that" because he's nineteen and he needs the validation and Shane was like "YES YES YES I LIKE IT OH MY GOD YOU'RE SO DEEP YOU'RE SO GOOD" and objectively. It was okay. Ilya fully did not know where to put his hands a couple of times. He forgot about Shane's dick. Luckily, Shane is God's special angel who can come from the idea of Ilya's cockhead being in proximity to his prostate a few times. Mind over matter, says Shane Hollander's dick. And then Ilya said "Oh God Hollander" because it was also, objectively, one of the hottest things that had ever happened to HIM, Ilya Rozanov. Shane sits on that step afterwards plotting about how he's gonna get this over and over and over again for the rest of his life and he has no idea that there are women in Boston who have Ilya listed in their contacts as "Hockey Guy 6/10". Shane Hollander cannot fathom a world in which Ilya Rozanov doesn't lay the maddest pipe this side of Lake Michigan. "Ilya Rozanov is a some kind of nineteen year old sex God" No Shane honey he was just designed in a lab to score goals and make you cum and he's done scoring goals for the night.
really love keeping up with my mutuals through their little tags and vent posts. getting updates on how they’re doing is something like: glad to know your job at the library is going well. i’m sorry you haven’t gotten that raise. glad your finals went well. i’m sorry your teacher is so unhelpful. glad your tv show got renewed. i’m sorry they killed your favorite character. glad that you scored tickets to see your favorite artist. i’m sorry they aren’t touring near you at all. glad your cat is doing well. i’m sorry your mom is sick again. glad you’re feeling better now that it’s your favorite season. i’m sorry your meds aren’t working. glad you’re married now. i’m sorry you have to step back for your mental health. glad you’re still here. i’m sorry life is so hard. glad you’re alive, i hope things get easier for you soon
"Heated Rivalry” season 1 is officially being released on physical formats! (DVD, Blu-ray, and 4k Blu-ray)
The 4k Blu-ray collectors edition will feature an exclusive, yet to be revealed cover art, with a runtime of 5 hours. All 3 editions are reportedly releasing April 30th 2027.