Skip to main content
Perceivly: Perceivly home

1.3.4 Orientation

Level AA · added in WCAG 2.1

Your content must work in both portrait and landscape. Don't lock the page to one orientation or ask people to rotate their device, unless one orientation is truly essential.

Who it helps

Some people have a phone or tablet mounted to a wheelchair or bed in a fixed position. People with limited dexterity or low vision may also keep a device in the one orientation that works for them.

How to meet it

Examples

Fails:Rotating the page in portrait to force a landscape layout
@media (orientation: portrait) {
  html {
    transform: rotate(90deg);
  }
}
Fails:A message that covers the page in portrait
<div class="rotate-notice">
  Please rotate your device to landscape to continue.
</div>
<style>
  .rotate-notice { display: none; }
  @media (orientation: portrait) {
    .rotate-notice { display: flex; position: fixed; inset: 0; }
  }
</style>
Passes:Adjusting the layout in portrait instead of rotating it
.player { display: flex; gap: 1rem; }
@media (orientation: portrait) {
  .player { flex-direction: column; }
}
Passes:A grid that fits any viewport shape
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 1rem;
}

Can a scanner detect this?

No

axe-core's default rules don't test orientation; its only related rule is experimental and off by default. Rotate a real device and confirm the content and controls work both ways.

No automated rule tests this criterion. Check it by hand.

Common mistakes

Official W3C explanation of 1.3.4

Check your own page

See which automated WCAG checks your page fails, with the failing elements and how to fix them.

Enter a page address, for example example.com/shop.

Reviewed November 2, 2026