# Supported Languages

Render natively supports *Node.js* / *Bun*, *Python*, *Ruby*, *Go*, *Rust*, and *Elixir*. While [creating a service](https://dashboard.render.com/create?type=web), just link your GitHub/GitLab/Bitbucket repo, choose the runtime for your language, and specify a branch to deploy.

Plus, you can use virtually _any_ programming language if you [deploy your code as a Docker image](#docker-support).

## Set your language version

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

*However, we still recommend setting a language version for your service.* Doing so helps you ensure consistent behavior between Render and your other environments (such as development).

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

------

###### Language

[*Node.js*](node-version)

###### Default Version*

`22.22.0`

###### How to Set a Version

Set the `NODE_VERSION` [environment variable](configure-environment-variables#setting-environment-variables), or add a `.node-version` file to your project root containing only the version number: ```
21.1.0
``` For additional options, see [Setting Your Node.js Version](node-version).

---

###### Language

[*Bun*](bun-version)

###### Default Version*

`1.3.4`

###### How to Set a Version

Set the `BUN_VERSION` [environment variable](configure-environment-variables#setting-environment-variables): ```
1.3.4
```

---

###### Language

[*Python*](python-version)

###### Default Version*

`3.14.3`

###### How to Set a Version

Set the `PYTHON_VERSION` [environment variable](configure-environment-variables#setting-environment-variables), or add a `.python-version` file to your project root containing only the version number: ```
3.12.11
``` For details, see [Setting Your Python Version](python-version). You can also set versions for the following package management tools:

- [uv](uv-version)
- [Poetry](poetry-version)

---

###### Language

[*Ruby*](ruby-version)

###### Default Version*

`3.4.4`

###### How to Set a Version

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: ```
3.1.4
``` For details, see [Setting Your Ruby Version](ruby-version).

---

###### Language

**Go**

###### Default Version*

`1.26.0`

###### How to Set a Version

Render's native Go environment _always_ uses the latest stable Go `1.x` version. You can't set a different version unless you deploy a [Docker image](#docker-support).

---

###### Language

[*Rust*](rust-toolchain)

###### Default Version*

`stable`

###### How to Set a Version

Set the `RUSTUP_TOOLCHAIN` [environment variable](configure-environment-variables#setting-environment-variables), or add a `rust-toolchain` file to your project root containing only the toolchain version: ```
beta
``` For details, see [Specifying a Rust Toolchain](rust-toolchain).

---

###### Language

[*Elixir*](elixir-erlang-versions)

###### Default Version*

`1.18.4`

###### How to Set a Version

Set the `ELIXIR_VERSION` and/or `ERLANG_VERSION` [environment variables](configure-environment-variables#setting-environment-variables). If you don't set `ERLANG_VERSION`, Render automatically uses an Erlang version that's compatible with your `ELIXIR_VERSION`. For details, see [Setting Your Elixir and Erlang Versions](elixir-erlang-versions).

---

###### Language

*Other languages*

###### Default Version*

N/A

###### How to Set a Version

To use any language besides those listed above, deploy your code as a [Docker image](docker).

------

> **\*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 services.**
>
> The language versions above correspond to the minimum supported versions for 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](docker#building-from-a-dockerfile), or
- [Pull a prebuilt image](/deploying-an-image) from your container registry.

Learn more about [Docker versus native runtimes](docker#docker-or-native-runtime).