tonhowtf / omniget
- понедельник, 14 сентября 2026 г. в 00:00:03
Download Udemy and Hotmart courses, YouTube videos, music and books — 1,800+ sites, no terminal. Free open-source desktop app for Windows, macOS and Linux, with a built-in course player, PDF/EPUB reader and music library. Powered by yt-dlp. Your files stay on your computer.
English · Português (BR) · Русский · 简体中文
Download Udemy and Hotmart courses, YouTube, Instagram, X, Pinterest, TikTok and 1,800+ other sites.
Then transcribe, convert, read and study what you saved. One free desktop app, no terminal.
Free. Open source under GPL-3.0. No account, no ads, no telemetry on what you download. Your files stay on your computer.
9,500+ GitHub stars. The most starred repository in the udemy-downloader, hotmart-downloader and course-downloader topics.
You bought a course and want it on your disk before the platform pulls it. You keep a yt-dlp cheat sheet because the flags never stick. You have one site for Instagram stories, another for X videos, a Chrome extension for Pinterest, a Python script for subtitles, and none of them remember your login.
OmniGet puts all of that behind one text box. Paste a link, see a preview with quality options, click download. The same window then plays the course, reads the PDF, transcribes the audio and backs up the Pinterest board. yt-dlp and FFmpeg install themselves and stay updated, so there is nothing to configure and no terminal to open.
| OmniGet | yt-dlp alone | Single-site web downloaders | Paid course downloaders | |
|---|---|---|---|---|
| Sites | Courses, Instagram, X, Pinterest, Bilibili, Telegram, torrents natively, plus 1,800+ through yt-dlp | 1,800+ | One | One or two platforms |
| Setup | Download one file, open it | Python, PATH, FFmpeg, flags | None | Installer, license key |
| Logged-in content | Cookies from your browser through the extension | Manual --cookies export |
Rarely | Sometimes |
| Queue | Resume, retry with backoff, rules, followed channels | One command at a time | No | Varies |
| After the download | Player, reader, flashcards, notes, 108 tools | Files | Files, often re-encoded | Files |
| Price and license | Free, GPL-3.0 | Free, Unlicense | Free with ads | Subscription |
yt-dlp is the engine OmniGet runs on, and OmniGet would not exist without it. If you live in a terminal and only want files, yt-dlp alone is the right tool.
Pick your system. Every build is published on the Releases page. Updates arrive inside the app.
| System | What to download | Other ways |
|---|---|---|
| Windows 10 / 11 | omniget_x.y.z_x64-setup.exe (installer)omniget_x.y.z_x64-portable.exe (no install, runs from anywhere)omniget_x.y.z_x64_en-US.msi (for IT deployments) |
winget install -e --id tonhowtf.OmniGet |
| macOS 10.15+ | omniget_x.y.z_aarch64.dmg for Apple Silicon (M1 and later)omniget_x.y.z_x64.dmg for Intel Macs |
brew install --cask tonhowtf/tap/omniget |
| Linux | .deb for Debian and Ubuntu (amd64 and arm64).rpm for Fedora, openSUSE and RHEL family (x86_64 and aarch64).AppImage for everything else (amd64 and aarch64) |
AppImage self-updates through the .zsync files |
OmniGet is not signed with a paid certificate, so each system shows a warning the first time. This is normal for open source desktop apps and you handle it once.
Windows. SmartScreen shows a blue box. Click More info, then Run anyway.
macOS. Gatekeeper refuses to open the app and may say it is "damaged". After you drag OmniGet into Applications, open Terminal (Spotlight, type "Terminal") and paste these two lines:
xattr -cr /Applications/omniget.app
codesign --force --deep --sign - /Applications/omniget.appThen open OmniGet from Launchpad as usual.
Linux, AppImage on Debian 12+ or Ubuntu 24.04+. Those releases ship without FUSE 2, which AppImage needs. If the file fails with a libfuse error, run sudo apt install libfuse2, or launch it with ./omniget.AppImage --appimage-extract-and-run. The .deb avoids this entirely.
Create an empty file named portable.txt (or .portable) next to the Windows .exe and relaunch. Settings, the database, cookies, plugins, caches, yt-dlp and FFmpeg all move to a data folder next to the executable. Nothing touches AppData, so the whole install fits on a USB stick.
The Downloads page shows speed, phase and ETA read straight from the downloader, so a stalled download looks stalled instead of frozen at "3 seconds left". Interrupted downloads resume where they stopped. Rate-limited sites get retried with backoff, and connections per site adapt on their own, so YouTube gets up to 16 parallel fragments while a site that answers 429 gets fewer. When a Python 3.10 or newer is present, yt-dlp runs as a zipapp on it and starts in under a second instead of unpacking the bundled binary on every launch.
Copy a link anywhere on your system and press Ctrl+Shift+D (Cmd+Shift+D on macOS). OmniGet reads the clipboard and starts the download in the background. A second hotkey, Ctrl+Shift+M, grabs audio only, so a YouTube link becomes an MP3 without opening anything. It is off until you enable it, and both shortcuts can be rebound in Settings → Downloads → Clipboard & hotkeys.
OmniGet has native extractors for the platforms people use most, and hands everything else to yt-dlp, which covers roughly 1,800 sites.
| Category | Sites and formats |
|---|---|
| Online courses | Hotmart, Udemy, Kiwify, Rocketseat and Meta-Analysis Academy through the Courses plugin. Every lesson, section selection, attachments, resume where you stopped. |
| Video and audio | YouTube (videos, playlists, channels, live from start, chapters, SponsorBlock), Instagram, TikTok, X/Twitter, Reddit, Twitch (VODs, clips, live), Vimeo, Bluesky, Threads, Pinterest, Douyin |
| Bilibili, signed in | 4K, HDR, Dolby Vision, Hi-Res lossless and Dolby Atmos according to your subscription. Danmaku comments as XML, ASS or JSON, NFO files for Kodi and Jellyfin, custom naming templates, 11 URL types including bangumi, courses, favorites, watch later and history |
| Image galleries | Whole galleries and profiles from 250+ sites through gallery-dl (DeviantArt, Pixiv, ArtStation, Flickr, Tumblr, Imgur, Kemono and more) |
| Bulk | Paste many links or load a .txt, download whole subreddits, Reddit and X profiles, Instagram and Pinterest profiles |
| Files and transfer | .torrent files and magnet links with a built-in BitTorrent client, direct HTTP files, HLS and DASH manifests, and person-to-person transfer between two OmniGet installs with a short word code |
| Telegram | Photos, videos, files and audio from any channel or group you belong to, through the Telegram plugin |
Options you set once and forget: default quality, audio-only format (MP3, M4A, Opus, FLAC or WAV), subtitle languages and format (SRT, VTT, ASS, embedded or sidecar), thumbnail and metadata embedding, filename template, organize by platform, skip existing files, split by chapters, speed limit, concurrent downloads, proxy. Rules send a given channel or host to a folder and quality of your choice without asking again. Followed channels are checked in the background and can download new uploads automatically with a tray notification.
The extension does two jobs. On sites it recognizes (YouTube, Instagram, TikTok, X, Reddit, Twitch, Pinterest, Bluesky, Telegram, Vimeo, Udemy, Hotmart, Rocketseat, Bilibili, SoundCloud) it sends the page to OmniGet with one click or with Alt+O. On any other site it watches network traffic for MP4, HLS, DASH, WebM and audio streams and lists them in its popup. In both cases it forwards your cookies and referer, which is what lets OmniGet download private content you are logged into, such as Instagram stories, a paid course, or a members-only video. Cookies are grouped by real site, so a Brazilian .com.br domain gets its own entry instead of sharing one with every other .com.br site. The popup also has a Force H.264 switch for YouTube, for computers that stutter on VP9 and AV1.
Pick the level that matches how comfortable you are.
chrome://extensions in the address bar.From now on, visit any supported page and click the icon. The page, its cookies and its title go to OmniGet and the download starts. Your cookies also show up in Settings → Cookies, where the Courses plugin and the Instagram, X and Pinterest tools reuse them.
Every release ships omniget-chrome-extension-vX.Y.Z.zip. Download it from the latest release, unzip it, then follow steps 3 to 7 above pointing Load unpacked at the unzipped folder. Use this if you keep the app on one machine and the browser on another, or if you are installing for someone else.
Firefox: Settings → Plugins → Browser extension → Update / Install next to Firefox, then open about:debugging#/runtime/this-firefox, click Load Temporary Add-on and pick manifest.json in the exported folder. Firefox drops temporary add-ons on restart, so repeat this until the extension is published on AMO. Safari is not supported yet because Safari extensions must ship through the App Store.
Manual pairing: if Pair extension times out, open the extension's options page (right-click the icon → Options), then in OmniGet reveal and copy the Pairing token and paste it into the options page. The endpoint URL is detected automatically. The app listens on 127.0.0.1 ports 47720 to 47729 and the token is generated per install, so nothing leaves your machine.
If the extension is installed but OmniGet is closed, clicks fall back to the omniget:// link scheme, which still queues the URL but cannot carry cookies. Tick "Always allow" the first time Chrome asks.
Tools is the part of OmniGet that grew beyond downloading. Each tile is one job: an isolated Rust command with JSON in and JSON out, which is also what lets AI agents drive them through the built-in MCP server. The hub has a search box that understands English and Portuguese ("legenda" finds subtitle tools) and a platform filter, and tools that only run on Windows say so on the tile and stay hidden elsewhere.
Status legend: no mark means ready, beta means it works but has not been tested against every account type, planned means the tile exists so you can see where things are going and does nothing yet.
![]() |
![]() |
![]() |
![]() |
All of these run on your own Instagram session captured by the browser extension, so stories, close friends and your own lists work. Reads are paced and write actions stop on the first sign of a rate limit.
.txt and get everything.Public data comes through the FxTwitter API without login. Anything private (bookmarks, your follows, Grok on X) uses your X session from the cookie manager.
Works without login for anything public. Cookies are only needed for secret boards and for unsaving.
.m3u8 or .mpd with Referer and cookie. FFmpeg saves an MP4..reg backup before removal. Windows. beta.env file.Every tool that talks to an AI uses the provider you set in Settings → AI: OpenAI, Anthropic, or any OpenAI-compatible local endpoint such as Ollama or LM Studio. The key is stored locally and never logged. The auto clicker, dictation and the replay buffer can each get a global shortcut of their own.
Plugins are separate Rust libraries loaded at startup. OmniGet installs its official set on first launch and updates them by itself. The Marketplace page shows what is installed, what each plugin is allowed to do (events, notifications, settings, download folders, proxy, managed tools, download queue), and lets you hide, disable or uninstall any of them.
Sign in to Hotmart, Udemy, Kiwify, Rocketseat or Meta-Analysis Academy through a browser window inside the app, with saved cookies from the extension, or with email and password where the platform allows it. OmniGet lists your purchases, opens the course outline so you can tick the sections you want (it tells you how many lectures are DRM-protected and will be skipped), and downloads every lesson and attachment with continuous lecture numbers if you want them. Hotmart uses the current OIDC login flow, so it keeps working after Hotmart's 2026 auth change, and free courses and courses delivered outside Hotmart Club are listed too. Downloaded courses appear in Study automatically.
Study turns the folder of files you downloaded into something you can actually finish.
.md or PDF. Any note can become a flashcard..apkg, .txt and CSV, filtered decks, presets, note types, tags, media, stats and a review log.Sign in with a QR code or your phone number. Browse every channel and group you belong to, filter by photo, video, document or audio, search files, and download one item or the whole chat with a progress list. Videos from channels can be imported straight into the Study library.
FFmpeg conversions with GPU acceleration where the machine has it: container, codec, resolution, bitrate and compression for video and audio, no internet required.
OmniGet ships a Discord-style chat called OmniDisc for servers you host yourself with omnidisc-server. Text channels, direct messages, friends, roles and permissions, pins, search, voice, video and screen sharing. Direct messages and the files sent in them are end-to-end encrypted with MLS, and the key for an encrypted call is derived from the same group, so the server operator cannot listen in. Voice runs in Rust rather than the web view and screen sharing uses the machine's hardware encoder. Files sent through chat are encrypted at rest and deleted from the server after thirty minutes.
It is experimental and does nothing until you turn it on in Settings → Advanced → Chat (OmniDisc) and add a server.
A League menu sits in the sidebar. It reads your running League client locally, with no account and no third-party build site, and does nothing until the client is open. If you never play, switch it off in Settings → Advanced → League of Legends and the menu disappears.
Match scouting for both teams with rank, recent form, KDA and the champions each player actually plays. Win probability that shrinks win rates toward the baseline by sample size and always shows a range. Live gold, CS and level for all ten players. Goals per role you can edit. Runes and summoner spells recommended by the client itself, applied in one click and only ever replacing the page OmniGet created. Champion tiers by role. Player search by Riot ID. Opt-in automation: accept matches, pick and ban from your priority list, grab a champion off the ARAM bench. Every automation has its own switch.
New and marked beta or experimental: a Profile tab that edits what other players see (rank shown in chat, challenge medals and title, banner and crest, chat icon, bulk friend management); a skin, chroma and ward roulette that rolls an owned skin the moment you lock in, with rerolls; a champion and lane raffle for when you want the queue to decide, plus an optional random pick in champion select; full match history and ranked stats for any player through the client's own backend gateway, with replay download; and an AI coach that reviews a game, spots trends over your last matches or answers a question about the current champ select, using your configured AI provider and OP.GG's public data.
cookies.txt, with a test button per domain.Everything runs on your computer. There is no account, no server of ours in the middle, and no telemetry about what you download. Cookies and API keys live in your local profile. The only network calls OmniGet makes on its own are to the sites you asked it to download from, to GitHub for updates and plugins, and to the AI provider you configured, when you use an AI tool.
OmniGet downloads what your own logged-in session can already open. It does not bypass DRM, break paywalls, or share credentials, and DRM-protected lectures are skipped and reported. You are responsible for respecting copyright and each platform's terms of service. The full text is in the app under About → Terms and ethics.
Is OmniGet free? Yes. GPL-3.0, no paid tier, no ads, no account.
Is OmniGet a yt-dlp GUI? Partly. yt-dlp handles the long tail of sites and OmniGet bundles it, verifies it and updates it. On top of that sit native extractors for courses, Instagram, X, Pinterest, Bilibili, Telegram and torrents, a queue with resume and retry, the Tools section, and the Study library.
Can OmniGet download a Udemy or Hotmart course I bought? Yes. Install the Courses plugin (it comes preinstalled), sign in through the app, pick the course and sections, and download. Lessons and attachments land in a folder per course and appear in Study. Kiwify, Rocketseat and Meta-Analysis Academy work the same way.
Can it download Instagram stories, close friends or highlights? Yes, using your own session captured by the browser extension. Stories are downloaded without being marked as seen.
Can it download an X video, a whole thread or all media from a profile? Yes. Public posts need no login. Bookmarks and your own follow lists need your X session.
Can it back up a Pinterest board in original quality? Yes, including videos, sections, secret boards with cookies, and incremental sync so you only fetch what is new.
Does it resume interrupted downloads? Yes. Partial files are kept and continued, and rate limits trigger retries with backoff.
Which formats can it save? Video as MP4, MKV or WebM. Audio as MP3, M4A, Opus, FLAC or WAV. Subtitles as SRT, VTT or ASS, embedded or beside the file.
Does it need Python, Node or a terminal? No. Download the app, open it, paste a link. The only terminal step is the one-time macOS Gatekeeper fix above.
macOS says the app is damaged. Run the two commands in the first launch section. It happens because the app is not notarized, and it happens once.
Can I transcribe a video to subtitles offline? Yes. Tools → Speech and subtitles → Transcribe uses whisper.cpp locally. Models download on demand.
Can I run it from a USB stick?
Yes, on Windows, with a portable.txt file next to the executable.
Which Linux package should I pick?
Debian and Ubuntu: .deb. Fedora, openSUSE, RHEL family: .rpm. Anything else: .AppImage. Both x86_64 and ARM64 are published. OmniGet is not on Flathub.
omniget-cli ships with every release for Windows, macOS (Intel and Apple Silicon) and Linux. Grab omniget-cli-<version>-<target> from the latest release.
omniget info <url> # title, formats and size, downloads nothing
omniget download <url> -q 1080 -o ~/Videos
omniget download <url> --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 formatIf you only want to use OmniGet, grab a release. To build it you need Rust (the exact toolchain is pinned in rust-toolchain.toml because the plugin ABI depends on it), Node.js 18+ and pnpm.
git clone https://github.com/tonhowtf/omniget.git
cd omniget
pnpm install
pnpm tauri devsudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev \
libayatana-appindicator3-dev librsvg2-dev patchelf libasound2-dev libpipewire-0.3-dev clang libclang-devProduction build:
pnpm tauri build --config '{"bundle":{"createUpdaterArtifacts":false}}'Releases sign their updater artifacts with a private key only the maintainer holds, so a plain pnpm tauri build stops with "A public key has been found, but no private key". The flag above turns those artifacts off for a local build and changes nothing else.
The plugins live in their own repositories: omniget-plugin-courses, omniget-plugin-telegram, omniget-plugin-convert and omniget-study-release. The registry is omniget-plugins. pnpm plugins:deploy builds the sibling plugin checkouts and copies them into your local data folder.
Stack: Tauri 2, Rust, SvelteKit with Svelte 5, SQLite, yt-dlp, FFmpeg, librqbit for torrents, whisper.cpp, aria2, gallery-dl.
Bug reports and pull requests go to Issues and Pull requests. Questions and quick help live on Discord.
Translations are managed on Weblate. Pick your language and translate in the browser. New strings appear there a few hours after they land in main.
OmniGet is built on yt-dlp, FFmpeg, gallery-dl, whisper.cpp, aria2, SponsorBlock, Return YouTube Dislike, FxTwitter, Spicetify and Tauri. Thank you to everyone who maintains them.
Loop, the creature on the home screen, is OmniGet's mascot. Fan art is welcome. The original artwork may not be used commercially or redistributed modified.