A modern, open-source YouTube client built with React that enables Picture-in-Picture mode for any YouTube video, along with easy playlist management and video history tracking.
- 🎯 Picture-in-Picture Support: Watch YouTube videos in PiP mode while browsing other content
- 🔐 Google Account Integration: Access your YouTube playlists and watch history
- 📱 Responsive Design: Works on desktop and mobile browsers
- 🎯 Zero Ads: Clean, distraction-free video watching experience
- 📑 Playlist Management: Browse and play videos from your playlists
- 🕒 Watch History: Keep track of your viewing history
- 🔄 Watch Later: Manage your Watch Later list
- Visit YouTube Free PiP
- Sign in with your Google account
- Paste a YouTube video URL or select from your playlists
- Click the Picture-in-Picture button to watch in floating mode
- Node.js (v18 or higher)
- npm or yarn
- Google Cloud Console account
- Clone the repository:
git clone https://github.com/killerwolf/youtube-free-pip.git
cd youtube-free-pip
- Install dependencies:
npm install
- Create a
.env
file from the example:
cp .env.example .env
-
Set up Google OAuth credentials:
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the YouTube Data API v3
- Create OAuth 2.0 credentials
- Add these authorized URIs:
- JavaScript origins:
http://localhost:5173
- Redirect URIs:
http://localhost:5173/auth/callback
- JavaScript origins:
- Copy the credentials to your
.env
file:VITE_GOOGLE_CLIENT_ID
VITE_GOOGLE_CLIENT_SECRET
VITE_GOOGLE_API_KEY
-
Start the development server:
npm run dev
npm run dev
- Start development servernpm run build
- Build for productionnpm run preview
- Preview production buildnpm run lint
- Run Biome linternpm run format
- Format code with Biomenpm run check
- Run Biome checks
src/
├── components/ # React components
│ ├── auth/ # Authentication components
│ └── youtube/ # YouTube integration components
├── utils/ # Utility functions
└── App.tsx # Main application component
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name
- Make your changes
- Run the linter:
npm run lint
- Commit your changes:
git commit -m 'Add some feature'
- Push to your branch:
git push origin feature/your-feature-name
- Create a Pull Request
We use Biome for linting and formatting. Please ensure your code follows our style guide by running:
npm run format
npm run lint
- Comment your code where necessary
- Update the README if you add new features or change existing ones
- Add JSDoc comments for exported functions and components
- Built with React 18 and TypeScript
- Uses Vite for fast development and building
- Styled with Tailwind CSS
- YouTube Data API v3 integration
- Google OAuth 2.0 authentication
- Picture-in-Picture Web API
This project is open source and available under the MIT License.