Open-source project
sequelize/sequelize avatar
sequelize/sequelize

Sequelize: a Node.js ORM that spans nine database engines

Feature-rich ORM for modern Node.js and TypeScript, it supports PostgreSQL (with JSON and JSONB support), MySQL, MariaDB, SQLite, MS SQL Server, Snowflake, Oracle DB, DB2 and DB2 for IBM i.

30,363 stars4,342 forksTypeScriptMIT

At a glance

What is it?
Sequelize is a promise-based ORM for Node.js and TypeScript covering Postgres, MySQL, MariaDB, SQLite, DB2, SQL Server, Snowflake, Oracle and Db2 for IBM i. The stable line is v6, the next major version is still in alpha, and the repository is openly asking for maintainers to finish it.
Who is it for?
Adopt Sequelize 6 if you need one ORM across several engines, particularly the less common ones such as DB2, Snowflake or Db2 for IBM i, and you can accept the v6 API. Do not start a new project on v7.0.0-alpha unless you are prepared to track an alpha and possibly contribute fixes, because the README states the project is seeking maintainers to finalize and release that major version.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem Sequelize solves: one model layer across nine engines

Node.js applications that talk to more than one database usually end up with a query builder or a hand-written data layer per engine. Sequelize takes the other route. The README describes it as a promise-based ORM for Postgres, MySQL, MariaDB, SQLite, DB2, Microsoft SQL Server, Snowflake, Oracle DB and Db2 for IBM i, which is an unusually wide list for a single JavaScript library. The intended reader is a team that wants model definitions, associations and transactions written once and pointed at a different dialect through configuration. The Postgres entry is called out specifically for JSON and JSONB support, which matters if your schema stores semi-structured documents next to relational rows. Sequelize is not aimed at teams who want raw SQL and nothing else, and it is not a query builder in the Knex sense: the unit of work here is a model and its associations, not a chain of clauses. If your application only ever touches one engine and you are comfortable writing SQL, the abstraction cost buys you little.

Models, associations, eager and lazy loading: the mechanism

The README lists the core feature set in one sentence: transaction support, relations, eager and lazy loading, and read replication. Those four describe the data flow. You declare models that map to tables, declare associations between them, and then load related rows either eagerly in the same query or lazily on access. Read replication means the connection layer can separate reads from writes, so a primary handles mutations and replicas serve queries. Transactions are exposed as a first-class concept rather than something you bolt on, which is the part that most affects application structure: a unit of work that spans several model operations can be wrapped so that a failure rolls the whole set back. The repository is written in TypeScript, and the README points readers at separate getting-started guides for v6 and v7 rather than a single one, which tells you the API surface differs between the two lines. Anything beyond that, such as how the query generator builds SQL per dialect, is not described in the supplied material and I cannot confirm it from here.

Installing and pointing Sequelize at a database

The README does not include an install command or a connection snippet. It sends you to sequelize.org, with distinct getting-started pages for v6 (described as stable) and v7 (described as alpha). What the README does give you is the package identity: the npm badge in the header points at @sequelize/core, not the older unscoped sequelize name, so that is the package to check first in your registry. The practical steps the material supports are these. Choose a line: v6 for stable, v7 if you accept alpha. Read the matching getting-started guide, since the two differ. Then read the upgrade guide for your path, either v5 to v6 or v6 to v7, both linked from the README under the major version changelog. Before wiring anything up, open the Databases Compatibility Table at sequelize.org/releases and confirm your engine and version are listed, because a nine-engine claim does not mean every engine is supported at every server version. The CLI lives in a separate repository, sequelize/cli, so migrations and seed tooling are a second dependency rather than part of the core package.

The v6 stable line and the v7 alpha that is not finished

This is the constraint that should drive most adoption decisions. The most recent v6 release listed is v6.37.8, dated 2026-03-07, and the README calls v6 the stable line. The v7 releases listed are v7.0.0-alpha.47 and v7.0.0-alpha.48, dated 2025-10-25 and 2026-02-04. Alpha in the version string is not decoration; it means the API can still move between builds, and the README's own request for maintainers says the goal is to finalize and release the next major version, which is an admission that v7 is not finished. A team that builds on v7 today is building on a moving target and may need to patch it themselves. That is not a reason to avoid Sequelize, but it is a reason to write your data layer against v6 unless you have a specific need that only v7 addresses. The upgrade guide for v6 to v7 exists, so the migration path is documented, but the destination is still alpha.

Maintainer funding and what the open maintainer call means

The README opens with a request for new maintainers, and it is specific about the terms. The project distributes $2,500 per quarter among maintainers, with additional funds set aside for full-time contributions. The stated work is finalizing and releasing the next major version, improving TypeScript support and database integrations, and fixing critical issues. Contact is through the project Slack, reaching @WikiRik or @sdepold. Read that as a signal about capacity rather than a red flag about intent: the project is funded through OpenCollective, has a governance path for paying contributors, and has named the exact task it needs help with. For an adopter, the practical consequence is that issue and pull request throughput on v7 depends on who shows up. If your organisation depends on a fix in the alpha line, contributing it may be faster than waiting. The funding pool is shared among core maintainers based on contributions, according to the README.

Where Sequelize is the wrong tool

Two cases stand out. The first is a single-engine application with a small schema. If you are on Postgres only and your queries are straightforward, the ORM layer adds a mapping you have to maintain and a dialect abstraction you never use. A driver plus a query builder, or plain SQL with a typed result mapper, gives you the database's own features without translation. The second case is anything that depends on engine-specific behaviour the ORM does not model. Sequelize's value is the common denominator across nine engines; the cost of that common denominator is that features unique to one engine are either exposed through escape hatches or not at all. The README calls out JSON and JSONB for Postgres, which suggests the project does surface some engine-specific types, but it says nothing about, for example, Postgres extensions or vendor-specific indexing strategies. If your design leans on those, verify against the compatibility table and the v6 documentation before assuming coverage. A third, softer case: teams that cannot tolerate an alpha in their dependency tree should stay on v6 and treat v7 as a future migration, not a current option.

Alternatives and the actual difference in approach

The README itself points at two adjacent tools, which is useful because they are not competitors in the same sense. graphql-sequelize sits on top of Sequelize to expose models through a GraphQL schema, so it is an extension rather than a replacement. sequelize-cockroachdb and sequelize-yugabytedb are dialect packages for engines outside the core list, which tells you the core library's nine-engine coverage is extended by separate repositories rather than by configuration alone. For a genuine alternative, the meaningful contrast is with a query builder such as Knex: a query builder gives you a composable SQL construction API and leaves mapping rows to objects to you, while Sequelize gives you models, associations and transactions and generates the SQL. The trade is control versus structure. A query builder will not fight you when you need an unusual query; an ORM will give you identity, associations and unit-of-work semantics that you would otherwise write by hand. Neither is better in the abstract. If your application is mostly CRUD over related tables, the ORM earns its place. If it is mostly analytical queries with wide joins and window functions, the query builder is the shorter path.

Licence, upgrade cost and what to verify before adopting

Sequelize is MIT licensed, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are retained. That is a permissive licence with no copyleft obligation on your application code, but it is your legal team's call, not mine. The upgrade cost is the part worth budgeting. The README links two upgrade guides, v5 to v6 and v6 to v7, which means the project has shipped at least two breaking major transitions and documented them. A major upgrade is not a version bump you schedule on a Friday; it is a migration with an API diff to work through, and the v7 target is still alpha. The maintenance cost on the current stable line is low: v6.37.8 is a patch release on a mature series. The maintenance cost on v7 is whatever it takes to keep pace with an alpha, plus the possibility that you contribute the fix yourself. Before you commit, do three things that the material actually supports: open the Databases Compatibility Table at sequelize.org/releases and confirm your engine and server version, read the getting-started guide for the line you intend to use rather than assuming the two are interchangeable, and decide deliberately between @sequelize/core and the package name your existing dependency policy references.

Editorial conclusion

Adopt Sequelize 6 if you need one ORM across several engines, particularly the less common ones such as DB2, Snowflake or Db2 for IBM i, and you can accept the v6 API. Do not start a new project on v7.0.0-alpha unless you are prepared to track an alpha and possibly contribute fixes, because the README states the project is seeking maintainers to finalize and release that major version. Before committing, read the v6 to v7 upgrade guide on sequelize.org, confirm your target engine appears in the Databases Compatibility Table, and check whether @sequelize/core or the older sequelize package name is the one your dependency policy expects.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. sequelize/sequelize on GitHub
Community notes

Community notes