☰

Booru Bulk Downloader

Adds a checkbox + download button to every thumbnail on a booru gallery. Fetches the full-resolution ORIGINAL and names the file from the post's tags. Batch select, progress, optional ZIP. Never leaves the gallery page.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

Author
AugDawg
Daily installs
2
Total installs
35
Ratings
0 0 0
Version
1.0.1
Created
2026-10-09
Updated
2026-10-09
Size
43.9 KB
License
MIT
Applies to

Adds a checkbox and a download button to every thumbnail on a booru gallery.

  • Checkbox - add the post to a batch selection. Shift-click for a range.
  • Download button - save that one image at full resolution, immediately.
  • Panel (bottom-right, draggable) - selection count, Download selected, Save as .zip, Select all, Clear, Retry failed, and the filename options.
  • Alt+D / Alt+A - download the selection / select all on the page.

Nothing requires opening the individual post page. The gallery keeps working normally: every injected control stops event propagation, so clicking it never navigates or opens the site's lightbox.

Filenames from tags

Files are named from the post's own tags, using a template you control:

`{{tags}}`__`{{id}}`      ->  1girl_solo_long_hair__1234.jpg

Tokens: {{tags}} {{id}} {{rating}} {{site}} {{user}} {{md5}} {{ext}}

Illegal filesystem characters, control characters and Windows reserved names are handled, long names are truncated on a tag boundary, and collisions inside one batch get a numeric suffix.

How the original is found

Three tiers, cheapest first, cached per post:

  1. DOM attribute - where the gallery already exposes the original (Danbooru's data-file-url). No extra request.
  2. Site JSON API - the booru's own dapi or post.json endpoint.
  3. Post page HTML - reads og:image and the tag links. Universal, needs no API key.

ZIP export

Bundles the selection into a .zip using a built-in store-only writer - no third-party library is loaded at any point. Booru files are already compressed formats, so storing costs essentially nothing.

Options

Filename template, max tags, tag separator, parallel downloads, prefer JSON API, send Referer, always use in-page blob download, and optional Gelbooru/Rule34 api_key / user_id. All persisted per browser profile.

Permissions, in plain language

  • GM_download / GM_xmlhttpRequest - to save the original files.
  • @connect * - cross-domain requests to any host. Required because every booru serves originals from a different CDN, and the userscript managers block unlisted hosts. The script only ever contacts the booru you are already on plus the CDN its files live on. There is no telemetry, analytics or phone-home.
  • GM_getValue / GM_setValue - to remember your options.

Supported sites

Danbooru (+ betabooru), Gelbooru, Safebooru, Rule34, xbooru, tbib, realbooru, e621, yande.re, konachan (+ .net). Adding another booru is one entry in the ADAPTERS array plus a @match line; sites that already expose a data-file-url-style attribute work with just the @match line.

Source is MIT licensed and completely readable - no minification, no bundling.

Known gotchas

  • Chrome blocks the second automatic download from a page until you allow Automatic downloads for that site. Allow it once per booru.
  • Gelbooru.com and rule34.xxx now require an API key for their JSON API. Paste your own api_key / user_id in the options; without them the script falls back to reading the post page, which is slower but needs no key.
  • e621's API asks for a descriptive User-Agent, which a userscript cannot set. e621 therefore uses the fast DOM tier, with the HTML tier as backup.

Report problems through the Feedback tab on this script's page.