Slack Block Kit Builder
Assemble a Slack message from stackable blocks (header, section, divider, context and image) with a live preview, then copy the Block Kit JSON. It works with Incoming Webhooks and chat.postMessage, and runs entirely in your browser with no login.
The preview approximates Slack’s rendering. For a pixel-exact check, paste the JSON into Slack’s official Block Kit Builder.
Copy-ready message payload
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "New deployment :rocket:",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Build #128* finished in _2m 14s_.\nView the run <https://example.com/run|here> or check the `main` branch."
}
}
]
}This { "blocks": [ … ] } payload works with Slack Incoming Webhooks and chat.postMessage. You can also paste it straight into Slack’s official Block Kit Builder to preview it exactly.
Block Kit block types
A Block Kit message is a JSON array of blocks. These are the main block types Slack renders. A single message can hold up to 50 blocks (100 in modals and the App Home).
| Block | Purpose |
|---|---|
section | The workhorse block: mrkdwn or plain text, optional fields and an accessory element. |
header | A large plain-text title at the top of a message. |
divider | A thin horizontal rule that separates content. No text. |
image | A standalone image with an image_url and alt_text. |
context | A small, muted line mixing images and mrkdwn, e.g. captions or metadata. |
actions | A row of interactive elements: buttons, select menus, date pickers. |
input | A form field, used mainly in modals to collect user input. |
Slack Block Kit builder FAQ
What is Slack Block Kit?+
Block Kit is Slack’s framework for building richly formatted messages out of stackable “blocks”: headers, sections, dividers, context lines and images. Instead of a plain string, you send a JSON array of blocks and Slack renders each one. This builder lets you assemble that array visually and copies the finished JSON for you.
How do I send Block Kit JSON?+
Two common ways. For an Incoming Webhook, POST the payload as the JSON body (Content-Type: application/json) to your webhook URL. The { "blocks": [ … ] } object is the whole body. For the Web API, call chat.postMessage with a channel plus the same blocks array. Bots and automation tools like n8n, Zapier or GitHub Actions accept the identical structure.
Can I preview it in Slack?+
Yes. The live preview here approximates how Slack renders your blocks, but for a pixel-exact check copy the JSON and paste it into Slack’s official Block Kit Builder (app.slack.com/block-kit-builder). It accepts the same payload and shows the real rendering plus any validation errors.
Is it free?+
Completely free with no login, no account and no limits. Everything runs locally in your browser, so nothing you type is sent to a server.
Related tools
All tools →More in Slack Tools.

