WidePlayer is a browser extension that makes supported in-feed videos on X appear wider without entering fullscreen. This repository also contains the public landing site for the project.
The extension is built for people who watch video-heavy X feeds and want a larger player while keeping the feed context, scrolling behavior, and native video controls intact.
apps/
extension/ Browser extension for Chrome, Firefox, and Safari builds
web/ Next.js landing site deployed with OpenNext for Cloudflare
This is an npm workspaces monorepo. The root package is private and only coordinates workspace commands.
WidePlayer for X currently:
- widens supported in-feed videos on
x.com - moves the original player into a wider overlay instead of duplicating the video element
- preserves feed flow with a placeholder while the player is expanded
- supports automatic widening and manual per-video expand/collapse controls
- provides popup settings for auto mode and width percentage
- previews width changes live while the popup slider is dragged
- builds browser-specific outputs for Chrome, Firefox, and Safari
Current limitations:
- detection targets tweet articles with one direct video candidate
- media galleries, unusual nested layouts, and unsupported embeds may be skipped
- Safari output can be generated here, but final Safari packaging still depends on Safari Web Extension tooling on macOS
- there is no dedicated automated test suite yet
For deeper extension implementation details, see apps/extension/README.md.
- Node.js 18 or newer
- npm
Install dependencies from the repository root:
npm installRun the landing site locally:
npm run dev:webRun the Chrome-focused extension watch flow:
npm run dev:extensionBuild everything:
npm run buildBuild one workspace:
npm run build:web
npm run build:extensionType-check the extension:
npm run typecheck:extensionThe extension build generates:
apps/extension/dist/chromeapps/extension/dist/firefoxapps/extension/dist/safari
Generated output should not be edited by hand.
Package every browser target:
npm run package:release --workspace apps/extensionPackage one browser target:
npm run package:chrome --workspace apps/extension
npm run package:firefox --workspace apps/extension
npm run package:safari --workspace apps/extensionRelease ZIPs are written to apps/extension/release.
First build the extension:
npm run build:extensionChrome:
- Open
chrome://extensions. - Enable Developer mode.
- Choose Load unpacked.
- Select
apps/extension/dist/chrome.
Firefox:
- Open
about:debugging#/runtime/this-firefox. - Choose Load Temporary Add-on.
- Select
apps/extension/dist/firefox/manifest.json.
Safari:
- Build output is generated in
apps/extension/dist/safari. - Use Safari Web Extension tooling on macOS for final local installation or packaging.
The WidePlayer extension does not collect user data.
The landing site uses cookieless Umami analytics for anonymous page traffic. This is separate from the browser extension.
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.
When changing extension behavior, keep the detailed extension docs in apps/extension/README.md, apps/extension/CHANGELOG.md, and apps/extension/PRD.md aligned with the current state.
Please report security issues privately. See SECURITY.md.
WidePlayer is released under the MIT License.