Tables
Ordinary GFM table syntax maps to Slack's two table blocks by size:
| Table shape | Becomes |
|---|---|
| ≤ 50 rows (incl. header), ≤ 20 columns | table block |
| ≤ 200 data rows, ≤ 20 columns | data_table block (paginated, 5 rows per page) |
| > 200 data rows | data_table with the first 200 data rows + a degradation |
| > 20 columns | Pipe-syntax markdown block, else preformatted text |
Column alignment (:---:) carries into the native block, columns with long
cells wrap automatically, and a data_table takes its caption from the nearest
preceding heading. Cells run through the full inline pipeline, so mentions,
emoji, links, and styling work inside table cells; purely numeric cells become
typed number cells.
| Region | Errors | Owner | | --- | ---: | --- | | us-east-1 | 412 | <@U0123456789> | | eu-west-1 | 17 | <@U0123456780> |
Block Kit JSON
…
Past 50 rows the block changes. Here is the same markdown with 56 data rows, which Slack
renders as a paginated data_table with a caption lifted from the heading above it:
### Error budget by region | Region | Errors | p95 | | --- | ---: | ---: | | us-east-1-01 | 5 | 120 | | eu-west-1-02 | 42 | 173 | | ap-south-1-03 | 79 | 226 | | eu-central-1-04 | 116 | 279 | | us-west-2-05 | 153 | 332 | | sa-east-1-06 | 190 | 385 | | ap-northeast-1-07 | 227 | 138 | | us-east-1-08 | 264 | 191 | | eu-west-1-09 | 301 | 244 | | ap-south-1-10 | 338 | 297 | | eu-central-1-11 | 375 | 350 | | us-west-2-12 | 12 | 403 | | sa-east-1-13 | 49 | 156 | | ap-northeast-1-14 | 86 | 209 | | us-east-1-15 | 123 | 262 | | eu-west-1-16 | 160 | 315 | | ap-south-1-17 | 197 | 368 | | eu-central-1-18 | 234 | 121 | | us-west-2-19 | 271 | 174 | | sa-east-1-20 | 308 | 227 | | ap-northeast-1-21 | 345 | 280 | | us-east-1-22 | 382 | 333 | | eu-west-1-23 | 19 | 386 | | ap-south-1-24 | 56 | 139 | | eu-central-1-25 | 93 | 192 | | us-west-2-26 | 130 | 245 | | sa-east-1-27 | 167 | 298 | | ap-northeast-1-28 | 204 | 351 | | us-east-1-29 | 241 | 404 | | eu-west-1-30 | 278 | 157 | | ap-south-1-31 | 315 | 210 | | eu-central-1-32 | 352 | 263 | | us-west-2-33 | 389 | 316 | | sa-east-1-34 | 26 | 369 | | ap-northeast-1-35 | 63 | 122 | | us-east-1-36 | 100 | 175 | | eu-west-1-37 | 137 | 228 | | ap-south-1-38 | 174 | 281 | | eu-central-1-39 | 211 | 334 | | us-west-2-40 | 248 | 387 | | sa-east-1-41 | 285 | 140 | | ap-northeast-1-42 | 322 | 193 | | us-east-1-43 | 359 | 246 | | eu-west-1-44 | 396 | 299 | | ap-south-1-45 | 33 | 352 | | eu-central-1-46 | 70 | 405 | | us-west-2-47 | 107 | 158 | | sa-east-1-48 | 144 | 211 | | ap-northeast-1-49 | 181 | 264 | | us-east-1-50 | 218 | 317 | | eu-west-1-51 | 255 | 370 | | ap-south-1-52 | 292 | 123 | | eu-central-1-53 | 329 | 176 | | us-west-2-54 | 366 | 229 | | sa-east-1-55 | 403 | 282 | | ap-northeast-1-56 | 40 | 335 |
Block Kit JSON
…
Ragged rows are normalized the way GFM specifies: short rows are padded and extra cells are dropped, each with a degradation. Malformed model output cannot produce a misaligned table.