The fastest way to bulk delete your Google Photos β up to 25Γ faster than manual deletion.
Google Photos doesn't provide a "delete all" button. This tool automates the tedious process of selecting and deleting photos in batches, so you can reclaim your storage in minutes instead of hours.
- π Batch Deletion β Selects and deletes photos in large batches automatically
- βΈοΈ Pause / Resume / Stop β Full three-state control over the deletion process
- π§ͺ Dry Run Mode β Count your photos without deleting anything
- π Live Stats Dashboard β Deletion count, rate per minute, elapsed time, and ETA
- π Auto Dark / Light Mode β Adapts to your system preference
- π Resilient Selectors β Fallback selectors when Google updates their UI
- π Smart Rate Tracking β Sliding window rate calculation for accurate ETAs
- π Exponential Backoff β Intelligent retry logic for reliability
- π§© Multiple Formats β Chrome extension, userscript, bookmarklet, or console paste
Coming soon β see
docs/screenshot.png
- Install from the Chrome Web Store
- Navigate to photos.google.com
- Click the extension icon and press Start
- Download the latest
google-photos-delete-tool.zipfrom Releases - Go to
chrome://extensions/ - Enable Developer mode (top-right toggle)
- Click Load unpacked and select the extracted folder
- Navigate to photos.google.com
- Install Tampermonkey or Violentmonkey
- Download the latest
google-photos-delete.user.js - Navigate to photos.google.com β a floating panel will appear
- Download
bookmarklet.txtfrom Releases - Create a new bookmark in your browser
- Paste the content as the bookmark URL
- Navigate to photos.google.com and click the bookmark
- Navigate to photos.google.com
- Open DevTools (
F12orCtrl+Shift+J) - Copy the contents of
inject.jsand paste into the console - Control with:
__gpdt_pause(),__gpdt_resume(),__gpdt_stop()
- Go to photos.google.com
- Click the ποΈ extension icon in your toolbar
- Configure options:
- Max photos β How many photos to delete (default: 10,000)
- Dry run β Toggle to count photos without deleting
- Click βΆ Start
- Watch the live stats: deletion count, rate, elapsed time, ETA
- Use βΈ Pause, βΆ Resume, or βΉ Stop as needed
A floating panel or console output provides the same controls and stats.
| Option | Type | Default | Description |
|---|---|---|---|
maxCount |
number |
10,000 |
Maximum photos to delete per run |
dryRun |
boolean |
false |
Count photos without deleting |
timeout |
number |
600,000 |
Timeout for DOM operations (ms) |
pollDelay |
number |
300 |
Delay between DOM polls (ms) |
git clone https://github.com/shtse8/Google-Photos-Delete-Tool.git
cd Google-Photos-Delete-Tool
bun installbun run build # Build all targets
bun run typecheck # TypeScript type checking
bun run lint # ESLint
bun run test # Run tests (Vitest)
bun run test:watch # Run tests in watch mode
bun run dev # Build with watch mode
bun run zip # Create extension ZIP for upload| Target | Output | Description |
|---|---|---|
| Chrome Extension | dist/extension/ |
MV3 extension with popup, content script, background worker |
| Standalone | dist/standalone/inject.js |
Paste into DevTools console |
| Userscript | dist/userscript/*.user.js |
Tampermonkey / Violentmonkey |
| Bookmarklet | dist/bookmarklet.txt |
javascript: URL |
| Bookmarklet HTML | dist/bookmarklet.html |
Draggable install page |
src/
βββ core/ # Shared engine (framework-agnostic)
β βββ config.ts # Configuration types and defaults
β βββ delete-engine.ts # Main deletion engine with EventEmitter
β βββ deletion-log.ts # Rate tracking and ETA estimation
β βββ event-emitter.ts # Typed EventEmitter (zero deps)
β βββ selectors.ts # DOM selectors with fallbacks
β βββ utils.ts # Sleep, waitUntil, retry, formatters
β βββ index.ts # Barrel exports
βββ extension/ # Chrome extension
β βββ background.ts # Service worker (badge, icon click)
β βββ content.ts # Content script (runs DeleteEngine)
β βββ popup/ # Extension popup UI
β β βββ popup.html
β β βββ popup.css
β β βββ popup.ts
β βββ manifest.json # MV3 manifest
β βββ icons/ # Extension icons
βββ standalone/inject.ts # Console paste script
βββ userscript/ # Tampermonkey/Violentmonkey
βββ bookmarklet/ # Bookmarklet template
Is this safe to use?
Yes. The tool only automates clicks that you would normally do manually β selecting photos and clicking "Move to trash". Photos go to your Google Photos trash, where they remain for 60 days before permanent deletion. You can restore them anytime from trash.
Why do I need this?
Google Photos has no "Select All" or "Delete All" feature. To delete thousands of photos, you'd need to manually select them in batches of ~500 and delete each batch. This tool automates that process.
What happens if Google updates their UI?
The tool uses resilient selectors with fallbacks. If the primary CSS selector fails, it tries alternative selectors and logs a warning. If all selectors fail, the tool will stop gracefully with an error message.
Can I undo a deletion?
Yes! Deleted photos go to Google Photos trash and stay there for 60 days. Go to photos.google.com/trash to restore them.
How fast is it?
Typically 200β500 photos per minute, depending on your internet speed and Google's rate limiting. That's roughly 25Γ faster than manual selection and deletion.
Does it work with Google One / shared storage?
Yes. It deletes photos from whatever view you're currently on in Google Photos.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-feature) - Make your changes
- Run
bun run typecheck && bun run lint && bun run test && bun run build - Commit with conventional commits (
feat:,fix:,refactor:, etc.) - Open a Pull Request
Originally created by mrishab. Forked, modernized, and maintained by Kyle Tse.