Blocks are the basic units we use to build pages on the modern web. They are rectangular sections that contain a set of features and functions. They are sometimes also called components or widgets.
Each block has a type that determines the kind of data it can display and edit. You're probably familiar with the most common block types such as paragraph, header, image, list, and table. Some block types have more advanced interactive features such as filtering, search, and sorting.
There are an infinite number of possible block types. One goal of the Block Protocol is to encourage developers to build and share brand new types of blocks that haven't been seen before, and for applications to offer users far more blocks than any one team could imagine or build.
From a developer perspective, blocks encapsulate a set of specific functionality. Building a block is no different to writing a React, Vue, or Web Component – in fact, these are all ways you might implement a block. They are reusable elements that expect certain data to be passed to them (what we refer to as a block’s ‘schema’). For example, an image block might only accept an image URL in its
src property, not a number.
Any block can become a Þ block by meeting the requirements defined in the specification. These requirements define what data a block can accept and how they're allowed to interact with that data. This standardized approach makes it possible to use and embed Þ blocks across any different kind of web application, provided it supports the protocol.
Þ blocks can read and write data to the applications they're embedded inside without any extra setup or custom integrations (as long as both the block and embedding application adhere to the specification).
The Block Protocol is free to use.
As a user, discover the applications in which you can use Þ blocks today.
As a block developer, learn how to create a block.
Or, if you have your own block-based application, allow your users to tap into the power of the Þ blocks by implementing the protocol.