Payload is code-first, while Directus is GUI-based. Directus describes itself as an open data platform, similar to how database clients like PHPMyAdmin work, while Payload is a purpose-built developer-first headless CMS that features CMS-specific features like future versions, block-based layout editor, preview, and more.
Directus uses TinyMCE, which stores content as a string of HTML. Payload provides 2 editor options - Slate or Lexical. Both editors store the rich text as JSON, which is extremely powerful and allows you to build custom elements directly into the Payload rich text editor with ease. Embed YouTube videos, add custom text treatments and effects, reference other documents, and embed media dynamically.
More Features
01
Payload's Admin UI is built with React, and you can easily swap out components with your own React components. Directus is built with Vue, which is significantly less popular and well-known.
02
Payload features a local Node API, which allows you to perform operations directly on your server, with no HTTP layer required. Directus's SDK relies on Axios to interact, which is significantly slower and less powerful.
03
Payload features deep field-based localization support. Maintaining as many locales as you need is easy. Only need to localize a few fields? No problem, all other fields will use your fallback locale.
04
Payload allows bringing your own Express server. It is passed through Payload but is still accessible to use how a developer would expect afterwards.
05
Both document and field-level hooks expose a ton of potential. Customize output, sanitize incoming data, or easily integrate with third-party platforms. A truly-powerful pattern.
06
Payload gives you the choice of MongoDB or Postgres, both allow for a flexible document structure which is perfect for CMS-type applications.
Directus provides only one SQL-based database option which requires overhead like migrations and more.
Simple Concepts
Payload gives you everything you need, but then steps back and lets you build what you want in JavaScript or TypeScript - with no unnecessary complexity brought by GUIs. However, Directus abstracts away a lot of its inner-workings into a black box and makes it much more difficult for a developer to understand what is happening—and why.
Open-ended access control
Directus only supports role-based access control (RBAC) which limits you to only being able to control who can perform which actions to your data. However, Payload supports function-based access control which can be used on either a document or field-by-field basis to build any type of control that you can think of.
Payload vs. Directus
We put in the work to give both a fair shake, and then we wrote a blog post about it. We think you should read it.