The padding-block-start property sets inner spacing on the block-start side of an element. In horizontal writing modes, that is usually the top padding between content and the border.
The padding-block-start property in CSS is part of the logical properties module, which allows developers to set padding in the block start direction of an element. The block start direction is determined by the writing mode of the document; in most cases, it corresponds to the top padding.
This property is particularly useful for creating layouts that are adaptable to different writing modes and languages.
Definition and Usage
Apply padding-block-start when you need inner spacing on only the block-start side and want that spacing to follow the block axis instead of a fixed physical top edge. Use it for headings, card headers, list item tops, and any component that needs extra room before the content along the block direction.
Like regular padding, padding-block-start increases the visible size of an element’s background and border box. It never collapses and always stays inside the element’s border.
💡
Beginner Tip
In horizontal writing modes, padding-block-start: 20px; looks like top padding. RTL changes inline-start and inline-end, not block-start — block-start stays at the top until the writing mode itself changes.
Horizontal writing → block-start is topVertical writing → block-start follows text flow
Foundation
📝 Syntax
The syntax for the padding-block-start property is as follows:
Four boxes with the same content and different pbs- utility classes showing increasing block-start inner spacing:
pbs-sm
pbs-md
pbs-lg
pbs-xl
Hands-On
Examples Gallery
Start with the reference paragraph example, try different block-start values, add spacing above stacked items, and compare logical block-start padding with physical top padding.
🔢 Basic padding-block-start
Start with the reference example — block-start padding on a paragraph with a light grey background.
Example 1 — Paragraph with Block-Start Padding
In this example, we’ll apply padding to the block start of a paragraph.
padding-block-start-example.html
<style>p{padding-block-start:20px;background-color:lightgrey;}</style><p>
This paragraph has 20px padding at the block start, which corresponds to the top in most left-to-right writing modes.
</p>
Each class sets a different block-start padding while leaving block-end unchanged. The background fills the padding area so you can compare the spacing visually.
🛠 Layout Patterns
Apply block-start padding to stacked content and compare logical vs physical properties.
Example 3 — Stack Item Spacing
Add block-start padding to list items so each row has breathing room after the previous item.
Block-start padding creates space between the item content and its divider line above. Removing padding on the first item avoids extra empty space at the top of the stack.
Example 4 — Logical vs Physical Block-Start
Compare padding-block-start with padding-top.
padding-block-start-logical.css
/* Logical — follows writing mode */.logical{padding-block-start:24px;}/* Physical — fixed to top edge */.physical{padding-top:24px;}
In horizontal English, both approaches look the same. padding-block-start stays correct when writing mode changes; physical top padding does not.
Companion
padding-block-start vs padding-block, padding-top & block-end
The padding-block shorthand sets both block-start and block-end padding in one declaration. Use padding-block-start when you need spacing on only the block-start side.
padding-top always targets the physical top edge. Pair padding-block-start with padding-block-end for full per-edge block-axis control, or use padding for physical four-side shorthand.
padding-block-start-companion.css
/* Block-start only */.card-header{padding-block-start:1.25rem;}/* Both block sides via shorthand */.section{padding-block:1rem2rem;}/* Physical fallback for older browsers */.legacy-card{padding-top:1.25rem;}
A11y
♿ Accessibility
Improve readability — Headings and paragraphs benefit from block-start padding so content does not crowd the top border or preceding elements.
Respect writing modes — Logical block-start padding keeps spacing correct for users of vertical or mixed writing-mode layouts.
Do not hide content — Very large block-start padding on small screens can push important content out of view.
Keep focus visible — Padding adjusts inner spacing; it should not replace visible focus outlines on interactive elements.
Test zoomed layouts — Users who zoom in rely on comfortable padding to keep text readable.
🧠 How padding-block-start Works
1
The browser finds block-start
Writing mode decides which physical edge is block-start. In horizontal-tb, that is the top edge regardless of text direction.
Writing mode
2
You set a padding value
Write padding-block-start: 20px; with a length, percentage, or auto.
CSS rule
3
Browser adds space on block-start
Padding is inserted between the content edge and the border on the block-start side only.
Box model
=
▦
Targeted block-start spacing
Content has breathing room before it along the block axis without affecting block-end.
Compatibility
Browser Compatibility
The padding-block-start property is widely supported in modern browsers, including Chrome, Firefox, Safari, Edge, and Opera. It is advisable to check the compatibility with the browsers you aim to support, especially if your audience includes users of older browser versions.
✓ Baseline · Modern browsers
Logical block-start padding in today’s browsers
Chrome, Firefox, Safari, Edge, and Opera support padding-block-start in current versions.
96%Modern browser support
Google Chrome69+ · Desktop & Mobile
Full support
Mozilla Firefox41+ · Desktop & Mobile
Full support
Apple Safari12.1+ · macOS & iOS
Full support
Microsoft Edge79+ · Chromium
Full support
Opera56+ · Modern versions
Full support
padding-block-start property96% supported
Bottom line: Safe to use in modern projects. For older browsers, pair with padding-top as a fallback.
Wrap Up
Conclusion
The padding-block-start property is a valuable tool for web developers looking to create flexible and responsive layouts.
By using logical properties like this one, you can make your designs more adaptable to different writing modes and languages, enhancing the accessibility and usability of your website. Experiment with different values to see how they affect your layout and consider using this property in conjunction with other logical properties for a more consistent design.
Use padding-block-start for spacing before content along the block axis
Prefer rem or em for scalable block-start spacing
Pair with padding-block-end for per-edge block control
Use logical properties in multilingual or vertical writing-mode layouts
Provide padding-top fallback for legacy browser support
❌ Don’t
Assume RTL changes block-start in horizontal writing modes
Confuse block-start with inline-start (left in LTR)
Use excessive block-start padding that breaks mobile layouts
Forget that percentage padding is based on inline size
Replace margin with padding-block-start for outer spacing between elements
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about padding-block-start
Use these points when spacing content on the block-start side.
5
Core concepts
↑01
Block-Start Only
One logical edge.
Purpose
002
Default 0
No spacing.
Default
wm03
Writing Mode
Top in horizontal-tb.
Axis
%04
Units
px, em, rem, %, auto.
Values
pt05
Not padding-top
Logical vs physical.
Companion
❓ Frequently Asked Questions
The padding-block-start property sets inner spacing on the block-start side of an element. In horizontal writing modes, that is usually the top padding between the content and the border.
The default value is 0, meaning no block-start inner spacing is applied unless you set padding-block-start explicitly.
padding-top always targets the physical top edge. padding-block-start follows the block axis, so it stays correct when the writing mode changes, such as in vertical text layouts.
In horizontal writing modes, block-start is still the top edge. RTL affects inline-start and inline-end (left and right), not block-start. Block-start only changes when the writing mode changes, for example to vertical-rl.
Use padding-block-start when you need spacing on only the block-start side and want that spacing to follow logical CSS. It pairs well with padding-block-end and the padding-block shorthand.