Supported languages in Azure Functions

This article explains the levels of support offered for languages that you can use with Azure Functions. It also describes strategies for creating functions using languages not natively supported.

Levels of support

There are two levels of support:

  • Generally available (GA) - Fully supported and approved for production use.
  • Preview - Not yet supported, but expected to reach GA status in the future.

Languages by runtime version

Several versions of the Azure Functions runtime are available. The following table shows which languages are supported in each runtime version.

Language 1.x 2.x1 3.x1 4.x
C# GA (.NET Framework 4.8) GA (.NET Core 2.1) GA (.NET Core 3.1)
GA (.NET 6.0)
GA (.NET 7.0)
GA (.NET Framework 4.8)
JavaScript GA (Node.js 6) GA (Node.js 10 & 8) GA (Node.js 14, 12, & 10) GA (Node.js 18, 16, & 14)
F# GA (.NET Framework 4.8) GA (.NET Core 2.11) GA (.NET Core 3.1) GA (.NET 6.0)
GA (.NET 7.0)
Java N/A GA (Java 8) GA (Java 11 & 8) GA (Java 11 & 8)
GA (Java 17)
PowerShell N/A N/A N/A GA (PowerShell 7.2)
Python N/A GA (Python 3.7) GA (Python 3.9, 3.8, 3.7) GA (Python 3.10, 3.9, 3.8, 3.7)
TypeScript2 N/A GA GA GA

1 Reached the end of life (EOL) on December 13, 2022. We highly recommend you migrating your apps to version 4.x for full support.
2 Supported through transpiling to JavaScript.

See the language-specific developer guide article for more details about supported language versions.
For information about planned changes to language support, see Azure roadmap.

Language support details

The following table shows which languages supported by Functions can run on Linux or Windows. It also indicates whether your language supports editing in the Azure portal. The language is based on the Runtime stack option you choose when creating your function app in the Azure portal. This is the same as the --worker-runtime option when using the func init command in Azure Functions Core Tools.

Language Runtime stack Linux Windows In-portal editing
C# class library1 .NET
C# script .NET
JavaScript Node.js
Python2 Python
Java Java
PowerShell PowerShell Core
TypeScript Node.js
Go/Rust/other Custom Handlers

1 In the portal, you can't currently create function apps that run on .NET 7.0. For more information, see Guide for running C# Azure Functions in an isolated worker process.
2 In-portal editing requires your function to be defined in a function.json file. Because the Python v2 programming model uses Python code decorators instead of function.json to define functions, only the Python v1 programming model is supported for in-portal development.

For more information on operating system and language support, see Operating system/runtime support.

When in-portal editing isn't available, you must instead develop your functions locally.

Language major version support

Azure Functions provides a guarantee of support for the major versions of supported programming languages. For most languages, there are minor or patch versions released to update a supported major version. Examples of minor or patch versions include such as Python 3.9.1 and Node 14.17. After new minor versions of supported languages become available, the minor versions used by your functions apps are automatically upgraded to these newer minor or patch versions.


Because Azure Functions can remove the support of older minor versions at any time after a new minor version is available, you shouldn't pin your function apps to a specific minor/patch version of a programming language.

Custom handlers

Custom handlers are lightweight web servers that receive events from the Azure Functions host. Any language that supports HTTP primitives can implement a custom handler. This means that custom handlers can be used to create functions in languages that aren't officially supported. To learn more, see Azure Functions custom handlers.

Language extensibility

Starting with version 2.x, the runtime is designed to offer language extensibility. The JavaScript and Java languages in the 2.x runtime are built with this extensibility.

Next steps

To learn more about how to develop functions in the supported languages, see the following resources: