Context menus
Save image, video/audio, link, PDF page, or selected URL from any page.
NeedSaving should happen where the user already is—on the page.
ValueZero context switch to Downloads or Drive UI.

ProjectsCase StudyBrowser Extension2026
Case Study
A Manifest V3 Chrome extension that saves images, videos, and files from any website straight to Google Drive—no Downloads folder.
A Manifest V3 Chrome extension that saves web images, videos, and files straight to Google Drive—no Downloads folder round-trip.
Universal Cloud Saver is a privacy-first browser extension: right-click (or paste/drag) media from any site and upload it to Drive with a durable queue, type-based folders, and least-privilege OAuth—built entirely in the browser with no app backend.
Universal Cloud Saver removes the annoying download → open Drive → upload loop. Researchers, designers, and students right-click an image, video, PDF, or link and land the file in a organized Drive folder in one step.
There is no product backend. Auth uses chrome.identity with drive.file scope; files go browser → Google Drive. That is both a privacy story and a Chrome Web Store–friendly architecture.
Under the hood sits a Clean Architecture upload core: a StorageProvider interface with Google Drive as Phase 1, a persistent queue that survives MV3 service-worker restarts, and multi-tier fetch that works around CORS and iframe-hosted media.
The UX spans context menus, a popup dashboard (account, quick save, live queue, recent), and an options page for folders, duplicates, concurrency, compression, and theme.
Save from the web into Downloads, then manually upload to Drive—or open Drive in another tab and drag files across. Large videos and CORS-blocked media make that even slower.
Saving to cloud is a daily micro-task. If it is not one gesture—and reliable for big files—users abandon the tool. Privacy-conscious users also reject extensions that proxy files through a third-party server.
Universal Cloud Saver keeps the entire pipeline in Chrome and Google’s APIs:
Context menus for images, video/audio, links, PDF pages, and selected URLs—straight into Drive.
Paste a URL, use the clipboard, or drag-drop; watch the live queue and recent uploads.
Multipart for smaller files; resumable 8MB chunks for ≥100MB with Content-Range and retryable partial sessions.
Pause, resume, cancel, retry; offline resume on reconnect; configurable concurrency (1–5).
Root folder plus type folders (Images, Videos, PDFs, …) and optional date folders, with rename/duplicate strategies.
One-gesture save to Drive, organized without Downloads clutter, with least-privilege OAuth and an architecture ready for more clouds later.
Save image, video/audio, link, PDF page, or selected URL from any page.
NeedSaving should happen where the user already is—on the page.
ValueZero context switch to Downloads or Drive UI.
Account status, quick save, live queue, recent uploads, open Drive folder.
NeedUsers need progress visibility and a fallback when context menus are not enough.
ValueTrust that large or multiple uploads are still running.
Sign-in, root folder, organize-by-type, date folders, rename patterns, duplicates, concurrency, compression, notifications, theme.
NeedPower users want control without leaving the extension.
ValueFits research, design, and student workflows.
Multipart under 100MB; resumable chunked upload for large files.
NeedVideos and PDFs regularly exceed fragile single-shot uploads.
ValueLarge saves complete instead of failing silently.
chrome.storage.local persistence with pause/resume/cancel/retry and offline reconnect.
NeedMV3 workers can die mid-job.
ValueUploads survive restarts and flaky networks.
Rename, keep both, overwrite, or skip when a file already exists.
NeedRepeated saves of the same asset are common.
ValuePredictable Drive folders without manual cleanup.
Google sign-in with drive.file, userinfo.email, and userinfo.profile scopes.
NeedUsers should not paste tokens or trust a random backend.
ValueFamiliar Google consent with least privilege.
Files go browser → Drive; no product server stores or proxies content.
NeedPrivacy and simpler ops for a Chrome extension.
ValueStronger store review and user trust story.
StorageProvider interface + registry; Drive first, Dropbox/OneDrive flagged future.
NeedUpload/UI logic should not hard-couple to one cloud.
ValueRoom to expand without rewriting the queue.
Background fetch → content-script credentials → scripting.executeScript into owning frame (incl. iframes).
NeedMany media URLs are CORS-blocked or session-bound.
ValueMore saves succeed on real websites.
User settings and external inputs validated with schemas; typed AppError codes.
NeedCorrupt storage or bad input should fail clearly.
ValueSafer options UX and easier debugging.
Unit tests for Drive helpers; e2e against unpacked extension with SW seed hooks.
NeedExtensions regress easily across Chrome versions.
ValueConfidence before packing for the Web Store.
User finds an image or video on any site
Right-clicks → Save to Google Drive
Extension fetches the resource (with fallbacks if needed)
File is prepared, folder resolved, and queued
Upload completes; notification + recent history update
Opens the toolbar popup
Pastes a URL or drops a file / uses clipboard
Watches queue progress
Opens the Drive folder when done
Installs the extension
Opens Options → Sign in with Google
Grants drive.file consent
Sets root folder and organization preferences
Starts saving from the web
UI and queue talk to a StorageProvider interface; Google Drive is the first implementation, with room for more clouds.
Business valueProduct can expand storage targets without rewriting capture UX.
Jobs persist in chrome.storage.local; mid-upload work resets safely on worker init; alarms wake token refresh and the queue.
Business valueUploads do not silently die when Chrome suspends the service worker.
Drive resumable sessions with chunked Content-Range, 308 offset queries, and retryable PARTIAL_UPLOAD handling.
Business valueVideos and big PDFs finish instead of restarting from zero.
Three-tier fetch path reaches media that background fetch alone cannot read.
Business valueHigher success rate on modern, media-heavy sites.
drive.file limits access to files the extension creates—not the user’s entire Drive.
Business valueClearer consent UX and stronger privacy positioning.
Public key pinned in the manifest config so the OAuth item ID stays stable across rebuilds.
Business valueLocal and store builds do not break Google Cloud OAuth wiring.
| Challenge | Solution |
|---|---|
| Users wanted Drive organization without trusting a third-party upload proxy. | Browser-only architecture: chrome.identity + Drive API, no product backend. |
| MV3 service workers can sleep mid-upload and drop in-memory state. | Persistent queue, alarms, and safe re-queue of interrupted jobs on worker init. |
| Many page media URLs fail under simple extension fetch because of CORS or iframes. | Fallback chain through content script and executeScript into the owning frame. |
| Large videos need more than a single multipart POST. | Size thresholds with resumable chunked uploads and recoverable partial sessions. |
| Future multi-cloud support would be expensive if Drive were hard-coded everywhere. | Early StorageProvider abstraction and feature flags for Dropbox / OneDrive. |
Recommended capture order for the case-study gallery.
For save tools, reliability beats feature count—queue durability and fetch fallbacks matter more than another settings toggle.
MV3 forces you to design for process death: persist early, wake with alarms, and treat in-memory state as ephemeral.
A provider interface pays off even at v1 when the upload core is the product’s heart.
drive.file plus no backend is a clearer story for users and store review than broad Drive scopes with a proxy server.
| Priority | Improvement | Business value |
|---|---|---|
| High | Bulk page scan and richer drag-and-drop capture | Faster collection when a page has many assets. |
| High | Dropbox and OneDrive providers behind the same StorageProvider | Meet users on the cloud they already use. |
| Medium | AI-assisted folder suggestions and hash-based duplicate detection | Cleaner libraries without manual renaming. |
| Medium | Shared Drives / Team Drive support | Better fit for work research workflows. |
| Low | Chrome Web Store listing polish and onboarding tour | Higher install-to-first-save conversion. |
Universal Cloud Saver is a case study in Manifest V3 reliability—OAuth, resumable uploads, durable queues, and Clean Architecture without a backend. If you need similar craft on a browser product, start a conversation.
Start a conversationNotes on how the extension stays reliable without a server and how Drive stays swappable.
Every byte the user saves goes from the page context to Google Drive under their own OAuth token. That removes a privacy and cost surface that many “save to cloud” tools introduce with a proxy API.
The tradeoff is that all hard problems—CORS, queue durability, resumable sessions—must be solved inside the extension.
Source → fetch (with fallbacks) → prepare (name, optional compress, duplicates) → resolve folders → upload by size → queue orchestration → notify + recent history.
Business state lives in the service worker; UI state in Zustand; settings in sync storage; queue/auth/recent in local storage.
Queue and UI depend on StorageProvider, not Drive SDK calls. Google Drive is Phase 1; Dropbox and OneDrive are documented as future implementations behind the same registry.
Full Stack Product Engineer
Personal product / Chrome extension
2026
Solo build
Next Project