CSS padding-block-start Property

Beginner
⏱️ 5 min read
📚 Updated: Jun 2026
🎯 4 Examples
Logical CSS & Box Model

What You’ll Learn

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.

01

Block-Start Only

One logical edge.

02

Syntax

Single value.

03

Units

px, em, rem, %.

04

Writing Modes

Follows block axis.

05

Default 0

No spacing by default.

06

padding-block

Block-axis shorthand.

Introduction

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 top Vertical writing → block-start follows text flow

📝 Syntax

The syntax for the padding-block-start property is as follows:

syntax.css
element {
  padding-block-start: length | percentage | auto | initial | inherit;
}

Here, the value can be a length, percentage, or the keywords auto, initial, or inherit.

Basic Example

padding-block-start.css
p {
  padding-block-start: 20px;
  background-color: lightgrey;
}

⚡ Quick Reference

QuestionAnswer
Initial value0
Applies toBlock-start padding side only
InheritedNo
AnimatableYes, as a length
Common useHeadings, card headers, list tops, and writing-mode-aware block-start spacing

🎯 Default Value

The default value of the padding-block-start property is 0, meaning no padding is applied by default.

💎 Property Values

ValueExampleDescription
Lengthpadding-block-start: 20px;A specific value in units such as px, em, or rem.
Percentagepadding-block-start: 5%;A percentage relative to the width of the containing block.
autopadding-block-start: auto;The browser calculates the value.
initialpadding-block-start: initial;The initial value (usually 0).
inheritpadding-block-start: inherit;The value is inherited from the parent element.
padding-block-start: 20px; padding-block-start: 1.5rem; padding-block-start: 5%;

👀 Live Preview

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

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>
Try It Yourself

How It Works

The grey background fills the padding area, so the 20px gap appears between the top border edge and the text along the block-start side.

Example 2 — Different Block-Start Values

Use rem units for scalable block-start spacing that grows with root font size.

padding-block-start-rem.css
.compact {
  padding-block-start: 0.5rem;
}

.comfortable {
  padding-block-start: 1.5rem;
}

.spacious {
  padding-block-start: 2.5rem;
}
Try It Yourself

How It Works

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.

padding-block-start-stack.css
.stack-item {
  padding-block-start: 1rem;
  border-block-start: 1px solid #e2e8f0;
}

.stack-item:first-child {
  padding-block-start: 0;
  border-block-start: none;
}
Try It Yourself

How It Works

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;
}
Try It Yourself

How It Works

In horizontal English, both approaches look the same. padding-block-start stays correct when writing mode changes; physical top padding does not.

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: 1rem 2rem;
}

/* Physical fallback for older browsers */
.legacy-card {
  padding-top: 1.25rem;
}

♿ 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.

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 Chrome 69+ · Desktop & Mobile
Full support
Mozilla Firefox 41+ · Desktop & Mobile
Full support
Apple Safari 12.1+ · macOS & iOS
Full support
Microsoft Edge 79+ · Chromium
Full support
Opera 56+ · Modern versions
Full support
padding-block-start property 96% supported

Bottom line: Safe to use in modern projects. For older browsers, pair with padding-top as a fallback.

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.

💡 Best Practices

✅ Do

  • 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

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
0 02

Default 0

No spacing.

Default
wm 03

Writing Mode

Top in horizontal-tb.

Axis
% 04

Units

px, em, rem, %, auto.

Values
pt 05

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.

Practice in the Live Editor

Open the HTML editor, try different padding-block-start values, and see how block-start spacing changes your layout instantly.

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