DEV Community

Cover image for I Built a Frameless YouTube Alternative That Actually Doesn't Suck ๐ŸŽฌ
Liu Purnomo
Liu Purnomo

Posted on

I Built a Frameless YouTube Alternative That Actually Doesn't Suck ๐ŸŽฌ

Tired of YouTube's cluttered interface? I created LiuTube - a clean, ad-free desktop YouTube client with downloads, history, and zero distractions.


Why I Built This (And Why You Might Want It)

Let's be real - YouTube's web interface is... a lot. Sidebars, suggested videos everywhere, ads, comments sections that somehow always turn toxic, and a million other elements you probably don't need when you just want to watch a video.

I got fed up with all the noise, so I built LiuTube - a frameless desktop YouTube client that strips away everything except what actually matters: the videos.

What Makes This Different

๐ŸŽฏ Zero Clutter, Maximum Focus

  • No ads (obviously)
  • No distracting sidebars
  • No comment chaos
  • Just you, the video, and trending content when you want it

๐Ÿ“ฑ Smart Playback System

The coolest feature? When YouTube's embedded player throws a tantrum (you know, those "Video unavailable" messages), there's a floating "Direct" button that switches to direct video streaming. Works like magic for age-restricted or region-blocked content.

๐Ÿ“ฅ Download Everything

Want to save a video? Hit download and it tries multiple methods until something works. Perfect for that coding tutorial you'll definitely watch later (we both know you won't, but at least you'll have it).

๐Ÿ“š Your History, Your Way

Everything you watch gets saved locally in localStorage - no cloud, no tracking, just a clean history you can search through. It even tracks how many times you've rewatched that same React tutorial (no judgment here).

The Technical Stuff (For Fellow Devs)

Built with Electron because desktop apps just hit different:

  • youtubei.js for YouTube API magic
  • @distube/ytdl-core for download capabilities
  • Good old HTML/CSS/JS for the frontend
  • Cross-platform builds (Windows, Mac, Linux)

The architecture is pretty straightforward:

main.js        โ†’ Electron main process
renderer.js    โ†’ Frontend logic + history management
preload.js     โ†’ Secure bridge between main/renderer
index.html     โ†’ Clean, minimal UI
Enter fullscreen mode Exit fullscreen mode

Want to Try It?

Option 1: Grab the Binary

Head to the /dist folder in the repo and download:

  • Windows: LiuTube Setup 2.0.2.exe
  • Mac: LiuTube-2.0.2.dmg
  • Linux: LiuTube-2.0.2.AppImage

Option 2: Build from Source

git clone git@github.com:liu-purnomo/liutube.git
cd liutube
npm install
npm start
Enter fullscreen mode Exit fullscreen mode

Contributing (Yes, Please!)

This started as a personal itch-scratch project, but I'd love to see where the community can take it. Some ideas I'm thinking about:

  • Playlists: Local playlist management
  • Keyboard shortcuts: More vim-like navigation
  • Themes: Light mode for the brave souls
  • Better search: More advanced filtering
  • Mini player: PiP-style floating window

Found a bug? Have a feature idea? PRs are welcome! The codebase is pretty clean and well-documented (if I do say so myself).

What's Next?

I'm actively working on this because, honestly, I use it daily. Current roadmap includes:

  • Better error handling for edge cases
  • Performance optimizations
  • More download format options
  • Maybe a mobile companion app?

GitHub: liu-purnomo/liutube

Current Version: 2.0.2


Sometimes the best solution is the simplest one. No fancy algorithms, no complex architectures - just a clean interface that does exactly what you need. Try it out and let me know what you think!

Top comments (1)

Collapse
 
dreama profile image
Dream

Thank you for shipping this! The โ€œDirectโ€ fallback for age/region-blocked videos is genius, the multi-method download retries are super practical, and the local, searchable history (no cloud!) is a real privacy win. I also appreciate the clean Electron split (main/renderer/preload) and ready-to-go cross-platform buildsโ€”makes trying and contributing painless.