Vertical video on desktop: a UX problem most brands ignore
A 9:16 clip dropped into a 16:9 desktop slot fills under a third of the width, or crops away two thirds of the frame. The geometry, five layout patterns that fix it, the CSS to implement them without layout shift, and a desktop QA checklist.
A vertical TikTok clip, embedded straight onto a desktop PDP, rendered as a tall, narrow strip flanked by two wide bands of empty white space, the video equivalent of wearing a phone case as a laptop sleeve.
In this article
Vertical video is how customers film products now, because it is how TikTok, Reels and Shorts record by default. The format suits a phone exactly. The trouble starts when the same clip is dropped into a desktop product page that was designed around landscape media, and the mismatch is arithmetic rather than taste, which makes it easy to measure and fairly easy to fix.
The geometry of the problem
Take a common desktop content slot: 1200 px wide at 16:9, so 675 px tall. A 9:16 clip has a width of 9/16 of its height. There are only two ways to put it in that slot, and both lose.
Fit by height (object-fit: contain). The clip is 675 px tall and 380 px wide. It fills 32% of the slot's width and leaves 820 px of empty bars, which is the "narrow strip in a sea of white" effect.
Fill by width (object-fit: cover). The clip is scaled to 1200 px wide, which makes it 2,133 px tall, and the slot shows a 675 px band from the middle. That is 32% of the frame height. In a typical customer clip the face is at the top and the product is in the hands at the bottom, so the crop removes both.
A 9:16 clip in a 1200 x 675 desktop slot
- Slot width used, fit by height32% (380 of 1200 px)
- Frame height visible, fill by width32% (675 of 2,133 px)
- Frame visible in a portrait box sized to the clip100%
The last bar is the whole fix in one line: stop putting portrait media in landscape boxes. Everything below is a way of doing that without wrecking the rest of the page layout.
Why teams do not notice
UGC is moderated and approved in dashboards and phone previews, and PDP changes are usually signed off on a laptop at the default breakpoint a designer used. A clip that looks natural on a phone is judged to be fine, and the desktop PDP at a wide window is simply not in anyone's review path. Merchandisers who open their own PDP on a large monitor tend to spot it within seconds, which is the argument for adding that step to the release checklist rather than hoping somebody stumbles on it.
Desktop still deserves the check even where mobile dominates sessions. Shoppers use the two devices differently (see mobile vs desktop social proof patterns), and a block that looks broken on a large screen undermines the very evidence it was placed there to show. The reverse case, why the same content often converts better on phones, is in why UGC converts better on mobile.
Five layout patterns that work
| Pattern | How it works | Best for | Watch out for |
|---|---|---|---|
| Portrait row | Three to five 9:16 cards side by side in a horizontal row, each sized to its native ratio. | Homepage and collection pages, PDPs with plenty of clips. | Autoplaying every card at once. Play the one in focus or on hover. |
| Portrait column | A single 9:16 player beside the product gallery or in a secondary column next to the description. | PDPs with one or two strong clips. | Column width below about 280 px makes captions unreadable. |
| Blurred fill | The clip plays centred at native ratio; the side bars show a blurred, scaled copy of the same frame. | Hero or banner slots that must stay 16:9. | A second video decode for the blur. A static blurred poster is cheaper. |
| Poster plus lightbox | A portrait poster tile opens a full-height portrait player in a modal. | Dense grids and review sections. | Focus trap, Escape to close and a visible close control in the modal. |
| 4:5 tile, 9:16 playback | The tile shows a 4:5 crop so it sits in a grid; playback opens at full 9:16. | Masonry and mixed photo and video galleries. | Pick the crop manually for clips where the product sits at the frame edge. |
The portrait row is the default on most storefronts for a reason: it uses the extra desktop width for more evidence instead of for empty bars. Carousel-style layouts that render full-height portrait cards are built for exactly this, and it is worth comparing the options in a widget layout gallery on a wide screen before choosing. Placement choices on the page itself are covered in where to place shoppable video, and the mobile side of the same design problem in mobile-first shoppable video design.
The CSS that implements it without layout shift
Two properties do most of the work. aspect-ratio gives the box its portrait shape before any video metadata arrives, so the browser reserves the space and nothing below jumps when the clip loads, which protects Cumulative Layout Shift. object-fit decides whether the video is letterboxed or cropped inside that box. Capping the height relative to the viewport stops a portrait player from running off the bottom of a short laptop screen.
/* Portrait card that never becomes a strip or a crop */
.ugc-portrait {
aspect-ratio: 9 / 16; /* reserve space before load */
height: min(80vh, 720px); /* fits a 768px-tall laptop */
width: auto;
background: #000;
}
.ugc-portrait video {
width: 100%;
height: 100%;
object-fit: contain; /* never crop the product */
}
/* Row of portrait cards on wide screens */
.ugc-row {
display: grid;
grid-auto-flow: column;
grid-auto-columns: min(28vw, 320px);
gap: 16px;
overflow-x: auto;
scroll-snap-type: x mandatory;
}If the video is part of a shoppable widget rather than your theme, check how the widget handles this before writing overrides. The questions to ask are whether it serves a different rendition by viewport, whether cards keep their native ratio at wide breakpoints, and whether off-screen clips are loaded only when needed, the performance side of which is in Core Web Vitals and UGC widgets.
A desktop QA checklist for vertical placements
- 1Open the PDP at 1280, 1440 and 1920 px wide. At each width, note what share of the video slot is empty bars and whether any clip is cropped.
- 2Repeat at 125% zoom, or with 125% display scaling, which is common on Windows laptops.
- 3Check a clip where the product is at the bottom of the frame. If it disappears, the slot is using object-fit: cover on portrait media.
- 4Scroll past the block while the video loads. If content below jumps, the box has no reserved aspect ratio.
- 5Open the lightbox or modal with a keyboard only: it should receive focus, close with Escape and return focus to the tile.
- 6Read the captions at the narrowest column width you ship. If they wrap to three lines over the product, widen the column or reduce caption size.
Frequently asked questions
How do you display vertical video on a desktop website?
Put it in a portrait box. Give the container aspect-ratio: 9 / 16, cap the height to around 80% of the viewport, and use object-fit: contain. On wide pages, show several portrait clips in a row rather than one clip in a landscape slot.
Should I crop 9:16 UGC to 16:9 for desktop?
Usually not. A 16:9 crop of a 9:16 frame keeps about a third of the height, which tends to cut off the face or the product. A 4:5 crop for grid tiles with full portrait playback on click is a safer compromise.
What causes the black or white bars beside vertical video?
A portrait video fitted inside a landscape container by height. The bars are the unused width of the container. Resize the container to the video's ratio, or fill the bars with a blurred still of the same frame.
Does vertical video hurt Core Web Vitals on desktop?
Not by being vertical. Layout shift comes from containers with no reserved size, and slow loading comes from downloading clips that are not visible. Reserve space with aspect-ratio and defer off-screen video.
Is a blurred background better than a carousel?
For a single clip in a slot that must stay 16:9, yes. Where you have several clips, a portrait row shows more genuine content in the same space.
Sources
- 1MDN Web Docs: aspect-ratio · Reserving a box ratio before media loads.
- 2MDN Web Docs: object-fit · contain vs cover behaviour for replaced elements such as video.
- 3web.dev: Optimize Cumulative Layout Shift · Media without reserved dimensions as a cause of layout shift.
- 4Idukki: Mobile-first shoppable video design
More from Rohin Aggarwal
- Strategy
Preparing your UGC and social-proof strategy for BFCM
BFCM traffic is colder, comparison-heavy and fast, so proof decides the sale. You cannot collect UGC in the rush: build depth in Q3 and deploy before the peak.
- Strategy
Building social proof as a brand-new store with zero reviews
Break the cold-start loop without faking it: engineer real proof from your first orders, lead with founder transparency, and feature every genuine early review.
- Strategy
Reducing returns with better pre-purchase UGC
Most returns are not faults but an expectations gap set weeks before the refund. Honest customer content before purchase narrows the gap and cuts returns.