uv

What uv is
uv is a free Python package and project manager written in Rust for macOS, Linux, and Windows. It manages project dependencies and environments, with lockfile and workspace support, and can install, list, pin, or uninstall Python versions. It can run Python scripts with dependencies and run or install command-line tools from Python packages. Its pip-compatible interface is designed to cover work handled by tools such as pip, pip-tools, pipx, poetry, pyenv, twine, and virtualenv, though commands do not exactly match those tools. The documentation describes uv as 10–100x faster than pip. It supports source distributions, wheels, requirements.txt, pylock.toml, private registry authentication, and offline installation. Its default first-index strategy limits package candidates to the first index where a package is found. Credentials are not stored in uv.lock, but uv currently keeps them in a plaintext file; native system secret storage is an experimental preview. uv is distributed through standalone installers and channels including PyPI, Homebrew, MacPorts, WinGet, Scoop, Docker, GitHub Releases, and Cargo. Platforms without a prebuilt PyPI wheel require a Rust toolchain to build from source.
Who it suits
uv suits Python developers who want one tool for project dependencies, environments, Python versions, scripts, and command-line tools. It also fits workflows that need lockfiles, workspaces, private registry authentication, or offline installation.
What it does well
- Free and available for macOS, Linux, and Windows.
- Supports lockfiles and workspaces.
- Can install and manage Python versions.
- Supports offline package installation.
- Default index strategy limits package candidates to the first matching index.
What to know first
- Credentials are currently stored in a plaintext file.
- Native system secret storage is experimental preview.
- Some platforms without a prebuilt PyPI wheel need a Rust toolchain.
Limits
The documentation lists macOS, Linux, and Windows support. On platforms without a prebuilt wheel, installing through PyPI requires a Rust toolchain to build from source.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| uv | Open-source Python package and project manager | Free |
As docs.astral.sh lists them, read 30 Sept 2026. The maker's own page has the final word.
Getting started
- Open the uv documentation website.
- Install uv using a standalone installer or a listed distribution channel such as PyPI, Homebrew, WinGet, Docker, or Cargo.
- Use uv to manage project dependencies and environments, or install and manage Python versions.
- Consult the integration guides for tools and services such as Docker, Jupyter, or GitHub Actions.
Overview
uv is a Python package and project manager from Astral, aimed at developers who want to handle dependencies, environments, Python versions, scripts, and command-line tools in one place. Its breadth and stated speed make it a strong candidate for consolidating a Python toolchain, provided its interface differences and credential-storage trade-off suit your workflow.
The documentation describes uv as 10–100x faster than pip; that is a stated comparison, not a promise for every project. Its pip-compatible interface also does not reproduce every command or behavior of the tools it can replace, so switching may involve adapting existing workflows.
Browse our Python Package Managers and Package Managers directories for more options.
Key features
Projects and dependencies
uv resolves dependencies and manages project environments, lockfiles, and workspaces. It supports source distributions, wheels, requirements.txt, and pylock.toml, as well as private registry authentication and offline installation. That combination suits Python projects that need repeatable environments or must install packages without a live connection.
Its default first-index strategy limits package candidates to the first index where a package is found, helping reduce dependency-confusion risk. Credentials are kept out of uv.lock, and uv can handle them through environment variables, URLs, netrc, or keyring. The security caveat is storage: credentials currently go in a plaintext file. Native system secret storage is only an experimental preview feature.
Python versions, scripts, and tools
uv can install, list, pin, and uninstall Python versions, and run scripts with dependencies. It can also run or install command-line tools distributed as Python packages. Developers who otherwise reach for separate utilities for these jobs may value the consolidation; those with established tool-specific workflows should account for uv’s imperfect interface compatibility.
Integrations and installation
Official guides cover Docker, Jupyter, GitHub Actions, GitLab CI/CD, Pre-commit, PyTorch, FastAPI, Bazel, and package registries. uv is written in Rust and uses rustls with aws-lc-rs for TLS, with bundled Mozilla root certificates by default. Installation options include a standalone installer, PyPI, Homebrew, MacPorts, WinGet, Scoop, Docker, GitHub Releases, and Cargo. On platforms without a prebuilt PyPI wheel, installing from source requires a Rust toolchain.
Pricing
uv is free: its open-source Python package and project manager costs nothing. There is no free trial, paid tier, or seat or usage cap stated. For individual developers and teams able to manage their own setup, there is no cheaper plan that gives up features; the trade-off is choosing uv itself rather than a paid service tier.
Platforms
uv supports Linux, macOS, and Windows, along with CPython, PyPy, Pyodide, and GraalPy. The PyPI route may require a Rust toolchain where a prebuilt wheel is unavailable, so that installation method is less convenient in such environments.
Who it's for
uv is best suited to Python developers who want a single tool for package and project management, Python-version handling, scripts, and command-line utilities. Its lockfile, workspace, private-registry, and offline-installation support also makes it relevant to projects with repeatability or network constraints. Teams that depend on exact pip or other tool behavior, or that require native secret storage rather than plaintext credentials, have reason to look elsewhere or assess the preview feature carefully.
Pros and cons
- Pros: Broad Python workflow coverage can replace several separate tools, including dependency, environment, version, and command-line utility managers.
- Pros: Lockfiles, workspaces, dependency resolution, private registry authentication, and offline installation support controlled project workflows.
- Pros: The first-index default is designed to help limit dependency-confusion risk.
- Cons: The pip-compatible interface differs in commands and behavior, which can complicate drop-in replacement.
- Cons: Credentials are currently stored in plaintext; native system secret storage remains experimental.
- Cons: Building from source through PyPI can require a Rust toolchain on systems without a prebuilt wheel.
Alternatives
For another free Python package manager, consider Yarn, an open-source package manager with no paid plans or usage limits stated. Choose it when you want that alternative rather than uv’s Python-specific project and version-management scope.
npm is a freemium option with a free plan for public package authors, including unlimited public packages, public publishing, and public registry access. It fits readers focused on public package publishing and registry use.
Gradle is a free, open-source build system; choose it when build-system functionality is the priority. Cargo is a free Rust package manager and build tool, better suited to Rust projects. Composer provides free PHP dependency management under the MIT license, making it the relevant choice for PHP.
Pixi offers free package-hosting plans with global CDN access, public packages, and channel users; consider it when those hosting provisions are the deciding factor. Nix is a free open-source package manager and an alternative for readers seeking that approach. Hex offers a free open-source option for public packages; it is a fit when public package registry features are the priority.
Verdict
Choose uv if you want broad Python package and project management in one free tool, with support for lockfiles, multiple Python implementations, scripts, and offline installation. Its main advantages are scope and the maker’s stated speed; look elsewhere if exact compatibility with existing commands or non-plaintext credential storage is essential.
Verdict
uv brings Python project and package tasks into a single tool, with support for several environments and distribution formats. Its plaintext credential storage is an important consideration, and some source builds require a Rust toolchain.
Questions
Is uv free?
Yes. The listed plan is free, and uv is described as an open-source Python package and project manager.
Which platforms does uv support?
The documentation lists macOS, Linux, and Windows, as well as CPython, PyPy, Pyodide, and GraalPy.
What tools can uv replace?
It can take on tasks handled by pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, and other tools. Its commands do not exactly match the tools it is based on.
Can uv install packages offline?
Yes. Offline installation is listed as supported.
How does uv handle credentials?
It supports credentials through environment variables, URLs, netrc, and keyring, and credentials are not stored in uv.lock. uv currently stores credentials in a plaintext file; native system secret storage is an experimental preview feature.
How can I install uv?
Options include a standalone installer, PyPI, Homebrew, MacPorts, WinGet, Scoop, Docker, GitHub Releases, and Cargo.
Facts from uv's own pages
- Consolidated tooling
- uv is designed to replace tools including pip, pip-tools, pipx, poetry, pyenv, twine, and virtualenv. · docs.astral.sh, 30 Sept 2026
- Credentials
- Credentials are not stored in uv.lock; uv supports credentials through environment variables, URLs, netrc, and keyring. · docs.astral.sh, 30 Sept 2026
- Credential storage
- uv currently stores credentials in a plaintext file; native system secret storage is available as an experimental preview feature. · docs.astral.sh, 29 Sept 2026
- Dependency confusion protection
- By default, uv's first-index strategy limits package candidates to the first index where a package is found, to help prevent dependency confusion attacks. · docs.astral.sh, 30 Sept 2026
- Dependency resolution
- Yes · docs.astral.sh, 22 Sept 2026
- Distribution
- uv can be installed with a standalone installer, PyPI, Homebrew, MacPorts, WinGet, Scoop, Docker, GitHub Releases, or Cargo. · docs.astral.sh, 29 Sept 2026
- Free plan
- Yes · docs.astral.sh, 22 Sept 2026
- Install methods
- uv offers standalone installers and is also available through PyPI, Homebrew, MacPorts, WinGet, Scoop, Docker, GitHub Releases, and Cargo. · docs.astral.sh, 30 Sept 2026
- Integrations
- The documentation lists integrations and guides for Docker, Jupyter, marimo, GitHub Actions, GitLab CI/CD, Pre-commit, PyTorch, FastAPI, and several package registries. · docs.astral.sh, 30 Sept 2026
- Intended users
- Astral says it builds high-performance developer tools for the Python ecosystem to help developers ship software faster. · astral.sh, 29 Sept 2026
- Lockfile support
- Yes · docs.astral.sh, 22 Sept 2026
- Maker
- Astral says its mission is to make the Python ecosystem more productive by building high-performance developer tools, starting with Ruff. · astral.sh, 30 Sept 2026
- Offline installation
- Yes · docs.astral.sh, 22 Sept 2026
- Package formats
- source distributions,wheels,requirements.txt,pylock.toml · docs.astral.sh, 22 Sept 2026
- Performance
- The documentation describes uv as 10–100x faster than pip. · docs.astral.sh, 29 Sept 2026
- pip compatibility
- uv provides a pip-compatible interface for common pip, pip-tools, and virtualenv commands. · docs.astral.sh, 30 Sept 2026
- Platform limits
- The documentation lists macOS, Linux, and Windows support; the PyPI installation note says platforms without a prebuilt wheel require a Rust toolchain to build from source. · docs.astral.sh, 30 Sept 2026
- Private registry auth
- Yes · docs.astral.sh, 22 Sept 2026
- Project management
- uv manages project dependencies and environments and supports lockfiles and workspaces. · docs.astral.sh, 29 Sept 2026
- Projects
- uv manages project dependencies and environments and supports lockfiles and workspaces. · docs.astral.sh, 30 Sept 2026
- Purpose
- uv is an extremely fast Python package and project manager written in Rust. · docs.astral.sh, 30 Sept 2026
- Python versions
- uv installs and manages Python versions, including switching between versions. · docs.astral.sh, 30 Sept 2026
- Scripts and tools
- uv manages dependencies for single-file scripts and runs or installs command-line tools published as Python packages. · docs.astral.sh, 30 Sept 2026
- Security
- uv uses TLS with rustls and bundled Mozilla root certificates by default to verify HTTPS connections. · docs.astral.sh, 30 Sept 2026
Where uv stands on Freedom251
- Package Managers#9 of 93
- Python Package Managers#24 of 27
