A Chrome/Edge extension that automatically saves and resumes video playback positions across all websites with cross-device sync.
- Universal Tracking: Works on any website with HTML5 videos
- Cross-Device Sync: Your video progress syncs across all your devices
- Automatic Position Tracking: Saves video playback position every 5 seconds
- Smart Auto-Resume: Automatically resumes videos from where you left off
- User Controls: Toggle auto-resume on/off in settings
- Smart Platform Detection: Defers to native resume on YouTube, Netflix, etc.
- Clean UI: Minimalist interface showing your last watched video
- Domain Display: See which site each video is from
- Storage Management: Automatically manages sync storage limits
- Privacy First: All data syncs via Chrome/Edge, no external servers
Once approved, install directly from the Chrome Web Store.
- Clone or download this repository
- Open Chrome/Edge and navigate to
chrome://extensions/oredge://extensions/ - Enable Developer Mode (toggle in top-right)
- Click "Load unpacked" and select the extension directory
- The extension is now installed!
After installation, the extension is ready to use immediately with these defaults:
- Auto-resume: Enabled
- Tracking: All websites
- Watch any video on any website
- Your progress saves automatically every 5 seconds
- Leave and return - the video resumes from where you left off
- Works across devices - progress syncs via your Chrome/Edge account
Click the extension icon to see:
- The last video you watched
- Which website it's from
- Your exact progress and percentage complete
- A "Watch Now" button to jump back in
Click the gear icon to:
- Toggle auto-resume on/off
- View storage usage
- See tracking information
Manifest V3 Chrome Extension with:
- Content Script (
content.js): Monitors HTML5 video elements on all pages - Service Worker (
background.js): Manages storage cleanup and sync - Popup UI (
popup.html,popup.js): Shows last watched video and settings
Videos stored in chrome.storage.sync (syncs across devices):
{
"videoId": {
"timestamp": 145.6, // Playback position in seconds
"duration": 3600, // Total duration in seconds
"pageUrl": "https://...", // Full URL of the video page
"domain": "example.com", // Website domain
"lastWatched": 1234567890, // Unix timestamp
"title": "Video Title" // Page title
}
}- Maximum 20 videos stored
- 100KB total storage (Chrome sync limit)
- Automatic cleanup when approaching limits
The extension intelligently resumes videos:
- Waits for site to resume first (1 second)
- Skips if already at correct position
- Skips very beginning (< 10 seconds)
- Defers to native resume on major platforms (YouTube, Netflix, Hulu, Disney+)
- Can be disabled in settings
Each video is identified by a composite key:
- Page URL path
- Video element attributes (data-video-id, id)
- Hash of video source URL
- Combined and sanitized for use as storage key
loadedmetadata: Video metadata loaded, ready for resumetimeupdate: Playback position changed (throttled to 5s intervals)pause: Video paused, save immediatelyended: Video finished, remove from storagebeforeunload: Page closing, save final position
- Throttled saves: Maximum one save per 5 seconds per video
- Efficient storage: Only stores essential data
- Automatic cleanup: Prevents storage bloat
- Minimal CPU usage: Event-driven architecture
- All data stored in Chrome/Edge sync storage
- Syncs across your devices via your browser account
- No external servers or third-party services
- No analytics or tracking
- No permissions beyond video tracking
- Open source - review the code yourself
Where-Was-I/
├── manifest.json # Extension configuration (Manifest V3)
├── content.js # Video tracking and auto-resume logic
├── background.js # Service worker for storage management
├── popup.html # Extension popup UI
├── popup.js # Popup logic and display
├── icons/ # Extension icons (16, 32, 48, 128px)
└── README.md # This file
storage: Save video positions to sync storagetabs: Open video URLs from popupalarms: Schedule periodic cleanup- Host permissions:
<all_urls>(required to track videos on any site)
This extension is being prepared for Chrome Web Store approval with:
- Manifest V3 compliance
- Minimal permissions
- Clear privacy policy
- No external network requests
- User control over features
- Check that auto-resume is enabled in settings (gear icon)
- Videos must be watched for at least 10 seconds before saving
- Major platforms (YouTube, Netflix) use their own resume feature
- Ensure you're signed into Chrome/Edge on both devices
- Check that sync is enabled in browser settings
- Storage may take a few moments to sync
- Check browser console (F12) for
[Where Was I]messages - Verify the page has HTML5
<video>elements - Some sites may use custom video players
- Extension automatically manages storage limits
- Keeps only the 20 most recent videos
- Check settings to see current storage usage
- Visit any website with HTML5 videos
- Start playing a video
- Check browser console for
[Where Was I]log messages - Refresh the page and verify auto-resume works
- Click extension icon to view popup
- Check settings to toggle features
Enable debug logging:
- Open DevTools (F12)
- Look for
[Where Was I]prefixed console messages - Content script logs appear in page console
- Service worker logs in
chrome://extensions→ Details → Service worker
Contributions are welcome! To contribute:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly across multiple sites
- Submit a pull request
MIT License - Feel free to use and modify
- Universal video tracking across all websites
- Cross-device sync via Chrome/Edge
- Smart auto-resume with user toggle
- Minimalist UI showing last watched video
- Domain display and filtering
- Automatic storage management
- Manifest V3 compliant
For issues or questions:
- Check the console for error messages
- Review the troubleshooting section
- Open an issue on GitHub
Enjoy seamless video watching across the web!