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 stores its 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.
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.
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.
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.
Payload allows bringing your own Express server. It is passed through Payload but is still accessible to use how a developer would expect afterwards.
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.
Payload uses MongoDB which allows for a flexible document structure which is perfect for CMS-type applications. However, Directus is SQL-based which requires overhead like migrations and more.
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.