Skip to main content
 ██████  █████  ██████  ██████   ██████  ████████
██▓▓▓▓▓▓██▓▓▓██ ██▓▓▓██ ██▓▓▓██ ██▓▓▓▓██  ▓▓██▓▓▓▓
██▓░░░░░███████▓██████▓▓██████▓▓██▓░░░██▓  ░██▓░░░░
██▓░    ██▓▓▓██▓██▓▓▓██░██▓▓▓██░██▓░  ██▓░  ██▓░
 ██████ ██▓░░██▓██▓░░██▓██▓░░██▓ ██████▓▓░  ██▓░
  ▓▓▓▓▓▓ ▓▓░  ▓▓░▓▓░  ▓▓░▓▓░  ▓▓░ ▓▓▓▓▓▓░░   ▓▓░
   ░░░░░░ ░░   ░░ ░░   ░░ ░░   ░░  ░░░░░░     ░░

A good-looking terminal app for downloading and converting videos from YouTube and 1,000+ other sites. Paste a link, then Download or Convert. Built on yt-dlp and Textual.

Install

macOS / Linux

curl -LsSf https://raw.githubusercontent.com/Yore-Des/carrot-leaf/main/install.sh | sh

Windows (PowerShell)

powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/Yore-Des/carrot-leaf/main/install.ps1 | iex"

The script installs uv if you don't have it, then installs Carrot Leaf with its own Python. Your system Python doesn't matter, and you don't need to install ffmpeg or anything else.

Already use uv or pipx?

uv tool install carrot-leaf
pipx install carrot-leaf      # needs Python 3.10+

Use it

carrot                 # open the app
carrot <url>           # open with a link already loaded
carrot update          # update yt-dlp
carrot --version

Paste a link anywhere in the app. The video's details and thumbnail show up, then:

Key Does
d Download: best quality, saved as MP4
c Convert: pick a video or audio format and a quality
s Settings: download folder, browser cookies
o Show the last downloaded file in Finder / Explorer
u Update yt-dlp
esc Back to the URL bar
q Quit

You can paste another link while a download is running. Jobs wait in line and run one at a time.

Formats

Video Audio
MP4, MKV, WebM, MOV, GIF MP3, M4A, Opus, FLAC, WAV, OGG
best, 2160p … 360p best, 320 / 192 / 128 kbps

Carrot Leaf only offers resolutions the video actually has. Files get the title, artist and cover art embedded where the format supports it.

Where files go

Files are saved to your Downloads folder as Title [video-id].ext. Change the folder with s. If a file with the same name exists, the new one is saved as Title [id] (2).ext.

Settings are stored in:

  • macOS: ~/Library/Application Support/carrot-leaf/config.toml
  • Linux: ~/.config/carrot-leaf/config.toml
  • Windows: %LOCALAPPDATA%\carrot-leaf\config.toml

Age-restricted and members-only videos

These need you to be signed in. When Carrot Leaf hits one, it offers to use the cookies from a browser where you're signed in (Chrome, Firefox, Safari, Edge, Brave, …). This is off until you pick a browser, and you can turn it off again in Settings. On a Mac you may see a Keychain prompt the first time.

When downloads break

Sites change often, and YouTube most of all, so yt-dlp ships fixes every few weeks. Carrot Leaf checks for a new yt-dlp when it starts and shows a notice if one is out. Press u or run carrot update.

Updates to Carrot Leaf

Carrot Leaf keeps itself up to date. While it's open it checks for a new release, and if there is one it installs it in the background when you quit, so the next launch is the new version. This works for installs made with the install script, uv tool or pipx. To turn it off, set CARROT_NO_AUTO_UPDATE=1.

ffmpeg and Deno

Converting needs ffmpeg, and YouTube needs a JavaScript runtime (Deno). If they're already installed, Carrot Leaf uses them. If not, it uses bundled copies: Deno comes with the package, and ffmpeg is downloaded once (about 70 MB) the first time it's needed.

Uninstall

uv tool uninstall carrot-leaf

Development

git clone https://github.com/Yore-Des/carrot-leaf && cd carrot-leaf
uv sync
uv run carrot
uv run pytest                       # offline tests
CARROT_LIVE=1 uv run pytest         # also run real downloads
uv run ruff check src tests && uv run ruff format src tests

Releases: bump version in pyproject.toml, then push a vX.Y.Z tag. GitHub Actions publishes to PyPI.

Please be nice

Only download videos you have the right to download, and respect each site's terms.

License

MIT

Metadata

Release files for carrot-leaf 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for carrot-leaf 0.3.0
File Size Uploaded Provenance
carrot_leaf-0.3.0.tar.gz 27.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for carrot-leaf 0.3.0
File Interpreter ABI Platform
carrot_leaf-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 63.3 kB

Release files / carrot_leaf-0.3.0.tar.gz

Download URL carrot_leaf-0.3.0.tar.gz
Size 27.9 kB
Tags Source
SHA-256 checksum
How to use checksums
db980f82ba33fbba52f770754ffac1c91f434dd0a08140ca3bc13be0d1ad4330
BLAKE2b-256 checksum
How to use checksums
3da93f93b64a2414e479c4fb4eb536608a0cb9ca405c1c2282d960f7b174d077
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / carrot_leaf-0.3.0-py3-none-any.whl

Download URL carrot_leaf-0.3.0-py3-none-any.whl
Size 35.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6a4bd32852b0f23a4c5162d3700f545d3dc70653be1edce2c9a2c9b7e89afe0b
BLAKE2b-256 checksum
How to use checksums
0dbeefc6a57f6207d1dd4151baae9a2d4d0365e9cb573ae5043b4be9a920605d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Security for carrot-leaf 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for carrot_leaf-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page