SEE IT BEFORE YOU SEND IT
Slack Block Kit preview.
Paste your JSON. See the message. Catch the small things.
A free Block Kit previewer and validator, right in your browser.
Paste a blocks array or a full message payload. Preview updates as you type.
Approximate Slack rendering. Buttons are visual previews; no actions are sent.
Local validation checks the supported schema. It does not guarantee Slack API acceptance.
Manual editing and validation run in your browser. Opening Slack’s Builder shares the message with Slack.
Fallback textNotifications & screen readers
✓ Deployment successful The new checkout is live. Health checks passed across all production instances. Service: checkout-api Version: v2.8.1 · a4e91c2 Environment: Production Deployed by: Maya Chen Completed in 2m 14s · 20 Oct 2026, 14:32 UTC View deployment: https://example.com/deployments/1842 Rollback runbook: https://example.com/runbooks/checkout-rollback
Send with curlIncoming webhook example
Download the payload or use this command in your own terminal. Replace the placeholder URL with your Slack incoming webhook. Keep the real URL secret. This tool never sends a Slack message.
curl --request POST \
--header 'Content-Type: application/json' \
--data-binary @- \
'https://hooks.slack.com/services/YOUR/WEBHOOK/URL' <<'SLACK_MESSAGE_JSON'
{
"text": "✓ Deployment successful\nThe new checkout is live. Health checks passed across all production instances.\nService: checkout-api\nVersion: v2.8.1 · a4e91c2\nEnvironment: Production\nDeployed by: Maya Chen\nCompleted in 2m 14s · 20 Oct 2026, 14:32 UTC\nView deployment: https://example.com/deployments/1842\nRollback runbook: https://example.com/runbooks/checkout-rollback",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "✓ Deployment successful"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "The new checkout is live. Health checks passed across all production instances."
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Service*\ncheckout-api"
},
{
"type": "mrkdwn",
"text": "*Version*\nv2.8.1 · a4e91c2"
},
{
"type": "mrkdwn",
"text": "*Environment*\nProduction"
},
{
"type": "mrkdwn",
"text": "*Deployed by*\nMaya Chen"
}
]
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Completed in 2m 14s · 20 Oct 2026, 14:32 UTC"
}
]
},
{
"type": "divider"
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "View deployment"
},
"action_id": "logs",
"url": "https://example.com/deployments/1842",
"style": "primary"
},
{
"type": "button",
"text": {
"type": "plain_text",
"text": "Rollback runbook"
},
"action_id": "runbook",
"url": "https://example.com/runbooks/checkout-rollback"
}
]
}
]
}
SLACK_MESSAGE_JSONReal Block Kit. Useful boundaries.
Preview headers, sections with two-column fields, context, dividers, images, and actions with buttons. Text supports plain text and common Slack mrkdwn: bold, italic, strikethrough, code, quotes, and labeled links.
Unsupported blocks, elements, and properties are called out and preserved in your JSON. Menus, rich text, modals, private Slack files, confirmation dialogs, and application workflows are outside this preview’s coverage. Mentions and dates are not resolved against a workspace.
Check the details before you send
The validator checks the message shape, required fields, placement, identifiers, URLs, the 50-block limit, and supported text limits. Errors include the JSON path and a suggested fix.
Slack clients may render spacing, emoji, and wrapping differently. Local validation cannot guarantee API acceptance. Use Slack’s Block Kit reference and test your integration in a suitable channel.
Preview privately, export deliberately
Manual preview and validation run in your browser. Drafts are saved in this tab’s session storage. Remote images load only when enabled. AI generation sends your submitted instructions and current message to OpenAI; opening Slack’s Builder shares the payload with Slack.