Skip to main content

solc-select

A tool to quickly switch between Solidity compiler versions.

The tool is split into two CLI utilities:

  • solc-select: manages installing and setting different solc compiler versions
  • solc: wrapper around solc which picks the right version according to what was set via solc-select

The solc binaries are downloaded from https://binaries.soliditylang.org/ which contains official artifacts for many historial and modern solc versions for Linux and macOS.

The versioned binaries are stored in ~/.solc-select/artifacts/.

Installation

Using pip

pip3 install solc-select

Using uv (recommended for development)

uv tool install solc-select

To automatically install and use a version, run solc-select use <version> --always-install.

Running on ARM (Mac M1/M2)

solc-select provides native ARM64 support for versions 0.8.5-0.8.23, and universal binary support for 0.8.24+. For versions older than 0.8.5, Rosetta is required. See the FAQ on how to install Rosetta.

Usage

Quick Start

# Install and set a specific Solidity version
solc-select use 0.8.19 --always-install

# Check the current version
solc --version

Managing Versions

The global version of solc will automatically be set to the latest version. You can change this with the solc-select use <version> command:

$ solc --version
solc, the solidity compiler commandline interface
Version: 0.5.2+commit.1df8f40c.Linux.g++
$ solc-select use 0.4.24
Switched global version to 0.4.24
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.4.24+commit.e67f0147.Linux.g++

Use SOLC_VERSION environment variable to override the global version:

$ solc --version
solc, the solidity compiler commandline interface
Version: 0.4.24+commit.e67f0147.Linux.g++
$ SOLC_VERSION=0.5.2 solc --version
solc, the solidity compiler commandline interface
Version: 0.5.2+commit.1df8f40c.Linux.g++

By default, solc-select will halt if you try to use a version that you do not have installed already. Use the --always-install flags to bypass this.

$ solc-select use 0.8.1 --always-install
Installing '0.8.1'...
Version '0.8.1' installed.

Available Commands

# List all available versions
solc-select install

# Install a specific version
solc-select install 0.8.19

# Switch to an installed version
solc-select use 0.8.19

# List installed versions
solc-select versions

# Install and switch to a version in one command
solc-select use 0.8.19 --always-install

Getting Help

Feel free to stop by our Slack channel for help on using or extending solc-select.

FAQ

OSError: [Errno 86] Bad CPU type in executable

On newer solc-select versions, this might show as solc binaries for macOS are Intel-only. Please install Rosetta on your Mac to continue. or solc binaries previous to 0.8.5 for macOS are Intel-only. Please install Rosetta on your Mac to continue.

solc releases earlier than 0.8.5 require Rosetta to be installed. Versions 0.8.5-0.8.23 run natively on ARM64, and 0.8.24+ use universal binaries. To see whether you have Rosetta installed on your Mac, run

pgrep -q oahd && echo Rosetta is installed || echo Rosetta is NOT installed

If it is not installed, it can be installed with the command

/usr/sbin/softwareupdate --install-rosetta --agree-to-license

solc-version not changing after running solc-select use [version] or setting SOLC_VERSION

Uninstall other installations of solc on your machine. solc-select re-installs solc binaries for your operating system and acts as a wrapper for solc. With duplicate solc installations, this may result in your solc version not being up to date.

"Unsupported Platform" on Windows

You might be using an old version of solc-select or Python if you are seeing this error message. The current stable release supports Windows; try upgrading your solc-select installation with the following command.

pip install --upgrade solc-select

Known Issues

SSL: CERTIFICATE_VERIFY_FAILED on running solc-select commands [investigation ongoing]

OS X: Python distributions on OS X has no certificates and cannot validate SSL connections, a breaking change introduced in Python 3.6. See StackOverflow post for additional details.

The following commands may resolve the issue; adjust the Python version to the one installed on your system:

pip3 install certifi
/Applications/Python\ 3.8/Install\ Certificates.command

Connection refused [investigation ongoing]

Our 0.2.1 version of solc-select pulls older Linux binaries from crytic/solc which seems to have introduced unexpected behavior in certain instances. Apparently, certain ISPs such as Jio may be blocking access to certain GitHub domains. If possible, try using a different Internet provider to see if it resolves the problem.

Alternatively, try downgrading to solc-select version 0.2.0.

pip3 uninstall solc-select
pip3 install solc-select==0.2.0
solc-select install

solc-select version changes, but solc --version does not match

Users seem to be experiencing situations in which the following command is successful:

solc-select use <version>

However, when running the following command, it points to an older version of Solidity.

solc --version

solc-select is intended to work with custom binaries. This means that Solidity installed through other means (i.e: brew install solidity) will not work!.

Uninstall other versions Solidity from your computer.

License

solc-select is licensed and distributed under the AGPLv3 license. Contact us if you’re looking for an exception to the terms.

Metadata

Release files for solc-select 1.2.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 solc-select 1.2.0
File Size Uploaded Provenance Actions
solc_select-1.2.0.tar.gz 52.2 kB With provenance Details for solc_select-1.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for solc-select 1.2.0
File Interpreter ABI Platform Actions
solc_select-1.2.0-py3-none-any.whl Python 3 none any Details for solc_select-1.2.0-py3-none-any.whl

Total release size: 88.5 kB

Release files / solc_select-1.2.0.tar.gz

Download URL solc_select-1.2.0.tar.gz
Size 52.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ad0a7afcae05061ce5e7632950b1fa0193ba9eaf05e4956f86effee024c6fb07
BLAKE2b-256 checksum
How to use checksums
628951e614fdbf26f47268c18f8a3b6cf1cb67c9a8b48b7b7231c948cae97814
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Dec 4, 2025.

Transparency log

Release files / solc_select-1.2.0-py3-none-any.whl

Download URL solc_select-1.2.0-py3-none-any.whl
Size 36.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dd00cab29229570c4399058852a4052f2120d87c7e341e35f04794a13cfdd1de
BLAKE2b-256 checksum
How to use checksums
68ec0d653030e519fa308e01978698289deb3e0a08adbed5df20a8b8a4884fcf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Dec 4, 2025.

Transparency log

Security for solc-select 1.2.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 solc_select-1.2.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 Dec 4, 2025.

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