\ | / ██████╗ █████╗ ██████╗ ██████╗ ██████╗ ████████╗ ██╗ ███████╗ █████╗ ███████╗
\|/ ██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔═══██╗╚══██╔══╝ ██║ ██╔════╝██╔══██╗██╔════╝
▐█████▌ ██║ ███████║██████╔╝██████╔╝██║ ██║ ██║ ██║ █████╗ ███████║█████╗
▐███▌ ██║ ██╔══██║██╔══██╗██╔══██╗██║ ██║ ██║ ██║ ██╔══╝ ██╔══██║██╔══╝
▐█▌ ╚██████╗██║ ██║██║ ██║██║ ██║╚██████╔╝ ██║ ███████╗███████╗██║ ██║██║
▀ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚═╝
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.
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.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| carrot_leaf-0.1.0.tar.gz | 26.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| carrot_leaf-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.3 kB
Release files / carrot_leaf-0.1.0.tar.gz
| Download URL | carrot_leaf-0.1.0.tar.gz |
|---|---|
| Size | 26.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
409fb9f60d811d58d21e93fc2def9670e70665304a1deeda333df47edaa35d61
|
|
BLAKE2b-256 checksum How to use checksums |
2f8a99d9792a7db59e994ef42269d447cff1990c82deacdf933ed4c4ab303f1c
|
| 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 logRelease files / carrot_leaf-0.1.0-py3-none-any.whl
| Download URL | carrot_leaf-0.1.0-py3-none-any.whl |
|---|---|
| Size | 33.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f52b8a652613678846a4296dca151aafa0ec2f828425422e689167dcf0296f07
|
|
BLAKE2b-256 checksum How to use checksums |
07762757d09b6cea263d108c1290f82fc129b880250d32a9ff74a9f59759a606
|
| 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 logSecurity for carrot-leaf 0.1.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.
Attestation for carrot_leaf-0.1.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 logA 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.