Backend Frameworks Comparison

This content was generated with the assistance of AI and should be verified against the official documentation of each framework before being relied on.

See the bibliographies of the Backend Frameworks Comparison and the Web Frameworks Comparison for the data sources and the date of each figure.

This page compares 48 backend frameworks on the same metrics: the frameworks documented on this site, plus others that matter because they are popular, because they are growing, or for historical context. Every number carries a source and a date, and anything that could not be sourced is shown as n/a instead of being estimated. The data snapshot date is 2026-10-27: all sources were read on that day, and each caption names the edition or measurement date of its data. Downloads, survey shares and stars change every month, so treat the figures as a dated snapshot.

The raw data (CSV files), the chart and table generators and the scoring rubric are kept in the repository under scripts/framework-charts/; npm run charts:frameworks regenerates every figure and table on this page. The view layers of full-stack frameworks (Razor and Blazor, Django templates, Blade, Livewire and Inertia, Thymeleaf) are compared on the Web Frameworks Comparison; language-level metrics (indices, benchmarks of the languages themselves, salaries) are on the Programming Languages Comparative. Jump to the Summary and recommendations if you only need the conclusions.

Scope and inclusion criteria

A framework is included when at least one of these holds:

  1. It has its own section on this site: Spring Boot, Quarkus, Jakarta EE (through the JSF and JSP and Struts sections), ASP.NET Core, ASP.NET MVC 5 and Web API 2, ASP.NET Web Forms, Express and Fastify (in Node.js), NestJS, Django, FastAPI, Flask, Tornado, Pyramid, Laravel, axum and Vapor.

  2. It appears in the framework lists of the Stack Overflow Developer Survey 2025, State of JS 2025 or the JetBrains State of Developer Ecosystem 2023, or ranks in its registry’s downloads: Micronaut, Helidon, Ktor, Vert.x, Javalin and Play (JVM); Hono, Koa, AdonisJS and Elysia (Node.js and Bun); Litestar, Sanic, Django REST framework and Django Ninja (Python); Symfony, Slim and CodeIgniter (PHP); Actix Web, Rocket and Loco (Rust); Hummingbird (Swift); Ruby on Rails, Gin, Echo, Fiber, Go net/http as the baseline, and Phoenix (Elixir).

  3. It matters for history: ASP.NET Web Forms, Apache Struts, J2EE and EJB 2, Zend Framework and Laminas, CakePHP.

Frameworks without a section on this site get fewer metrics where data is scarce: the feature matrix, the deployment-target coverage and some concurrency rows are only assessed for the documented ones. Runtimes (Node.js, Deno, Bun) and content-management systems (WordPress, Drupal) appear in some surveys but are not frameworks and are excluded; WordPress is documented in WordPress and compared with other CMSs on the CMS Comparison. Every framework name links to its section on this site, or to its official website when the site has no section.

Table 1. Frameworks compared on this page (48); first release, licence and governance from frameworks.csv (npm-registry, pypi-json, packagist, maven-central, official-websites)
Framework Group Language First release Status Licence Governance On this site

Spring Boot

jvm

Java/Kotlin

2014-04-01

active

Apache-2.0

n/a

yes

Quarkus

jvm

Java/Kotlin

2019-03-06

active

Apache-2.0

Commonhaus Foundation

yes

Jakarta EE

jvm

Java

2019-09-03

active

n/a

Eclipse Foundation

yes

Micronaut

jvm

Java/Kotlin

2018-10-23

active

Apache-2.0

n/a

no

Helidon

jvm

Java

2018-09-05

active

Apache-2.0

n/a

no

Ktor

jvm

Kotlin

2018-11-19

active

Apache-2.0

JetBrains

no

Vert.x

jvm

Java

2014-05-27

active

n/a

Eclipse Foundation

no

Javalin

jvm

Java/Kotlin

2017-05-24

active

Apache-2.0

n/a

no

Play Framework

jvm

Scala/Java

2019-06-19

active

Apache-2.0

n/a

no

ASP.NET Core

dotnet

C#

2016-06-27

active

MIT

Microsoft

yes

ASP.NET MVC 5 / Web API 2

dotnet

C#

2012-05-31

legacy

n/a

Microsoft

yes

ASP.NET Web Forms

dotnet

C#

2002

legacy

n/a

Microsoft

yes

Express

node

JavaScript/TypeScript

2010-12-29

active

MIT

OpenJS Foundation

yes

Fastify

node

JavaScript/TypeScript

2016-10-07

active

MIT

OpenJS Foundation

yes

NestJS

node

TypeScript

2017-05-14

active

MIT

n/a

yes

Hono

node

TypeScript

2021-12-14

active

MIT

Yusuke Wada and Hono contributors

no

Koa

node

JavaScript

2013-11-06

active

MIT

n/a

no

AdonisJS

node

TypeScript

2019-01-26

active

MIT

n/a

no

Elysia

node

TypeScript (Bun)

2022-12-24

active

MIT

n/a

no

Django

python

Python

2010-05-17

active

BSD-3-Clause

Django Software Foundation

yes

FastAPI

python

Python

2018-12-08

active

MIT

n/a

yes

Flask

python

Python

2010-04-16

active

BSD-3-Clause

Pallets

yes

Tornado

python

Python

2010-05-18

active

Apache-2.0

The Tornado Authors

yes

Pyramid

python

Python

2011-01-31

active

LicenseRef-Repoze-BSD-derived

n/a

yes

Litestar

python

Python

2023-08-21

active

MIT

Litestar organisation

no

Sanic

python

Python

2016-10-15

active

MIT

Sanic Community Organization

no

Django REST framework

python

Python

2011-02-21

active

BSD-3-Clause

n/a

no

Django Ninja

python

Python

2019-12-04

active

MIT

n/a

no

Laravel

php

PHP

2013-05-28

active

MIT

n/a

yes

Symfony

php

PHP

2011-12-08

active

MIT

Symfony SAS (sponsor) and community

no

Slim

php

PHP

2012-04-14

active

MIT

n/a

no

CodeIgniter

php

PHP

2020-02-24

active

MIT

CodeIgniter Foundation

no

axum

rust

Rust

2021-07-22

active

MIT

n/a

yes

Actix Web

rust

Rust

2017-10-23

active

MIT OR Apache-2.0

The Actix Team

no

Rocket

rust

Rust

2016-12-23

active

MIT OR Apache-2.0

Sergio Benitez

no

Loco

rust

Rust

2023-11-23

active

Apache-2.0

n/a

no

Vapor

swift

Swift

n/a

active

MIT

QuTheory, LLC

yes

Hummingbird

swift

Swift

n/a

active

Apache-2.0

n/a

no

Ruby on Rails

other

Ruby

2009-07-25

active

MIT

n/a

no

Gin

other

Go

2016-12-03

active

MIT

n/a

no

Echo

other

Go

2015-04-01

active

MIT

LabStack LLC

no

Fiber

other

Go

2020-01-15

active

MIT

n/a

no

Go net/http (baseline)

other

Go

n/a

active

n/a

n/a

no

Phoenix

other

Elixir

2014-04-21

active

MIT

phoenixframework.org

no

Apache Struts

historical

Java

2001

legacy

Apache-2.0

Apache Software Foundation

yes

J2EE / EJB 2

historical

Java

n/a

historical

n/a

n/a

no

Zend Framework / Laminas

historical

PHP

2019-12-31

legacy

BSD-3-Clause

Linux Foundation

no

CakePHP

historical

PHP

2014-01-26

active

MIT

Cake Software Foundation

no

How metrics, scales and scores were assigned

Metrics. A value is recorded only when it was read in the source named for it; otherwise it is n/a and charts draw a gap or an "n/a" label, never a zero. Values derived from published data (State of JS ratios from the published answer counts, TechEmpower requests per second from the raw results, js-framework-benchmark factors) use the publisher’s own formula, documented in scripts/framework-charts/data/NOTES.md.

Metric What it measures Source Edition or date

Survey usage, admired, desired

Share of respondents who used a framework; share of its users who want to keep using it; share of all respondents who want to use it

Stack Overflow Developer Survey

2019 to 2025 (2026 has no frameworks question)

State of JS usage, retention, interest

Usage, positive sentiment among users (retention) and among non-users (interest), Node.js frameworks only

State of JS

2016 to 2025

Share within a language

Share of a language’s developers who use the framework (only comparable within one language)

JetBrains State of Developer Ecosystem

2023 (with 2022)

Registry downloads

npm, PyPI, Packagist, NuGet, crates.io, Hex and RubyGems downloads, each registry with its own unit and period; Maven Central publishes none

npm, pypistats, Packagist, NuGet, crates.io, Hex, RubyGems

12 months to 2026-06 (npm), last 30 or 90 days, or totals

GitHub stars

Stars of the main repository

deps.dev

snapshot read 2026-10-27

Job demand

Share of Hacker News "Who is hiring?" postings that mention the framework

Hacker News through Algolia

2015-01 to 2026-10

Throughput

Responses per second in TechEmpower tests (JSON, single query, multiple queries, fortunes, plaintext)

TechEmpower Framework Benchmarks

rounds 16 to 23 (round 23 run on 2025-01-30, the last)

Memory and startup

Published RSS, memory and startup figures (no house measurements)

Quarkus comparison, Micronaut, Helidon

2026-06-02 run; home pages read 2026-10-27

Ecosystem and support

Release history, major versions, release cadence, support cycles and LTS

package registries, endoflife.date

2026-10-27

Security

Advisories per year, OpenSSF Scorecard and its security-policy check

OSV.dev, OpenSSF Scorecard

2026-10-27; Scorecard run 2026-08-24

Radar scores (0 to 10, higher is better). Each radar axis is either computed ©, a formula over the data, or editorial (E), a judgement with a written basis per framework. Scores are relative to the frameworks on this page: 10 is the best in this comparison, not a theoretical maximum, and an axis without inputs is n/a.

  • Popularity ©: mean of the survey usage relative to the most used framework, registry downloads on a log scale within one registry (a framework on several registries is scored in the one with the most frameworks on this page), and GitHub stars on a log scale.

  • Growth ©: change in survey usage from 2023 to 2025, in npm downloads and Packagist downloads year over year, and in State of JS usage, each scaled between the slowest and fastest grower.

  • Talent pool and jobs ©: professional usage in the survey and Hacker News job-posting share, relative to the best framework.

  • Ease of use (E): concepts to learn before the first endpoint, configuration needed, conventions, and quality of the official tutorial, supported by the admired and retention scores.

  • Ecosystem and maturity (E): age, release cadence, support policy and LTS, governance, extension ecosystem and official integrations.

  • Productivity (E): batteries included (the feature matrix), scaffolding and hot reload.

  • Throughput ©: TechEmpower round 23 fortunes, 10 × (1 − log10(best / rps) / 2); 100 times slower than the best scores 0.

  • Memory and Startup ©: from the like-for-like Quarkus comparison only, JIT variant; 10 times more than the best scores 0.

Registry downloads count CI runs, mirrors and caches, not people, and the units of the registries differ (npm counts per tarball, Packagist per install, PyPI without mirrors). They are therefore only compared within one registry, never on one axis. The full formulas, the rubric and the method of every dataset are in scripts/framework-charts/data/NOTES.md.

Overview and timeline

The oldest frameworks still in wide use date from the late 2000s: Django, Flask and Tornado reached PyPI in 2010, Express in 2010 and Ruby on Rails on RubyGems in 2009. The JVM frameworks built for containers (Quarkus, Micronaut, Helidon) arrived in 2018 and 2019, and the newest frameworks here are Hono (2021), Elysia (2022), Litestar (2.0 in 2023) and Loco (2023). Registry dates are the first publication on the registry, which for older projects can be later than the first release; the timeline uses them so that every date has a source.

Timeline of 48 backend frameworks from 2000 to 2027, with bars from the first release, circles at each major version and n/a rows for frameworks without a sourced date
Figure 1. First release, first stable release of each major version and end of life. Sources: package registries and the site pages named in frameworks.csv, read 2026-10-27.

Popularity

Three independent signals are used: what developers say they use (surveys), what build systems download (registries) and what developers star (GitHub). In the Stack Overflow survey 2025, the most used backend frameworks are Express (19.9% of respondents), ASP.NET Core (19.7%), FastAPI (14.8%), Spring Boot (14.7%) and Flask (14.4%); classic ASP.NET still has 14.2%. The highest admired scores belong to the less used Phoenix (79%) and axum (76.4%), followed by ASP.NET Core (61.3%) and FastAPI (55.5%).

Horizontal bar chart of 2025 survey usage, led by Express at 19.9 percent and ASP.NET Core at 19.7 percent
Figure 2. Usage of backend frameworks in the Stack Overflow Developer Survey 2025. Source: Stack Overflow Developer Survey 2025.
Grouped bar chart of admired and desired shares per framework, with Phoenix and axum most admired
Figure 3. Admired and desired in the Stack Overflow Developer Survey 2025. Source: Stack Overflow Developer Survey 2025.

The JetBrains survey asks each language community separately, so its shares only compare frameworks of the same language: 72% of Java developers use Spring Boot, against 4% for Quarkus and 2% for Micronaut; 61% of PHP developers use Laravel and 21% Symfony; Django (40%) and Flask (38%) are close among Python developers in 2023, with FastAPI at 25% (20% in 2022).

Panels of horizontal bars, one per language, of the share of that language’s developers who use each framework in 2023
Figure 4. Framework use within each language community. Source: JetBrains State of Developer Ecosystem 2023.

For Node.js frameworks, State of JS 2025 adds usage among JavaScript developers: Express is used by 80.8% of the respondents to that question, NestJS by 32%, Fastify by 20.2% and Hono by 15.5%.

Registry downloads must be read within one registry. On npm, Express had 3,513 million downloads in the 12 months to 2026-06, Hono 841 million, NestJS 362 million, Koa 301 million and Fastify 237 million. Maven Central publishes no download counts, so JVM frameworks have no registry signal; .NET’s ASP.NET Core ships with the SDK, so its NuGet counts are a proxy.

Horizontal bar chart of npm downloads in the 12 months to June 2026, led by Express
Figure 5. npm downloads in the 12 months to 2026-06. Source: npm downloads API.
Horizontal bar chart of PyPI downloads in the last 30 days for the Python frameworks
Figure 6. PyPI downloads in the last 30 days. Source: PyPI Stats, read 2026-10-27.
Panels of horizontal bars of downloads on NuGet, crates.io, Hex and RubyGems, each with its own axis
Figure 7. Downloads on NuGet, crates.io, Hex and RubyGems, one panel per registry. Sources: NuGet, crates.io, Hex, RubyGems, read 2026-10-27.

GitHub stars favour projects that are popular with individual developers: FastAPI (103,301), Django (91,473), Gin (89,403), Spring Boot (81,754) and NestJS (76,893) lead.

Horizontal bar chart of GitHub stars per backend framework, led by FastAPI and Django
Figure 8. GitHub stars of the main repository. Source: deps.dev, read 2026-10-27.
Table 2. Popularity signals (so-2025, state-of-js, jetbrains-2023, deps-dev); JetBrains shares are within each language and not comparable across languages
Framework SO usage 2025 SO admired SO desired State of JS usage 2025 State of JS retention JetBrains 2023 (own language) GitHub stars

Spring Boot

14.7%

53.7%

11.0%

n/a

n/a

72.0%

82k

Quarkus

n/a

n/a

n/a

n/a

n/a

4.0%

16k

Micronaut

n/a

n/a

n/a

n/a

n/a

2.0%

6k

Helidon

n/a

n/a

n/a

n/a

n/a

1.0%

4k

Ktor

n/a

n/a

n/a

n/a

n/a

3.0%

15k

Vert.x

n/a

n/a

n/a

n/a

n/a

n/a

15k

Javalin

n/a

n/a

n/a

n/a

n/a

n/a

8k

Play Framework

n/a

n/a

n/a

n/a

n/a

22.0%

13k

ASP.NET Core

19.7%

61.3%

14.7%

n/a

n/a

56.0%

38k

ASP.NET MVC 5 / Web API 2

14.2%

34.1%

6.5%

n/a

n/a

34.0%

1k

Express

19.9%

45.5%

11.4%

80.8%

81.2%

20.0%

70k

Fastify

2.9%

49.7%

2.7%

20.2%

86.5%

n/a

37k

NestJS

6.7%

49.8%

6.0%

32.0%

73.7%

n/a

77k

Hono

n/a

n/a

n/a

15.5%

95.0%

n/a

33k

Koa

n/a

n/a

n/a

11.7%

64.4%

n/a

36k

AdonisJS

n/a

n/a

n/a

3.8%

79.2%

n/a

19k

Elysia

n/a

n/a

n/a

5.5%

91.1%

n/a

19k

Django

12.6%

46.4%

10.4%

n/a

n/a

40.0%

91k

FastAPI

14.8%

55.5%

13.0%

n/a

n/a

25.0%

103k

Flask

14.4%

41.7%

8.9%

n/a

n/a

38.0%

75k

Tornado

n/a

n/a

n/a

n/a

n/a

2.0%

22k

Pyramid

n/a

n/a

n/a

n/a

n/a

2.0%

4k

Litestar

n/a

n/a

n/a

n/a

n/a

n/a

9k

Sanic

n/a

n/a

n/a

n/a

n/a

n/a

19k

Django REST framework

n/a

n/a

n/a

n/a

n/a

n/a

30k

Django Ninja

n/a

n/a

n/a

n/a

n/a

n/a

9k

Laravel

8.9%

47.8%

6.5%

n/a

n/a

61.0%

35k

Symfony

4.0%

50.0%

3.1%

n/a

n/a

21.0%

31k

Slim

n/a

n/a

n/a

n/a

n/a

4.0%

12k

CodeIgniter

n/a

n/a

n/a

n/a

n/a

10.0%

6k

axum

2.8%

76.4%

3.8%

n/a

n/a

n/a

28k

Actix Web

n/a

n/a

n/a

n/a

n/a

n/a

25k

Rocket

n/a

n/a

n/a

n/a

n/a

n/a

26k

Loco

n/a

n/a

n/a

n/a

n/a

n/a

10k

Vapor

n/a

n/a

n/a

n/a

n/a

n/a

26k

Hummingbird

n/a

n/a

n/a

n/a

n/a

n/a

2k

Ruby on Rails

5.9%

52.0%

5.5%

n/a

n/a

85.0%

59k

Gin

n/a

n/a

n/a

n/a

n/a

51.0%

89k

Echo

n/a

n/a

n/a

n/a

n/a

13.0%

33k

Fiber

n/a

n/a

n/a

n/a

n/a

n/a

40k

Go net/http (baseline)

n/a

n/a

n/a

n/a

n/a

43.0%

n/a

Phoenix

2.4%

79.0%

4.0%

n/a

n/a

n/a

23k

Apache Struts

n/a

n/a

n/a

n/a

n/a

n/a

1k

Zend Framework / Laminas

n/a

n/a

n/a

n/a

n/a

3.0%

0k

CakePHP

n/a

n/a

n/a

n/a

n/a

5.0%

9k

Table 3. Registry downloads: compare only within one registry (units and periods differ)
Framework Registry Package Period Downloads Primary Source

Express

npm

express

12 months to 2026-06

3512.9M

yes

npm-downloads

Hono

npm

hono

12 months to 2026-06

840.8M

yes

npm-downloads

NestJS

npm

@nestjs/core

12 months to 2026-06

362.3M

yes

npm-downloads

Koa

npm

koa

12 months to 2026-06

301.2M

yes

npm-downloads

Fastify

npm

fastify

12 months to 2026-06

236.5M

yes

npm-downloads

Elysia

npm

elysia

12 months to 2026-06

14.7M

yes

npm-downloads

AdonisJS

npm

@adonisjs/core

12 months to 2026-06

3.4M

yes

npm-downloads

FastAPI

PyPI

fastapi

last 30 days

381.6M

yes

pypistats

Flask

PyPI

flask

last 30 days

136.5M

yes

pypistats

Tornado

PyPI

tornado

last 30 days

97.7M

yes

pypistats

Django

PyPI

django

last 30 days

41.1M

yes

pypistats

Django REST framework

PyPI

djangorestframework

last 30 days

24.1M

yes

pypistats

Django Ninja

PyPI

django-ninja

last 30 days

3.7M

yes

pypistats

Pyramid

PyPI

pyramid

last 30 days

2.0M

yes

pypistats

Litestar

PyPI

litestar

last 30 days

1.7M

yes

pypistats

Sanic

PyPI

sanic

last 30 days

1.1M

yes

pypistats

Laravel

Packagist

laravel/framework

last 30 days

20.2M

yes

packagist

Symfony

Packagist

symfony/framework-bundle

last 30 days

8.6M

yes

packagist

Slim

Packagist

slim/slim

last 30 days

1.5M

yes

packagist

CakePHP

Packagist

cakephp/cakephp

last 30 days

0.5M

yes

packagist

Zend Framework / Laminas

Packagist

laminas/laminas-mvc

last 30 days

0.5M

yes

packagist

CodeIgniter

Packagist

codeigniter4/framework

last 30 days

0.4M

yes

packagist

ASP.NET Core

NuGet

Microsoft.AspNetCore.App.Ref

total

593.0M

yes

nuget-search

ASP.NET Core

NuGet

Microsoft.AspNetCore.Mvc.Testing

total

430.3M

no

nuget-search

ASP.NET MVC 5 / Web API 2

NuGet

Microsoft.AspNet.WebApi.Core

total

413.4M

no

nuget-search

ASP.NET MVC 5 / Web API 2

NuGet

Microsoft.AspNet.Mvc

total

315.7M

yes

nuget-search

ASP.NET Core

NuGet

Microsoft.AspNetCore.OpenApi

total

271.0M

no

nuget-search

axum

crates.io

axum

last 90 days

142.7M

yes

crates-io

Actix Web

crates.io

actix-web

last 90 days

12.4M

yes

crates-io

Rocket

crates.io

rocket

last 90 days

2.3M

yes

crates-io

Loco

crates.io

loco-rs

last 90 days

0.1M

yes

crates-io

Phoenix

Hex

phoenix

last 90 days

5.9M

yes

hex

Ruby on Rails

RubyGems

rails

total

807.2M

yes

rubygems

The survey series shows the steadiest movements. FastAPI doubled its share of Stack Overflow respondents between 2023 (7.42%) and 2025 (14.8%), and ASP.NET Core grew from 16.57% to 19.7%; classic ASP.NET fell from 26.3% in 2019 to 14.2% in 2025. Express stayed flat (19.28% in 2023, 19.9% in 2025).

Line chart of survey usage per year for 8 backend frameworks from 2019 to 2025
Figure 9. Survey usage per year, 2019 to 2025. Source: Stack Overflow Developer Survey 2019 to 2025.
Line chart of State of JS usage of Express, NestJS, Fastify, Koa, Hono, AdonisJS and Elysia per year
Figure 10. State of JS usage of the back-end frameworks per year. Source: State of JS 2016 to 2025.

On npm, Hono’s downloads grew 28 times between the 12 months to 2025-06 and the 12 months to 2026-06 (from 30 million to 841 million), Elysia’s 5.3 times and the others about twice; months for which the npm API returned no data are gaps. On Packagist, average daily installs keep rising: Laravel from 266,983 (July 2024 to June 2025) to 292,970 (July 2025 to June 2026), Symfony from 130,141 to 145,107.

Line chart of monthly npm downloads for Express, NestJS, Fastify, Koa, Hono, AdonisJS and Elysia, with gaps where the API has no data
Figure 11. npm downloads per month of the Node.js and TypeScript frameworks. Source: npm downloads API, 2015-01 to 2026-09.
Line chart of Packagist average daily downloads per month for Laravel, Symfony, Slim, CodeIgniter, CakePHP and Laminas
Figure 12. Packagist average daily downloads per month. Source: Packagist statistics, read 2026-10-27.

The popularity-against-growth view separates established and rising frameworks (right and top: FastAPI, Hono), established and plateauing ones (right and bottom: Express, Django, Ruby on Rails) and smaller risers. GitHub stars over time are not shown yet, so this page does not meet the "stars over time" goal of its specification: the GitHub API refused the authoring environment, the GH Archive dataset on BigQuery needs cloud credentials, and the public ClickHouse copy of GitHub events only starts in 2023 and is incomplete. A later update with credentials can add the yearly history.

Scatter chart of the popularity score against the growth score, one point per framework in the radar groups
Figure 13. Computed popularity against computed growth. Sources: see the formulas.

Talent pool and job market

Ease of finding developers. The pool is largest for the frameworks with the highest professional usage in the 2025 survey: ASP.NET Core (21.3% of professional respondents), Express (20.3%) and Spring Boot (15.6%), followed by FastAPI and Flask.

Job opportunities. In the 2025 Hacker News "Who is hiring?" threads, Ruby on Rails appears in 3.79% of the postings, FastAPI in 2.95%, Django in 2.65% and NestJS in 0.82%; Rails was at 12.44% in 2015 and Django at 5.98%. These threads lean towards start-ups and remote work, and framework names that are common words (Gin, Echo, Fiber, Play, Rocket, Phoenix on its own) are not counted. No source publishes salaries by framework; language-level salaries are on the Programming Languages Comparative.

Line chart of the share of Hacker News hiring postings mentioning 8 backend frameworks from 2015 to 2026
Figure 14. Share of Hacker News "Who is hiring?" postings that mention each framework, per year. Source: Hacker News through Algolia, 2015-01 to 2026-10.
Two panels of horizontal bars: professional developers who used each framework and the share of 2025 hiring postings mentioning it
Figure 15. Talent pool and job demand in 2025. Sources: Stack Overflow Developer Survey 2025, Hacker News.
Table 4. Talent pool and job demand (so-2025, hn-whoishiring); salary by framework is not published by any source
Framework SO 2025 all respondents SO 2025 professionals HN hiring 2025 HN hiring 2020 HN hiring 2015 Salary

Spring Boot

14.7%

15.6%

0.3%

1.0%

0.5%

n/a

Quarkus

n/a

n/a

0.1%

0.0%

0.0%

n/a

Micronaut

n/a

n/a

0.0%

0.2%

0.0%

n/a

ASP.NET Core

19.7%

21.3%

0.0%

0.2%

0.0%

n/a

ASP.NET MVC 5 / Web API 2

14.2%

15.0%

0.3%

0.4%

0.7%

n/a

Express

19.9%

20.3%

0.1%

0.5%

0.2%

n/a

Fastify

2.9%

3.1%

0.3%

0.0%

0.0%

n/a

NestJS

6.7%

7.4%

0.8%

0.1%

0.0%

n/a

Django

12.6%

11.7%

2.6%

4.9%

6.0%

n/a

FastAPI

14.8%

15.1%

3.0%

0.1%

0.0%

n/a

Flask

14.4%

13.2%

0.5%

1.4%

1.7%

n/a

Laravel

8.9%

9.3%

0.5%

0.9%

0.4%

n/a

Symfony

4.0%

4.3%

0.1%

0.3%

0.5%

n/a

axum

2.8%

2.7%

0.0%

0.0%

0.0%

n/a

Actix Web

n/a

n/a

0.0%

0.0%

0.0%

n/a

Ruby on Rails

5.9%

6.2%

3.8%

7.5%

12.4%

n/a

Phoenix

2.4%

2.5%

0.3%

0.3%

0.0%

n/a

Ease of use and learning curve

Ease of use is an editorial score (rubric above, basis per framework in the radar tables). Micro-frameworks (Flask, Express, Hono, Gin) need the fewest concepts before the first endpoint; convention-driven full-stack frameworks (Ruby on Rails, Laravel, Django) need more concepts but guide every step; frameworks built on dependency injection and modules (Spring Boot, NestJS) and on new runtime models (axum, Actix Web, Phoenix) take longest to learn. Supporting signals are the admired scores (Phoenix 79%, axum 76.4%, ASP.NET Core 61.3%) and State of JS retention (Hono 95%, Elysia 91.1%, Fastify 86.5%). The site’s own comparisons go deeper for some pairs: Quarkus versus Spring Boot, Express and Fastify (and the Express.js section), axum and the other Rust frameworks, Vapor and other Swift servers and choosing an ASP.NET framework.

Ecosystem and maturity

The table lists each framework’s latest release, how many major versions it shipped in the last five years, how many releases in the last 12 months, and its support cycle and LTS from endoflife.date. ASP.NET Core (.NET 10 LTS supported to 2028-11-14), Django (5.2 LTS to 2028-04-30), Symfony (7.4 LTS to 2029-11-30) and Quarkus publish LTS releases; Spring Boot publishes support and extended-support dates per minor version; Laravel ships a yearly major with dated support. Frameworks on 0.x versioning (FastAPI, axum) can break on minor versions; FastAPI had 123 releases in 12 months.

Table 5. Ecosystem and maturity (npm-registry, pypi-json, packagist, maven-central, nuget-registration, crates-io, endoflife-date); majors count first stable releases of each major version (1 or later) since 2021-10-27
Framework First release Latest version Latest release Majors in 5 years Releases in 12 months Current cycle Cycle end of life LTS Extension ecosystem

Spring Boot

2014-04-01

4.1.2

2026-10-22

2

n/a

4.1

2027-07-31

no

n/a

Quarkus

2019-03-06

3.40.1

2026-09-29

1

n/a

3.40

2027-09-30

yes

n/a

Jakarta EE

2019-09-03

11.0.0

2025-05-29

2

n/a

n/a

n/a

n/a

n/a

Micronaut

2018-10-23

5.2.20

2026-10-23

2

n/a

5

not announced

no

n/a

Helidon

2018-09-05

27.0.1

2026-10-20

3

n/a

n/a

n/a

n/a

n/a

Ktor

2018-11-19

3.6.0

2026-09-16

2

n/a

n/a

n/a

n/a

n/a

Vert.x

2014-05-27

5.2.2

2026-10-21

1

n/a

n/a

n/a

n/a

n/a

Javalin

2017-05-24

7.2.4

2026-10-25

3

n/a

n/a

n/a

n/a

n/a

Play Framework

2019-06-19

3.0.12

2026-09-30

1

n/a

n/a

n/a

n/a

n/a

ASP.NET Core

2016-06-27

10.0.14

2026-10-25

5

n/a

10

2028-11-14

yes

n/a

ASP.NET MVC 5 / Web API 2

2012-05-31

5.3.0

2023-10-23

n/a

n/a

4.8.1

not announced

no

n/a

ASP.NET Web Forms

2002

n/a

n/a

n/a

n/a

4.8.1

not announced

no

n/a

Express

2010-12-29

5.3.0

2026-10-09

1

7

5

not announced

no

n/a

Fastify

2016-10-07

5.12.7

2026-10-13

2

26

n/a

n/a

n/a

n/a

NestJS

2017-05-14

12.3.1

2026-10-27

4

44

n/a

n/a

n/a

n/a

Hono

2021-12-14

4.13.14

2026-10-25

4

66

n/a

n/a

n/a

n/a

Koa

2013-11-06

3.2.1

2026-05-21

1

4

n/a

n/a

n/a

n/a

AdonisJS

2019-01-26

7.6.0

2026-10-05

2

21

n/a

n/a

n/a

n/a

Elysia

2022-12-24

1.4.30

2026-08-26

1

17

n/a

n/a

n/a

n/a

Django

2010-05-17

6.1.2

2026-10-06

3

31

6.1

2027-12-31

yes

n/a

FastAPI

2018-12-08

0.162.0

2026-10-23

n/a

123

n/a

n/a

n/a

n/a

Flask

2010-04-16

3.1.3

2026-02-19

1

1

n/a

n/a

n/a

n/a

Tornado

2010-05-18

6.6

2026-10-21

0

9

n/a

n/a

n/a

n/a

Pyramid

2011-01-31

2.1

2026-03-11

0

1

n/a

n/a

n/a

n/a

Litestar

2023-08-21

2.25.0

2026-10-18

1

8

n/a

n/a

n/a

n/a

Sanic

2016-10-15

25.12.1

2026-05-31

4

3

n/a

n/a

n/a

n/a

Django REST framework

2011-02-21

3.18.3

2026-10-06

0

7

n/a

n/a

n/a

n/a

Django Ninja

2019-12-04

1.7.1

2026-09-19

1

10

n/a

n/a

n/a

n/a

Laravel

2013-05-28

13.38.0

2026-10-20

5

120

13

2028-03-17

yes

21,253 packagist dependents

Symfony

2011-12-08

8.1.9

2026-10-12

3

66

8.1

2027-01-31

yes

12,126 packagist dependents

Slim

2012-04-14

4.15.3

2026-09-01

0

4

n/a

n/a

n/a

1,603 packagist dependents

CodeIgniter

2020-02-24

4.7.5

2026-10-09

0

8

n/a

n/a

n/a

554 packagist dependents

axum

2021-07-22

0.8.9

2026-04-14

n/a

3

n/a

n/a

n/a

n/a

Actix Web

2017-10-23

4.18.1

2026-10-23

1

10

n/a

n/a

n/a

n/a

Rocket

2016-12-23

0.5.2

2026-10-23

n/a

1

n/a

n/a

n/a

n/a

Loco

2023-11-23

1.2.0

2026-09-24

1

4

n/a

n/a

n/a

n/a

Vapor

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

Hummingbird

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

Ruby on Rails

2009-07-25

8.1.4

2026-09-24

2

10

8.1

2027-10-10

no

n/a

Gin

2016-12-03

v1.12.0

2026-02-28

0

n/a

n/a

n/a

n/a

n/a

Echo

2015-04-01

v4.16.2

2026-10-23

0

n/a

n/a

n/a

n/a

n/a

Fiber

2020-01-15

v3.6.1

2026-10-14

1

n/a

n/a

n/a

n/a

n/a

Go net/http (baseline)

n/a

n/a

n/a

n/a

n/a

1.27

not announced

no

n/a

Phoenix

2014-04-21

1.8.16

2026-10-20

0

20

1.8

not announced

no

n/a

Apache Struts

2001

7.4.0

2026-09-17

2

n/a

7

not announced

no

n/a

J2EE / EJB 2

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

Zend Framework / Laminas

2019-12-31

3.8.0

2024-11-18

0

0

n/a

n/a

n/a

396 packagist dependents

CakePHP

2014-01-26

5.4.3

2026-10-03

1

27

5.4

not announced

no

2,007 packagist dependents

Productivity

The feature matrix covers the frameworks documented on this site; each "yes" or "partial" links to the page that documents the feature. Django, Spring Boot, Quarkus, ASP.NET Core and Laravel include the most out of the box (ORM and migrations, authentication, validation, templates, testing and scaffolding), while Express, axum and Tornado provide a core and leave the rest to libraries. Lines of code of a same-sized reference application could not be measured like for like from the site’s examples, so they are not part of this comparison.

Table 6. Feature matrix for the frameworks documented on this site (site-pages, editorial): yes = built in or official first-party module, partial = limited or optional official add-on, no = not provided by the framework; each yes or partial links to the page that documents it
Framework ORM and migrations Admin Auth Validation Jobs Templates OpenAPI Testing CLI Hot reload Type safety

Spring Boot

yes

no

yes

yes

yes

yes

partial

yes

yes

yes

partial

Quarkus

yes

no

yes

yes

yes

yes

yes

yes

yes

yes

partial

ASP.NET Core

yes

no

yes

yes

partial

yes

yes

yes

yes

yes

partial

Express

no

no

no

no

no

partial

no

no

partial

no

no

Fastify

no

no

partial

yes

no

partial

partial

yes

partial

partial

partial

NestJS

partial

no

partial

yes

yes

partial

yes

yes

yes

yes

partial

Django

yes

yes

yes

yes

partial

yes

no

yes

yes

yes

no

FastAPI

partial

no

partial

yes

partial

partial

yes

yes

yes

yes

partial

Flask

partial

no

no

no

no

yes

no

yes

partial

yes

no

Tornado

no

no

partial

no

no

yes

no

yes

no

yes

no

Pyramid

partial

no

yes

no

no

partial

no

partial

partial

yes

no

Laravel

yes

partial

yes

yes

yes

yes

no

yes

yes

partial

no

axum

no

no

no

no

no

no

no

partial

no

no

partial

Vapor

yes

no

yes

yes

yes

yes

partial

yes

yes

no

partial

Performance

Throughput

TechEmpower’s round 23 (Citrine hardware, run on 2025-01-30) is the last published round: the FrameworkBenchmarks repository has been archived. In the fortunes test (a database query, an HTML template and escaping, the closest to a real endpoint) the best implementations of Helidon (696,144 responses per second), ASP.NET Core (691,656 with Native AOT, 609,967 with Minimal APIs on the JIT), Micronaut (660,238) and Quarkus (431,465) lead, ahead of Fiber (411,214), Spring Boot (243,640) and FastAPI (109,167); Django (31,793) and Laravel (16,493) are at the low end. These are highly tuned implementations, and real applications spend most of their time in their own code and database, so the differences shrink in practice. For load testing your own service see JMeter and performance testing a Spring Boot application.

Horizontal bar chart of round 23 fortunes responses per second, led by Helidon, ASP.NET Core and Micronaut
Figure 16. TechEmpower round 23 fortunes test, best variant per framework. Source: TechEmpower round 23, run 2025-01-30.
Five panels of horizontal bars for the JSON, single query, multiple queries, fortunes and plaintext tests
Figure 17. TechEmpower round 23 by test type, each test with its own axis. Source: TechEmpower round 23.

Across rounds, every framework shown jumps between round 22 (2023-10) and round 23 (2025-01): Spring Boot from 24,083 to 243,640 fortunes responses per second, Django from 14,077 to 31,793. Because all frameworks move together, compare frameworks within one round rather than reading the jump as a change in the frameworks.

Line chart of fortunes responses per second for 8 frameworks across rounds 16 to 23
Figure 18. TechEmpower fortunes across rounds 16 to 23. Sources: TechEmpower rounds 16 to 23.
Table 7. TechEmpower round 23 (Citrine, run 2025-01-30, last round), responses per second, best variant (techempower-r23)
Framework JSON Single query Multiple queries (20) Fortunes Plaintext Implementations

Helidon

2,233,345

n/a

n/a

696,144

8,418,021

helidon-nima

ASP.NET Core

2,556,896

824,366

80,693

691,656

27,770,995

aspnetcore-minimal, aspnetcore-mvc, aspnetcore-aot

Micronaut

1,468,052

836,808

85,904

660,238

2,884,144

micronaut, micronaut-graalvm

Quarkus

2,457,422

802,294

58,379

431,465

7,675,046

quarkus

Fiber

542,699

440,178

16,834

411,214

646,197

fiber

Ktor

706,645

333,599

35,190

247,407

960,849

ktor

Spring Boot

328,413

205,876

31,593

243,640

832,510

spring

Rocket

540,665

103,367

14,785

220,494

1,033,428

rocket

Echo

855,437

432,423

16,230

189,512

1,609,824

echo

Phoenix

536,573

200,772

26,972

175,739

632,360

phoenix

Litestar

443,007

175,508

37,203

128,666

509,038

starlite

Sanic

417,312

157,219

33,671

114,839

613,797

sanic

Gin

498,192

222,675

17,305

110,596

1,639,755

gin

FastAPI

354,899

163,894

37,254

109,167

338,365

fastapi

NestJS

192,830

84,218

11,070

82,444

259,719

nestjs

Slim

87,349

77,864

33,821

73,619

89,589

slim

Ruby on Rails

203,338

63,046

9,567

42,546

139,128

rails

Django

167,280

41,193

3,604

31,793

179,697

django

Pyramid

314,970

29,689

3,296

31,769

497,457

pyramid

Tornado

100,140

35,267

2,900

26,849

117,634

tornado-py3

Symfony

63,238

30,371

14,428

25,865

64,054

symfony

Koa

572,932

123,286

11,475

17,937

953,808

koa

Laravel

26,902

17,837

6,950

16,493

26,657

laravel

CodeIgniter

19,902

16,700

12,828

15,904

20,629

codeigniter

CakePHP

19,204

11,626

3,649

9,702

19,041

cakephp

Vert.x

2,632,083

n/a

n/a

n/a

9,029,986

vertx-web

Javalin

1,269,833

n/a

n/a

n/a

1,817,739

javalin

Play Framework

129,241

n/a

n/a

n/a

295,170

play2-java

Express

224,163

n/a

n/a

n/a

279,968

express

Fastify

844,960

n/a

n/a

n/a

1,175,038

fastify

Hono

740,451

n/a

n/a

n/a

1,080,093

hono

Elysia

1,837,294

n/a

n/a

n/a

26,060,081

elysia

axum

2,709,795

n/a

n/a

n/a

12,392,331

axum

Vapor

263,364

n/a

n/a

n/a

310,442

vapor

Hummingbird

146,978

n/a

n/a

n/a

244,953

hummingbird2

Go net/http (baseline)

388,485

n/a

n/a

n/a

1,612,144

go

Memory consumption and startup time

No house measurements were made for this page: memory and startup figures come only from published sources and are labelled. The Quarkus team’s comparison (2026-06-02, 4 CPUs, Quarkus 3.35.4 and Spring Boot 4.0.6) measures both frameworks the same way: boot and first response 4,352 ms (Quarkus JIT) against 10,582 ms (Spring Boot JIT), and 574 ms against 2,169 ms as native images; RSS after the first request 271 MiB against 477 MiB (JIT) and 98 MiB against 303 MiB (native). These are vendor-reported for Quarkus, and published by a competing project for Spring Boot. The Micronaut and Helidon home pages publish smaller numbers (Micronaut native startup 15 ms and 42 MB) without a method, so they are not comparable with the Quarkus figures. The ASP.NET Core Native AOT documentation shows its results only as a chart image, so .NET is n/a; for native images and tuning on the JVM see Quarkus native executables and Quarkus performance and tuning.

Panels of horizontal bars for boot time and memory, JIT and native variants, one panel per publisher and metric
Figure 19. Published startup and memory figures, JIT and native side by side. Sources: Quarkus comparison, Micronaut, Helidon.
Table 8. Published startup, memory and throughput figures (no house measurements); vendor-reported figures are labelled
Framework Variant Metric Value Kind Publisher Source Note

Quarkus

jit

boot and first response ms

4,352 ms

vendor-reported

Quarkus team (Red Hat)

quarkus-perf-comparison

n/a

Spring Boot

jit

boot and first response ms

10,582 ms

published-third-party

Quarkus team (Red Hat)

quarkus-perf-comparison

measured and published by the Quarkus team, a competing project

Quarkus

native

boot and first response ms

574 ms

vendor-reported

Quarkus team (Red Hat)

quarkus-perf-comparison

n/a

Spring Boot

native

boot and first response ms

2,169 ms

published-third-party

Quarkus team (Red Hat)

quarkus-perf-comparison

measured and published by the Quarkus team, a competing project

Quarkus

jit

rss after first request mib

271 MiB

vendor-reported

Quarkus team (Red Hat)

quarkus-perf-comparison

n/a

Spring Boot

jit

rss after first request mib

477 MiB

published-third-party

Quarkus team (Red Hat)

quarkus-perf-comparison

measured and published by the Quarkus team, a competing project

Quarkus

native

rss after first request mib

98 MiB

vendor-reported

Quarkus team (Red Hat)

quarkus-perf-comparison

n/a

Spring Boot

native

rss after first request mib

303 MiB

published-third-party

Quarkus team (Red Hat)

quarkus-perf-comparison

measured and published by the Quarkus team, a competing project

Quarkus

jit

throughput tps

14,917 transactions/s

vendor-reported

Quarkus team (Red Hat)

quarkus-perf-comparison

n/a

Spring Boot

jit

throughput tps

7,524 transactions/s

published-third-party

Quarkus team (Red Hat)

quarkus-perf-comparison

measured and published by the Quarkus team, a competing project

Quarkus

native

throughput tps

5,437 transactions/s

vendor-reported

Quarkus team (Red Hat)

quarkus-perf-comparison

n/a

Spring Boot

native

throughput tps

2,150 transactions/s

published-third-party

Quarkus team (Red Hat)

quarkus-perf-comparison

measured and published by the Quarkus team, a competing project

Micronaut

jit

startup ms

235 ms

vendor-reported

Micronaut Foundation (micronaut.io home page)

micronaut-home

n/a

Micronaut

native

startup ms

15 ms

vendor-reported

Micronaut Foundation (micronaut.io home page)

micronaut-home

n/a

Micronaut

jit

memory mb

356 MB

vendor-reported

Micronaut Foundation (micronaut.io home page)

micronaut-home

n/a

Micronaut

native

memory mb

42 MB

vendor-reported

Micronaut Foundation (micronaut.io home page)

micronaut-home

n/a

Helidon

jit

startup ms

640 ms

vendor-reported

Oracle Helidon team (helidon.io home page)

helidon-home

startup published in seconds (0.64, 0.77, 0.26) and converted to ms

Helidon

jlink-jit

startup ms

770 ms

vendor-reported

Oracle Helidon team (helidon.io home page)

helidon-home

startup published in seconds (0.64, 0.77, 0.26) and converted to ms

Helidon

jlink-aot-cache

startup ms

260 ms

vendor-reported

Oracle Helidon team (helidon.io home page)

helidon-home

startup published in seconds (0.64, 0.77, 0.26) and converted to ms

Helidon

jit

memory mb

110 MB

vendor-reported

Oracle Helidon team (helidon.io home page)

helidon-home

startup published in seconds (0.64, 0.77, 0.26) and converted to ms

Helidon

jlink-jit

memory mb

118 MB

vendor-reported

Oracle Helidon team (helidon.io home page)

helidon-home

startup published in seconds (0.64, 0.77, 0.26) and converted to ms

Helidon

jlink-aot-cache

memory mb

71 MB

vendor-reported

Oracle Helidon team (helidon.io home page)

helidon-home

startup published in seconds (0.64, 0.77, 0.26) and converted to ms

ASP.NET Core

native

startup ms

n/a

n/a

n/a

aspnet-native-aot-doc

the ASP.NET Core Native AOT documentation shows startup and memory only as a chart image without numbers

Express

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

Fastify

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

NestJS

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

Django

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

FastAPI

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

Flask

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

Tornado

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

Pyramid

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

Laravel

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

axum

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

Vapor

jit

startup ms

n/a

n/a

n/a

n/a

no published startup or memory figure found; no house measurement was made (see NOTES.md)

Concurrency model

The concurrency model decides what happens when a handler blocks on I/O or computes for a long time. Thread-per-request stacks (Spring MVC, Struts) can switch to Java virtual threads (Spring Boot concurrency alternatives); event-loop stacks (Node.js frameworks, Vert.x, Quarkus’s reactive core) must never block the loop (Node.js concurrency models); async Python (FastAPI async and concurrency) and Rust frameworks run async handlers on an executor; PHP runs one request per worker process; Go starts a goroutine per request and Phoenix one BEAM process.

Table 9. Concurrency model per framework (each row confirmed by a site page or the official website)
Framework Model Blocking I/O CPU-bound work Evidence

Spring Boot

thread per request, optional virtual threads

fine on virtual threads; blocks a platform thread otherwise

runs on request threads

site page

Quarkus

event loop with worker threads, optional virtual threads

must leave the event loop (worker or virtual thread)

move off the event loop

site page

Micronaut

event loop (Netty) with thread offloading

offload to an executor

offload to an executor

official-websites

Helidon

virtual threads

fine (virtual thread parks)

runs on request threads

official-websites

Vert.x

event loop (multi-reactor)

must leave the event loop

move off the event loop

official-websites

Ktor

coroutines

use Dispatchers.IO

use Dispatchers.Default

official-websites

Javalin

thread per request (Jetty thread pool), optional virtual threads

blocks a thread

runs on request threads

official-websites

Play Framework

asynchronous actor-based (Pekko/Akka)

use a separate execution context

use a separate execution context

official-websites

ASP.NET Core

async/await on the .NET thread pool

use async APIs; sync I/O starves the thread pool

runs on thread-pool threads

site page

Express

event loop (single thread)

must be non-blocking

blocks the event loop; use worker threads

site page

Fastify

event loop (single thread)

must be non-blocking

blocks the event loop; use worker threads

site page

NestJS

event loop (single thread)

must be non-blocking

blocks the event loop; use worker threads

site page

Koa

event loop (single thread)

must be non-blocking

blocks the event loop

site page

Hono

event loop (runtime dependent)

must be non-blocking

blocks the event loop

site page

AdonisJS

event loop (single thread)

must be non-blocking

blocks the event loop

site page

Elysia

event loop (Bun)

must be non-blocking

blocks the event loop

official-websites

Django

worker processes/threads (WSGI), optional async views (ASGI)

blocks the worker; async views need async-safe calls

blocks the worker

site page

FastAPI

async/await (ASGI) plus thread pool for sync endpoints

use async libraries or def endpoints

blocks the loop; use processes

site page

Flask

worker processes/threads (WSGI)

blocks the worker

blocks the worker

site page

Tornado

event loop (IOLoop, asyncio)

must be non-blocking

blocks the loop

site page

Pyramid

worker processes/threads (WSGI)

blocks the worker

blocks the worker

site page

Litestar

async/await (ASGI)

use async libraries

blocks the loop

official-websites

Sanic

async/await (event loop)

use async libraries

blocks the loop

official-websites

Laravel

worker processes (PHP-FPM), optional long-running workers (Octane)

blocks the worker

blocks the worker

site page

Symfony

worker processes (PHP-FPM)

blocks the worker

blocks the worker

site page

Slim

worker processes (PHP-FPM)

blocks the worker

blocks the worker

site page

CodeIgniter

worker processes (PHP-FPM)

blocks the worker

blocks the worker

site page

CakePHP

worker processes (PHP-FPM)

blocks the worker

blocks the worker

site page

axum

async/await on a multi-threaded runtime (Tokio)

use async I/O or spawn_blocking

use spawn_blocking or a thread pool

site page

Actix Web

async/await, one runtime per worker thread

use async I/O or web::block

use web::block

official-websites

Rocket

async/await (Tokio)

use async I/O or spawn_blocking

use spawn_blocking

official-websites

Loco

async/await (Tokio, built on axum)

use async I/O or spawn_blocking

use spawn_blocking

official-websites

Vapor

event loops (SwiftNIO) with Swift concurrency

must not block an event loop

offload from the event loop

site page

Hummingbird

event loops (SwiftNIO) with Swift concurrency

must not block an event loop

offload from the event loop

site page

Ruby on Rails

threads and processes (Puma)

blocks a thread

limited by the GVL; use processes

site page

Gin

goroutine per request

fine (goroutine parks)

scheduled across GOMAXPROCS threads

site page

Echo

goroutine per request

fine (goroutine parks)

scheduled across GOMAXPROCS threads

site page

Fiber

goroutine per connection (fasthttp worker pool)

fine (goroutine parks)

scheduled across GOMAXPROCS threads

site page

Go net/http (baseline)

goroutine per request

fine (goroutine parks)

scheduled across GOMAXPROCS threads

site page

Phoenix

lightweight processes (BEAM)

fine (process blocks alone)

preemptively scheduled

official-websites

Apache Struts

thread per request (servlet container)

blocks a thread

runs on request threads

site page

Performance against ease of use

Scatter chart of the performance score against the ease-of-use score for the frameworks in the radar groups
Figure 20. Computed performance (mean of throughput, memory and startup where available) against editorial ease of use. Sources: see the formulas.

Other metrics

Security track record. Advisories per year come from OSV.dev (which includes the GitHub Advisory Database), counted for each framework’s main packages and deduplicated by CVE. Large, long-lived frameworks have the most: Django (162 in total), Ruby on Rails (119), Symfony (102), Apache Struts (60) and Spring Boot with Spring Web (48). A higher count often reflects more code and more active disclosure, not lower quality. The OpenSSF Scorecard and its security-policy check say whether a project publishes how to report vulnerabilities.

Line chart of security advisories per year from 2016 to 2026 for 8 backend frameworks
Figure 21. Security advisories per year. Source: OSV.dev, read 2026-10-27.

Deployment targets (containers, serverless, native binaries) and real-time support are listed where the site’s section documents them; the real-time stacks themselves are compared in the WebRTC and WebSockets decision guide, not here.

Table 10. Security and other metrics (osv, openssf-scorecard, site-pages); deployment, real-time, accessibility and AI tooling say whether the site documents them (n/a is not "unsupported")
Framework Advisories 2021-2025 Advisories (all) Scorecard Security policy Deployment targets documented Real-time AI tooling

Spring Boot

18

48

6.9

yes

containers, serverless, native binary

yes

yes

Quarkus

5

7

5.8

yes

containers, serverless, native binary

yes

n/a

Jakarta EE

n/a

n/a

n/a

n/a

containers, native binary

yes

n/a

Micronaut

3

3

7.2

yes

n/a

n/a

n/a

Helidon

0

0

n/a

n/a

n/a

n/a

n/a

Ktor

0

0

4.6

no

n/a

n/a

n/a

Vert.x

5

14

5.1

yes

n/a

n/a

n/a

Javalin

0

0

n/a

n/a

n/a

n/a

n/a

Play Framework

2

4

5.4

yes

n/a

n/a

n/a

ASP.NET Core

15

36

6.7

yes

containers, native binary

yes

n/a

ASP.NET MVC 5 / Web API 2

n/a

n/a

5.2

yes

n/a

yes

n/a

ASP.NET Web Forms

n/a

n/a

n/a

n/a

n/a

yes

n/a

Express

4

5

8.5

yes

containers, serverless, native binary

yes

yes

Fastify

3

17

8.3

yes

containers, serverless, native binary

yes

yes

NestJS

1

2

6.8

partial

containers, serverless

yes

yes

Hono

8

52

n/a

n/a

n/a

n/a

n/a

Koa

4

5

5.5

yes

n/a

n/a

n/a

AdonisJS

0

1

6

yes

n/a

n/a

n/a

Elysia

2

5

n/a

n/a

n/a

n/a

n/a

Django

53

162

6.7

partial

containers, serverless

yes

n/a

FastAPI

2

2

n/a

n/a

containers, serverless

yes

n/a

Flask

2

5

7.1

partial

containers, serverless

yes

yes

Tornado

9

23

6.6

yes

containers

yes

n/a

Pyramid

1

1

4.3

yes

containers

yes

n/a

Litestar

4

9

n/a

n/a

n/a

n/a

n/a

Sanic

2

4

4.1

partial

n/a

n/a

n/a

Django REST framework

1

7

6.3

yes

n/a

n/a

n/a

Django Ninja

0

0

4.3

no

n/a

n/a

n/a

Laravel

17

28

5.8

yes

containers, serverless

yes

yes

Symfony

24

102

7.5

yes

n/a

n/a

n/a

Slim

0

2

4.8

yes

n/a

n/a

n/a

CodeIgniter

12

19

7.1

yes

n/a

n/a

n/a

axum

0

0

5.5

no

containers, serverless

yes

yes

Actix Web

1

4

7

partial

n/a

n/a

n/a

Rocket

1

2

n/a

n/a

n/a

n/a

n/a

Loco

0

0

n/a

n/a

n/a

n/a

n/a

Vapor

6

7

7.1

yes

containers, serverless, native binary

yes

n/a

Hummingbird

0

0

n/a

n/a

n/a

n/a

n/a

Ruby on Rails

29

119

6.3

yes

n/a

n/a

n/a

Gin

2

5

6

no

n/a

n/a

n/a

Echo

1

7

6.2

yes

n/a

n/a

n/a

Fiber

8

14

7

yes

n/a

n/a

n/a

Go net/http (baseline)

n/a

n/a

n/a

n/a

n/a

n/a

n/a

Phoenix

1

5

6.7

yes

n/a

n/a

n/a

Apache Struts

9

60

8.1

yes

containers

yes

n/a

J2EE / EJB 2

n/a

n/a

n/a

n/a

n/a

n/a

n/a

Zend Framework / Laminas

13

23

n/a

n/a

n/a

n/a

n/a

CakePHP

7

22

4.4

no

n/a

n/a

n/a

Comparison table

One table with every framework and every metric. Scores are 0 to 10 (higher is better), (E) marks the editorial axes, and n/a means the data does not exist or could not be sourced.

Table 11. Summary: every framework against every metric. Scores 0-10 (higher is better); (E) editorial, others computed; n/a = no data.
Framework Popularity Growth Talent/jobs Ease of use (E) Ecosystem (E) Productivity (E) Throughput Memory Startup Concurrency model LTS Advisories

Spring Boot

8.6

2.7

4.1

6.0

9.0

8.0

7.7

7.5

6.1

thread per request, optional virtual threads

no

48

Quarkus

8.4

n/a

0.1

6.0

7.0

9.0

9.0

10.0

10.0

event loop with worker threads, optional virtual threads

yes

7

Jakarta EE

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

Micronaut

7.6

n/a

0.0

6.0

6.0

7.0

9.9

n/a

n/a

event loop (Netty) with thread offloading

no

3

Helidon

7.1

n/a

n/a

6.0

5.0

5.0

10.0

n/a

n/a

virtual threads

n/a

0

Ktor

8.3

n/a

n/a

7.0

6.0

6.0

7.8

n/a

n/a

coroutines

n/a

0

Vert.x

8.3

n/a

n/a

4.0

7.0

4.0

n/a

n/a

n/a

event loop (multi-reactor)

n/a

14

Javalin

7.8

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

thread per request (Jetty thread pool), optional virtual threads

n/a

0

Play Framework

8.2

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

asynchronous actor-based (Pekko/Akka)

n/a

4

ASP.NET Core

9.7

2.1

5.0

7.0

9.0

9.0

10.0

n/a

n/a

async/await on the .NET thread pool

yes

36

ASP.NET MVC 5 / Web API 2

7.6

1.1

3.9

n/a

n/a

n/a

n/a

n/a

n/a

n/a

no

n/a

ASP.NET Web Forms

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

no

n/a

Express

9.9

0.2

5.0

9.0

8.0

3.0

n/a

n/a

n/a

event loop (single thread)

no

5

Fastify

6.4

2.7

1.1

8.0

7.0

6.0

n/a

n/a

n/a

event loop (single thread)

n/a

17

NestJS

7.4

1.8

2.8

5.0

7.0

8.0

5.4

n/a

n/a

event loop (single thread)

n/a

2

Hono

9.2

10.0

n/a

9.0

5.0

5.0

n/a

n/a

n/a

event loop (runtime dependent)

n/a

52

Koa

9.0

0.4

n/a

8.0

6.0

3.0

2.1

n/a

n/a

event loop (single thread)

n/a

5

AdonisJS

7.7

0.3

n/a

7.0

5.0

8.0

n/a

n/a

n/a

event loop (single thread)

n/a

1

Elysia

8.0

4.0

n/a

n/a

n/a

n/a

n/a

n/a

n/a

event loop (Bun)

n/a

5

Django

8.4

0.9

6.2

7.0

10.0

9.0

3.3

n/a

n/a

worker processes/threads (WSGI), optional async views (ASGI)

yes

162

FastAPI

9.1

10.0

7.4

8.0

6.0

8.0

6.0

n/a

n/a

async/await (ASGI) plus thread pool for sync endpoints

n/a

2

Flask

8.8

2.1

3.8

9.0

8.0

5.0

n/a

n/a

n/a

worker processes/threads (WSGI)

n/a

5

Tornado

9.0

n/a

n/a

5.0

6.0

4.0

2.9

n/a

n/a

event loop (IOLoop, asyncio)

n/a

23

Pyramid

7.3

n/a

n/a

n/a

n/a

n/a

3.3

n/a

n/a

worker processes/threads (WSGI)

n/a

1

Litestar

7.6

n/a

n/a

6.0

4.0

7.0

6.3

n/a

n/a

async/await (ASGI)

n/a

9

Sanic

7.8

n/a

n/a

7.0

5.0

5.0

6.1

n/a

n/a

async/await (event loop)

n/a

4

Django REST framework

8.8

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

7

Django Ninja

7.8

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

0

Laravel

7.8

1.0

2.8

8.0

9.0

9.0

1.9

n/a

n/a

worker processes (PHP-FPM), optional long-running workers (Octane)

yes

28

Symfony

6.8

1.7

1.1

5.0

9.0

7.0

2.9

n/a

n/a

worker processes (PHP-FPM)

yes

102

Slim

8.3

3.8

n/a

n/a

n/a

n/a

5.1

n/a

n/a

worker processes (PHP-FPM)

n/a

2

CodeIgniter

7.6

10.0

n/a

8.0

6.0

6.0

1.8

n/a

n/a

worker processes (PHP-FPM)

n/a

19

axum

6.8

n/a

0.7

5.0

6.0

4.0

n/a

n/a

n/a

async/await on a multi-threaded runtime (Tokio)

n/a

0

Actix Web

8.7

n/a

0.0

5.0

6.0

4.0

n/a

n/a

n/a

async/await, one runtime per worker thread

n/a

4

Rocket

8.3

n/a

n/a

n/a

n/a

n/a

7.5

n/a

n/a

async/await (Tokio)

n/a

2

Loco

7.1

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

async/await (Tokio, built on axum)

n/a

0

Vapor

8.8

n/a

n/a

5.0

5.0

8.0

n/a

n/a

n/a

event loops (SwiftNIO) with Swift concurrency

n/a

7

Hummingbird

6.5

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

event loops (SwiftNIO) with Swift concurrency

n/a

0

Ruby on Rails

6.2

0.6

6.5

8.0

9.0

9.0

3.9

n/a

n/a

threads and processes (Puma)

no

119

Gin

9.9

n/a

n/a

8.0

7.0

4.0

6.0

n/a

n/a

goroutine per request

n/a

5

Echo

9.0

n/a

n/a

n/a

n/a

n/a

7.2

n/a

n/a

goroutine per request

n/a

7

Fiber

9.2

n/a

n/a

8.0

5.0

4.0

8.9

n/a

n/a

goroutine per connection (fasthttp worker pool)

n/a

14

Go net/http (baseline)

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

goroutine per request

no

n/a

Phoenix

5.0

2.0

0.9

5.0

7.0

9.0

7.0

n/a

n/a

lightweight processes (BEAM)

no

5

Apache Struts

6.3

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

thread per request (servlet container)

no

60

J2EE / EJB 2

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

Zend Framework / Laminas

6.2

1.3

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

n/a

23

CakePHP

7.9

2.7

n/a

7.0

7.0

7.0

0.7

n/a

n/a

worker processes (PHP-FPM)

no

22

Radar comparisons

Each radar compares at most six frameworks on nine axes; computed axes are marked © and editorial axes (E), and gaps in an outline mean n/a. Memory and startup are only computed for Quarkus and Spring Boot, the two frameworks measured like for like.

Radar chart on nine 0 to 10 axes comparing Spring Boot, Quarkus, Micronaut, Helidon, Ktor and Vert.x
Figure 22. JVM frameworks. Sources: see the Bibliography; scores from scripts/framework-charts.
Radar chart on nine 0 to 10 axes comparing ASP.NET Core, Laravel, Symfony, CodeIgniter and CakePHP
Figure 23. .NET and PHP frameworks. Sources: see the Bibliography.
Radar chart on nine 0 to 10 axes comparing Express, Fastify, NestJS, Hono, Koa and AdonisJS
Figure 24. Node.js and TypeScript frameworks. Sources: see the Bibliography.
Radar chart on nine 0 to 10 axes comparing Django, FastAPI, Flask, Litestar, Sanic and Tornado
Figure 25. Python frameworks. Sources: see the Bibliography.
Radar chart on nine 0 to 10 axes comparing axum, Actix Web, Gin, Fiber, Vapor and Phoenix
Figure 26. Rust, Go, Swift and Elixir frameworks. Sources: see the Bibliography.
Radar chart on nine 0 to 10 axes comparing Spring Boot, ASP.NET Core, Express, Django, Laravel and Ruby on Rails
Figure 27. Mainstream picks: the most used framework of each language. Sources: see the Bibliography.
Table 12. Radar scores: JVM frameworks
Framework Popularity © Growth © Talent pool / jobs © Ease of use (E) Ecosystem and maturity (E) Productivity (E) Throughput © Memory © Startup ©

Spring Boot

8.6

2.7

4.1

6.0

9.0

8.0

7.7

7.5

6.1

Quarkus

8.4

n/a

0.1

6.0

7.0

9.0

9.0

10.0

10.0

Micronaut

7.6

n/a

0.0

6.0

6.0

7.0

9.9

n/a

n/a

Helidon

7.1

n/a

n/a

6.0

5.0

5.0

10.0

n/a

n/a

Ktor

8.3

n/a

n/a

7.0

6.0

6.0

7.8

n/a

n/a

Vert.x

8.3

n/a

n/a

4.0

7.0

4.0

n/a

n/a

n/a

Table 13. Radar scores: .NET and PHP frameworks
Framework Popularity © Growth © Talent pool / jobs © Ease of use (E) Ecosystem and maturity (E) Productivity (E) Throughput © Memory © Startup ©

ASP.NET Core

9.7

2.1

5.0

7.0

9.0

9.0

10.0

n/a

n/a

Laravel

7.8

1.0

2.8

8.0

9.0

9.0

1.9

n/a

n/a

Symfony

6.8

1.7

1.1

5.0

9.0

7.0

2.9

n/a

n/a

CodeIgniter

7.6

10.0

n/a

8.0

6.0

6.0

1.8

n/a

n/a

CakePHP

7.9

2.7

n/a

7.0

7.0

7.0

0.7

n/a

n/a

Table 14. Radar scores: Node.js and TypeScript frameworks
Framework Popularity © Growth © Talent pool / jobs © Ease of use (E) Ecosystem and maturity (E) Productivity (E) Throughput © Memory © Startup ©

Express

9.9

0.2

5.0

9.0

8.0

3.0

n/a

n/a

n/a

Fastify

6.4

2.7

1.1

8.0

7.0

6.0

n/a

n/a

n/a

NestJS

7.4

1.8

2.8

5.0

7.0

8.0

5.4

n/a

n/a

Hono

9.2

10.0

n/a

9.0

5.0

5.0

n/a

n/a

n/a

Koa

9.0

0.4

n/a

8.0

6.0

3.0

2.1

n/a

n/a

AdonisJS

7.7

0.3

n/a

7.0

5.0

8.0

n/a

n/a

n/a

Table 15. Radar scores: Python frameworks
Framework Popularity © Growth © Talent pool / jobs © Ease of use (E) Ecosystem and maturity (E) Productivity (E) Throughput © Memory © Startup ©

Django

8.4

0.9

6.2

7.0

10.0

9.0

3.3

n/a

n/a

FastAPI

9.1

10.0

7.4

8.0

6.0

8.0

6.0

n/a

n/a

Flask

8.8

2.1

3.8

9.0

8.0

5.0

n/a

n/a

n/a

Litestar

7.6

n/a

n/a

6.0

4.0

7.0

6.3

n/a

n/a

Sanic

7.8

n/a

n/a

7.0

5.0

5.0

6.1

n/a

n/a

Tornado

9.0

n/a

n/a

5.0

6.0

4.0

2.9

n/a

n/a

Table 16. Radar scores: Rust, Go, Swift and Elixir frameworks
Framework Popularity © Growth © Talent pool / jobs © Ease of use (E) Ecosystem and maturity (E) Productivity (E) Throughput © Memory © Startup ©

axum

6.8

n/a

0.7

5.0

6.0

4.0

n/a

n/a

n/a

Actix Web

8.7

n/a

0.0

5.0

6.0

4.0

n/a

n/a

n/a

Gin

9.9

n/a

n/a

8.0

7.0

4.0

6.0

n/a

n/a

Fiber

9.2

n/a

n/a

8.0

5.0

4.0

8.9

n/a

n/a

Vapor

8.8

n/a

n/a

5.0

5.0

8.0

n/a

n/a

n/a

Phoenix

5.0

2.0

0.9

5.0

7.0

9.0

7.0

n/a

n/a

Table 17. Radar scores: Mainstream picks (most used framework of each language)
Framework Popularity © Growth © Talent pool / jobs © Ease of use (E) Ecosystem and maturity (E) Productivity (E) Throughput © Memory © Startup ©

Spring Boot

8.6

2.7

4.1

6.0

9.0

8.0

7.7

7.5

6.1

ASP.NET Core

9.7

2.1

5.0

7.0

9.0

9.0

10.0

n/a

n/a

Express

9.9

0.2

5.0

9.0

8.0

3.0

n/a

n/a

n/a

Django

8.4

0.9

6.2

7.0

10.0

9.0

3.3

n/a

n/a

Laravel

7.8

1.0

2.8

8.0

9.0

9.0

1.9

n/a

n/a

Ruby on Rails

6.2

0.6

6.5

8.0

9.0

9.0

3.9

n/a

n/a

Table 18. Basis of each editorial score (radar-scores.csv)
Framework Axis Score Basis

Spring Boot

Ease of use

6

Auto-configuration and starters remove most setup, but dependency injection, annotations and the Spring ecosystem are a lot to learn; SO 2025 admired 53.7%

Spring Boot

Ecosystem and maturity

9

First release 2014, support dates per minor version with extended support (endoflife.date), large starter ecosystem

Spring Boot

Productivity

8

Feature matrix 9/11 (ORM, security, validation, scheduling, Thymeleaf, testing, Initializr, devtools); OpenAPI through springdoc

Quarkus

Ease of use

6

Familiar Jakarta EE/MicroProfile APIs and dev mode, but build-time model and extensions add concepts

Quarkus

Ecosystem and maturity

7

First release 2019, Commonhaus Foundation, LTS releases (endoflife.date), smaller extension ecosystem than Spring

Quarkus

Productivity

9

Feature matrix 9.5/11 incl. OpenAPI and dev mode with continuous testing

Micronaut

Ease of use

6

Annotation-driven like Spring with compile-time DI; fewer learning resources

Micronaut

Ecosystem and maturity

6

First release 2018, no LTS cycle on endoflife.date, two majors in five years

Micronaut

Productivity

7

Not documented on the site; official modules cover data, security, validation, OpenAPI, test and CLI

Helidon

Ease of use

6

Helidon SE is a small functional API on virtual threads; MP flavour follows MicroProfile

Helidon

Ecosystem and maturity

5

First release 2018, three majors in five years (latest 27.x), small ecosystem

Helidon

Productivity

5

Not documented on the site; SE favours explicit code, MP adds MicroProfile APIs

Ktor

Ease of use

7

Kotlin DSL and coroutines; concise for Kotlin developers, plugin model to learn

Ktor

Ecosystem and maturity

6

First release 2018, built and backed by JetBrains, smaller plugin ecosystem

Ktor

Productivity

6

Not documented on the site; routing, auth, serialization and test host built in, no ORM or admin

Vert.x

Ease of use

4

Event-loop programming model and reactive APIs need care (never block the loop)

Vert.x

Ecosystem and maturity

7

On Maven Central as io.vertx since 2014, Eclipse Foundation, used underneath Quarkus (concurrency.csv)

Vert.x

Productivity

4

Toolkit rather than framework: assemble modules for web, data and auth

ASP.NET Core

Ease of use

7

Minimal APIs give a small first endpoint; MVC, DI and middleware are well documented; SO 2025 admired 61.3%

ASP.NET Core

Ecosystem and maturity

9

First release 2016, Microsoft, LTS cycles (endoflife.date: 10 LTS to 2028-11-14), five majors in five years

ASP.NET Core

Productivity

9

Feature matrix 9/11 (EF Core, Identity, validation, Razor, OpenAPI, test host, dotnet new, hot reload)

Laravel

Ease of use

8

Convention-heavy with artisan scaffolding and starter kits; SO 2025 admired 47.8%

Laravel

Ecosystem and maturity

9

On Packagist since 2013, yearly majors with support dates on endoflife.date, 120 releases in 12 months, 21,000+ Packagist dependents

Laravel

Productivity

9

Feature matrix 8/11 (Eloquent, auth, validation, queues, Blade, artisan); admin via Nova or third parties

Symfony

Ease of use

5

Flexible components and bundles; configuration and DI concepts take time; SO 2025 admired 50%

Symfony

Ecosystem and maturity

9

On Packagist since 2011, Symfony SAS sponsorship, LTS releases (endoflife.date: 7.4)

Symfony

Productivity

7

Not documented on the site; maker bundle, Doctrine, security, forms, validator and Messenger available as official bundles

CodeIgniter

Ease of use

8

Small footprint, little configuration, straightforward MVC

CodeIgniter

Ecosystem and maturity

6

CodeIgniter 4 on Packagist since 2020, CodeIgniter Foundation, no support policy on endoflife.date

CodeIgniter

Productivity

6

Not documented on the site; query builder, migrations, validation, CLI (spark) built in

CakePHP

Ease of use

7

Convention over configuration with bake scaffolding

CakePHP

Ecosystem and maturity

7

On Packagist since 2014, Cake Software Foundation, 27 releases in 12 months

CakePHP

Productivity

7

Not documented on the site; ORM, migrations, auth plugin, validation and bake

Express

Ease of use

9

Minimal API: a route in a few lines; most concepts are plain Node.js; SO 2025 admired 45.5%, State of JS retention 81.2%

Express

Ecosystem and maturity

8

First release 2010, OpenJS Foundation, one major (5) in five years, highest npm downloads on the page

Express

Productivity

3

Feature matrix 1/11: almost everything comes from third-party middleware

Fastify

Ease of use

8

Small API with schemas and plugins; State of JS retention 86.5%

Fastify

Ecosystem and maturity

7

First release 2016, OpenJS Foundation, 26 releases in 12 months

Fastify

Productivity

6

Feature matrix 5/11 (schema validation, inject testing, official plugins for auth, swagger, views)

NestJS

Ease of use

5

Angular-style modules, decorators and DI before the first endpoint; State of JS retention 73.7%

NestJS

Ecosystem and maturity

7

First release 2017, four majors in five years, many official @nestjs integration packages

NestJS

Productivity

8

Feature matrix 8/11 (validation pipes, queues, Swagger module, testing, CLI, watch mode)

Hono

Ease of use

9

Tiny Web-Standards API that runs unchanged on several runtimes; State of JS retention 95%

Hono

Ecosystem and maturity

5

First release 2021, community project, 66 releases in 12 months

Hono

Productivity

5

Not documented on the site; built-in middleware for validation and JWT; no ORM or scaffolding

Koa

Ease of use

8

Minimal async middleware core

Koa

Ecosystem and maturity

6

First release 2013, 4 releases in 12 months; State of JS retention 64.4%

Koa

Productivity

3

Core only: routing, body parsing and everything else from middleware

AdonisJS

Ease of use

7

Laravel-like conventions in TypeScript with an ace CLI; State of JS retention 79.2%

AdonisJS

Ecosystem and maturity

5

On npm as @adonisjs/core since 2019, 21 releases in 12 months, smaller community

AdonisJS

Productivity

8

Not documented on the site; official packages for ORM, auth, validation, templates, testing and CLI

Django

Ease of use

7

Many built-in concepts (apps, ORM, admin) but excellent tutorial; SO 2025 admired 46.4%

Django

Ecosystem and maturity

10

On PyPI since 2010, Django Software Foundation, LTS releases (endoflife.date: 5.2 LTS)

Django

Productivity

9

Feature matrix 8.5/11 (ORM, admin, auth, forms, templates, tests, manage.py, autoreload)

FastAPI

Ease of use

8

Type hints drive validation and docs; short first endpoint; SO 2025 admired 55.5%

FastAPI

Ecosystem and maturity

6

First release 2018, still 0.x versioning, 123 releases in 12 months

FastAPI

Productivity

8

Feature matrix 7.5/11 (Pydantic validation, automatic OpenAPI, TestClient, fastapi dev)

Flask

Ease of use

9

A route in a few lines; explicit and well documented; SO 2025 admired 41.7%

Flask

Ecosystem and maturity

8

First release 2010, Pallets, one release in 12 months

Flask

Productivity

5

Feature matrix 4/11: Jinja templates, test client and CLI; ORM, auth and validation via extensions

Litestar

Ease of use

6

ASGI with DI, DTOs and plugins; more concepts than FastAPI

Litestar

Ecosystem and maturity

4

2.0 on PyPI in 2023, community organisation, small ecosystem

Litestar

Productivity

7

Not documented on the site; built-in OpenAPI, validation, DTOs, SQLAlchemy plugin, CLI

Sanic

Ease of use

7

Flask-like API with async handlers

Sanic

Ecosystem and maturity

5

First release 2016, Sanic Community Organization, calendar versioning

Sanic

Productivity

5

Not documented on the site; routing, blueprints, CLI and auto-reload; ORM and auth via extensions

Tornado

Ease of use

5

Low-level async request handlers and IOLoop concepts

Tornado

Ecosystem and maturity

6

On PyPI since 2010, The Tornado Authors, no major version in five years

Tornado

Productivity

4

Feature matrix 3.5/11 (templates, test case, autoreload)

axum

Ease of use

5

Rust ownership, async and extractors are a steep start; SO 2025 admired 76.4%

axum

Ecosystem and maturity

6

First release 2021, still 0.x versioning, 3 releases in 12 months

axum

Productivity

4

Feature matrix 1/11: composable extractors and Tower middleware; ORM, auth, OpenAPI from crates

Actix Web

Ease of use

5

Rust plus actor-style workers; macros help, borrow checker still applies

Actix Web

Ecosystem and maturity

6

First release 2017, The Actix Team, one major in five years

Actix Web

Productivity

4

Not documented on the site; routing, extractors, middleware; ORM and validation from crates

Gin

Ease of use

8

Small Go API close to net/http

Gin

Ecosystem and maturity

7

First version on the Go proxy 2016, no major version in five years

Gin

Productivity

4

Not documented on the site; routing, binding and validation, middleware; no ORM or scaffolding

Fiber

Ease of use

8

Express-like API in Go

Fiber

Ecosystem and maturity

5

First release 2020, one major (v3) in five years

Fiber

Productivity

4

Not documented on the site; routing, middleware catalog, templates via contrib

Vapor

Ease of use

5

Swift concurrency, SwiftNIO and Fluent concepts; small community

Vapor

Ecosystem and maturity

5

QuTheory, LLC; release history n/a; Swift on the server is a niche

Vapor

Productivity

8

Feature matrix 8/11 (Fluent ORM, auth, validation, queues, Leaf, XCTVapor, toolbox)

Phoenix

Ease of use

5

Elixir and OTP concepts are new to most teams; SO 2025 admired 79% (most admired)

Phoenix

Ecosystem and maturity

7

First release 2014, stable 1.x line (no major in five years), 20 releases in 12 months

Phoenix

Productivity

9

Not documented on the site; generators, Ecto, LiveView, channels, auth generator, dashboard

Ruby on Rails

Ease of use

8

Convention over configuration and generators; SO 2025 admired 52%

Ruby on Rails

Ecosystem and maturity

9

On RubyGems since 2009, support dates per release (endoflife.date), two majors in five years

Ruby on Rails

Productivity

9

Not documented on the site; Active Record, migrations, auth generator, Active Job, Action Cable, generators

Summary and recommendations

These recommendations are an editorial judgement built on the data above; each cites the metric it relies on. The snapshot date is 2026-10-27, and surveys and downloads change every month, so re-check the numbers before a decision that will last years.

Safe mainstream choices, by language.

  • JVM: Spring Boot. 72% of Java developers use it (JetBrains 2023), 14.7% of all survey respondents (2025), the most complete feature matrix and support dates per minor version. Choose Quarkus when startup time and memory matter (574 ms and 98 MiB native, vendor-reported).

  • .NET: ASP.NET Core. 19.7% survey usage, 61.3% admired, top-tier TechEmpower throughput and LTS releases.

  • Python: Django for full applications, FastAPI for APIs. Django has an admin, ORM and LTS releases; FastAPI doubled its survey share between 2023 and 2025 and generates OpenAPI from type hints.

  • PHP: Laravel. 61% of PHP developers (JetBrains 2023), rising Packagist downloads, yearly majors with dated support.

  • Node.js: NestJS for structured services, Fastify for lean ones (in Node.js). Express (see the Express.js section) remains the most downloaded but provides the least out of the box.

Trends to watch. The growth data support three: FastAPI (survey share 7.42% to 14.8%, 2023 to 2025), Hono (841 million npm downloads in 12 months, 95% State of JS retention) and ASP.NET Core (16.57% to 19.7%). axum and Phoenix are niche (2.8% and 2.4% usage) but the most admired frameworks in the 2025 survey.

Avoid for new projects, keep for legacy maintenance.

  • ASP.NET Web Forms and ASP.NET MVC 5 run on .NET Framework (current cycle 4.8.1 on endoflife.date), not on modern .NET; MVC 5’s last NuGet release is 5.3.0 (2023-10-23) and classic ASP.NET’s survey usage fell from 26.3% (2019) to 14.2% (2025). See choosing an ASP.NET framework.

  • Apache Struts has the fourth-highest advisory count on this page (60) and 1,370 GitHub stars; new Java web applications fit Spring Boot better.

  • J2EE and EJB 2 are historical (their successor is Jakarta EE), and Zend Framework continues as Laminas.

Recommendation by purpose.

Matrix of purposes against frameworks with best, good and acceptable fit cells
Figure 28. Recommendation matrix by purpose. Editorial, based on the data on this page.
Table 19. Recommendation by purpose (editorial, with the data each recommendation relies on)
Purpose Framework Fit Basis

REST/JSON API

Spring Boot

best

mainstream JVM choice; SO 2025 usage 14.7%; full feature matrix

REST/JSON API

ASP.NET Core

best

top TechEmpower fortunes; SO 2025 admired 61.3%

REST/JSON API

FastAPI

best

automatic OpenAPI; fastest Python growth (SO usage 2023 to 2025)

REST/JSON API

NestJS

good

structured TypeScript APIs with OpenAPI module

REST/JSON API

Express

good

largest npm downloads but few built-in features

REST/JSON API

Gin

good

Go baseline for small, fast services

Enterprise or regulated systems

Spring Boot

best

support dates with extended support (endoflife.date)

Enterprise or regulated systems

ASP.NET Core

best

Microsoft LTS (.NET 10 to 2028-11-14)

Enterprise or regulated systems

Quarkus

good

LTS releases (endoflife.date)

Enterprise or regulated systems

Django

good

LTS releases from the Django Software Foundation

High throughput or low latency

ASP.NET Core

best

TechEmpower round 23 fortunes among the highest

High throughput or low latency

axum

good

Rust performance; fortunes n/a in round 23

High throughput or low latency

Quarkus

good

TechEmpower fortunes score 9 of 10 on the page

High throughput or low latency

Fiber

good

TechEmpower fortunes score 8.9 of 10 on the page

Serverless and fast startup

Quarkus

best

native boot and first response 574 ms, RSS 98 MiB (vendor-reported)

Serverless and fast startup

Micronaut

good

native startup 15 ms (vendor-reported, no method)

Serverless and fast startup

ASP.NET Core

good

Native AOT documented on the site

Serverless and fast startup

Hono

good

runs on edge and serverless runtimes

Data and AI APIs in Python

FastAPI

best

Pydantic and OpenAPI; HN 2025 mention share 2.95%

Data and AI APIs in Python

Django

good

admin and ORM for data-heavy back offices

Data and AI APIs in Python

Flask

acceptable

minimal; extensions needed

Real-time

Phoenix

best

channels and LiveView on BEAM processes; SO 2025 most admired (79%)

Real-time

ASP.NET Core

good

SignalR

Real-time

NestJS

good

WebSocket gateways on the Node.js event loop

Real-time

Laravel

good

broadcasting with Reverb

Small teams or MVPs

Ruby on Rails

best

generators and conventions; SO 2025 admired 52%

Small teams or MVPs

Laravel

best

artisan, starter kits and first-party services

Small teams or MVPs

Django

good

admin and auth out of the box

Small teams or MVPs

FastAPI

good

short path to a documented API

Full-stack server-rendered apps

Django

best

templates, forms, admin

Full-stack server-rendered apps

Laravel

best

Blade, Livewire and Inertia

Full-stack server-rendered apps

Ruby on Rails

best

Hotwire by default

Full-stack server-rendered apps

ASP.NET Core

good

Razor Pages and Blazor

Full-stack server-rendered apps

Spring Boot

good

Thymeleaf and htmx

Hiring perspective. The largest talent pools are ASP.NET Core, Express, Spring Boot, FastAPI and Flask (the highest professional survey usage); Ruby on Rails, FastAPI and Django lead the 2025 Hacker News postings. Niche but growing choices (Hono, axum, Phoenix, Litestar) are easier to sell to developers than to staff quickly: plan for training.

The strongest conclusion is the least surprising one: for most teams the right framework is the most used one of the language the team already knows, and the metrics above matter mainly at the edges (startup-sensitive serverless work, extreme throughput, hiring in a small market).

Bibliography

Every number on this page comes from one of the sources below, with its publisher, edition and retrieval date. Captions and tables link to these entries.

The registry of sources is sources.csv in scripts/framework-charts/data, with 62 entries; 47 are used on this page. Every source was opened on 2026-10-27 unless marked otherwise.

Table 20. Data sources used on this page
Source Publisher Edition or date Retrieved Used for

Stack Overflow Developer Survey 2019

Stack Overflow

2019

2026-10-27

Web frameworks usage (all and professional), loved and wanted

Stack Overflow Developer Survey 2020

Stack Overflow

2020

2026-10-27

Web frameworks usage, loved and wanted

Stack Overflow Developer Survey 2021

Stack Overflow

2021

2026-10-27

Web frameworks usage, loved and wanted

Stack Overflow Developer Survey 2022

Stack Overflow

2022

2026-10-27

Web frameworks and technologies usage, loved and wanted

Stack Overflow Developer Survey 2023

Stack Overflow

2023

2026-10-27

Web frameworks and technologies usage, admired and desired

Stack Overflow Developer Survey 2024

Stack Overflow

2024

2026-10-27

Web frameworks and technologies usage, admired and desired

Stack Overflow Developer Survey 2025

Stack Overflow

2025

2026-10-27

Web frameworks and technologies usage, admired and desired (latest edition with a frameworks question); talent pool

State of JavaScript (2016 to 2025 editions)

Devographics

2016-2025

2026-10-27

front-end, meta-framework and back-end framework usage, retention, interest and awareness

The State of Developer Ecosystem 2023 (language pages)

JetBrains

2023 (with 2022 comparison)

2026-10-27

web framework usage within each language community (Java, JavaScript, PHP, Python, Ruby, C#, Go, Scala)

npm download counts API

npm, Inc.

daily ranges 2015-01-10 to 2026-09-30

2026-10-27

monthly npm downloads, 12-month totals

npm public registry

npm, Inc.

2026-10-27

2026-10-27

first and latest versions, publish dates, licences

PyPI Stats API

pypistats.org

last 180 days

2026-10-27

PyPI downloads without mirrors

PyPI JSON API

Python Software Foundation

2026-10-27

2026-10-27

release history and licences

NuGet search API

Microsoft

2026-10-27

2026-10-27

total downloads per package

NuGet package registration API

Microsoft

2026-10-27

2026-10-27

version history and publish dates

Packagist API and download statistics

Packagist

2026-10-27

2026-10-27

monthly average daily downloads, totals, dependents, version history

crates.io API

Rust Foundation

2026-10-27

2026-10-27

downloads (total, 90 days), version history; requests need a User-Agent header

RubyGems.org API

Ruby Central

2026-10-27

2026-10-27

total downloads and version history

Hex.pm API

Hex

2026-10-27

2026-10-27

downloads and version history

Maven Central repository

Sonatype

2026-10-27

2026-10-27

maven-metadata.xml version lists and .pom Last-Modified dates; Maven Central publishes no download counts

Go module proxy

Google

2026-10-27

2026-10-27

module versions and release times (cached from 2019)

Open Source Insights (deps.dev) API

Google

2026-10-27

2026-10-27

GitHub stars, forks, open issues and licence per repository

OpenSSF Scorecard (via deps.dev)

Open Source Security Foundation

2026-08-24 run

2026-10-27

overall score, Security-Policy and Maintained checks

GitHub REST API

GitHub

n/a

2026-10-27

(unverified) refused with HTTP 403 for repositories outside this site; stars over time, contributors and dependents are n/a

OSV.dev vulnerability database API

Google / OpenSSF

2026-10-27

2026-10-27

security advisories per package (includes GitHub Security Advisories, PYSEC, RUSTSEC, Go)

endoflife.date API

endoflife.date

2026-10-27

2026-10-27

release cycles, support and end-of-life dates, LTS

HTTP Archive Core Web Vitals Technology Report API

HTTP Archive

2026-09 crawl

2026-10-27

Core Web Vitals pass rates and adoption (origins) per technology

Usage statistics of JavaScript libraries for websites

W3Techs (Q-Success)

2026-10-27

2026-10-27

share of websites using each JavaScript library

Ask HN: Who is hiring? (monthly threads by whoishiring)

Hacker News (Y Combinator)

2015-01 to 2026-10

2026-10-27

job-posting mention share per framework

Hacker News Search API

Algolia

2026-10-27

2026-10-27

thread discovery and comment trees

Spring Boot vs Quarkus performance comparison (tuned scenario)

Quarkus team (Red Hat)

run of 2026-06-02 (commit 38345ca), shown on quarkus.io

2026-10-27

vendor-reported boot time, RSS and throughput, JIT and native

Micronaut home page

Micronaut Foundation

2026-10-27

2026-10-27

vendor-reported startup and memory, JVM and native

Helidon home page

Oracle

2026-10-27

2026-10-27

vendor-reported startup and memory footprint

ASP.NET Core support for Native AOT

Microsoft

ASP.NET Core 10.0

2026-10-27

checked only: startup and memory are shown as a chart image without numbers

Official websites of each framework (website column of frameworks.csv)

framework projects

2026-10-27

2026-10-27

governance and ownership statements; concurrency-model evidence for undocumented frameworks

This site: framework sections (site_page column)

Irurueta Docs

2026-10-27

2026-10-27

feature, deployment, real-time and concurrency evidence

ASP.NET evolution (this site)

Irurueta Docs

2026-10-27

2026-10-27

Web Forms, MVC and Blazor release years

JSP and Struts: introduction and history (this site)

Irurueta Docs

2026-10-27

2026-10-27

Struts 1 release year

Editorial assessment (this dataset)

Irurueta Docs

2026-10-27

2026-10-27

feature-matrix "no" values and editorial radar axes; rubric in NOTES.md

TechEmpower Framework Benchmarks, round 16

TechEmpower

Round 16 Final Citrine; 2018-06-03; Citrine hardware

2026-10-27

requests per second per test (results/round16/ph.json)

TechEmpower Framework Benchmarks, round 17

TechEmpower

Round 17 Final Citrine; 2018-09-06; Citrine hardware

2026-10-27

requests per second per test (results/round17/ph.json)

TechEmpower Framework Benchmarks, round 18

TechEmpower

Round 18 Citrine; 2019-06-05; Citrine hardware

2026-10-27

requests per second per test (results/round18/ph.json)

TechEmpower Framework Benchmarks, round 19

TechEmpower

Round 19 Citrine; 2020-05-14; Citrine hardware

2026-10-27

requests per second per test (results/round19/ph.json)

TechEmpower Framework Benchmarks, round 20

TechEmpower

Round 20 Citrine; 2021-01-04; Citrine hardware

2026-10-27

requests per second per test (results/round20/ph.json)

TechEmpower Framework Benchmarks, round 21

TechEmpower

Round 21 Citrine; 2022-06-30; Citrine hardware

2026-10-27

requests per second per test (results/round21/ph.json)

TechEmpower Framework Benchmarks, round 22

TechEmpower

Continuous Benchmarking Run 2023-10-11 08:00:48; 2023-10-11; Citrine hardware

2026-10-27

requests per second per test (results/round22/ph.json)

TechEmpower Framework Benchmarks, round 23

TechEmpower

Continuous Benchmarking Run 2025-01-30 18:47:41; 2025-01-30; Citrine hardware

2026-10-27

requests per second per test (results/round23/ph.json); last round, the FrameworkBenchmarks repository is archived

Table 21. Sources listed for the comparison that could not be used (unverified)
Source Publisher Edition or date Retrieved Reason

PyPI downloads public BigQuery dataset

Python Software Foundation

n/a

2026-10-27

(unverified) not queried: requires a Google Cloud project; long-term PyPI history is therefore n/a

pepy.tech PyPI download statistics

pepy.tech

n/a

2026-10-27

(unverified) not used: the API requires a key

OSS Insight API

PingCAP

n/a

2026-10-27

(unverified) repository endpoint returned HTTP 500 and the stargazer history endpoint HTTP 401

National Vulnerability Database

NIST

n/a

2026-10-27

(unverified) returned HTTP 403; CVE ids come from OSV aliases

Internet Archive Wayback Machine

Internet Archive

n/a

2026-10-27

(unverified) not reachable from the authoring environment