Bulk download your pet's photos from Rover.com. One click, one zip file, full quality.
Install it here — just drag a button to your bookmarks bar.
Rover.com has no bulk photo download. You can only view photos one at a time in a slideshow. This bookmarklet paginates Rover's internal API, fetches every image at full quality, zips them up, and triggers a single download.
- Extracts the pet's opk (identifier) from the
/dogs/{opk}/URL path - Paginates
/api/v7/pets/{opk}/images/to collect all photo metadata - Shows a confirmation modal with photo count, date range, and filter controls
- Downloads photos in parallel (concurrency: 3 workers — balances speed vs rate-limiting)
- Strips CDN query params from image URLs to get the original full-quality file
- Builds a zip in-memory using JSZip with
STOREcompression (JPEGs are already compressed) - Triggers a browser download via Blob URL
The bookmarklet is entirely self-contained — JSZip is bundled into the minified output by esbuild. No external scripts are loaded at runtime.
- No server — everything runs in your browser tab
- No tracking — no analytics, no cookies, no external requests beyond Rover's own API and CDN
- No data leaves your browser — photos go straight from Rover's CDN into a local zip file
- Your credentials stay local — uses your existing Rover.com login session; no passwords are accessed or stored
- Open source — read every line of code in
src/rover-dumper.js
| Browser | Status |
|---|---|
| Chrome | Supported |
| Firefox | Supported |
| Edge | Supported |
| Safari | Supported (drag-to-install may vary) |
| Mobile | Not supported (bookmarklets require a desktop browser) |
npm install # Install dependencies (jszip + esbuild)
npm run setup # Enable pre-commit auto-build
npm run build # Bundle + minify -> dist/rover-dumper.min.js
npm version <major|minor|patch> # Bump version + git tag, then npm run buildA pre-commit hook in hooks/ automatically rebuilds and stages dist/ and index.html whenever src/ changes are committed. Run npm run setup after cloning to enable it.
build.sh bundles JSZip into the bookmarklet source via esbuild as a single IIFE, strips template literals and license comments for single-line output, then injects the result into index.html between marker comments. The % character is pre-encoded as %25 in the HTML href to prevent browsers from misinterpreting JS modulo expressions as URL escape sequences.