Equal Height for Elementor: Line Up Cards That Refuse to Match

October 19, 2026
·
Shahidul Islam
Equal height extension for Elementor aligning a row of cards

You write three service cards. The first has a two line description, the second has four lines, the third has one. On screen they become three different heights, the buttons sit at three different depths, and the row looks like it was assembled by accident. Every content change breaks the alignment again.

This is the most common layout complaint in Elementor, and the usual fixes are all bad. Padding the short card is guesswork that dies the next time someone edits the copy. Trimming the text to fit means the design is dictating the content. Writing a flexbox rule works until the widget is not a direct flex child, which it often is not.

Equal height is a Sky Addons extension that solves it properly. It measures the tallest element in a group and applies that height to the rest, then re-measures on every resize. No custom CSS, no fixed pixel values, and nothing to redo when the copy changes.

Equal height applied to a row of Elementor product cards
Equal height applied: three product cards matched to the tallest in the row

Where equal height fits

  • Pricing tables. Three plans where the middle one lists two extra features. The buy buttons need to sit on one line.
  • Service grids. An agency listing six services, each with a different length description.
  • Team rosters. Job titles that wrap to two lines for some people and one for others.
  • Product feature cards. A shop comparing four models where only one has a long caveat.
  • Blog post grids. Headlines of wildly different length above the excerpt and the read more link.
  • Logo and partner rows. Cards holding logos of different aspect ratios that should still make a clean grid.

The pattern is always the same. The content is genuinely different, the layout still has to look deliberate.

Why it beats the usual approach

ApproachWhat breaks
Padding the short card by handAny copy edit undoes it. Wrong at every screen width but one
Trimming the text to fitThe design is deciding the content. Real work gets cut
A custom flexbox or grid ruleOnly works when the target is a direct child. Fails inside widget wrappers
Setting a fixed pixel heightTall content overflows or is clipped. Breaks on mobile
Equal height extensionMeasures the real tallest element, applies it to the group, re-measures on resize

The features that matter

Nine targeting modes, so you pick what gets measured. The default mode, Select Widgets, gives you a dropdown of every widget type in that section and equalizes each type as its own group. The other eight modes reach further in: all widget wrappers as one group, or the first, second or third child inside each widget, or one and two levels deeper again, or any CSS selector you type. The deep modes exist because the thing that needs to match is often not the card, it is the description block inside the card.

A widget picker that reads your actual layout. The Select Widgets dropdown is not a fixed list. It scans the section in the editor and offers the widget types that are really in it. Pick Info Box and every info box lines up, while the heading above them is left alone.

Height or min-height, your choice. One control decides which CSS property is written. Use height for a strict grid. Use min-height when a card may legitimately grow past the group, for example when a plugin injects a badge.

Off on mobile by default. Stacked cards on a phone do not need matching heights, and forcing them produces tall boxes with dead space. The extension ships with mobile disabled and a separate switch for tablet, so the desktop grid is tidy and the phone layout stays compact.

It only loads when you use it. The matchHeight library and the handler are enqueued in the before render hook, and only when the toggle on that element is on. A page with no equal height section ships no equal height JavaScript.

Equal height before and after on the same Elementor card row
The same row before and after equal height: three heights become one

How to build it

  1. Select the section or container holding the cards. The panel is on the Advanced tab for sections and the Layout tab for containers.
  2. Open Equal Height and turn Enable on.
  3. Leave Apply Elements on Select Widgets, then pick the widget type you want matched from the dropdown.
  4. If the part that needs matching sits inside the widget, switch to one of the child modes, or to Custom and type the selector.
  5. Set CSS Property to height for a strict grid, or min-height to allow growth.
  6. Check tablet and mobile. Mobile is off by default. Turn tablet off too if the cards stack there.

Why it works

The extension groups elements, measures the tallest one in each group, and writes that height to the others. It repeats the measurement on resize and on orientation change, so a phone turned sideways gets a correct layout rather than a stale one.

The grouping rule is what makes it usable. In Select Widgets mode each widget type is its own group and row grouping is switched off, because you have already said exactly what to match. In the other modes elements are grouped by visual row, so a twelve card grid on three rows lines up row by row rather than forcing all twelve to the height of the tallest one anywhere on the page.

A grid does not look designed because the boxes are the same size. It looks designed because nothing in it draws attention to an accident. Equal height removes the accident, then gets out of the way.

Getting it right

  • Match the inner block, not the card. If only the button position bothers you, target the description with a child mode. Matching whole cards can leave an obvious gap under short copy.
  • Turn tablet off when the grid restacks. Three across at desktop often becomes two across on tablet, and the groups change with it. Check the real breakpoint rather than assuming.
  • Prefer min-height when content is dynamic. Posts, products and anything a client edits will eventually exceed the measurement. Min-height bends, height clips.
  • Custom mode wants a class, not a tag. Give the target a CSS class in Elementor’s Advanced tab and use that. Tag selectors catch more than you meant.
  • It is a measurement, not a layout system. For genuine column control, use the container’s own flex settings first and reach for equal height for the leftover mismatch.
Equal height on a desktop grid and the same cards on a phone
Equal height on desktop, and the same cards on a phone, where it is off by default

What else it can carry

The extension is attached to sections, columns and containers, not to any one widget, so it works on anything you can place. Testimonials with quotes of different length, comparison cards, download boxes, statistic tiles, category tiles above a shop grid. If the content is variable and the layout should not be, it applies.

It also survives a redesign. Because the target is a widget type or a selector rather than a specific element, swapping one card widget for another of the same type keeps the alignment working.

If you want the underlying browser behaviour rather than a measured height, read the MDN guide to box alignment in grid layout, which covers how stretch and align-items decide heights natively. The extension exists for the many cases where that native behaviour cannot reach the element you care about.

Equal height aligning the buttons in an Elementor pricing row
A pricing row before and after, with the buy buttons brought onto one line

Equal height: common questions

Is equal height free?

Yes. It ships in the free Sky Addons plugin, with all nine targeting modes and both CSS property options. Nothing in this extension is behind the Pro licence. See free versus Pro for the full split.

Does it need another plugin?

No. It needs Elementor and Sky Addons. The matching library is bundled with the plugin.

Will it slow the page down?

Only pages that use it load anything. The library and the handler are enqueued in the before render hook and only when the toggle is on, so an unrelated page ships no extra JavaScript.

Does it work on mobile?

It can, but it is off on mobile by default, because stacked cards rarely benefit. There is a separate switch for tablet. Turn either back on when your layout stays in columns at that width.

Does it work with containers as well as sections?

Yes. The panel is registered for sections, columns and containers. On containers it appears under the Layout tab rather than Advanced.

The short version

Equal height measures the tallest element in a group and applies that height to the rest, then re-measures whenever the window changes. Nine targeting modes mean you can match whole widgets, a block inside them, or any selector you name. It is free, it loads only where it is used, and it is off on mobile until you say otherwise.

Build it

See it running on the equal height demo, then follow the equal height documentation for every control. If your grid also needs the cards themselves to react, the tilt effect and reveal effects posts cover the motion side. Compare plans on pricing.

Written by
Shahidul Islam
Writes about the work behind the widgets — what shipped, why, and what it cost.
Share
In this post

More from the journal

Equal Height for Elementor: Line Up Cards That Refuse to Match

Equal Height for Elementor: Line Up Cards That Refuse to Match

Equal height in Elementor without custom CSS. Pick from 9 targeting modes, match any widget or selector, and switch it off on mobile in one click.
Offcanvas Panel: 3 Easy Triggers for Slide In Content

Offcanvas Panel: 3 Easy Triggers for Slide In Content

The offcanvas panel widget slides content in from the left or right of any Elementor page, opened by a button, a hash URL or your own selector.
Particle Effects: 5 Smart Styles for Elementor Backgrounds

Particle Effects: 5 Smart Styles for Elementor Backgrounds

The particle effects extension puts an animated particle layer behind any Elementor section, column or container, with five styles and full control.

Comments are closed.