HTML start Attribute

Beginner
⏱️ 5 min read
📚 Updated: Jun 2026
🎯 3 Examples
Lists & Numbering

Introduction

The start attribute is used with ordered lists (<ol>) to specify the starting value of the list. By default, every ordered list begins numbering at 1. With start, you can begin at any valid integer—useful when continuing a list across sections, matching document chapter numbers, or resuming steps in a tutorial.

This attribute gives you flexible control over list numbering without manually typing numbers into each list item.

What You’ll Learn

01

<ol> only

Ordered lists.

02

Integer value

First marker.

03

Continue lists

Split sections.

04

type pairing

1, a, A, i, I.

05

JavaScript

ol.start property.

06

reversed

Countdown lists.

Purpose of start

The primary purpose of the start attribute is to define the starting value of an ordered list. By default, ordered lists start at 1, but start lets you set a different initial number.

This is especially helpful when you combine multiple lists or need a specific sequence for your list items—for example, continuing step 6 after a paragraph break, or aligning list markers with chapter numbers in a long document.

💡
Semantic HTML wins

Prefer start on a real <ol> over hard-coding numbers inside <li> text. Screen readers and search engines understand true list structure, and browsers handle the markers for you.

📝 Syntax

Add start to an <ol> with a valid integer:

start.html
<ol start="5">
  <li>Item 5</li>
  <li>Item 6</li>
  <li>Item 7</li>
</ol>

Syntax Rules

  • Valid only on <ol> (not on <ul> or <li>).
  • Value must be a valid integer (positive, zero, or negative).
  • Default when omitted: 1.
  • Works with type (1, a, A, i, I) on the same element.
  • Works with the boolean reversed attribute for descending order.
  • IDL property: HTMLOListElement.start.

💎 Values

The start attribute accepts an integer that determines where numbering begins. The value represents the number of the first <li> in that list:

  • start="1" — Default behavior (same as omitting the attribute).
  • start="3" — First item displays as 3, then 4, 5, and so on.
  • start="10" — Useful for continuing a long tutorial or document outline.
  • start="0" or negative values — Valid per HTML; rarely used but supported.
start-values.html
<ol start="5">
  <li>Item 5</li>
  <li>Item 6</li>
  <li>Item 7</li>
</ol>

How It Works

In this example, the ordered list starts at 5 instead of the default 1. The browser increments the marker for each subsequent <li> automatically.

⚡ Quick Reference

TopicDetailExample
Element<ol> onlyOrdered list
ValueValid integerstart="3"
Default1Omit attribute
With typeDisplay formattype="A" start="3" → C
JavaScriptol.startDynamic updates
reversedDescending orderreversed start="5"

Applicable Elements

ElementSupported?Notes
<ol>YesOnly element with start
<ul>NoUnordered lists use bullets, not numbers
<li>NoSet start on the parent ol
<menu>NoUse ol for numbered sequences

start vs manual numbering vs CSS counters

ApproachProsCons
start on olSemantic, accessible, simpleOnly affects one list element
Numbers in li textQuick for one-off casesNot a real list; bad for a11y/SEO
CSS counter-resetFull styling controlMore complex; loses native list semantics if misused
Single long olAutomatic continuous numberingHard to split across layout sections

Examples Gallery

Basic start on ol, a full document outline, dynamic JavaScript updates, and continuing numbering across two lists.

👀 Live Preview

An ordered list that begins at 5 instead of 1:

  1. Fifth step
  2. Sixth step
  3. Seventh step

Markers show 5, 6, 7 while the list items themselves contain only the step text.

Example — start on ordered list

Set the first marker to 5:

start.html
<ol start="5">
  <li>Item 5</li>
  <li>Item 6</li>
  <li>Item 7</li>
</ol>

How It Works

The browser renders markers 5, 6, and 7. You do not need to repeat the numbers inside each <li>.

Example — document outline

Start a chapter section at step 3:

outline.html
<ol start="3">
  <li>Introduction</li>
  <li>Background</li>
  <li>Main Content</li>
  <li>Conclusion</li>
</ol>
Try It Yourself

How It Works

In this case, the ordered list starts at 3, so “Introduction” is labeled 3, “Background” is 4, and so on.

Dynamic Values with JavaScript

Change the starting number at runtime with the start IDL property:

dynamic-start.html
<ol id="dynamicList">
  <li>First Item</li>
  <li>Second Item</li>
  <li>Third Item</li>
</ol>

<script>
  document.getElementById("dynamicList").start = 10;
</script>
Try It Yourself

How It Works

In this script, the start property is set to 10 for the ordered list with id dynamicList. The browser re-renders the markers immediately.

Example — continue numbering across lists

When layout forces you to split one logical list into two ol elements, use start on the second list:

continue.html
<ol>
  <li>Step one</li>
  <li>Step two</li>
  <li>Step three</li>
</ol>

<p>...content between list sections...</p>

<ol start="4">
  <li>Step four</li>
  <li>Step five</li>
</ol>

How It Works

The first list ends at 3. The second list sets start="4" so numbering continues seamlessly for readers.

♿ Accessibility

  • Use real lists — Keep steps in <ol>/<li> so assistive tech announces list length and position.
  • Do not fake numbers in text — Typing “3.” inside each item breaks list semantics; use start instead.
  • Logical order — When continuing lists, ensure start matches the previous section so screen reader users hear a coherent sequence.
  • Nested lists — Each nested ol can have its own start; test with a screen reader when nesting deeply.
  • reversed lists — With reversed, DOM order stays top-to-bottom; only markers count down.

🧠 How start Works

1

Author sets start

Integer on ol.

Markup
2

Browser reads value

Default is 1.

Parse
3

Markers increment

Per li item.

Render
=

Flexible numbering

Semantic lists.

Browser Support

The start attribute has been supported in all major browsers for many years. It is safe to use in production.

Universal · Fully supported

Reliable everywhere

Chrome, Firefox, Safari, and Edge all honor start on ol elements.

100% Modern browsers
Google Chrome All versions
Supported
Mozilla Firefox All versions
Supported
Apple Safari All versions
Supported
Microsoft Edge All versions
Supported
start attribute Excellent

Bottom line: Use start confidently for ordered lists in any modern project.

💡 Best Practices

✅ Do

  • Use start when you need to customize the starting value of ordered lists
  • Continue numbering across split lists with the correct next integer
  • Pair with type when you need letters or Roman numerals
  • Prefer one semantic ol when layout allows uninterrupted flow
  • Test with screen readers when lists span multiple sections

❌ Don’t

  • Hard-code numbers inside <li> text instead of using start
  • Apply start to <ul> (it has no effect there)
  • Forget to update start when inserting new items above a continued list
  • Assume CSS alone replaces list semantics for numbered steps
  • Mix unrelated steps in one list just to avoid setting start

Conclusion

The start attribute is a simple, well-supported tool for controlling the starting value of ordered lists in HTML. By incorporating it, you can enhance the organization and presentation of your content according to your specific requirements.

Whether you are continuing a tutorial across sections, matching chapter numbers, or updating lists dynamically with JavaScript, start keeps numbering semantic and accessible.

Key Takeaways

Knowledge Unlocked

Five truths every developer should know about start

Bookmark these when building numbered content.

5
Core concepts
🔢 02

Integer

First marker

Value
🔄 03

Continue

Split lists

Pattern
⚙️ 04

ol.start

JavaScript

Dynamic
05

Universal

All browsers

Support

❓ Frequently Asked Questions

It sets the number of the first item in an ol ordered list. Default is 1.
Only the <ol> element.
Yes. HTML allows any valid integer, though positive values are typical in everyday content.
Yes. type controls the marker style; start sets the numeric value of the first marker.
Yes. Use element.start = 10 on an HTMLOListElement.
Start a new ol with start set to one more than the last number of the previous list.

Practice ordered list numbering

Try the outline example and see how start="3" changes the first marker.

Try outline example →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

5 people found this page helpful