Render provides **native runtimes** for the following [programming languages](/content/docs/language-support/index.html):

- JavaScript / TypeScript (supports both Node.js and Bun)
- Python
- Ruby
- Go
- Rust
- Elixir

Each native runtime preloads your service's environment with relevant utilities for its language. This enables you to set common build and start commands for your service (e.g., `npm install` and `npm start`) without first needing to install the corresponding tools.

You set your service's runtime while [creating your service](/content/docs/your-first-deploy/index.html) and can change it later if needed.

## Changing a service's runtime

You can change an existing service's runtime in any of the following ways:

- Dashboard
- API
- Blueprint (render.yaml)

#### Changing runtimes via Dashboard

1. From your service's **Settings** page in the [Render Dashboard](https://dashboard.render.com/), scroll down to the **Build** section.

2. Under **Source**, click **Edit**.

3. Select your service's current backing Git repo or Docker image (or select a new source if you're also changing it).

4. The **Update Source** dialog now prompts you to specify a **Branch** and **Runtime**, along with build and start commands (unless you're using Docker):

5. Provide values for these fields based on your new runtime and click **Deploy**.

Render kicks off a deploy using your new runtime and configuration.

#### Changing runtimes via API

1. Send a request to the Render API's [Update service](https://api-docs.render.com/reference/update-service) endpoint. In your request, specify a new `runtime` via the `serviceDetails` parameter.

2. Follow up with a request to the [Trigger deploy](https://api-docs.render.com/reference/create-deploy) endpoint to trigger a new deploy.

#### Changing runtimes via Blueprint

If you're managing your service with Render Blueprints, update the service's [`runtime`](/content/docs/blueprint-spec#runtime/index.html) field in your `render.yaml` file, then sync your Blueprint.

## Tools and utilities

All Render native runtimes run on Debian 12.x, "bookworm", which includes a broad general-purpose build toolchain.

Additionally, all native runtimes include the tools listed below.

|     |     |
| --- | --- |
| 🟢 | Available both during builds and at runtime |
| 🟨 | Available during builds only |

- `🟢 bun`
- `🟢 curl`
- `🟢 ffmpeg`
- `🟢 g++`
- `🟢 gcc`
- `🟢 gettext`
- `🟢 ghostscript`
- `🟢 git`
- `🟢 gnupg2`
- `🟢 imagemagick`
- `🟢 jq`
- `🟢 libvips-dev`
- `🟢 libvips-tools`
- `🟢 make`
- `🟢 nano`
- `🟢 node`
- `🟢 npm`
- `🟢 pandoc`
- `🟨 pigz`
- `🟢 pnpm`
- `🟢 postgresql-client`
- `🟢 postgresql-client-12`
- `🟢 postgresql-client-13`
- `🟢 postgresql-client-14`
- `🟢 princexml`
- `🟢 python3-dev`
- `🟢 python3-pip`
- `🟢 python3-setuptools`
- `🟢 rsync`
- `🟢 sqlite3`
- `🟢 swig`
- `🟢 typescript`
- `🟢 unzip`
- `🟢 vim`
- `🟢 webpack`
- `🟢 wget`
- `🟢 yarn`
- `🟢 zip`

## Feature support

All native runtimes support the same set of platform-wide features, including:

- Automated builds and deploys
- [Infrastructure as Code](/content/docs/infrastructure-as-code/index.html) support with Blueprints
- Regular updates to native runtimes to improve functionality, security, and performance
- [Private networking](/content/docs/private-services/index.html), load balancing, and service discovery
- Optional [persistent disk storage](/content/docs/disks/index.html)
- Automatic [Brotli](https://en.wikipedia.org/wiki/Brotli) and [gzip](https://en.wikipedia.org/wiki/Gzip) compression for faster responses
- Easy HTTP [health checks](/content/docs/health-checks/index.html) and [zero-downtime deploys](/content/docs/deploys#zero-downtime-deploys/index.html)
- Automatic [pull request previews](/content/docs/service-previews/index.html)
- Native HTTP/2 support
- [DDoS protection](/content/docs/ddos-protection/index.html)
- Automatic HTTP → HTTPS redirects
