Requires that content works in both portrait and landscape and is not locked to one display orientation, unless a specific orientation is essential.
Some people mount their phone or tablet in a fixed position, for example on a wheelchair, a stand or a desk, and cannot rotate it. If an app or site works in only one orientation, they cannot use it at all.
This criterion requires that content does not restrict its view and operation to a single display orientation, portrait or landscape, unless a specific orientation is essential. Users should be able to use the content whichever way their device is turned.
People who cannot rotate their device use it in the position it is fixed in. This includes many wheelchair users and people with motor impairments, who mount a device on a chair or desk. It also helps people with low vision who choose the orientation that suits them best, and anyone using a tablet in a case or stand.
The European Accessibility Act (Directive (EU) 2019/882) applies to in-scope products and services placed on the market after 28 June 2025. Recital 47 names four principles for websites and mobile applications: perceivable, operable, understandable and robust. Content that adapts to the orientation is part of "perceivable" and "operable".
The technical counterpart is the standard EN 301 549, which incorporates WCAG 1.3.4 by reference and turns it into separate clauses for each kind of ICT.
| Clause | Type of ICT | What it requires |
|---|---|---|
| 9.1.3.4 | Web pages | Web content must satisfy WCAG success criterion 1.3.4. |
| 11.1.3.4 | Non-web software (native mobile apps) | Software must satisfy the criterion, unless a specific orientation is essential. |
Whether and how the criterion applies to non-web documents is stated in clause 10 of the standard. Clause numbers follow the "9. + WCAG number" pattern of EN 301 549. In V3.2.1 the software clause is divided into further subclauses for open and closed functionality. Check the exact numbers in the standard when you cite them.
Standard version: EN 301 549 V4.1.1 (September 2026) is based on WCAG 2.2 and is the first version prepared specifically for the EAA. It has not yet been cited in the Official Journal of the European Union, so for now it is best treated as a voluntary technical route to the EAA's requirements. Once cited, it will give a presumption of conformity. The text of criterion 1.3.4 is the same in WCAG 2.1 and 2.2. It is a Level AA criterion.
A note on EAA scope: Article 2(4) of the Directive excludes certain content from the requirements, for example office file formats published before 28 June 2025 and archives that are not updated after that date. Content you publish or change after that date is not covered by these exclusions.
Directive (EU) 2019/882, EUR-Lex, opens in a new tab
Do not rotate the page with CSS to fake a fixed orientation. Let the layout adapt.
@media (orientation: portrait) {
body {
transform: rotate(90deg);
width: 100vh;
height: 100vw;
}
}.layout { display: flex; flex-wrap: wrap; gap: 16px; }
@media (orientation: landscape) {
.sidebar { flex: 0 0 240px; }
}The Screen Orientation API can lock the orientation. Avoid it unless the orientation is essential.
screen.orientation.lock("portrait");// No lock. If the orientation really is essential,
// explain why in your documentation.The orientation member of a manifest locks an installed web app. Leave it out, or use any.
{
"name": "Corpowid app",
"orientation": "portrait"
}{
"name": "Corpowid app",
"orientation": "any"
}A "please rotate your device" screen blocks the people who cannot rotate it.
<div id="rotate-warning">
Please rotate your device to portrait.
</div><!-- Show the same content in both orientations -->
<main>…</main>Use flexible units and wrapping, so content fits both orientations.
.form { width: 360px; height: 640px; }.form { max-width: 100%; min-height: 100vh; }
.fields { display: grid; gap: 12px; }
@media (orientation: landscape) and (min-width: 600px) {
.fields { grid-template-columns: 1fr 1fr; }
}The same rule applies in native mobile apps. Allow all orientations the app can reasonably support, and adapt the layout.
<!-- Info.plist: allow portrait and landscape -->
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
// SwiftUI: the layout adapts to the available space
import SwiftUI
struct ProfileView: View {
var body: some View {
ViewThatFits {
HStack(alignment: .top, spacing: 24) { photo; details } // wide
VStack(alignment: .leading, spacing: 16) { photo; details } // narrow
}
.padding()
}
private var photo: some View { Image("profile").resizable().scaledToFit() }
private var details: some View { Text("Ada Lovelace") }
}<!-- AndroidManifest.xml: do not lock the orientation -->
<activity
android:name=".ProfileActivity"
android:screenOrientation="unspecified" />
// Compose: the layout adapts to the available width
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.dp
@Composable
fun ProfileScreen() {
BoxWithConstraints {
if (maxWidth > 600.dp) {
Row { Photo(); Details() } // wide
} else {
Column { Photo(); Details() } // narrow
}
}
}screen.orientation.lock, the manifest orientation, screenOrientation in AndroidManifest.xml and the supported orientations in Info.plist.