scope
Defines whether a header applies to a row, column or group.
Learn scope, colspan, rowspan, headers as part of the HTML attribute system: what they configure, where they belong and which mistakes to avoid.
Tables
Tables are for structured data. Attributes such as scope, colspan, rowspan and headers help explain how cells relate to headings.
These attributes matter most when tables become complex. A simple table may need only th and scope. A complex table may need more explicit relationships.
scope, colspan, rowspan, headers. Attributes for data relationships inside real tables. What belongs here
scopeDefines whether a header applies to a row, column or group.
colspanMakes a cell span multiple columns.
rowspanMakes a cell span multiple rows.
headersConnects a data cell to one or more header ids.
Syntax in context
Use scope for clear header direction. Use spanning only when the data structure needs it.
<table> <tr><th scope="col">Course</th><th scope="col">Level</th></tr> <tr><td>HTML</td><td>Beginner</td></tr> </table>
Good versus weak
<table> <tr><th scope="col">Course</th><th scope="col">Level</th></tr> <tr><td>HTML</td><td>Beginner</td></tr> </table>
<table> <tr><td><b>Course</b></td><td><b>Level</b></td></tr> <tr><td colspan="9">HTML beginner</td></tr> </table>
HTML quick reference
Use these patterns when you need the syntax quickly. Each example has its own anchor, so search engines and readers can land directly on the exact pattern instead of only at the top of the lesson.
A clean version of the markup from this lesson. Use it when you need the correct HTML shape quickly.
<table> <tr><th scope="col">Course</th><th scope="col">Level</th></tr> <tr><td>HTML</td><td>Beginner</td></tr> </table>
Meaningful markup that stays understandable before CSS and JavaScript are added.
The starting point from the practice lab. Change the HTML first, then use CSS only for presentation.
<main class="demo-card"> <table> <caption>Lesson plan</caption> <tr><th scope="col">Topic</th><th scope="col">Status</th></tr> <tr><td>HTML attributes</td><td>In progress</td></tr> </table> </main> <style> * { box-sizing: border-box; } body { min-height: 100vh; margin: 0; display: grid; place-content: center; padding: 24px; font-family: system-ui, sans-serif; background: #07111f; color: #ffffff; } .demo-card { width: min(760px, calc(100vw - 48px)); border-radius: 24px; padding: 28px; background: rgba(8, 12, 20, 0.94); border: 1px solid rgba(140, 255, 193, 0.26); box-shadow: 0 24px 80px rgba(0, 0, 0, 0.32); } .content-panel { margin-top: 18px; border-radius: 18px; padding: 18px; background: rgba(255, 255, 255, 0.06); } .muted-card { color: #b8c4d6; } .label, caption { color: #8cffc1; font-size: 12px; font-weight: 900; letter-spacing: 0.16em; text-transform: uppercase; } h1, h2, strong { color: #8cffc1; } p, li, dd, figcaption { color: #d6deec; line-height: 1.65; } a { color: #62d5ff; font-weight: 800; } img, iframe, video, svg { max-width: 100%; border-radius: 18px; } iframe { width: 100%; min-height: 180px; border: 1px solid rgba(255,255,255,0.16); } label { display: block; margin-top: 14px; color: #d6deec; font-weight: 800; } input, button { display: block; width: 100%; margin-top: 8px; border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.16); padding: 12px 14px; font: inherit; } button { margin-top: 16px; border: 0; background: #8cffc1; color: #07111f; font-weight: 900; cursor: pointer; } button:disabled { opacity: 0.56; cursor: not-allowed; } table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid rgba(255, 255, 255, 0.16); padding: 12px 14px; } </style>
A complete practice snippet that shows how the HTML behaves in context.
A weak pattern from the lesson. Use it as a warning sign when reviewing real pages.
<table> <tr><td><b>Course</b></td><td><b>Level</b></td></tr> <tr><td colspan="9">HTML beginner</td></tr> </table>
A recognizable mistake you can search for and refactor.
Rules that matter
Bold td cells are not table headers.
scope="col" or scope="row" clarifies direction.
Spanning cells can make tables harder to understand.
Tables are for data, not page grids.
Use CSS instead of old presentational attributes such as border, cellpadding and cellspacing.
Production thinking
Attributes are small, but they change how an element works. A good attribute can make a link usable, an image understandable, a form easier to complete or a script safer to load.
Correct table attributes let assistive technology announce row and column relationships while reading data cells.
Tables often hold pricing, reports or comparison data. Structure matters because users scan them quickly.
Live code lab
Edit the HTML or CSS, then use Run to refresh the preview. The preview is isolated, so links and forms stay inside this practice area.
Mini assignment
Practice assignment
Try it yourself
Self-check
Do not only read this page. Answer these questions out loud or write the answers in your own notes. If one answer feels vague, revisit the examples before moving on.