Testing

CSS Subgrid: Browser Support, Features, Use Cases

CSS Subgrid supports Chrome 117+, Edge 117+, Firefox 71+, Safari 16+, Opera 103+, and Samsung Internet 24+. See full browser support details.

Author

Prince Dewani

May 1, 2026

CSS Subgrid is a W3C CSS Grid Layout Module Level 2 feature that lets a nested grid inherit the row and column tracks of its parent grid through the subgrid value. It works in Chrome 117+, Edge 117+, Firefox 71+, Safari 16+, Opera 103+, and Samsung Internet 24+, while Internet Explorer and the legacy Android Browser never added support.

This guide covers what CSS Subgrid is, the browsers that support it, the key features, the use cases, support checks, and known issues.

What is CSS Subgrid?

CSS Subgrid is a value of the grid-template-columns and grid-template-rows properties, defined by the W3C CSS Grid Layout Module Level 2. When set, a nested grid stops creating its own tracks and reuses the parent grid's row or column tracks, so child items align with the parent grid lines.

Which browsers does CSS Subgrid support?

CSS Subgrid is now Baseline Widely available. Every major engine ships it by default on desktop and mobile, with global support above 92 percent.

Loading browser compatibility data...

CSS Subgrid compatibility in Chrome

Chrome supports CSS Subgrid from Chrome 117 on Windows, macOS, ChromeOS, Linux, and Android. Chrome 114 to 116 had subgrid disabled by default behind the chrome://flags/#enable-experimental-web-platform-features flag, and Chrome 4 to 113 did not parse the subgrid value at all.

CSS Subgrid compatibility in Edge

Microsoft Edge supports CSS Subgrid from Edge 117 on Windows, macOS, and ChromeOS through the same Chromium 117 base as Chrome. Edge 114 to 116 carried subgrid behind the edge://flags/#enable-experimental-web-platform-features flag, and Edge 12 to 113 did not support it.

CSS Subgrid compatibility in Firefox

Firefox supports CSS Subgrid from Firefox 71 on Windows, macOS, Linux, and Android. Mozilla shipped subgrid first, well ahead of every Chromium and WebKit engine. Firefox 2 to 70 did not parse the subgrid value, so test the older builds with a regular nested grid fallback.

CSS Subgrid compatibility in Safari

Safari supports CSS Subgrid from Safari 16 on macOS Monterey 12.4 and later, iOS 16, iPadOS 16, and visionOS. The WebKit team rolled it out across desktop and mobile Safari at the same time. Safari 3.1 to 15 did not support subgrid on any Apple platform.

CSS Subgrid compatibility in Opera

Opera supports CSS Subgrid from Opera 103 on Windows, macOS, and Linux through the Chromium 117 base. Opera 100 to 102 had subgrid disabled by default behind the opera://flags/#enable-experimental-web-platform-features flag, and Opera 9 to 99 did not support it. Opera Mobile picks it up from version 80.

CSS Subgrid compatibility in Samsung Internet

Samsung Internet supports CSS Subgrid from Samsung Internet 24 on Galaxy phones and tablets. Samsung Internet 4.0 to 23 did not parse the subgrid value at all, so any layout that depends on it falls back to a regular nested grid on those builds.

CSS Subgrid compatibility in Android Browser

The legacy stock Android Browser, frozen at version 4.4 before Chrome for Android took over, does not support CSS Subgrid. On modern Android phones, use Chrome for Android 147 or later, Samsung Internet 24, Firefox for Android, or another modern Chromium-based browser instead.

CSS Subgrid compatibility in Internet Explorer

Internet Explorer never added CSS Subgrid. IE 5.5 through IE 11 do not parse the subgrid value on grid-template-columns or grid-template-rows; IE 10 and 11 only carried the older -ms-grid prefix. Microsoft has retired Internet Explorer, so use Edge, Chrome, or Firefox for any subgrid work.

Note

Note: CSS Subgrid behaves differently on older Chromium, Firefox, and Safari builds. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!

What are the key features of CSS Subgrid?

CSS Subgrid layers a small set of behaviors on top of CSS Grid that solve nested-grid alignment without JavaScript. Each piece composes with regular grid placement, so existing layouts only need a few extra lines to opt in.

  • Track inheritance: The subgrid value on grid-template-columns or grid-template-rows tells a nested grid to use the parent's tracks instead of creating its own.
  • Two-axis subgrids: Apply subgrid to both grid-template-columns and grid-template-rows so the child aligns on rows and columns at once, useful for full-bleed cards.
  • Local line numbering: Line numbers reset inside the subgrid; line 1 is always the first line of the subgrid, so component code stays portable across placements.
  • Inherited gaps: The gap, row-gap, and column-gap values flow from the parent into the subgrid, with overrides allowed when a section needs different spacing.
  • Named line inheritance: Named grid lines on the parent flow into the subgrid, and the subgrid can declare extra line names alongside the inherited ones.
  • Span-based sizing: The number of tracks the subgrid receives matches its grid-column or grid-row span, so authors size by span rather than by track count.
  • Auto-placement still works: Items inside a subgrid auto-place into the inherited tracks, so flow layouts and explicit placement compose normally.

What are the use cases of CSS Subgrid?

Subgrid replaces the JavaScript and ad-hoc CSS hacks that used to power cross-row alignment in card grids, editorial pages, and forms. The same CSS keeps layouts aligned on every breakpoint without measurement scripts.

  • Card grids with consistent rows: Align titles, body text, and call-to-action buttons across cards of varying content length without setting fixed heights on each row.
  • Editorial layouts: Pull article headings, lead paragraphs, and footnotes into the page-level macro grid so a column of stories shares a common baseline.
  • Form layouts: Line up labels, inputs, and helper text across a long form, even when sections live inside nested fieldsets.
  • Pricing tables and feature matrices: Stack pricing tier cards so feature rows align horizontally across columns, regardless of row content height.
  • Product detail pages: Tie photo galleries, description blocks, specifications tables, and review summaries to the same parent grid without overriding gaps.
  • Page-level macro grids: Define the application shell once on the body and let header, sidebar, main, and footer pull their tracks from the same source.
...

How do you check if a browser supports CSS Subgrid?

CSS exposes a one-line @supports gate, and JavaScript exposes feature detection through CSS.supports(). Both run inside the browser with no build step, so a layout can ship a fallback for older builds in a single conditional.

  • Open DevTools console: Press F12 or right-click the page and choose Inspect, then switch to the Console tab.
  • Run the column-axis check: Paste CSS.supports("grid-template-columns: subgrid") into the console and press Enter. A return value of true means the browser parses subgrid on columns.
  • Probe the row axis: Run CSS.supports("grid-template-rows: subgrid") to confirm subgrid works on rows as well as columns in the same browser build.
  • Wrap CSS in @supports: Add @supports (grid-template-columns: subgrid) around your subgrid layout and put a regular CSS Grid fallback outside it for older builds.
  • Run the snippet below: Paste it into the console or ship it inside your page to log a single ready or not-ready line you can pick up in QA logs.
function checkSubgrid() {
    const supportsColumns = CSS.supports("grid-template-columns: subgrid");
    const supportsRows = CSS.supports("grid-template-rows: subgrid");

    if (supportsColumns && supportsRows) {
        console.log("CSS Subgrid is ready in this browser.");
        return true;
    }
    console.log("CSS Subgrid is not available. Fall back to nested CSS Grid with explicit track sizing.");
    return false;
}

checkSubgrid();

If supportsColumns returns true but supportsRows returns false, the browser is on a partial implementation that only covers one axis; render a flat grid for those builds rather than a two-axis subgrid layout.

What are the known issues with CSS Subgrid?

Subgrid is mature in every major engine, but a few rough edges around implicit tracks, intrinsic sizing, and DevTools still show up in production work.

  • No implicit grid in subgridded dimensions: When both axes use subgrid, extra items pile up in the last track instead of growing the grid; remove subgrid from one axis to restore implicit tracks.
  • Auto-track sizing leaks upward: Content inside an auto-sized subgrid track can change track sizing on the parent grid, which can cascade across siblings and break alignment.
  • Intrinsic sizing edge cases: The min-content and max-content tracks behave differently inside subgrids than inside regular nested grids; check key breakpoints when migrating an existing layout.
  • DevTools coverage gaps: Chrome and Firefox DevTools draw subgrid track lines, but Safari Web Inspector still shows the parent grid only, so debugging on macOS often means switching browsers.
  • Older Apple devices miss it: Macs stuck on macOS Big Sur, iPhones on iOS 15, and iPads on iPadOS 15 cannot install Safari 16, so subgrid silently falls back to a nested grid on those devices.
  • WebView lag: Android WebView and iOS WKWebView track their host engine, so a hybrid app on an Android 12 WebView with Chromium 116 cannot render subgrid even when the host phone has a newer Chrome installed.
  • Print and paged-media glitches: Browsers handle subgrid inside @page rules inconsistently, so print stylesheets that mix subgrid and page breaks need extra cross-engine testing.

In my experience, the failure that catches teams off guard is the implicit-track surprise: a card grid built with subgrid on both axes drops the last few cards into the bottom row when stock data is uneven, with no console warning. Switch to grid-template-rows: auto on the child whenever the row count is data-driven.

...

Citations

All CSS Subgrid version numbers and platform notes in this guide come from these primary sources:

Author

Prince Dewani is a Community Contributor at TestMu AI, where he manages content strategies around software testing, QA, and test automation. He is certified in Selenium, Cypress, Playwright, Appium, Automation Testing, and KaneAI. Prince has also presented academic research at the international conference PBCON-01. He further specializes in on-page SEO, bridging marketing with core testing technologies. On LinkedIn, he is followed by 4,300+ QA engineers, developers, DevOps experts, tech leaders, and AI-focused practitioners in the global testing community.

Open in ChatGPT Icon

Open in ChatGPT

Open in Claude Icon

Open in Claude

Open in Perplexity Icon

Open in Perplexity

Open in Grok Icon

Open in Grok

Open in Gemini AI Icon

Open in Gemini AI

Copied to Clipboard!
...

3000+ Browsers. One Platform.

See exactly how your site performs everywhere.

Try it free
...

Write Tests in Plain English with KaneAI

Create, debug, and evolve tests using natural language.

Try for free

Frequently asked questions

Did you find this page helpful?

More Related Hubs

TestMu AI forEnterprise

Get access to solutions built on Enterprise
grade security, privacy, & compliance

  • Advanced access controls
  • Advanced data retention rules
  • Advanced Local Testing
  • Premium Support options
  • Early access to beta features
  • Private Slack Channel
  • Unlimited Manual Accessibility DevTools Tests