save what you love
Find a file
KwiatekMiki 1b48a2218c
Some checks are pending
Run service tests / test service functionality (push) Waiting to run
Run service tests / test service: ${{ matrix.service }} (push) Blocked by required conditions
Run tests / check lockfile correctness (push) Waiting to run
Run tests / web sanity check (push) Waiting to run
Run tests / api sanity check (push) Waiting to run
api/setup: use pnpm instead of npm
2024-10-06 16:11:23 +02:00
.github ci: increase timeout on api sanity check 2024-09-12 08:40:40 +00:00
api api/setup: use pnpm instead of npm 2024-10-06 16:11:23 +02:00
docs docs/run-an-instance: mention unlimited api keys 2024-10-04 17:43:35 +00:00
packages repo: update dependencies 2024-10-05 22:09:00 +06:00
web web/layout: do iphone landscape optimizations only when appropriate 2024-10-06 00:20:14 +06:00
.deepsource.toml ci: update .deepsource.toml 2024-05-14 06:57:09 +00:00
.dockerignore docker: update dockerfile to use pnpm features 2024-08-03 16:48:57 +00:00
.gitignore api/security: implement api keys as method of authentication 2024-10-04 14:58:56 +00:00
CONTRIBUTING.md CONTRIBUTING: replace "message" with "title" when talking about amends 2024-07-07 17:23:42 +02:00
Dockerfile docker: update dockerfile to use pnpm features 2024-08-03 16:48:57 +00:00
LICENSE README: clarify root license 2024-09-09 16:00:23 +00:00
package.json repo: set up package.json in root 2024-08-03 09:31:59 +00:00
pnpm-lock.yaml repo: update dependencies 2024-10-05 22:09:00 +06:00
pnpm-workspace.yaml packages: add version-info package 2024-08-03 21:27:14 +06:00
README.md repo/readme: update formatting & clean up 2024-09-09 22:12:33 +06:00

cobalt is a media downloader that doesn't piss you off. it's fast, friendly, and doesn't have any bullshit that modern web is filled with: no ads, trackers, or paywalls.

paste the link, get the file, move on. it's that simple. just how it should be.

supported services

this list is not final and keeps expanding over time. if support for a service you want is missing, create an issue (or a pull request 👀).

service video + audio only audio only video metadata rich file names
bilibili
bluesky
dailymotion
instagram
facebook
loom
ok.ru
pinterest
reddit
rutube
snapchat
soundcloud
streamable
tiktok
tumblr
twitch clips
twitter/x
vimeo
vine
vk videos & clips
youtube
emoji meaning
supported
impossible/unreasonable
not supported

additional notes or features (per service)

service notes or features
instagram supports reels, photos, and videos. lets you pick what to save from multi-media posts.
facebook supports public accessible videos content only.
pinterest supports photos, gifs, videos and stories.
reddit supports gifs and videos.
snapchat supports spotlights and stories. lets you pick what to save from stories.
rutube supports yappy & private links.
soundcloud supports private links.
tiktok supports videos with or without watermark, images from slideshow without watermark, and full (original) audios.
twitter/x lets you pick what to save from multi-media posts. may not be 100% reliable due to current management.
vimeo audio downloads are only available for dash.
youtube supports videos, music, and shorts. 8K, 4K, HDR, VR, and high FPS videos. rich metadata & dubs. h264/av1/vp9 codecs.

partners

cobalt is sponsored by royalehosting.net, all main instances are currently hosted on their network :)

ethics and disclaimer

cobalt is a tool for easing content downloads from internet and takes zero liability. you are responsible for what you download, how you use and distribute that content. please be mindful when using content of others and always credit original creators. fair use and credits benefit everyone.

cobalt is NOT a piracy tool and cannot be used as such. it can only download free, publicly accessible content. such content can be easily downloaded through any browser's dev tools. pressing one button is easier, so i made a convenient, ad-less tool for such repeated actions.

cobalt license

for relevant licensing information, see the api and web READMEs. unless specified otherwise, the remainder of this repository is licensed under AGPL-3.0.

acknowledgements

ffmpeg

cobalt heavily relies on ffmpeg for converting and merging media files. it's an absolutely amazing piece of software offered for anyone for free, yet doesn't receive as much credit as it should.

you can support ffmpeg here!

ffmpeg-static

we use ffmpeg-static to get binaries for ffmpeg depending on the platform.

you can support the developer via various methods listed on their github page! (linked above)

youtube.js

cobalt relies on youtube.js for interacting with the innertube api, it wouldn't have been possible without it.

you can support the developer via various methods listed on their github page! (linked above)

many others

cobalt also depends on:

  • content-disposition-header to simplify the provision of content-disposition headers.
  • cors to manage cross-origin resource sharing within expressjs.
  • dotenv to load environment variables from the .env file.
  • esbuild to minify the frontend files.
  • express as the backbone of cobalt servers.
  • express-rate-limit to rate limit api endpoints.
  • hls-parser to parse m3u8 playlists for certain services.
  • ipaddr.js to parse ip addresses (for rate limiting).
  • nanoid to generate unique (temporary) identifiers for each requested stream.
  • node-cache to cache stream info in server ram for a limited amount of time.
  • psl as the domain name parser.
  • set-cookie-parser to parse cookies that cobalt receives from certain services.
  • undici for making http requests.
  • url-pattern to match provided links with supported patterns.

...and many other packages that these packages rely on.