☰Navbar Builder
Logo left, links right

Start from a ready-made navbar, then tweak anything in the other tabs.

Preview · scroll inside it · hamburger at 768px and below
<nav class="navbar" aria-label="Main">
  <div class="nav-container">
    <a href="/" class="nav-logo">MyBrand</a>
    <button class="nav-toggle" type="button" aria-label="Open menu" aria-expanded="false" aria-controls="nav-menu">
      <span></span>
      <span></span>
      <span></span>
    </button>
    <div class="nav-menu" id="nav-menu">
      <ul class="nav-links">
        <li><a href="/" class="nav-link active" aria-current="page">Home</a></li>
        <li class="nav-item has-dropdown">
          <button class="nav-link nav-dropdown-toggle" type="button" aria-expanded="false">
            Products
            <svg class="nav-caret" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9" /></svg>
          </button>
          <ul class="nav-dropdown">
            <li><a href="/products/analytics" class="nav-dropdown-link">Analytics</a></li>
            <li><a href="/products/automation" class="nav-dropdown-link">Automation</a></li>
            <li><a href="/products/integrations" class="nav-dropdown-link">Integrations</a></li>
          </ul>
        </li>
        <li><a href="/blog" class="nav-link">Blog</a></li>
        <li><a href="/signup" class="nav-link cta">Get Started</a></li>
      </ul>
    </div>
  </div>
</nav>

<style>
* { box-sizing: border-box; }

.navbar {
  position: sticky;
  top: 0;
  z-index: 50;
  background: #ffffff;
  box-shadow: 0 1px 8px rgba(17,24,39,0.08);
}

.nav-container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 14px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.nav-logo {
  font-size: 18px;
  font-weight: 700;
  color: #111827;
  text-decoration: none;
  flex-shrink: 0;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 28px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0;
  border: 0;
  background: none;
  font-family: inherit;
  font-size: 14px;
  font-weight: 500;
  color: #111827;
  text-decoration: none;
  cursor: pointer;
  transition: color 0.15s;
}
.nav-link:hover,
.nav-link.active { color: #3b82f6; }

.nav-link.cta {
  background: #3b82f6;
  color: #fff;
  padding: 6px 14px;
  border-radius: 6px;
  transition: opacity 0.15s;
}
.nav-link.cta:hover { opacity: 0.88; }

/* Dropdowns */
.nav-item { position: relative; }
.nav-caret { transition: transform 0.2s ease; }
.nav-item.is-open .nav-caret { transform: rotate(180deg); }
.nav-dropdown {
  list-style: none;
  margin: 0;
  padding: 6px;
}
.nav-dropdown-link {
  display: block;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 13px;
  color: #111827;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 0.15s, color 0.15s;
}
.nav-dropdown-link:hover { background: rgba(17,24,39,0.06); color: #3b82f6; }

/* Visible keyboard focus */
.nav-logo:focus-visible,
.nav-link:focus-visible,
.nav-dropdown-link:focus-visible,
.nav-toggle:focus-visible {
  outline: 2px solid #3b82f6;
  outline-offset: 3px;
}

/* Hamburger: hidden on desktop; morphs into an × while the menu is open */
.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  margin-left: auto;
  padding: 8px;
  background: none;
  border: 0;
  cursor: pointer;
}
.nav-toggle span {
  display: block;
  width: 24px;
  height: 2px;
  border-radius: 2px;
  background: #111827;
  transition: transform 0.25s ease, opacity 0.2s ease;
}
.navbar.is-open .nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.navbar.is-open .nav-toggle span:nth-child(2) { opacity: 0; }
.navbar.is-open .nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (min-width: 769px) {
  .nav-menu {
    display: flex;
    align-items: center;
    gap: 28px;
  }
  /* Dropdowns float under their link and open on hover or click */
  .nav-dropdown {
    position: absolute;
    top: calc(100% + 10px);
    left: 50%;
    min-width: 200px;
    background: #ffffff;
    border: 1px solid rgba(17,24,39,0.08);
    border-radius: 10px;
    box-shadow: 0 12px 32px rgba(17,24,39,0.14);
    opacity: 0;
    visibility: hidden;
    transform: translate(-50%, 6px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
  }
  /* Invisible bridge so the pointer can cross the gap into the dropdown */
  .nav-dropdown::before { content: ''; position: absolute; left: 0; right: 0; top: -12px; height: 12px; }
  .nav-item:hover > .nav-dropdown,
  .nav-item.is-open > .nav-dropdown {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, 0);
  }
  .nav-item:hover .nav-caret { transform: rotate(180deg); }
}

/* Mobile: a dropdown panel under the bar */
@media (max-width: 768px) {
  .nav-toggle { display: flex; }
  .nav-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    max-height: calc(100vh - 100%);
    overflow-y: auto;
    padding: 8px 24px 16px;
    background: #ffffff;
    box-shadow: 0 8px 16px rgba(17,24,39,0.1);
  }
  .navbar.is-open .nav-menu { display: block; }
  .nav-links {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }
  .nav-link {
    display: flex;
    width: 100%;
    justify-content: space-between;
    padding: 12px 0;
  }
  .nav-link.cta {
    justify-content: center;
    margin-top: 8px;
    padding: 12px 14px;
  }
  /* Dropdowns become expandable sections inside the menu */
  .nav-dropdown {
    display: none;
    padding: 0 0 8px 12px;
  }
  .nav-item.is-open > .nav-dropdown { display: block; }
  .nav-dropdown-link { padding: 10px 12px; }
}
</style>

<script>
(() => {
  const navbar = document.querySelector('.navbar');
  const toggle = navbar.querySelector('.nav-toggle');
  const dropdowns = navbar.querySelectorAll('.has-dropdown');

  function setMenu(open) {
    navbar.classList.toggle('is-open', open);
    toggle.setAttribute('aria-expanded', open);
    toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
  }

  function closeDropdowns(except) {
    dropdowns.forEach(item => {
      if (item === except) return;
      item.classList.remove('is-open');
      item.querySelector('.nav-dropdown-toggle').setAttribute('aria-expanded', 'false');
    });
  }

  toggle.addEventListener('click', () => setMenu(!navbar.classList.contains('is-open')));
  navbar.querySelectorAll('.nav-menu a').forEach(link => link.addEventListener('click', () => setMenu(false)));

  // Dropdowns: click (or Enter / Space) toggles; on desktop hover opens them too.
  dropdowns.forEach(item => {
    const button = item.querySelector('.nav-dropdown-toggle');
    button.addEventListener('click', () => {
      const open = !item.classList.contains('is-open');
      closeDropdowns(item);
      item.classList.toggle('is-open', open);
      button.setAttribute('aria-expanded', open);
    });
  });
  document.addEventListener('click', e => { if (!navbar.contains(e.target)) closeDropdowns(); });

  document.addEventListener('keydown', e => {
    if (e.key !== 'Escape') return;
    closeDropdowns();
    setMenu(false);
  });

  // Back to the desktop layout: reset the mobile menu.
  matchMedia('(min-width: 769px)').addEventListener('change', () => setMenu(false));
})();
</script>

Responsive Navbar Builder — Free HTML, CSS, React, Tailwind, Vue & Angular Generator

Design a navigation bar with dropdown menus, a mobile hamburger menu and sticky or hide-on-scroll effects — then copy the code or Fork & Edit it.

Updated October 1, 2026

What's included

Navbar Builder Features

Dropdown menus
Give any link a submenu that opens on hover or click on desktop and expands inline on mobile.
Responsive hamburger menu
Dropdown panel, left or right slide-in drawer, or full-screen overlay below your breakpoint.
Animated menu icon
The hamburger morphs into a cross, folds into an arrow, or spins.
5 scroll effects
Static, sticky, shrink on scroll, hide on scroll down, and transparent-to-solid over a hero.
Custom breakpoint
Choose where the mobile menu takes over (480–1024px); every export uses the same value.
6 one-click presets
SaaS, Portfolio, E-commerce, Docs, Midnight and Agency — all fully editable.
4 layouts
Default, Centered, Split (CSS grid with the logo in the middle) and Minimal.
5 export formats
HTML + CSS + vanilla JS, React, Tailwind, Vue 3 and Angular — copy with one click.
Fork & Edit
Open the navbar in My Code to keep editing it with your own content.
Real live preview
A scrollable page running the exported code, with a true 375px mobile view.
Accessible by default
Nav landmark, aria-expanded, aria-current, Escape to close and visible keyboard focus.
Full style control
Colors, padding, font size and weight, link gap, CTA radius, shadow and border.
Logo with emoji picker
Brand name plus an optional icon from a grid of logo-friendly emoji.
Active page and CTA
Highlight the current page and turn any link into a call-to-action button.
No libraries, no sign-up
Dependency-free code, free forever, and nothing leaves your browser.

About this tool

Free Responsive Navbar Builder & Navigation Bar Generator

Every website needs a navigation bar, and a good one is more work than it looks. It needs a layout that still holds up when links are added, dropdown menus that open on hover and on click, a hamburger menu that works on phones, sensible scroll behaviour, keyboard support and screen-reader labels — and then the same component again in whichever framework the next project uses. This free responsive navbar builder handles all of that visually and hands you clean, production-ready code.

Pick a preset or a layout, set your logo and links, add dropdown menus, choose how the bar behaves on scroll and on mobile, style it, and copy the result as HTML, CSS and JavaScript, a React component, a Tailwind component, a Vue 3 component or an Angular component. Or click Fork & Edit to keep working on it in a full code editor. Everything below explains each part of the tool.

Presets: start from a finished navbar

The Presets tab holds six complete navbars you can apply with one click — SaaS, Portfolio, E-commerce, Docs, Midnight and Agency. Each one sets the layout, logo, links, dropdowns, colors, scroll effect and mobile menu together, so you see a realistic result immediately and only have to change what is different for your site. Nothing is locked: every setting stays editable in the other tabs.

Four navbar layouts

The buttons at the top of the left panel switch between four layouts. Default places the logo on the left and the links on the right — the standard pattern for marketing sites and web apps. Centered groups everything in the middle, popular for portfolios and personal sites. Split uses a three-column CSS grid (1fr auto 1fr) to put links on both sides of a centered logo, a common look for shops and agencies; the first half of your links go left and the rest go right. Minimal shows links only, for documentation and apps where the logo lives elsewhere. Every layout collapses to the same hamburger menu on small screens.

Logo and brand

In the Logo tab, type your brand name and add an optional icon in front of it. The emoji picker offers a grid of logo-friendly symbols — tech, business, creative, nature and simple shapes — or you can paste any emoji or character yourself. The logo is set 4px larger than your link text so it stands out, and it links to your home page.

Links, the active page and CTA buttons

The Links tab is a full link editor: rename links, change their URLs, reorder them with the ↑ ↓ arrows, add new ones and remove old ones. Click the green dot to mark the current page — it is shown in your accent color and gets aria-current="page" so screen readers announce it. Click CTA to turn a link into a filled call-to-action button such as "Get Started" or "Sign up"; on mobile it becomes a full-width button at the bottom of the menu.

Dropdown menus and submenus

Click "+ Dropdown item" under any link to give it a submenu, then fill in each item's label and URL. The parent becomes a button with a small arrow. On desktop the dropdown menu floats under its link and opens on hover or on click with a short fade-and-slide, and an invisible bridge stops it closing while the pointer moves into it. On phones the same dropdown becomes an expandable section inside the mobile menu. Dropdowns close on Escape or on a click anywhere outside the navbar, and each one reports its state to assistive technology with aria-expanded.

Navbar scroll effects: sticky, shrink, hide and transparent

The Behavior tab controls how the navbar reacts as the page scrolls. Static scrolls away with the content. Sticky keeps the bar pinned to the top of the screen with position: sticky. Shrink stays pinned and slims its padding down — with a slightly stronger shadow — once you start scrolling, freeing up space for content. Hide on scroll slides the bar out of view while you scroll down and brings it straight back on any scroll up, a pattern that works especially well on phones. Transparent places a clear navbar over a hero image or banner and fades it to a solid background as soon as the page scrolls.

Responsive mobile menu and animated hamburger icon

Below the breakpoint you choose (480–1024px, 768px by default) the links collapse behind a hamburger menu. Pick one of three mobile menu styles: a Dropdown panel that opens under the bar, a Drawer that slides in from the left or right over a dimmed page (an off-canvas menu), or a Full screen overlay with large, centered links. Then choose the hamburger animation — a Cross that morphs into an ×, an Arrow that folds into a ← back arrow, or a Spin. The menu closes when a link is chosen, when the dimmed backdrop is tapped, or when Escape is pressed, and the drawer and full-screen menus lock the page scroll behind them.

Style: colors, spacing and typography

The Style tab sets the look. Three color pickers — Background, Text and Accent — each take a native picker or a hex code; the accent is used for the active link, hover states, the CTA button and keyboard focus outlines. Sliders control the bar's padding, the font size, the gap between links and the CTA corner radius, four buttons choose the font weight, and two toggles add a drop shadow or a bottom border. Dropdowns and mobile menus automatically use the same colors.

A live preview that runs the real code

The preview is not a mock-up: it is a real, scrollable page running the exact HTML, CSS and JavaScript you will export, so dropdowns, scroll effects and the mobile menu behave just as they will on your site. Scroll inside it to try the sticky, shrink, hide or transparent effect. Click Mobile to view it in a real 375px-wide frame where the media query switches to the hamburger menu, and tap the icon to open it.

Export: HTML, React, Tailwind, Vue and Angular

Choose a format above the code and click Copy. HTML gives you the markup, a <style> block and a few lines of vanilla JavaScript with no libraries. React gives a Navbar.jsx component using useState and useEffect with a matching Navbar.css. Tailwind gives a React component styled entirely with utility classes. Vue gives a Vue 3 single-file component with <script setup> and <style scoped>. Angular gives a standalone Angular 17+ component using signals and the @for / @if control flow. Every format includes the same dropdowns, mobile menu, scroll behaviour and accessibility attributes.

Fork & Edit: keep building in My Code

Fork & Edit — in the preview bar and next to the Copy button — opens your navbar in My Code, the free in-browser code editor on webdevpuneet.com, as a new snippet. The HTML, CSS and JavaScript land in separate editor panes with a live preview, together with the demo page, so you can carry on where the builder stops: add your real page content, rename classes, change the markup or extend the styles. The snippet is saved in your browser, and from My Code you can export it as a standalone HTML file, a React JSX component or a React + Tailwind component, or back it up to a private GitHub Gist. Nothing is uploaded — the hand-off happens through your browser's local storage.

Accessible, dependency-free and private

The exported navbar follows accessibility best practice: a <nav aria-label="Main"> landmark, a real <button> for the hamburger with aria-controls, aria-expanded and a changing label, aria-current on the active page, Escape to close menus, and visible :focus-visible outlines. It needs no Bootstrap, jQuery, icon font or plugin. The builder itself is free, needs no sign-up, and runs entirely in your browser — your design is never sent to a server, and the code is yours to use in personal and commercial projects.

Step by step

How to Build a Responsive Navbar

  1. 1
    Pick a preset or a layoutOpen the Presets tab and click one of the six ready-made navbars, or use the layout buttons at the top of the left panel — Default, Centered, Split or Minimal — to start from a plain bar.
  2. 2
    Set your logo and linksIn the Logo tab, enter your brand name and pick an optional icon. In the Links tab, rename, reorder, add and remove links, mark the current page with the green dot, and toggle CTA to turn a link into a button.
  3. 3
    Add dropdown menusUnder any link, click "+ Dropdown item" and fill in a label and URL for each submenu item. That link becomes a dropdown in the preview and in every export.
  4. 4
    Choose scroll and mobile behaviourIn the Behavior tab, pick what happens on scroll, the mobile menu style, the hamburger animation and the breakpoint. Scroll inside the preview, and click Mobile to try the menu at phone width.
  5. 5
    Style itIn the Style tab, set the background, text and accent colors, adjust padding, font size, link gap and CTA radius, choose a font weight, and toggle the shadow and border.
  6. 6
    Copy the code or Fork & EditChoose HTML, React, Tailwind, Vue or Angular and click Copy to paste it into your project — or click Fork & Edit to open it in My Code and keep editing it in the browser.

Behavior tab

Scroll Effects and Mobile Menu Options

SettingOptionWhat it does
On scrollStaticScrolls away with the page.
On scrollStickyStays pinned to the top (position: sticky).
On scrollShrinkPinned, and slims its padding once the page scrolls.
On scrollHide on scrollHides while scrolling down, returns on any scroll up.
On scrollTransparentClear over the hero, turns solid as the page scrolls.
Mobile menuDropdownA panel that opens under the bar.
Mobile menuDrawerSlides in from the left or right over a dimmed page.
Mobile menuFull screenCovers the screen with large, centered links.
Menu iconCross / Arrow / SpinHow the hamburger animates while the menu is open.
Breakpoint480–1024pxThe width at and below which the hamburger menu takes over.

Code export

Export Formats Compared

FormatWhat you getMobile menu & dropdown stateStylingNeeds
HTMLMarkup + <style> + <script>Vanilla JavaScript (is-open classes)Plain CSS with media queriesNothing — any website or CMS
ReactNavbar.jsx + Navbar.cssuseState + useEffectPlain CSS fileReact 16.8+
TailwindReact componentuseState + useEffectTailwind utility classesTailwind CSS v3.2+
VueVue 3 single-file componentref + onMounted<style scoped>Vue 3
AngularStandalone component (.ts)Signals + @HostListenerComponent stylesAngular 17+
Tip: Fork & Edit to keep going

Copying is great for dropping a navbar into an existing project. When you want to keep shaping it — add real page content, extra sections or your own scripts — click Fork & Edit. It opens the navbar in My Code with HTML, CSS and JavaScript panes and a live preview, saved in your browser.

Real-world uses

Common Use Cases

⚡
Ship a complete navbar on a new project in minutes
Start from a preset, swap in your brand and links, and paste production-ready code — mobile menu and dropdowns included — instead of rebuilding the same component from scratch. More navigation patterns live in the UI snippets library.
📱
Get the mobile menu right without fiddly CSS
Pick a dropdown, drawer or full-screen menu and an animated hamburger; the export already handles the breakpoint, open state, backdrop clicks, Escape and scroll locking.
🧭
Build navigation with dropdown menus
Group products, categories or docs sections under dropdowns that open on hover or click on desktop and expand inline on phones, with keyboard and screen-reader support wired in.
🎞️
Add a sticky, shrinking or hide-on-scroll header
Test each scroll effect on a real scrollable preview — including a transparent bar over a hero that turns solid as the page scrolls — and export exactly what you tested.
⇄
Reuse one design across frameworks
Export the same navbar as plain HTML for a CMS or landing page, React or Tailwind for a Next.js app, a Vue 3 component or an Angular standalone component — with matching behaviour in each.
🛠️
Fork it and keep building
Send the navbar to My Code with Fork & Edit, add your real page around it, and export the finished page as an HTML file or a React component when it is ready.
🎓
Learn how a modern navbar works
Compare the vanilla JavaScript with the React, Vue and Angular versions to see how state, effects and ARIA attributes map across frameworks — then practise in the HTML or JavaScript playground.
♿
Start from accessible markup
Get a navbar that already uses a nav landmark, a real toggle button, aria-current and visible focus styles, instead of retrofitting accessibility later.
🎨
Match a brand in seconds
Drop in your brand colors with the pickers — or build a scheme first with the color palette generator — and check readability with the color contrast checker.

Got questions?

Frequently Asked Questions

A navbar builder is a visual tool for designing a website navigation bar without writing the code by hand. You choose the layout, logo, links, colors and behaviour with controls, watch a live preview update, and then copy the finished HTML, CSS and JavaScript — or a React, Tailwind, Vue or Angular component — into your project. This one is free, runs entirely in your browser and needs no account.

Build your navbar, then open the Behavior tab. Pick a mobile menu style — Dropdown, Drawer or Full screen — and set the Breakpoint (768px by default). Below that width the links collapse behind a hamburger button that opens the menu, and the exported code already includes the media query, the toggle button and the JavaScript that opens and closes it. Click Mobile above the preview to test it at phone width.

In the Links tab, click "+ Dropdown item" under the link and fill in a label and URL for each submenu item. That link becomes a dropdown button. On desktop the submenu floats under the link and opens on hover or click with a short fade; on mobile it expands inline inside the menu. Dropdowns close on Escape or on a click outside the navbar, and screen readers hear whether each one is open through aria-expanded. CTA links never get a dropdown.

Three. Dropdown opens a panel straight under the navbar — the lightest option and a good default. Drawer slides a full-height panel in from the left or right over a dimmed page, the classic off-canvas menu; clicking the dimmed area closes it. Full screen covers the whole screen with large, centered links for a bold, app-like feel. The drawer and full-screen menus also stop the page from scrolling behind them while they are open.

Yes. Choose the menu icon animation in the Behavior tab: Cross morphs the three lines into an ×, Arrow folds them into a ← back arrow, and Spin rotates the button while it turns into an ×. The animation is pure CSS transitions driven by an is-open class, so it costs nothing extra in JavaScript.

Open the Behavior tab and choose an On scroll option. Sticky keeps the bar pinned to the top with position: sticky. Shrink keeps it pinned and slims the padding down once the page scrolls. Hide on scroll slides the bar away while scrolling down and brings it back on any scroll up. Transparent places a clear navbar over a hero section and fades it to a solid background as soon as the page scrolls. Scroll inside the preview to feel each one before exporting.

Five. HTML gives you the markup, a <style> block and a small vanilla JavaScript <script> with no libraries. React gives a Navbar.jsx component using useState and useEffect plus a matching Navbar.css. Tailwind gives a React component styled with Tailwind utility classes (Tailwind v3.2+). Vue gives a Vue 3 single-file component with <script setup> and <style scoped>. Angular gives a standalone Angular 17+ component that uses signals and the @for / @if control flow. Every format has the same dropdowns, mobile menu and scroll behaviour.

Fork & Edit opens your navbar in My Code, the free in-browser code editor on webdevpuneet.com, as a new saved snippet with separate HTML, CSS and JavaScript panes and a live preview. You can keep editing it there — add your own page content, change the markup, restyle it — and it stays saved in your browser. From My Code you can export it as a standalone HTML file, a React JSX component or a React + Tailwind component, and optionally back it up to a private GitHub Gist. Nothing is uploaded: the snippet is handed over through your browser's local storage.

Six complete navbars you can apply with one click: SaaS (product dropdown, shrinks on scroll), Portfolio (centered, hides on scroll, full-screen menu), E-commerce (shop dropdown, sticky, side drawer), Docs (dark bar, guides dropdown, bottom border), Midnight (transparent over the hero, left drawer) and Agency (split layout, services dropdown, full-screen menu). A preset sets the layout, logo, links, colors and behaviour together, and you can change anything afterwards.

Yes, accessibility is built into every export. The navbar is a <nav aria-label="Main"> landmark. The hamburger is a real <button> with aria-controls, aria-expanded and a label that switches between "Open menu" and "Close menu". The active link gets aria-current="page" so screen readers announce the current page. Dropdown parents are buttons with aria-expanded, Escape closes any open menu, and every link and button shows a clear :focus-visible outline in your accent color for keyboard users.

Yes. The Breakpoint slider in the Behavior tab sets the width (480–1024px) at which the hamburger menu takes over. The value is written into the CSS media queries, the vanilla JavaScript and the Tailwind min-[…px]: variant, so every export switches at exactly the same width. Use a wider breakpoint when you have many links or long labels.

Four. Default puts the logo on the left and the links on the right. Centered groups the logo and links in the middle. Split uses a three-column CSS grid with links on both sides of a centered logo — the first half of your links go left, the rest go right, and you control the split by reordering. Minimal shows links only. All four collapse to the same hamburger menu on mobile.

In the Links tab, click the green dot on a link to mark it as the active (current) page — it is shown in your accent color and gets aria-current="page". Only one link can be active at a time. Click CTA on a link to turn it into a filled button using your accent color and CTA radius; on mobile it becomes a full-width button at the bottom of the menu.

No. The HTML export is plain HTML, CSS and a few lines of vanilla JavaScript. The React, Vue and Angular exports only use their own framework, and the Tailwind export only needs Tailwind CSS. There are no icon fonts, plugins or CDN files to add — the hamburger and dropdown arrows are drawn with CSS and inline SVG.

It is completely free with no sign-up and no limits, and the code you generate is yours to use in personal and commercial projects. Everything runs in your browser: your settings and code are never sent to a server.

Changelog

Recent Features and Improvements

Responsive navbars, dropdowns, presets and Angular

  • Dropdown submenus that open on hover or click and expand inline on mobile
  • Dropdown, drawer and full-screen mobile menus with cross, arrow or spin hamburger animations
  • Static, sticky, shrink, hide-on-scroll and transparent scroll effects, plus a custom breakpoint
  • Six one-click presets and an emoji picker for the logo
  • A live preview that runs the exported code on a scrollable page, with a true mobile view
  • Angular export, aria-current and focus-visible styles in every format, and Fork & Edit into My Code