Language Support for Modern App Deployment | Heroku

Language Support

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

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

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

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

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

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

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

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

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

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

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

What programming languages does Heroku officially support?

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.

My programming language isn't on the official list. Can I still use it on Heroku?

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.

What is a Heroku Buildpack?

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:

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

Can I use multiple languages in the same Heroku project?

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.

Does Heroku support specific web frameworks like Ruby on Rails, Django, or Express.js?

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.

For compiled languages like Java or .NET, do I need to compile my code before pushing it to Heroku?

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.

Does Heroku support containers and building with a Dockerfile?

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.