The align-self property overrides align-items for one flex item or grid item. In a row flex, it moves that item up or down inside the line. The other items stay where the container put them.
Set it on the item, not on the container. The initial value is auto, which copies the parent's align-items. It is not inherited. To move every item the same way, use align-items. To pack extra lines, use align-content.
Standard-track.
Not deprecated. Flex and grid values are widely supported. It does not apply to block boxes or table cells. anchor-center is only for anchor-positioned boxes and needs a current browser.
Short siblings.height: 40px on div keeps One and Three from filling the row.
Clear the fixed height.height: auto on .pick lets stretch change Two's cross size.
Fill the line.align-self: stretch grows Two until it meets the top and bottom of the 120px row.
The group rule stays.align-items: flex-start still applies to One and Three. Only Two opted out.
Edge Cases & Pitfalls
If the item does not move, one of these is usually why.
item
It belongs on the item
A rule on the container is align-items. align-self on the container does not move its children.
auto
auto copies the group
The default looks unchanged because it uses align-items. Set a different keyword when that one item should leave the group.
height
stretch loses to a fixed cross size
A height on a row item, or a width on a column item, blocks stretch. Leave that size as auto.
margin
A cross-axis margin: auto wins
On a row item, margin-top: auto or margin-bottom: auto absorbs the spare space and align-self is ignored.
axis
A column flex flips the axis
With flex-direction: column, align-self is horizontal. center then centers that one item left to right.
Compatibility
Browser Support
align-self is a browser layout property for flex items, grid items, and, in new browsers, absolutely positioned boxes. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Flex since 2015
align-self
Flex: Chrome 29+, Firefox 28+, Safari 9+, Edge 12+. Grid: Chrome 57+, Firefox 52+, Safari 10.1+, Edge 16+. Internet Explorer 11 is flex-only.
96%Flex and grid support
Google Chrome29+ flex · 57+ grid
Full support
Mozilla Firefox28+ flex · 52+ grid
Full support
Apple Safari9+ flex · 10.1+ grid
Full support
Microsoft Edge12+ flex · 16+ grid
Full support
Opera12.1+ flex · grid in Chromium 57+
Full support
Samsung Internet4+ flex · 6.2+ grid
Full support
Internet Explorer11 · Old flex only
Partial
align-selfWidely supported
Bottom line: Safe for flex and grid in current browsers. Absolutely positioned boxes need Chrome 122, Firefox 134, or Safari 26. anchor-center needs Chrome 125, Safari 26, or Firefox 147. Internet Explorer's grid uses -ms-grid-row-align, not this property.
Remember
Key Takeaways
Role: override align-items for one flex item or one grid item.
Where: on the item. The container keeps align-items for everyone else.
Default:auto, which copies align-items. It is not inherited.
Stretch: only when the item's cross size is auto. A fixed height blocks it.
One line:align-self is the exception for a single item. The container still aligns the rest.
Frequently Asked Questions
It overrides align-items for one flex item or one grid item. The other items keep the container's alignment.
The initial value is auto. auto uses the parent's align-items value. It is not the same as normal, and the property is not inherited.
align-items sets the cross-axis alignment for every item in the container. align-self replaces that value for a single item.
Yes. On a grid item it aligns that item inside its grid area on the block axis. The container does not need flex-wrap.
auto copies align-items. If the container is flex-start and the item is auto, the item stays at the start with its siblings.
Flex support is Chrome 29+, Firefox 28+, Safari 9+, and Edge 12+. Grid support starts at Chrome 57, Firefox 52, and Safari 10.1. Internet Explorer 11 is flex-only. It is a browser layout property, not a Node.js feature.