Skip to content

Build beautiful
block-based editors

A production-ready, extensible rich text editor that brings Notion-like block-based editing to your app. Customizable, themeable, and battle-tested.

Built for developers,designed for users

Everything you need to ship a modern block editor: clean JSON, a full block library, and a deep, typed API.

Drop Blok intoyour stack

A framework-agnostic core with a fully typed API, first-class React, Vue, and Angular adapters, and a zero-build CDN script. Pick whichever fits your project.

Point Blok at any DOM node and go. Fully typed, no framework needed.

JavaScript
import { Blok, defaultTools } from '@bloklabs/core/full';

new Blok({
  holder: 'editor',
  tools: defaultTools,
});

The useBlok hook owns the editor lifecycle; <BlokContent> mounts it. React 18 and 19.

JSX
import { useBlok, BlokContent } from '@bloklabs/react';
import { defaultTools } from '@bloklabs/core/full';

function Editor() {
  const editor = useBlok({ tools: defaultTools });
  return <BlokContent editor={editor} />;
}

Same shape as React: useBlok drives the editor, <BlokContent> mounts it. Vue 3.5+.

Vue
<script setup>
import { useBlok, BlokContent } from '@bloklabs/vue';
import { defaultTools } from '@bloklabs/core/full';

const editor = useBlok({ tools: defaultTools });
</script>

<template>
  <BlokContent :editor="editor" />
</template>

Add <blok-editor> and bind your tools. Standalone component, Angular 20–22.

TypeScript
import { Component } from '@angular/core';
import { BlokEditorComponent } from '@bloklabs/angular';
import { defaultTools } from '@bloklabs/core/full';

@Component({
  selector: 'app-editor',
  standalone: true,
  imports: [BlokEditorComponent],
  template: `<blok-editor [tools]="tools" />`,
})
export class EditorComponent {
  tools = defaultTools;
}

Add one script tag and use the BlokEditor global. Good for prototypes and no-build pages.

HTML
<div id="editor"></div>
<script src="https://unpkg.com/@bloklabs/core@1.10.0/dist/blok.iife.js"></script>
<script>
  new BlokEditor.Blok({
    holder: 'editor',
    tools: BlokEditor.defaultTools,
  });
</script>

Why Blokover the alternatives

Most editors hand you a bare core and a long plugin shopping list. Blok comes with the batteries included: typed JSON output, a full block library, and a deep API, all working out of the box.

CapabilityBlokEditor.jsTipTapLexical
Output formatTyped JSONJSONHTML / JSONJSON
Everything is a blockFlatNodesNodes
Built-in blocks20 built-inParagraph onlyBasics onlyPrimitives
Markdown supportBuilt-inPluginAdd-onAdd-on
TypeScript-first
Framework adaptersReact / Vue / AngularCommunityReact / Vue / SvelteReact
i18n & RTL69 localesManualManualManual
AccessibilityBuilt-inLimitedDIYFirst-class

Companies that trust us

Global QSR leader

Blok powers the internal knowledge base behind one of the world's largest pizza chains. Thousands of authors, one block model.

  • 25+Countries served
  • 1,800+Stores worldwide

Bringing Blok to your team?

We'll help you set it up and adapt it to exactly what you need.

Migrate from EditorJS

Already using EditorJS? Our automated codemod handles most of the transition — just run it, review the changes, and ship.