How to Hide Header in Elementor WordPress (2026) — 3 Methods + One-Click Fix
Half the people asking this want to hide the site navigation bar (logo + menu); the other half want to hide the page title H1. This guide covers both. The #1 fix for the site nav header on a single landing page is Page Attributes → Template → Elementor Canvas — built into Elementor core (free, no Pro), one click, no CSS. For the page title, use Elementor's Hide Title toggle. Scoped CSS is kept below as a fallback for stubborn themes.
Key Takeaways
- For a single landing page, the cleanest trick is Page Settings → Page Layout → Elementor Canvas — strips header, footer, and sidebar in one click.
- For per-page header hide without Canvas, use a scoped CSS snippet:
body.page-id-XX header { display: none !important; }. - Elementor Pro adds a proper solution — Theme Builder → Header → Display Conditions → Exclude specific pages or page groups. Header isn't even rendered.
Hide Titlein Page Settings only hides the H1 — not the site header with logo and menu.- Always write CSS to a child theme or to Elementor Custom CSS — direct parent theme edits get wiped on every update.
Method 1: Elementor Page Settings (Hide Title + Canvas Layout)
If the "header" you want to hide is actually the theme's page title block (the big H1 above your content), the toggle is built in:
- Open the page in Elementor editor.
- Click the gear icon at the bottom-left to open Page Settings.
- Toggle on Hide Title. The theme's H1 disappears immediately in the preview.
- If you also want to hide the site header (logo + menu bar), change Page Layout from "Default" to Elementor Canvas. Canvas strips the theme's header, footer, and sidebar — you get a blank slate to build your landing on.
Canvas works on Elementor free — you don't need Pro for it. Downside: if you want to keep the footer (for legal links, contact info) and only hide the header, Canvas is too aggressive. Use Method 2.
Method 2: Scoped CSS Snippet (Keeps the Footer, Hides the Header)
WordPress adds a unique body class like page-id-123 for every page. You can use that class as a scope so the CSS only affects one page and leaves everything else untouched.
Step 1 — Find your page ID
In wp-admin, open Pages → All Pages, hover the page, and click Edit. The URL will look like …/post.php?post=421&action=edit — 421 is the page ID.
Step 2 — Find the correct header selector
Open the page in Chrome, right-click on the header, choose Inspect. Common correct selectors, depending on theme:
header#masthead— Twenty Twenty-One/Twenty Twenty-Two, many classic themes..site-header— Astra, GeneratePress, Kadence..elementor-location-header— Elementor Pro Theme Builder custom header.header.ast-primary-header— Astra Pro.
Step 3 — Add the scoped CSS
Go to Appearance → Customize → Additional CSS (or Elementor → Custom CSS, Pro), and paste:
/* Hide the site header on page ID 421 only.
Replace 421 with your page ID. */
body.page-id-421 :is(.site-header, header#masthead, .elementor-location-header) {
display: none !important;
}
/* Optional: remove the gap the header left behind */
body.page-id-421 :is(#content, .site-content) {
padding-top: 0 !important;
margin-top: 0 !important;
}
Need it on a page group instead of one page? Swap the body class:
/* All children of page ID 42 (e.g. /services/seo/, /services/ads/) */
body.parent-pageid-42 header { display: none !important; }
/* All WooCommerce shop / product archive pages */
body.woocommerce-shop header,
body.post-type-archive-product header { display: none !important; }
/* Every single blog post (hide header only in blog reading view) */
body.single-post header { display: none !important; }
<header> site-wide. That removes navigation from every page and destroys usability. Always scope with body.page-id-XX, .parent-pageid-XX, or a similar body class.
Method 3: Elementor Pro Theme Builder Conditional Display
If you already have Elementor Pro, the header is probably a Theme Builder template, not a theme file. That means you can conditionally not render it — far better than CSS hiding (the header never loads, zero JS/CSS/HTTP cost).
- Go to Templates → Theme Builder in wp-admin.
- Hover your Header template and click Edit Conditions (or open the template and click the gear icon → Display Conditions).
- You'll have a default rule like Include → Entire Site. Click Add Condition.
- Pick Exclude from the dropdown, then the scope:
- Specific Page → pick your landing page.
- Pages → All children of → pick a parent (hides header on the whole branch).
- In WooCommerce Products → hides on every product page.
- By Custom Field / URL / Role → advanced conditional logic.
- Click Save & Close. Visit the excluded page — the header isn't there, and it isn't even rendered in the HTML source.
This is the "right" way in 2026. CSS hiding is a workaround; Theme Builder conditions are the native feature. If you're on Pro, prefer this every time.
Method Comparison
| Method | Cost | Header removed from DOM? | Per-page / per-group control? | Difficulty |
|---|---|---|---|---|
| Page Settings → Canvas (M1) | Free | Yes | Per page (also kills footer) | None |
| Scoped CSS (M2) | Free | No — hidden but in source | Page, page-group, template | Low |
| Theme Builder conditional (M3) | Pro ($59/yr) | Yes — not rendered | Full conditional logic | None |
| Edit theme's header.php directly | Free | Yes | Needs PHP logic | Medium + wiped on update |
How SimpleReview Handles This
If you don't want to look up page IDs, figure out the correct header selector, or worry about whether your theme uses .site-header or #masthead, SimpleReview does all of that from a single click:
- Install the Chrome extension and open the page where you want the header gone.
- Click the SimpleReview icon, then click directly on the header element.
- Type "Hide header on this page only" and click Fix it. SimpleReview inspects the DOM, picks the most specific selector, scopes it to the current
body.page-id-*class, and opens a PR that adds the snippet to your child theme'sstyle.css.
The result is the same as Method 2 — but you don't read DevTools, and the PR is reviewable before it hits production.
Hide the Elementor Header in One Click
Click the header → SimpleReview picks the right selector, scopes it to the current page, and opens a PR against your child theme.
Install SimpleReview Chrome Extension →Prefer a WordPress plugin? Download SimpleReview for WordPress → — installs in 30 seconds, no Chrome required.
Frequently Asked Questions
body.page-id-123 .site-header, body.page-id-123 header#masthead { display: none !important; } — replace 123 with your page ID.Hide Title only hides the page's H1. It does not touch the site header with logo, navigation, or search bar. To hide the full header use scoped CSS (Method 2) or, with Pro, Theme Builder display conditions (Method 3).body.page-id-XXX header. With Elementor Pro, Theme Builder → Header → Display Conditions → Exclude → Specific Page is the best option.display:none CSS not hide the Elementor header?!important and/or prefix with body for extra specificity. (3) The header is rendered by Elementor Pro Theme Builder; CSS hides it visually but it still loads. Use Theme Builder conditions instead.body.woocommerce-shop header, body.parent-pageid-42 header { display: none !important; }. .parent-pageid-42 targets all children of page ID 42.