FrameWatch is an open-source browser extension that shows a minimal in-page HUD with real-time video playback quality metrics.
Built with WXT, React, TypeScript, and Tailwind CSS.
FrameWatch overlays a compact HUD on top of HTML5 video players to help you inspect playback quality while watching.
- Robust active video detection for dynamic pages and SPA navigation.
- Universal HTML5 metrics collection.
- Throughput estimation from observed media network resources.
- Adapter architecture with site-specific behavior and automatic fallback.
- Shadow DOM HUD for strong CSS isolation.
- Popup and options pages with persisted settings.
- EN and FR localization.
- YouTube (adapter + generic fallback)
- Twitch (adapter + generic fallback)
- Generic HTML5 video sites
- Decoded resolution (
videoWidth x videoHeight) - Estimated FPS
- Dropped frames and total frames (when available)
- Buffer ahead (seconds)
- Playback rate
- Ready state and network state (optional)
- Observed bitrate estimate (Mbps), shows
N/Awhen unavailable
- Standard fullscreen is supported via
fullscreenchangehandling. - The HUD is re-parented to the fullscreen element when needed.
- Pseudo fullscreen containers on YouTube and Twitch are handled when detectable.
Requirements:
- Node.js 18+
- pnpm
pnpm install
pnpm devpnpm build
pnpm build:firefox- Run
pnpm build. - Open
chrome://extensions. - Enable Developer mode.
- Click Load unpacked.
- Select:
.output/chrome-mv3
- Default language: English
- Additional language: French (
README.fr.mdfor docs) - Extension locales are in
public/_locales/en/messages.jsonandpublic/_locales/fr/messages.json.
Add real screenshots in docs/screenshots/ (or another docs folder), then reference them here.
Example:
- Improve Twitch adapter precision when player APIs are exposed.
- Add better handling for iframe-heavy pages.
- Prepare cross-browser packaging workflow for Firefox and Safari.
- Add lightweight automated QA checks.
Contributions are welcome.
- Fork the repository.
- Create a feature branch.
- Run
pnpm compileandpnpm buildbefore opening a PR. - Open a pull request with a clear scope and test notes.
FrameWatch is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
You are free to use, modify, and redistribute this software under the terms of the AGPL-3.0 license.
If you distribute modified versions or use this software as part of a network-accessible service, you must also make the corresponding source code available under the same license.
See the LICENSE file for full details.