---
title: "insertDefaultBlock command"
description: "Use the insertDefaultBlock command in Tiptap to insert the schema's default block at a position. More in the docs!"
canonical_url: "https://tiptap.dev/docs/editor/api/commands/nodes-and-marks/insert-default-block"
---

# insertDefaultBlock command

Use the insertDefaultBlock command in Tiptap to insert the schema's default block at a position. More in the docs!

The `insertDefaultBlock` command inserts the schema's default content block type at a given position. The block type is determined automatically using `defaultBlockAt()`, so the schema decides what fits at the insertion point.

This is useful for inserting context-aware empty blocks, for example, inserting a paragraph inside a document or a blockquote — without hardcoding the node type.

The command returns `false` when no valid default block can be inserted at the position (e.g., when the position is inside a textblock). It does not silently reposition.

## Parameters

`options: InsertDefaultBlockOptions`

- `pos: number | ResolvedPos` – Position to insert the block at. Accepts a numeric offset or a resolved ProseMirror position. Defaults to the current caret position.
- `attrs: Record<string, any>` – Attributes to apply to the inserted node. Only keys defined in the node type's `spec.attrs` are kept; unknown attributes are filtered out.
- `content: Content | ProseMirrorNode | Fragment` – Content to insert into the block. Accepts plain text, an HTML string, or a ProseMirror node/fragment.
- `updateSelection: boolean` – Whether to move the selection to the newly inserted block. Defaults to `true`.

## Use the insertDefaultBlock command

```js
// Insert at the current selection position
editor.commands.insertDefaultBlock()

// Insert at a specific position
editor.commands.insertDefaultBlock({ pos: 0 })

// Insert with text content
editor.commands.insertDefaultBlock({ pos: 0, content: 'Hello' })

// Insert with HTML content
editor.commands.insertDefaultBlock({ pos: 0, content: '<strong>bold</strong>' })

// Insert a heading (when heading is the default block at that position)
editor.commands.insertDefaultBlock({ pos: 0, attrs: { level: 2 }, content: 'Title' })

// Insert without updating the selection
editor.commands.insertDefaultBlock({ pos: 0, content: 'Hello', updateSelection: false })
```
