Desktop app to download videos, courses, and media from 50+ platforms. YouTube, Instagram, TikTok, Bilibili (哔哩哔哩), Douyin (抖音), 小红书, 快手, 优酷, Hotmart, Udemy, Kiwify, Telegram, and 1000+ more via yt-dlp. Download torrents and send files between devices over P2P.
README
OmniGet
Download Udemy courses, YouTube, music, books, and 1,800+ sites in one app. No terminal.
OmniGet is a free, open source desktop application for Windows, macOS, and Linux. It downloads online courses (Udemy, Hotmart, Kiwify, Skool, Teachable, and more), video and audio from YouTube, TikTok, Instagram, Twitter/X, Reddit, and 1,800+ other sites, plus music and books. Everything plays inside the app. No command line, no Python, no setup, and your files stay on your computer. Released under the GPL-3.0 license.
Pick your system, download the latest release, and open it. There is no installer to click through and no admin rights are needed.
Platform
How to install
<strong>Windows</strong>
<a href="https://github.com/tonhowtf/omniget/releases/latest"><img src="https://img.shields.io/badge/Windows-Portable_EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white" height="38" /></a>
Download the .exe from Releases and double click it. It is portable, so it runs from anywhere. There is also an .msi installer, and winget install -e --id tonhowtf.OmniGet if you prefer the command line.
<strong>macOS</strong>
<a href="https://github.com/tonhowtf/omniget/releases/latest"><img src="https://img.shields.io/badge/macOS-DMG-000000?style=for-the-badge&logo=apple&logoColor=white" height="38" /></a>
Open the .dmg and drag OmniGet into your Applications folder. Read the first launch note below.
<strong>Linux</strong>
<a href="https://github.com/tonhowtf/omniget/releases/latest"><img src="https://img.shields.io/badge/Linux-deb_·_rpm_·_AppImage-FFAA33?style=for-the-badge&logo=linux&logoColor=white" height="38" /></a>
Debian and Ubuntu: download the .deb. Fedora and openSUSE: the .rpm. Everything else: the .AppImage. x86_64 and ARM64 builds are both published.
AppImage on Debian 12+ or Ubuntu 24.04+: those releases ship without FUSE 2, which AppImage needs. If ./omniget.AppImage fails with a libfuse error, run sudo apt install libfuse2, or start it with ./omniget.AppImage --appimage-extract-and-run. The .deb avoids this entirely.
⚠️ Please read this before the first launch
OmniGet is open source and is not signed with a paid certificate, so the first time you open it your system may warn you. This is expected, and the steps below clear it for good. Your files stay local either way.
macOS (this is the big one, the app will not open on the first try). macOS Gatekeeper blocks unsigned apps. After you move OmniGet to Applications, open Terminal and run these two lines:
Then open OmniGet normally. You only do this once.
Windows. SmartScreen may show a blue warning on the first run. Click More info, then Run anyway. This is standard for open source apps without a paid code signing certificate.
Portable mode, for a USB stick or a locked-down PC
Create an empty file named portable.txt (or .portable) next to the .exe and relaunch. OmniGet then keeps settings, the database, cookies, plugins, caches, and the bundled yt-dlp and FFmpeg in a data folder beside the executable. Nothing is written to AppData\Roaming or any other user folder, so the whole install travels on the stick. Without that file, OmniGet uses the standard per-user data directory.
Free and open source under GPL-3.0. Updates run quietly in the background. The bundled tools (yt-dlp and FFmpeg) install themselves, and yt-dlp is verified by SHA256 before it runs. Plugins install on first launch and update themselves too, with nothing for you to configure.
One keypress, and it is downloading
This is the part people fall in love with. Copy any link, a YouTube video, a tweet, a Discord message, a track, a magnet, then press the global hotkey Ctrl+Shift+D (Cmd+Shift+D on macOS). OmniGet reads your clipboard and downloads it in the background. You do not even open the window.
It works from anywhere on your system. Browsing, chatting, reading, it does not matter which app is in front. Copy, press, done. The file lands in your folder and the queue handles the rest. If you would rather see a preview first, just paste the link into the omnibox on the home screen, glance at the quality options, and click download.
The problem this solves
You already have yt-dlp open in a terminal. You found a course downloader script that breaks on every site update. You have a separate app for music, and none of them talk to each other. Every download becomes three tools and a copy paste.
OmniGet does all of it in one window. Paste a course link, a YouTube link, a TikTok, a magnet, a podcast, and it figures out the rest. The file lands in your folder, and it plays right there in the app.
It is the only open source app that downloads a full Udemy or Hotmart course, video and audio from 1,800+ sites, and your music library, in one place, without the command line. It earned thousands of GitHub stars in its first months because that combination did not exist anywhere else.
How OmniGet compares to yt-dlp and other downloaders
Different tools do different jobs. This is where OmniGet fits, not a scoreboard.
OmniGet vs yt-dlp
yt-dlp is the extraction engine, and OmniGet uses it. yt-dlp is a command-line tool: you install Python, you learn the flags, you write the format selector, and you get an unmatched amount of control over 1,800+ sites. It is excellent at that, and OmniGet would not exist without it.
OmniGet is the app around it. You install one file, paste a link, and see a preview with quality options. yt-dlp and FFmpeg install and update themselves, and yt-dlp is verified by SHA256 before it runs. On top of that sit a queue that retries and resumes, a download history, a course player, a reader, and a music library. If you are comfortable in a terminal and only want files, use yt-dlp directly. If you want a library you can actually watch and read, use OmniGet.
OmniGet vs single-purpose downloaders
Most downloaders do one site well. OmniGet covers courses, video, audio, images, torrents, and Telegram in one queue, and then plays the result. The trade-off is honest: a dedicated tool for one platform will sometimes support an edge case first.
OmniGet vs paid course downloaders
Paid course downloaders typically charge a subscription for something you already own access to. OmniGet is GPL-3.0, has no account, no ads, and no paid tier, and it downloads only what your own logged-in session can already reach.
What OmniGet downloads
Paste a link. OmniGet detects the site, shows a preview with quality options, and downloads. If yt-dlp supports a site, OmniGet downloads from it, which is roughly a thousand more than the table below.
Batch download a list of links from a text file, an entire subreddit, a Reddit user profile, or an X/Twitter profile, all in one go.
Download only part of a video by setting a start and end time.
Download subtitles in any language, embed them, or generate them with Whisper when none exist.
Skip sponsors with SponsorBlock, and auto embed metadata and thumbnails.
Telegram Direct Uploader & Leech Bot: Upload media directly to Telegram via User Session or Bot Token, supporting numeric Chat IDs, @usernames, custom thumbnails, custom filename & extension editing, Send As Video/Document/Audio modes, and 2GB (Free) / 4GB (Premium) auto-chunking.
Dynamic YouTube Quality Picker: View and select real available resolutions (4K 2160p, 2K 1440p, 1080p, 720p, Audio only) extracted straight from yt-dlp metadata.
Explicit Merging Phase & Smooth ETA: Know exactly when audio and video are merging ([Merger], [ffmpeg]) with live ETA estimations (ETA ~3m 20s).
Header Bandwidth Limiter: Throttle download speed on the fly directly from the Downloads header bar.
Interactive Clipboard Detection Toast: Auto-detect video URLs on clipboard with a single-click toast banner.
System Dependency Detection: Detect and use system-installed yt-dlp, FFmpeg, and PDFium binaries with source indicators (PATH, Managed, Flatpak).
Follow a channel and auto download new uploads, with a tray notification.
Download Bilibili at maximum quality, sign in once and unlock 4K, HDR, Hi-Res lossless audio and Dolby Atmos.
Downloads are reliable, not a guessing game. Speed and ETA come straight from the downloader instead of being faked from a percentage, so they stay correct even when the file size is unknown or the stream is live. A stall is shown as a stall, not a frozen "3 seconds left". The queue resumes interrupted downloads and retries with backoff.
It also plays everything inside
This is the part people do not expect. OmniGet is not just where you download. It is where you watch, read, and listen.
Open a course and actually watch it
Download the whole course (Hotmart, Udemy, Kiwify, Skool, Teachable, Kajabi, Wondrium, Thinkific) and watch it without leaving the app. Resume at the second you stopped. Take notes that jump to that moment when you click them. Read the attached PDFs side by side.
Course player, notes pinned to timestamps, attachments in the same window.
Read books, real ones
Drop a folder of PDFs and EPUBs. OmniGet pulls covers from them, fetches titles and authors, and opens each one in a built-in reader with highlights, bookmarks, a focus mode, and a paper feel theme for the eyes. CBZ comics and TXT or HTML too.
Reader with highlights, notes panel, and focus mode.
Music, the way you remember it
Point OmniGet at your music folder and it shows your tracks the way iTunes used to: albums with covers, artists with discographies, a queue that behaves.
Plays MP3, FLAC, M4A, OGG, Opus, anything you already have.
Pulls synced lyrics so they scroll along with the song.
Connects to Spotify, SoundCloud, YouTube Music, Qobuz, and Last.fm, so your playlists and likes sit next to your local files.
Equalizer with presets, dark theme variants per album cover, an activity dashboard with your top tracks, and a Discord presence that shows what you are playing.
Local library, synced lyrics, streaming sources, one player.
Settings that stay out of your way
Settings are grouped and quiet. Common choices are right there, the deep options live one tap away, and a search box finds anything across every category and highlights it for you.
Grouped sidebar, one clear list, each section opens its own page.
Output, quality, subtitles, and the rest, with a short hint under every control.
For League of Legends players, if you want it
OmniGet has a League of Legends menu built in. It ships off. Nothing connects, nothing watches, and the menu does not even appear in the sidebar until you switch it on in Settings → Advanced → League of Legends. Leave it off and OmniGet behaves exactly as it always did.
Turn it on and it reads your running League client the same way the client reads itself, with no account, no login, and no third-party build site in the loop.
Match scouting for both teams. Rank, recent form, KDA, the champions each player actually plays, and short notes it works out on its own: hot streak, one-trick, low win rate. Write your own note on a player and it comes back the next time you meet them.
Win probability that does the statistics properly. Win rates are shrunk toward the baseline by sample size, so fifty percent over a thousand games and fifty percent over ten are not treated as the same evidence, and the result always carries a range instead of a fake decimal. Matchmaking aims for even games, so the honest answer usually sits near even, and the app says so rather than pretending otherwise.
Live economy while you play. Gold, CS and level for all ten players, and the gap against the opponent in your own lane.
Goals per role you can edit. A support is not judged on CS and a jungler is not judged like a marksman.
Runes and summoner spells recommended by the game client itself, applied in one click. It only ever replaces the page OmniGet created, never yours.
Champion tiers by role with win, pick and ban rates.
Player search for any Riot ID, with rank, champion record and mastery.
Automation, all opt-in: accept matches, pick and ban from your own priority list, and grab a champion off the ARAM bench.
Everything above is off by default and every automation has its own switch.
Plugins that install themselves
OmniGet ships with its full set of plugins (courses, study, Telegram, convert, and more) and they set themselves up on first launch. They also update on their own when a new version is released, so you never chase a download. Turn any of them on or off from the sidebar, and uninstall the ones you do not want. What you remove stays removed.
Plugins and bundled tools, managed for you, shown as a clear table.
The small things that add up
Quietly there when you need them.
Subtitle Workshop that opens SRT, VTT, and ASS, with timing tools, two point sync, find and replace, a one click auto fix, AI translate and AI grammar fix, and a waveform with shot change markers.
Pomodoro focus timer that pauses your video when the session ends.
Notes app with bidirectional links, a daily journal, and a knowledge graph.
Progress dashboard with a streak counter, daily goals, and a year style heatmap.
FFmpeg converter for local files, no internet required.
Telegram chat browser that lets you save photos, videos, and files from any chat.
Browser extension (Chrome and Firefox) that hands the current page to OmniGet with one click.
Global hotkey (Ctrl+Shift+D, or Cmd+Shift+D on macOS) that downloads whatever URL is in your clipboard.
9 languages and 14 themes, including Catppuccin, Dracula, One Dark Pro, and three e-ink variants.
Frequently asked questions
Is OmniGet free?
Yes. OmniGet is free and open source under GPL-3.0, with no account, no ads, and no paid tier.
Do I need an account to use OmniGet?
No. OmniGet needs no account and no sign-up of its own. You only log in to a platform when the content itself requires it, such as a paid course you bought or a Bilibili premium stream, and that session stays on your computer.
Can OmniGet download a YouTube playlist or an entire channel?
Yes. Paste a playlist URL and OmniGet queues every video in it. You can also follow a channel, and OmniGet downloads new uploads automatically and shows a tray notification.
Does OmniGet resume an interrupted download?
Yes. The queue keeps partially downloaded files and continues from where it stopped instead of starting over, and it retries with backoff when a site rate-limits you. Closing the app or losing your connection does not throw away progress.
What file formats can OmniGet save?
Video as MP4, MKV, or WebM, and audio as MP3, M4A, Opus, FLAC, or WAV. Subtitles save as SRT, VTT, or ASS, and can be embedded into the video file. Books open as PDF, EPUB, CBZ, TXT, and HTML.
Can OmniGet download paid content I already bought?
OmniGet downloads what your own logged-in session can already open, such as a Udemy or Hotmart course you paid for. It does not bypass DRM, break paywalls, or share credentials. Content you have no access to stays inaccessible.
Do I need the terminal or Python to use OmniGet?
No. OmniGet is a normal desktop app. Download it, open it, paste a link. yt-dlp and FFmpeg are bundled and update themselves. The only time you may touch Terminal is the one time macOS first launch step above.
OmniGet will not open on macOS, what do I do?
Run the two Terminal commands in the first launch note. Gatekeeper blocks unsigned open source apps, and those lines clear the flag. You do it once.
Is OmniGet just a yt-dlp GUI?
OmniGet uses yt-dlp under the hood for the 1,800+ generic sites, with native extractors for the big platforms, plus a real interface, a queue, a library, and built-in players on top. So yes, and a lot more than a GUI.
Can OmniGet download a full Udemy or Hotmart course?
Yes. You log in once on the platform, pick the course, and OmniGet downloads every lesson and attachment, then plays them back with timestamped notes.
Which sites does OmniGet support?
Online courses, YouTube, TikTok, Instagram, Twitter/X, Reddit, Twitch, Vimeo, Bilibili, Pinterest, Bluesky, major Asian platforms, image galleries, torrents and magnets, plus around 1,800 more through yt-dlp.
Does OmniGet work on Windows, macOS, and Linux?
Yes, all three, on both x86_64 and ARM64. Windows ships as a portable .exe, an .msi installer, and a winget package. macOS ships as a .dmg for Apple Silicon and Intel. Linux ships as .deb, .rpm, and .AppImage.
Which Linux distributions are supported?
OmniGet runs on any modern desktop Linux. Debian and Ubuntu users should take the .deb, Fedora and openSUSE the .rpm, and anything else the .AppImage. On Debian 12+ and Ubuntu 24.04+ the AppImage needs sudo apt install libfuse2, because those releases dropped FUSE 2; the .deb has no such requirement.
Can OmniGet run fully portable from a USB stick?
Yes. Create an empty file named portable.txt (or .portable) next to the .exe and relaunch. OmniGet then stores settings, the database, cookies, plugins, caches, and the bundled yt-dlp/FFmpeg in a data folder beside the executable — nothing is written to AppData\Roaming or other user folders. Without that file, the app uses the standard per-user data directory.
Can OmniGet download audio only, or just a clip?
Yes. OmniGet extracts audio as MP3, M4A, Opus, FLAC, or WAV, or set a start and end time to download only the part you need.
Are my OmniGet downloads private?
Yes. Everything in OmniGet runs locally and your files never leave your computer. There is no telemetry on what you download.
Can OmniGet download Bilibili in 4K, HDR, or Hi-Res lossless?
Yes, with a Bilibili account signed in. OmniGet talks to the official Bilibili API and respects exactly what your 大会员 (premium) subscription unlocks. Without signing in, downloads still work through yt-dlp at standard quality.
Build from source
For developers. If you just want to use OmniGet, grab a release.
git clone https://github.com/tonhowtf/omniget.git
cd omniget
pnpm install
pnpm tauri dev
The repository also contains omniget-cli, a small Rust binary that makes OmniGet scriptable. It is not included in the release downloads yet — you build it from this repository:
cargo build --release -p omniget-cli
omniget info # preview title, formats and size, download nothing
omniget download -q 1080 -o ~/Videos
omniget download --audio-only --subs en,pt
omniget batch links.txt -m 3 # one URL per line, 3 at a time
omniget import-cookies cookies.txt # Netscape format
The desktop app never needs this. It exists for cron jobs, dotfiles, and scripts.
Contribute
Community. Questions, help and release chatter happen on Discord.
OmniGet is translated on Weblate. Pick a language, translate in your browser, and Weblate opens a pull request automatically.
Contributors
Thanks to all contributors who have participated in this project!
Developing plugins
OmniGet's Courses, Telegram, and Convert features are all plugins — Rust dynamic libraries built on omniget-plugin-sdk — and third-party plugins are welcome. The Plugin Development Guide covers the architecture, a quick start from the plugin template, the manifest and host API, honest notes on ABI stability, and how to get listed in the plugin registry.
Notice to platform owners
If you represent a listed platform and have concerns, email tonhowtf@gmail.com from a company address. The platform comes off the list right away.
Legal
OmniGet is meant for personal use. Respect copyright and each platform's terms of service. You are responsible for what you download.
License
GPL-3.0. The OmniGet name, logo, and Loop mascot are project trademarks not covered by the code license.