Twenty-two website header designs, built and maintained in-house by uiCookies. Marketing bars, application headers, mastheads, mega menus, storefront bars and side navigation — every one a single HTML file with the CSS inline, free for commercial use.

A header is the one component every page has, and the one most templates get wrong in the same two ways: it works at 1440px and falls apart at 380px, and it looks right until someone reaches it with a keyboard. Every design on this page was checked at 380px for horizontal overflow and every control was checked for an accessible name before it shipped.

Free download Browse live demos

Choosing a header layout

Most of the decision is made by what kind of site you are building and whether the header needs to stay on screen. This is the shortest route to a shortlist:

Design Best for Positioning
Classic SaaS Header Product and marketing sites Sticky
Transparent-to-Solid Header Sites with a full-bleed hero Fixed
Mega Menu Header Large catalogues and multi-product sites Sticky
Centered Masthead Portfolios, studios and brands Static
Dark In-App Header Dashboards and signed-in products Sticky
Double-Deck Service Header Agencies, clinics and local services Static
Hamburger Drawer Header Content-heavy sites and mobile-first designs Fixed
Floating Glass Pill Modern product and landing pages Fixed
Storefront Header Online shops Sticky
Neobrutalist Header Editorial and personality-led sites Static
Announcement Bar Header Launches, sales and notices Sticky
Search-First Header Documentation and template libraries Sticky
Split Navigation Header Fashion, hospitality and brand sites Static
Minimal Text Header Portfolios and writing sites Static
Dual CTA Header SaaS and subscription products Sticky
Vertical Side Header Agencies and portfolio sites Fixed
Shrinking Sticky Header Long-form marketing pages Sticky
Header with Breadcrumbs Documentation and deep catalogues Sticky
Header with Locale Switcher Sites shipping in several markets Sticky
Application Header Signed-in products Sticky
Editorial Masthead Magazines, blogs and publications Static
Header with Reading Progress Long articles and documentation Sticky

What belongs in a header

Three things earn their place without argument: a logo that links home, the primary navigation, and at most one prominent action. Everything after that is a negotiation.

Search belongs in the header when the site is large enough that browsing is slower than searching — documentation, a template library, a shop with real depth. An account control belongs there when people sign in on most visits. A language selector belongs there only if the site genuinely ships in several markets; otherwise it is a permanent reminder of a decision nobody needs to make. A phone number belongs there for a business people ring, which is why the double-deck design gives it a strip of its own.

The test for anything else is simple: would most visitors use it on most visits? If not, it belongs in the footer, where nobody minds a long list.

Sticky, fixed or static

Static headers scroll away and stay away. They cost nothing, never cover content, and are the right answer for short pages and most phone layouts.

Sticky headers scroll with the page and stop at the top. This is the sensible default for a long marketing page — the navigation is there when someone wants it without permanently taking a slice of the viewport.

Fixed headers never move. Reserve them for interfaces where the bar is part of the tool rather than part of the page: an application header, a documentation site with persistent search.

Whichever you pick, set scroll-padding-top on the html element to the header height. Without it every in-page anchor scrolls its target underneath the header, and readers land on a section whose heading they cannot see — the single most common bug that ships with a sticky header.

Making a header work on a phone

Decide what to drop before deciding what to collapse. A header with a logo, five links, a search field, a language selector and two buttons cannot be rearranged into 380px — something has to go.

The order that usually works: hide tertiary controls outright, move the primary navigation behind a menu button, keep the logo and one action. The vertical header here collapses to a horizontal bar entirely, because a side rail costs width a phone does not have. The breadcrumb header lets its trail scroll sideways rather than forcing the page wide.

Test at 380px, not 768px. Every design on this page was checked for horizontal overflow at that width, and five of the twelve new ones needed a media query before they passed.

Accessibility checklist

  • Use a real <header> and a real <nav>. They create landmarks a screen reader user can jump between; a styled <div> does not.
  • Mark the current page with aria-current="page" and style from that attribute rather than an .active class, so the visual state and the announced state cannot drift apart.
  • Give every icon-only control an aria-label. A basket or bell with no text is announced as “link” and nothing else.
  • Keep a visible focus state, and prefer :focus-visible so the ring appears for keyboard users without flashing on every mouse click.
  • Add a skip link as the first focusable element on the page. Without one, a keyboard user tabs through the entire navigation on every single page.
  • If the header has more than one navigation region — a main nav and a breadcrumb — give each an aria-label so they are distinguishable.

Performance notes

Two things in a header show up in Core Web Vitals. A bar that changes height on scroll shifts the content beneath it and is recorded as layout shift; the shrinking design here avoids that by animating only its own height, with the page content unaffected. And a scroll handler that writes styles every frame costs responsiveness — toggle a class past a threshold and let a CSS transition do the rest, which is what the shrinking and transparent designs do.

The frosted glass design is the one to measure. backdrop-filter is expensive to composite over a busy background, and a mid-range phone will show it before a laptop does.

The 22 designs

1. Classic SaaS Header

Classic SaaS Header — free website header template by uiCookies

Logo left, navigation centre, a single call to action right. It is the arrangement most visitors have seen a thousand times, which is exactly why it needs no explaining.

Start here unless you have a reason not to. A familiar header costs nothing in attention and leaves the page free to do the persuading.

Live Demo

2. Transparent-to-Solid Header

Transparent-to-Solid Header — free website header template by uiCookies

The header sits over the hero image with no background of its own, then takes on a solid fill and a shadow once the page scrolls past it.

The trap is contrast: white nav links over an unknown photograph can be unreadable. Either commit to a dark scrim over the hero or pick images you control.

Live Demo

3. Mega Menu Header

Mega Menu Header — free website header template by uiCookies

A full-width panel drops beneath the bar, holding several columns of grouped links with room for descriptions rather than bare labels.

Worth it once a section has more than about seven children. Below that a mega menu is a lot of surface area for a short list.

Live Demo

4. Centered Masthead

Centered Masthead — free website header template by uiCookies

The wordmark sits centred above the navigation, giving the brand the full width of the page before any links appear.

It costs vertical space, so it suits a site where the first impression matters more than getting people straight into a menu.

Live Demo

5. Dark In-App Header

Dark In-App Header — free website header template by uiCookies

A compact dark bar sized for an application rather than a marketing page — shorter, denser, and quieter so the interface below it can carry the colour.

Application headers should shrink, not grow. Every pixel here is one the actual product does not get.

Live Demo

6. Double-Deck Service Header

Double-Deck Service Header — free website header template by uiCookies

A top strip carrying a phone number and opening hours, with the main navigation on the row beneath it.

For a business people ring rather than sign up to, the contact strip is doing more work than the nav is. Put it where the eye lands first.

Live Demo

7. Hamburger Drawer Header

Hamburger Drawer Header — free website header template by uiCookies

A minimal bar with the navigation behind a menu button, sliding in as a full-height drawer.

A hamburger on desktop hides links people would have used. It earns its place when the menu is genuinely long, or when the design needs the bar to stay almost empty.

Live Demo

8. Floating Glass Pill

Floating Glass Pill — free website header template by uiCookies

A rounded bar floating clear of the top edge with a frosted backdrop, so the page shows through it as it scrolls.

The frosted effect uses backdrop-filter, which is expensive to composite over a busy background — worth checking on a mid-range phone before committing to it.

Live Demo

9. Storefront Header

Storefront Header — free website header template by uiCookies

Search, account and a basket with a live count, arranged so the three things a shopper actually reaches for are never more than one tap away.

The basket count belongs in the markup, not a background image, so it can be announced and updated without a repaint.

Live Demo

10. Neobrutalist Header

Neobrutalist Header — free website header template by uiCookies

Heavy borders, a hard offset shadow and flat colour — a deliberately loud bar for a site that wants to look nothing like a template.

Check the contrast before shipping it. Neobrutalist palettes tend to pair mid-saturation colours that look decisive and fail AA.

Live Demo

11. Announcement Bar Header

Announcement Bar Header — free website header template by uiCookies

A dismissible strip above the header carrying one message, with the header itself sticking to the top once the bar scrolls away.

The dismiss is a checkbox and a sibling selector — no JavaScript, and no flash of the bar reappearing on the next page load if you persist the state server-side.

Live Demo

12. Search-First Header

Search-First Header — free website header template by uiCookies

A wide search field takes the space the navigation would have used, with a keyboard shortcut hint at the end of it.

Once a site has a few hundred pages, search beats a menu. The hint matters — a search field nobody knows is focusable gets used far less.

Live Demo

13. Split Navigation Header

Split Navigation Header — free website header template by uiCookies

The logo sits centred with navigation divided either side of it, on a three-column grid.

The grid is what keeps the mark optically centred no matter how many links sit either side. A flex row cannot do that without fixed widths.

Live Demo

14. Minimal Text Header

Minimal Text Header — free website header template by uiCookies

No bar, no border, no background — a wordmark and three links sharing the page margin, with an underline that draws in on hover.

The lightest header in the pack. Content starts where the eye already is rather than below a band of chrome.

Live Demo

15. Dual CTA Header

Dual CTA Header — free website header template by uiCookies

A quiet sign-in link beside a solid primary button — the standard arrangement when a site has both existing users and new ones.

Two buttons of equal weight make people choose twice. Giving the secondary action no fill is what makes the primary one read as the default.

Live Demo

16. Vertical Side Header

Vertical Side Header — free website header template by uiCookies

A full-height bar down the left edge, freeing the entire top of the page for content.

It collapses to a normal horizontal bar below 860px, because a fixed side rail costs far too much width on a phone.

Live Demo

17. Shrinking Sticky Header

Shrinking Sticky Header — free website header template by uiCookies

A tall header that condenses as the page scrolls, keeping the navigation reachable without holding the vertical space it needed at the top.

Only the height and the logo size change, so nothing reflows around it. Animating padding instead is what makes most shrinking headers jitter.

Live Demo

18. Header with Breadcrumbs

Header with Breadcrumbs — free website header template by uiCookies

Two rows: navigation on the first, a breadcrumb trail on the second.

The trail is a real ordered list inside its own labelled <nav>, which is what lets a screen reader announce it as a separate landmark rather than more links.

Live Demo

19. Header with Locale Switcher

Header with Locale Switcher — free website header template by uiCookies

A language and region selector sitting alongside the navigation, built on a real <select>.

A native select works with a keyboard, works on mobile, and needs no dropdown code to maintain — three reasons to resist rebuilding it.

Live Demo

20. Application Header

Application Header — free website header template by uiCookies

Workspace switcher, search, a notification bell with an unread dot, and an avatar, on a 58px bar.

Every icon-only control carries an aria-label. Without one it is announced as “link” and nothing else, which is the most common failure in an app header.

Live Demo

21. Editorial Masthead

Editorial Masthead — free website header template by uiCookies

A newspaper-style masthead with the date and edition above a serif wordmark, and a section rail beneath.

A masthead earns its height by carrying the date and the edition — information a logo bar has nowhere to put.

Live Demo

22. Header with Reading Progress

Header with Reading Progress — free website header template by uiCookies

A sticky bar with a reading-progress indicator along its bottom edge.

Where the browser supports scroll-driven animations this is pure CSS with no scroll listener at all; the few lines of JavaScript only run as a fallback.

Live Demo

Frequently asked questions

Are these website header templates free?

Yes. All 22 designs are free for personal and commercial projects, including client work, and download as a single ZIP with no signup.

Should a header be sticky, fixed or static?

Sticky suits most sites: the header scrolls away with the page and returns when it is needed without permanently occupying the viewport. Fixed is for a header that must always be reachable — an application bar, or a page with a floating call to action. Static is the right answer more often than people expect, especially on short pages and on phones where a fixed bar can eat a fifth of the screen.

How do I stop a sticky header covering my anchor links?

Add scroll-padding-top to the html element, set to the header height. Without it, jumping to an in-page anchor scrolls the target underneath the header and the reader lands mid-section with the heading hidden.

What should a website header contain?

A link home on the logo, the primary navigation, and at most one prominent action. Anything else — search, account, basket, language — earns its place only if people use it on most visits. A header carrying six competing elements is a header nobody reads.

How do I make a header responsive without a framework?

Decide what to drop before you decide what to collapse. Below roughly 760px the secondary navigation usually goes behind a menu button and any tertiary element is hidden outright. Every design here does this with one media query and no JavaScript, except the drawer, which needs a few lines.

Do sticky headers hurt Core Web Vitals?

They can. A header that changes height on scroll shifts the content beneath it and shows up as Cumulative Layout Shift, and a scroll handler that writes styles on every frame costs responsiveness. The shrinking header here toggles one class past a threshold and lets a CSS transition do the work, which avoids both.

Are these headers accessible?

Each one uses a real <header> and <nav>, marks the current page with aria-current="page", gives every icon-only control an aria-label, and keeps a visible focus state. Add a skip link as the first focusable element on the page and the header is done.

Can I use these with Bootstrap or Tailwind?

Yes. They are plain CSS on their own class names and do not depend on either. Inside Bootstrap you may want to avoid the navbar class names so its own component styles do not fight yours.

Aigars Silkalns

Designed & written by Aigars Silkalns

Aigars Silkalns is a Latvian entrepreneur and web developer who founded Colorlib, a hub for distinctive WordPress themes. Trained in technology and design, he began as a freelancer and launched Colorlib in 2013, earning acclaim for user-friendly, modern, responsive themes. A champion of open source, Silkalns shares insights on web trends and entrepreneurship. His mission is to make web design simple and accessible, empowering people worldwide to build professional sites with ease.

XLinkedInMore about uiCookies →

Published by Aigars Silkalns

Aigars Silkalns is a Latvian entrepreneur and web developer who founded Colorlib, a hub for distinctive WordPress themes. Trained in technology and design, he began as a freelancer and launched Colorlib in 2013, earning acclaim for user-friendly, modern, responsive themes. A champion of open source, Silkalns shares insights on web trends and entrepreneurship. His mission is to make web design simple and accessible, empowering people worldwide to build professional sites with ease.

uiCookies content is free. When you buy through links on our site, we may earn an affiliate commission.