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

Universal Cloud Saver removes the download → open Drive → upload loop. Right-click an image, video, PDF, or link and land the file in an organized Drive folder in one step.
There is no product backend. Auth uses chrome.identity with drive.file scope; files go browser → Google Drive—privacy-friendly and Chrome Web Store–aligned.
The hard parts are Manifest V3 realities: a persistent upload queue that survives service-worker restarts, resumable large-file uploads, and multi-tier fetch around CORS and iframe media.
Save from the web into Downloads, then manually upload to Drive—or open Drive in another tab and drag files across.
Saving to cloud is a daily micro-task. If it is not one reliable gesture, users abandon the tool—and privacy-conscious users 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, and PDFs—straight into Drive.
Paste a URL or drag-drop; watch the live queue and recent uploads.
Multipart for smaller files; resumable chunks for large ones; pause/resume/retry across MV3 worker restarts.
chrome.identity with drive.file—no product backend, no full-Drive scope.
One-gesture save to Drive, organized without Downloads clutter, with a queue that survives Manifest V3 constraints.
Save image, video/audio, link, or PDF from any page.
NeedSaving should happen where the user already is.
ValueZero context switch to Downloads or Drive UI.
Account status, quick save, live queue, recent uploads.
NeedUsers need progress visibility and a fallback capture path.
ValueTrust that large or multiple uploads are still running.
Sign-in, folders, duplicates, concurrency, and theme.
NeedPower users want control without leaving the extension.
ValueFits research and design collection workflows.
Multipart under 100MB; resumable chunked upload for large files.
NeedVideos regularly exceed fragile single-shot uploads.
ValueLarge saves complete instead of failing silently.
chrome.storage.local persistence with pause/resume/cancel/retry.
NeedMV3 workers can die mid-job.
ValueUploads survive restarts and flaky networks.
Background fetch → content-script credentials → executeScript into owning frame.
NeedMany media URLs are CORS-blocked or session-bound.
ValueMore saves succeed on real websites.
Google sign-in with drive.file and basic userinfo scopes.
NeedUsers should not paste tokens or trust a random backend.
ValueFamiliar 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.
User finds media on any site
Right-clicks → Save to Google Drive
Extension fetches the resource (with fallbacks if needed)
File is queued and uploaded
Notification + recent history update
Installs the extension
Options → Sign in with Google
Grants drive.file consent
Sets root folder preferences
Starts saving from the web
Upload jobs live in chrome.storage.local. When the service worker restarts, interrupted work re-queues; alarms refresh tokens and wake the queue.
Business valueLarge saves finish even after Chrome suspends the background worker.
Small files use multipart; large files open a resumable session with chunked Content-Range and recoverable partial offsets.
Business valueVideos and big PDFs do not restart from zero after a blip.
Background fetch first; then credentialed content-script fetch; then executeScript into the owning frame—including iframes.
Business valueMore saves succeed on CORS-blocked and embedded media.
OAuth uses drive.file only—files this extension creates—not the user’s full Drive.
Business valueClearer consent and a stronger privacy story for store review.
| Challenge | Solution |
|---|---|
| Chrome can kill a Manifest V3 service worker mid-upload and wipe in-memory queue state. | Persist every job early, wake work with alarms, and safely re-queue interrupted uploads on worker init. |
| Many image and video URLs fail under a simple extension fetch because of CORS or iframe ownership. | A three-step fetch chain—background, content script, then scripting into the frame that owns the media. |
| Large videos break if you only POST once; a flaky connection forces a full restart. | Size thresholds with Drive resumable sessions, chunked Content-Range, and recoverable partial uploads. |
| Users wanted files in their Drive without sending bytes through a third-party upload server. | Browser-only path: chrome.identity + Drive API, with no product backend in the middle. |
Recommended capture order for the case-study gallery.
For save tools, reliability is the feature. A durable queue and fetch fallbacks beat another settings toggle.
On MV3, treat memory as temporary. Persist before Chrome sleeps the worker, then design wake-up paths on purpose.
drive.file with no backend is easier to explain to users—and to Chrome Web Store review—than broad Drive scopes behind a proxy.
| Priority | Improvement | Business value |
|---|---|---|
| High | Dropbox and OneDrive providers behind a shared StorageProvider | Meet users on the cloud they already use. |
| Medium | Bulk page scan for multi-asset collection | Faster capture when a page has many files. |
Universal Cloud Saver is a case study in Manifest V3 reliability—OAuth, resumable uploads, and a durable queue without a backend. If you need similar craft on a browser product, start a conversation.
Start a conversationFull Stack Product Engineer
Personal product / Chrome extension
2026
Solo build
Next Project
Ask about projects, skills, or how to hire.