Search overlay panel for performing site-wide searches

Salesforce (Heroku) Recognized as a Leader. Learn More!

Language Support

Learn which programming languages Heroku supports, and how you can enable hundreds more.

Get Started Now

Heroku is for languages

We built Heroku, our fully managed container-based cloud platform, to make it easy for you to run apps written in a variety of programming languages, including first-class support for .NET, Python, Java, PHP, Node.js, Ruby, Go, Scala, and Clojure. Languages are at the heart of what we do — because the languages we support are at the heart of your applications.

Heroku is for choice

Heroku is polyglot—we embrace all languages. Whether you’re part of a team or company built around a single language, a large enterprise using several languages across the board, or a startup building a complex microservice architecture utilizing multiple languages, your apps will be at home here.

Languages with first-class support

The following programming languages receive first-class support on Heroku. This means our dedicated language specialists constantly work at ensuring that the latest language versions, language frameworks and other language features are maintained, patched and fully supported on Heroku.

Python

Python

Whether you’re building with frameworks like Django or FastAPI, or crunching data with NumPy, Heroku stays out of the way. Easily deploy anything from bespoke microservices to complex, database-backed web apps.

.NET

.NET

Build and deploy applications in C#, F#, and Visual Basic, using frameworks like ASP.NET Core and Blazor, all with the simplicity and flexibility of the Heroku platform.
Java

Java

Build microservices with Groovy and Ratpack, web apps with minimal fuss using Spark, and high performance web apps with Spring Boot/Spring Cloud, using a range of JDKs.

Node.js

Node.js

Build front end apps, back end apps, or a combination of both with common Node.js frameworks and libraries like Express, Fastify, React, Ember.js, Vue and more.

Go

Go

Whether you prefer Go’s stdlib, or frameworks like Negroni and Gin, Heroku gets out of the way, letting you build and deploy network services, microservices and high-traffic API endpoints, easily, and scalably.

PHP

PHP

Push your code, and let Heroku handle the details – with automatic installation of the PHP version and extensions that your app needs, support for your favorite frameworks, web servers that “just work”, and trivial scalability.

Ruby

Ruby

Whether you prefer frameworks like Sinatra or Rails, or getting your hands dirty with Unicorn or WebSocket, or using the MRI or JRuby, Heroku’s rock-solid Ruby support delivers.

Scala

Scala

Take your Scala solutions, whether microservices built with Finagle, or full-stack solutions built with Play, and combine them deploy it to the cloud, adding to them any of our integrated add-on services such as Treasure Data, Neo4j or Cassandra.

Clojure

Clojure

Build and deploy Leiningen-based applications with ease, whether they’re micro-services built on libraries like Ring and Compojure, more complete solutions based on Luminus and Pedestal, or front-end apps using ClojureScript and Om.

Supporting other languages via Buildpacks

Support for a language is enabled via Buildpacks, scripted build processes that let Heroku’s polyglot systems handle any language for which a Buildpack exists. You can use any Buildpack contributed by our community, or roll your own.

Buildpacks

Part of the Elements Marketplace, buildpacks developed by the Heroku community let you extend the polyglot Heroku platform in any number of directions. Choose from over 1200 custom-built buildpacks.

Extensibility

If you can’t find what you’re looking for, or you need to customize an existing buildpack, use Heroku’s open Buildpack API to support the language of your choice, in your way.

Heroku Language Support FAQ

Heroku provides official, first-class support for a wide range of modern programming languages. The officially supported languages are:

Official support means that the buildpacks and runtimes for these languages are actively built and maintained by Heroku’s engineering teams. This ensures optimal performance, security, and a seamless deployment experience on the platform.

Yes, absolutely. Heroku’s platform is designed to be extensible through Buildpacks. If your language isn’t on the officially supported list, you can use a third-party buildpack from the Heroku Elements Marketplace or even create your own. This allows you to deploy applications written in almost any language.

A Heroku Buildpack is an automated script that transforms your application’s source code into a runnable asset on the Heroku platform. It handles tasks like detecting your language, installing dependencies, and compiling your code. Heroku utilizes two types of buildpacks:

  • Classic Buildpacks: These are used with Heroku’s traditional Cedar generation. They create an optimized package of your app called a slug.
  • Cloud Native Buildpacks (CNBs): Used with Heroku’s modern Fir generation, these are open-standard buildpacks that create OCI-compliant container images. This approach offers greater flexibility and compatibility with the broader cloud-native ecosystem.

Essentially, Buildpacks are what make Heroku’s git push heroku main deployment model possible for so many languages and frameworks.

Yes. You can use multiple languages within a single project by using more than one buildpack for your application. This is a common practice for applications with distinct front-end and back-end components written in different languages (e.g., a React front-end and a Python API). To get started, choose between the officially supported buildpacks and the community supported buildpacks.

Once you’ve found the languages you need you can add them to your app using the heroku buildpacks:add command.

Yes. Heroku’s language support is designed to work seamlessly with all major web frameworks. Because Heroku provides robust support for the underlying language (e.g., Ruby, Python, Node.js), it inherently supports the frameworks built upon them. In fact, many official buildpacks are “framework-aware,” meaning they automatically detect your framework and perform specific optimizations for faster, more reliable deployments.

No. For the standard buildpack workflow, you should push your source code directly to Heroku, not compiled artifacts. Heroku’s buildpack system is designed to handle the entire compilation for you, setting up the correct toolchain (like Maven or the .NET SDK) to build a runnable production asset. This ensures a clean, consistent, and repeatable build environment every time. For more details visit the getting started docs of the language of your choice.

This approach is the best practice for buildpack deployments. The main exception is if you are using Heroku’s advanced use-case Container Registry workflow, where you would build a Docker image locally (including the compilation step) and then push the completed image to Heroku to be deployed.

Yes, Heroku supports Docker-based deployments via the Container Registry, which is a powerful workflow for teams with existing container-based processes. This is distinct from the default, buildpack-based deployments. The primary difference between the two comes down to ease of use and security, which is why Heroku recommends buildpacks for most use cases.

  • Ease of use: Building an image with a Dockerfile requires you to manually define all the steps and software your app needs to run. Buildpacks automate this by inspecting your application code for community standards (like a go.mod or uv.lock file) to determine what is needed, often requiring zero configuration.
  • Security: Buildpack-based deploys product composable containers, which allows Heroku to automatically manage your operating system packages through a process called “rebasing.” This lets Heroku apply security patches to system libraries, like Open SSL, for you. Images built with a Dockerfile and deployed via the Container Registry cannot be rebased; you are responsible for rebuilding the image from scratch to pull in OS updates and keep your app secure.

Ready to Get Started?

Stay focused on building great data-driven applications and let Heroku tackle the rest.

Sign Up Now