The padding-block-start property sets the inner padding on the block-start edge of an element. In a horizontal writing mode (the usual default), that maps to the physical top — like padding-top.
With a vertical writing-mode, it can map to left or right instead. It is one half of the padding-block shorthand (with padding-block-end). It is not inherited. The initial value is 0. Negative values are invalid.
Baseline · Widely available.
Not deprecated. Cross-browser since about January 2020. Prefer it over padding-top when writing mode may change.
Logical tip.
Use padding-block-start for space before the content on the block axis. Pair with padding-block-end when you need both sides separately.
Change the flow.writing-mode: vertical-rl makes lines run top to bottom.
Block-start moves. It is no longer the physical top edge.
Padding stays logical.padding-block-start still means “before” on the block axis.
Why it matters. The same rule stays correct if the page switches writing mode later.
Edge Cases & Pitfalls
If the wrong side gets padding, writing mode or a physical longhand is usually why.
physical
Not always top
In horizontal writing it usually matches padding-top. In vertical writing it can match left or right. Use physical longhands only for a fixed screen edge.
rtl
RTL does not flip block-start
Direction affects the inline axis. In horizontal-tb, block-start stays top whether the text is LTR or RTL.
negative
Negative padding is invalid
Like all padding properties, negative lengths are not allowed. The declaration is ignored.
percent
Percentages use containing-block width
Percentage padding resolves against the containing block’s inline size (usually width), even on the block-start side.
override
Later physical padding can override
A following padding-top still wins for that physical side. Keep logical and physical rules from fighting each other.
Compatibility
Browser Support
padding-block-start is a browser CSS property for logical box spacing. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Widely available
padding-block-start
Chrome 69+, Firefox 41+, Safari 12.1+, Edge 79+. Widely available since January 2020. Not in Internet Explorer.
97%Logical padding support
Google Chrome69+
Full support
Mozilla Firefox41+
Full support
Apple Safari12.1+
Full support
Microsoft Edge79+
Full support
Opera56+
Full support
Samsung Internet10.1+
Full support
Internet ExplorerNot supported
Not supported
padding-block-startWidely supported
Bottom line: Safe for modern sites. For Internet Explorer, fall back to physical padding-top. It is not a runtime API.
Remember
Key Takeaways
Role: logical inner spacing on the block-start edge only.
Maps by writing mode: usually top in English; can be left/right in vertical text.
Shorthand partner: first value of padding-block; pair with padding-block-end.
Limits: no auto, no negatives; percentages use containing-block width.
One line:padding-block-start sets block-start padding that follows writing mode — use a non-negative length or percentage.
Frequently Asked Questions
It sets inner spacing on the block-start edge. In a horizontal writing mode, that is usually the top. The physical side can change with writing-mode.
The default is 0, so there is no block-start padding until you set one.
padding-top always means physical top. padding-block-start follows writing mode, so in vertical text it may map to left or right instead.
In horizontal writing modes, block-start stays the top. RTL affects the inline axis (left/right), not block-start. Block-start changes when writing-mode changes, such as vertical-rl.
Use it when you need inner space only before the content on the block axis and want that side to stay correct if writing mode may change.
It is Baseline and widely available in modern browsers since about January 2020 (Chrome 69+, Firefox 41+, Safari 12.1+). It is a browser CSS property, not a Node.js feature.