Render natively supports **Node.js** / **Bun**, **Python**, **Ruby**, **Go**, **Rust**, and **Elixir**. While [creating a service](https://dashboard.render.com/new), you link your Git provider repo, choose the runtime for your language, and specify a branch to deploy.

To run virtually _any_ language (PHP, .NET, Java/Kotlin/Scala, etc.), you can [deploy a Docker image](/content/docs/docker/index.html).

## Set your language version

By default, Render uses a recent, actively supported version of each natively supported language (listed in the table below).

**For most languages, we still recommend setting a language version for your service.** This helps you ensure consistent behavior between Render and your local environment.

See the table to learn how to set your language version:

| Language | Default Version\* | How to Set a Version |
| --- | --- | --- |
| [**Node.js**](/content/docs/node-version/index.html) | `24.21.0` | Set the `NODE_VERSION` [environment variable](/content/docs/configure-environment-variables#setting-environment-variables/index.html), or add a `.node-version` file to your project root containing only the version number:<br>```<br>21.1.0<br>```<br>For additional options, see [Setting Your Node.js Version](/content/docs/node-version/index.html). |
| [**Bun**](/content/docs/bun-version/index.html) | `1.4.2` | Set the `BUN_VERSION` [environment variable](/content/docs/configure-environment-variables#setting-environment-variables/index.html):<br>```<br>1.3.4<br>``` |
| [**Python**](/content/docs/python-version/index.html) | `3.14.3` | Set the `PYTHON_VERSION` [environment variable](/content/docs/configure-environment-variables#setting-environment-variables/index.html), or add a `.python-version` file to your project root containing only the version number:<br>```<br>3.12.11<br>```<br>For details, see [Setting Your Python Version](/content/docs/python-version/index.html).<br>You can also set versions for the following package management tools:<br>- [uv](/content/docs/uv-version/index.html)<br>- [Poetry](/content/docs/poetry-version/index.html) |
| [**Ruby**](/content/docs/ruby-version/index.html) | `3.4.4` | Set [the `ruby` directive](https://bundler.io/guides/gemfile_ruby.html) in your `Gemfile`, or add a `.ruby-version` file to your project root containing only the version number:<br>```<br>3.1.4<br>```<br>For details, see [Setting Your Ruby Version](/content/docs/ruby-version/index.html). |
| **Go** | Latest [stable](https://go.dev/dl/#stable) | Render's native Go environment automatically updates to the latest stable Go `1.x` version, usually within 24 hours of a new release. After an update, your service starts using the new version with its next deploy.<br>You can't pin to a specific Go version unless you deploy a [Docker image](/content/docs/docker/index.html). |
| [**Rust**](/content/docs/rust-toolchain/index.html) | Latest [stable](https://rust-lang.github.io/rustup/concepts/channels.html) | Set the `RUSTUP_TOOLCHAIN` [environment variable](/content/docs/configure-environment-variables#setting-environment-variables/index.html), or add a `rust-toolchain` file to your project root containing only the toolchain version:<br>```<br>beta<br>```<br>For details, see [Specifying a Rust Toolchain](/content/docs/rust-toolchain/index.html). |
| [**Elixir**](/content/docs/elixir-erlang-versions/index.html) | `1.18.4` | Set the `ELIXIR_VERSION` and/or `ERLANG_VERSION` [environment variables](/content/docs/configure-environment-variables#setting-environment-variables/index.html).<br>If you don't set `ERLANG_VERSION`, Render automatically uses an Erlang version that's compatible with your `ELIXIR_VERSION`.<br>For details, see [Setting Your Elixir and Erlang Versions](/content/docs/elixir-erlang-versions/index.html). |
| **Other languages** | N/A | To use any language besides those listed above, deploy your code as a [Docker image](/content/docs/docker/index.html). |

**\*Render updates the default version for each language over time.**

With the exception of Go and Rust, a particular service's default language version depends on when that service was first created. For details, see the version documentation for your language (linked from the table above).

### Minimum supported language versions

Render services cannot use versions of certain languages earlier than those listed below:

| Language | Minimum Supported Version |
| --- | --- |
| Python | `3.7.3` |
| Ruby | `3.1.0` |
| Elixir | `1.12.0` |
| Erlang | `24.3.4` |

**Render periodically updates the underlying version of Debian used by all native runtimes.**

The language versions above correspond to the minimum versions supported by Debian 12.x, ["bookworm"](https://www.debian.org/releases/bookworm/).

## Docker support

When you deploy a Docker image on Render, it can use virtually _any_ programming language and framework. This is true regardless of whether you:

- [Build your image on Render](/content/docs/docker#building-from-a-dockerfile/index.html), or
- [Pull a prebuilt image](/content/docs/deploying-an-image/index.html) from your container registry.

Learn more about [Docker versus native runtimes](/content/docs/docker#docker-or-native-runtime/index.html).
