CSS grid-row-start Property

Beginner
⏱️ 6 min read
📚 Updated: Jun 2026
🎯 4 Examples
Layout

What You’ll Learn

The grid-row-start property sets where a grid item begins on the row axis, controlling its vertical starting position.

01

Start line

Begin row.

02

auto

Default slot.

03

Line #

Exact start.

04

span n

Row count.

05

With end

Pair lines.

06

Grid item

Child element.

Introduction

The grid-row-start property in CSS is used in Grid Layout to specify the starting position of a grid item within a grid container. This property defines on which row line a grid item will start, providing control over the placement and layout of grid items.

Definition and Usage

Apply grid-row-start on a child of a grid container. Use a line number to jump an item to a specific row, or use span n when paired with an auto end line. Combine it with grid-row-end when you need both the starting and ending row lines defined separately.

💡
Beginner Tip

grid-row-start: 3 means the item’s top edge aligns with row line 3. Row lines are numbered starting at 1 from the top of the grid.

📝 Syntax

The syntax for the grid-row-start property is as follows:

syntax.css
element {
  grid-row-start: value;
}

Basic Example

grid-row-start-basic.css
.item1 {
  grid-row-start: 3;
}

With span

grid-row-start-span.css
.item2 {
  grid-row-start: span 2;
}
grid-row-start: 3; grid-row-start: span 2; grid-row-start: 2;

Default Value

The default value of the grid-row-start property is auto, which means the item will be placed according to the default positioning rules of the grid layout.

Syntax Rules

  • Applies to grid items (children of a grid container), not the container itself.
  • Accepts line numbers, span n, named lines, and auto.
  • Works with grid-row-end; together they form the grid-row shorthand.
  • The property is not inherited.
  • Negative line numbers count from the bottom of the grid.

⚡ Quick Reference

QuestionAnswer
Initial valueauto
Applies toGrid items
InheritedNo
ControlsStarting row line
Shorthand partnergrid-row-end

💎 Property Values

ValueDescription
autoPlaces the item in the next available slot in the grid
line numberSpecifies the grid line number where the item should start
span valueWhen the end line is auto, spans n rows from the starting position
named grid lineUses a named grid line to determine the starting position

👀 Live Preview

Item 2 starts at row line 3 with grid-row-start: 3 (highlighted):

1
2
3
4

Examples Gallery

Start items at row line 3, use span, pair with grid-row-end, and offset content from the first row.

🔢 Starting Row Placement

Start with the reference example — positioning an item to begin at row line 3.

Example 1 — Start at Row Line 3

Move a grid item down by starting it at row line 3 instead of the default auto placement.

grid-row-start-row3.css
.item1 {
  grid-row-start: 3;
}
Try It Yourself

How It Works

Row line 3 is the top edge of the third row track, so the item skips rows 1 and 2 in the auto-placement flow.

Example 2 — span 2 Rows

Use the span keyword on the start property when the end line is auto.

grid-row-start-span-example.css
.tall {
  grid-row-start: span 2;
}
Try It Yourself

How It Works

From its auto-placed starting row, the item spans two row tracks because grid-row-start: span 2 sets the span from the start side.

📈 Paired with grid-row-end

Combine start and end lines for exact row boundaries.

Example 3 — Start and End Together

Define both the starting and ending row lines on one item.

grid-row-start-with-end.css
.featured {
  grid-row-start: 2;
  grid-row-end: 4;
}
Try It Yourself

How It Works

Starting at line 2 and ending at line 4 spans rows 2 and 3. This is equivalent to grid-row: 2 / 4.

Example 4 — Empty First Row Offset

Leave the first row open by starting main content at line 2.

grid-row-start-offset.css
.main {
  grid-row-start: 2;
  grid-row-end: -1;
}
Try It Yourself

How It Works

Row 1 stays open for a header or spacing. Main content starts at line 2 and stretches to the last row line.

♿ Accessibility

  • Keep DOM order logical when visual row placement changes reading flow.
  • Do not rely on row position alone to convey meaning; use headings and labels.
  • Test keyboard tab order when items start in non-default rows.
  • Use semantic HTML such as <main> and <header> alongside grid placement.
  • Verify content remains readable when items are offset on small screens.

🧠 How grid-row-start Works

1

Grid rows are defined

grid-template-rows or auto-placement creates row tracks.

Template
2

grid-row-start is set

You choose the row line number, span, or named line for the item.

Start
3

Browser places the item

The item’s top edge aligns with the chosen row line.

Placement
=

Precise row position

The item begins exactly where you specified on the row axis.

🖥 Browser Compatibility

The grid-row-start property is widely supported in modern browsers, including recent versions of Chrome, Firefox, Safari, Edge, and Opera.

Baseline · Modern browsers

grid-row-start everywhere

Row start placement works in all major modern grid implementations.

97% Modern browser support
Google Chrome 57+ · Desktop & Mobile
Full support
Mozilla Firefox 52+ · Desktop & Mobile
Full support
Apple Safari 10.1+ · macOS & iOS
Full support
Microsoft Edge 16+ · 79+ Chromium
Full support
Opera 44+
Full support
grid-row-start property 97% supported

Bottom line: Safe for modern projects. Pair with grid-row-end or use grid-row shorthand.

🎉 Conclusion

The grid-row-start property is a powerful feature in CSS Grid Layout that offers precise control over the positioning of grid items. By specifying the starting row line for an item, you can create complex and flexible grid layouts that adapt to various design requirements.

Experiment with different values to see how this property can enhance the structure and appearance of your web projects. Start with line numbers, then pair with grid-row-end for exact row boundaries.

💡 Best Practices

✅ Do

  • Use line numbers for precise vertical placement
  • Pair with grid-row-end for exact boundaries
  • Prefer grid-row shorthand when setting both sides
  • Keep DOM order meaningful when reordering rows visually
  • Test responsive behavior at smaller widths

❌ Don’t

  • Apply on grid containers instead of items
  • Confuse row lines with row count
  • Forget that line numbering starts at 1
  • Break reading order without testing a11y
  • Mix conflicting start and end values carelessly

Key Takeaways

Knowledge Unlocked

Five things to remember about grid-row-start

Use these points when setting the starting row line.

5
Core concepts
auto 02

Default auto

Next slot.

Default
3 03

Line number

Exact start.

Syntax
span 04

span 2

Two rows.

Pattern
end 05

With end

Pair lines.

Workflow

❓ Frequently Asked Questions

grid-row-start sets the row line where a grid item begins, controlling its vertical starting position in the grid.
The default is auto, which lets the grid auto-placement algorithm choose the starting row line.
grid-row-start sets where the item begins vertically. grid-row-end sets where it stops. Together they define the row span.
The item starts at row line 3, which is the top edge of the third row track.
grid-row-start sets only the starting line. grid-row is shorthand for both grid-row-start and grid-row-end.

Practice in the Live Editor

Open the HTML editor, change grid-row-start values, and watch items move to different rows.

HTML Editor →

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