25 CSS Footer Designs

25 hand-coded CSS footer designs for SaaS marketing pages, e-commerce storefronts, agency portfolios, documentation sites, mobile apps, and local business sites. Covers sticky-to-bottom flexbox, responsive 4-column, SaaS mega footer, e-commerce with payment icons, SOC 2 / GDPR / HIPAA compliance badges, embedded Google Maps + office hours, mobile-first collapsible accordion, newsletter signup, animated SVG wave, and language + currency switcher. 16 Pure CSS + 9 Light JS. Scoped under .ft-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.

16 pure CSS9 light JSPublished 10 new designs · Updated on

Related22 CSS Headers31 CSS Hero Sections8 CSS Navbar Designs20 CSS Social Buttons

Sticky Footer to Bottom of Page (Flexbox & CSS Grid) — preview
01 / 25Light JSNEW

Sticky Footer to Bottom of Page (Flexbox & CSS Grid)

The layout every other footer in this collection sits on: a footer that rests on the bottom edge of the viewport when the page is short, and gets pushed down naturally when the page is long — no position:fixed, no calc(100vh - 180px), no JavaScript measuring anything. Both the Grid and the Flexbox recipe are wired to a live switch so you can watch them behave identically.

Published

Responsive 4-Column Footer with Category Links — preview
02 / 25Pure CSSNEW

Responsive 4-Column Footer with Category Links

The workhorse site footer: four labelled link categories that reflow from 4 → 2 → 1 columns without a single media query, using one repeat(auto-fit, minmax()) track definition. The markup is the accessible version most templates get wrong — each category is its own <nav> named by its own visible heading, so screen-reader users can jump straight to Support instead of wading through forty links.

Published

SaaS Product Mega Footer with Resource Grid — preview
03 / 25Pure CSSNEW

SaaS Product Mega Footer with Resource Grid

The big-surface SaaS footer: a promoted resource rail of three real content cards sitting above six link columns, so the last screen of the page does conversion work instead of just listing URLs. Named grid areas keep the whole arrangement readable, and the mobile order is declared, not accidental.

Published

Simple Minimalist Footer HTML CSS — preview
04 / 25Pure CSSNEW

Simple Minimalist Footer HTML CSS

Twelve lines of CSS for the footer most sites actually need: a wordmark, a short link row and a copyright line, holding its composure from 320px to 2560px. Nothing is hidden at small sizes, nothing is centred by hand, and the underline treatment is the modern one — text-underline-offset rather than a fake border.

Published

E-Commerce Footer with Payment Icons & Security Badges — preview
05 / 25Pure CSSNEW

E-Commerce Footer with Payment Icons & Security Badges

The footer that closes the sale: accepted-payment marks, an SSL/secure-checkout statement, returns and shipping promises, all built from inline SVG that inherits currentColor so the whole rail re-themes with one token. No image sprites, no 12 network requests for card logos, no blurry PNGs on a retina display.

Published

Dark Mode Toggle Footer HTML CSS — preview
06 / 25Light JSNEW

Dark Mode Toggle Footer HTML CSS

A theme switch that lives where users actually look for it — in the footer — and does it the 2026 way: color-scheme plus the light-dark() function, so a single token list serves both themes with no duplicated [data-theme="dark"] block. Three states, because "follow my system" is a real preference and a two-state toggle silently overrides it.

Published

CSS Footer with Embedded Google Maps & Office Hours — preview
07 / 25Light JSNEW

CSS Footer with Embedded Google Maps & Office Hours

The local-SEO footer: address, an opening-hours table that knows whether you are open right now, and a responsive map panel that keeps its aspect ratio at every width. The map here is drawn in pure CSS so the demo never depends on a third-party iframe — swap in your embed with one tag, the frame is already sized.

Published

Mobile-First Collapsible Accordion Footer — preview
08 / 25Pure CSSNEW

Mobile-First Collapsible Accordion Footer

Four link categories that collapse into tappable accordion rows on a phone and expand into plain columns on a laptop — built on <details> so it works before a single byte of JavaScript loads, with a genuinely smooth height animation using the 0fr → 1fr grid technique.

Published

CSS Footer with Social Media Follow Icons — preview
09 / 25Pure CSSNEW

CSS Footer with Social Media Follow Icons

Social icons done without an icon font and without a single external request: six inline SVG marks, each carrying its own brand colour as a custom property, with a hover that lifts, tints and ripples. The accessible name says what the link does ("Follow us on Instagram"), not what the picture is.

Published

SaaS SOC 2 / GDPR / HIPAA Compliance Badge Footer — preview
10 / 25Pure CSSNEW

SaaS SOC 2 / GDPR / HIPAA Compliance Badge Footer

The footer an enterprise buyer's security reviewer actually reads: certification seals that each expose the audit period, the auditor and the report link, plus the data-residency and DPA links procurement will ask for. Every badge is a real disclosure, not a sticker — which is the difference between building trust and triggering suspicion.

Published

CSS Footer with Animated Gradient Background — preview
11 / 25Pure CSS

CSS Footer with Animated Gradient Background

A footer that breathes: a slow mesh of coloured light drifting behind the content, built from registered custom properties so the gradient itself animates instead of the old trick of sliding an oversized background-position. Roughly 1KB, no images, no canvas, and it stops dead under prefers-reduced-motion.

PublishedUpdated

Editorial Newspaper Style Multi-Column Footer — preview
12 / 25Pure CSS

Editorial Newspaper Style Multi-Column Footer

A masthead footer with the density and discipline of print: real CSS multi-columns with hairline rules between them, small-caps section labels, an editorial colophon, and a rag that behaves because break-inside and text-wrap are doing their jobs. The one place columns beats Grid — flowing content, not a fixed matrix.

PublishedUpdated

Full-Width CSS Footer with Email Newsletter Signup — preview
13 / 25Light JS

Full-Width CSS Footer with Email Newsletter Signup

A full-bleed subscribe band with the details most newsletter footers skip: inline validation that announces itself, a button that shows real pending state, a success message that replaces the field rather than sitting next to it, and honest consent copy under the input. Everything below is what a conversion audit asks for.

PublishedUpdated

Card Layout Footer with Contact Details — preview
14 / 25Light JS

Card Layout Footer with Contact Details

Four contact routes as tappable cards — sales, support, press, HQ — each one a real link (tel:, mailto:, a map URL) with a copy-to-clipboard shortcut for the times a visitor is on a desktop and wants the address, not a dialer. The card grid reflows on its own; the hover tilt is transform-only.

PublishedUpdated

Monospaced Developer Portfolio Footer — preview
15 / 25Pure CSS

Monospaced Developer Portfolio Footer

A footer for people who read git log for fun: everything set in a monospace grid measured in ch, an ASCII rule, a blinking block caret, and a build stamp that makes the site feel like a deployed artefact rather than a page. Restrained, fast, and no ASCII-art clichés.

PublishedUpdated

CSS Audio Player & Music Website Footer — preview
16 / 25Light JS

CSS Audio Player & Music Website Footer

The now-playing bar every music site lands on, built properly: a sticky bottom player with a real scrub range input styled across engines, an equaliser drawn in CSS, and controls that announce their state. Wire it to a real <audio> element with the four lines shown in the notes.

PublishedUpdated

Dark Mode Glowing Neon CSS Footer — preview
17 / 25Pure CSS

Dark Mode Glowing Neon CSS Footer

Neon that reads like a sign, not like a blur filter: layered text-shadow at four radii for the classic tube bloom, a flicker on a steps() curve that stutters like a failing ballast, and — the part most neon demos get wrong — body copy that stays at full contrast so the footer is still legible.

PublishedUpdated

Centered Minimalist Blog Footer HTML CSS — preview
18 / 25Pure CSS

Centered Minimalist Blog Footer HTML CSS

The footer for a personal site or writing blog: everything on the centre line, a measured column that never exceeds a comfortable reading width, a small mark, and the three links a reader actually wants — RSS, archive, and a way to reply. Quiet, confident, about 40 lines of CSS.

PublishedUpdated

Multi-Column Mega Footer HTML CSS Grid — preview
19 / 25Pure CSS

Multi-Column Mega Footer HTML CSS Grid

The six-column sitemap footer big sites need, using subgrid so every column's heading, list and secondary link sit on the same baselines even when the lists are different lengths. This is the one layout problem plain auto-fit grids cannot solve — and subgrid solves it in two lines.

PublishedUpdated

Footer with Integrated Contact Form & Map — preview
20 / 25Light JS

Footer with Integrated Contact Form & Map

A contact block that lives in the footer without feeling bolted on: a three-field enquiry panel beside a map card with the address and hours. Field-level errors, a live character counter, a hidden honeypot for bots, and a success state that replaces the panel rather than appending a toast.

PublishedUpdated

Footer with Trust Badges & Guarantee Icons — preview
21 / 25Pure CSS

Footer with Trust Badges & Guarantee Icons

Trust badges that a sceptical buyer can verify: each guarantee pairs an icon with a specific, checkable claim and the small print underneath. Plus an accessible star rating (a real number, not six unlabelled glyphs) and a die-cut seal drawn entirely with clip-path.

PublishedUpdated

CSS Accordion FAQ Footer Section — preview
22 / 25Light JS

CSS Accordion FAQ Footer Section

An FAQ block in the footer that answers the four questions your support inbox is full of — and does it in markup that can earn a rich result. Native <details> disclosure, smooth panel animation, deep-linkable answers, and the JSON-LD you need for FAQPage.

PublishedUpdated

Pre-Footer Call-to-Action Bar HTML CSS — preview
23 / 25Pure CSS

Pre-Footer Call-to-Action Bar HTML CSS

The band that sits between the last content section and the footer proper, doing the single job the footer is bad at: making one clear ask. Big type, one primary action, one low-friction secondary, and a clipped diagonal edge that separates it from the link grid without a border.

PublishedUpdated

Multi-Language Footer with Currency Selector — preview
24 / 25Light JS

Multi-Language Footer with Currency Selector

The footer control international shoppers look for first: a language switcher and a currency selector that actually reformat a sample price using Intl.NumberFormat — including the placement, separators and symbol conventions each locale expects. Native selects, correct lang and hreflang attributes, RTL-safe layout.

PublishedUpdated

CSS Animated SVG Wave Footer — preview
25 / 25Pure CSS

CSS Animated SVG Wave Footer

The wave divider done so it actually loops: one SVG path drawn twice its width with a seamless repeat, translated by exactly 50% so the animation has no visible seam, layered three deep at different speeds and opacities for parallax. Responsive at any width because preserveAspectRatio is set to slice.

PublishedUpdated

FAQ

Frequently asked questions

What's the difference between a sticky footer and a fixed footer, and when should I use each?
A sticky footer sits at the bottom of the viewport ONLY when page content is shorter than the viewport height; once content overflows, the footer scrolls with it and appears at the bottom of the document. A fixed footer stays glued to the viewport bottom permanently, overlaying content. Demo 01 (Sticky Footer to Bottom of Page) is the pattern you almost always want — solved cleanly with either display: flex; flex-direction: column; min-height: 100vh on the body/wrapper with flex: 1 on the main content, OR display: grid; grid-template-rows: 1fr auto; min-height: 100vh on the body wrapper. Both approaches are Pure CSS, zero JavaScript, framework-agnostic. Fixed footers (position: fixed; bottom: 0) belong to specific UI patterns — mobile bottom tab bars, cookie consent banners, urgent CTAs — NOT to standard site footers. A fixed site footer fights every modal, overlay, and mobile keyboard the browser puts up; the sticky-to-bottom pattern is what visitors expect.
How do I build a multi-column footer that responsively collapses to a single column on mobile?
Two production-ready approaches. Approach 1 (Pure CSS Grid, recommended for 90% of sites): display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: clamp(24px, 3vw, 48px) on the footer's column container. The auto-fit + minmax combo lets columns reflow from 4-across on desktop → 2 on tablet → 1 on mobile without a single media query. Demo 02 (Responsive 4-Column Footer with Category Links) is the canonical implementation. Approach 2 (progressive disclosure — Demo 08, Mobile-First Collapsible Accordion Footer): keep the multi-column layout on desktop but wrap each column heading in a <details><summary> that becomes clickable ONLY under a mobile breakpoint via @media (max-width: 640px) { summary { pointer-events: auto } } — dense footers like Amazon, Airbnb, and Booking.com use this pattern because 6 columns of 8 links each = 48 links crammed above the fold on mobile, which is worse than 6 collapsed drawers. Both approaches ship WCAG-2.2-AA-compliant focus rings on interactive elements.
What compliance badges should a SaaS footer show, and how do they affect trust and enterprise sales?
The five badges that move enterprise procurement decisions are SOC 2 Type II (proves annual audit of security controls — table-stakes for any B2B SaaS selling to enterprises above $1K ACV), GDPR compliance (EU privacy law, required for any customer in the EEA), HIPAA (US healthcare data protection, mandatory if you touch patient records via BAA with covered entities), PCI DSS (payment card data — required if you process card payments direct, not required if you use Stripe/Adyen/Braintree which handle it), and ISO 27001 (international information-security management, required for enterprise deals in EU + APAC). Demo 10 (SaaS SOC 2 / GDPR / HIPAA Compliance Badge Footer) shows the canonical layout: badge row above a divider + policy-link row below (Privacy · Terms · DPA · Cookies · Security · Trust Center). This isn't decoration — it's a real enterprise-procurement signal. Vercel, Linear, Notion, Stripe, and Slack all ship this exact block. For fintech add PCI DSS + SOC 1 Type II; for healthcare add HIPAA + HITRUST CSF; for government add FedRAMP. Every badge should link to the actual audit report or attestation — a bare logo with no click-through reads as decoration and gets called out by procurement teams.
How do I add trust signals (payment icons, security badges) to an e-commerce footer without slowing the page down?
Payment method icons and security badges are the #1 conversion signal on e-commerce footers — but the wrong approach kills Core Web Vitals. Demo 05 (E-Commerce Footer with Payment Icons & Security Badges) uses the correct pattern: inline SVGs directly in the HTML for the 6-10 payment methods you actually accept (Visa · Mastercard · Amex · Discover · Apple Pay · Google Pay · PayPal · Shop Pay · Klarna · Afterpay). Inline SVGs cost zero HTTP requests, render before First Paint, scale crisply at any resolution, and can be recolored via currentColor or fill: var(--brand). Avoid the classic 2010s pattern of loading a payment-icons sprite PNG (extra HTTP request, blurry on retina) or fetching from a CDN (third-party request, blocks LCP). For SSL / security badges: link out to the actual certificate authority's badge page if you must show them, but the trust signal from a McAfee SECURE seal is genuinely lower today than five years ago — clean site design + real testimonials + real return policy language outperforms trust seals in every 2024-2026 conversion study. Instead of legacy seals, prioritize a real return policy link, a real customer service phone/email, and Trustpilot / Google Reviews integration.
What's the accessible pattern for a mobile-collapsible accordion footer, and when should it activate?
Demo 08 (Mobile-First Collapsible Accordion Footer) is the reference. The rule: activate the accordion behavior ONLY below a viewport threshold where the collapsed state actually improves UX. That threshold is typically 640px (mobile) — above it, keep all columns open because the reader can scan a 4-column grid faster than they can tap-open drawers. The semantic recipe: wrap each column in <details> with the column heading in <summary>, then use @media (min-width: 641px) { .footer details { pointer-events: none } .footer details[open] summary::after, .footer summary::after { display: none } .footer details > :not(summary) { display: block !important; height: auto !important; overflow: visible !important; } } to force-open the details on desktop while suppressing the disclosure caret. Under 641px, native <details> gives you keyboard-accessible expand/collapse for free — Space/Enter opens, Escape closes (browser-native), screen readers announce the disclosure state. Zero JavaScript needed. The pattern Amazon, Airbnb, Booking.com, Wayfair, and Shopify all use because it survives graceful degradation and works with keyboard-only users on the first tab.
How do these footer designs port to React, Vue, Svelte, Next.js, and Tailwind CSS?
The HTML + CSS ports unchanged — every .ft-NN selector, every keyframe, every custom property is framework-agnostic. What changes is where you put the markup. React: extract the footer markup into src/components/Footer.jsx and import from your root layout / page template. Next.js App Router: app/(marketing)/layout.tsx imports and renders <Footer />. Vue 3: single-file component <template><footer class="ft-01">...</footer></template>. Svelte / SvelteKit: src/routes/+layout.svelte renders <Footer />. Astro: src/components/Footer.astro imported by src/layouts/BaseLayout.astro. For any interactive footer (Demo 06 dark-mode toggle, Demo 08 mobile accordion, Demo 13 newsletter signup, Demo 20 contact form, Demo 22 FAQ accordion, Demo 24 language switcher, Demo 25 wave animation), strip the IIFE wrapper from the demo's JS and call the init function from your framework's mount hook (useEffect in React, onMounted in Vue, onMount in Svelte). Next.js App Router requires 'use client' at the top of components that use browser APIs like localStorage or window listeners. Tailwind CSS: the pattern is mechanical translation of each .ft-NN class to utility classes, plus custom-property tokens registered in your @theme block. For fastest ports, wrap the whole footer in a scoped class and paste the demo CSS as-is inside a @layer components block.
Are these footers accessible, and what WCAG requirements do they meet?
Yes — every footer meets WCAG 2.2 AA compliance out of the box. Semantic structure: the outermost element is always <footer>, which is a landmark role screen readers announce as "content info". Navigation regions inside the footer use <nav aria-label="Footer navigation"> so a screen reader user hearing multiple nav landmarks can distinguish them. Icon-only social links carry aria-label="Follow us on Twitter" (never bare icons). Form inputs in newsletter captures pair every <input> with a real <label> — either visible or visually hidden via clip-path: inset(50%) when the visual design demands a placeholder-only field. All interactive elements show a visible :focus-visible ring at 2px minimum thickness and 3:1 contrast against the surrounding background per WCAG 2.4.13 (Focus Appearance, Level AA, added Oct 2023). Hit targets meet the WCAG 2.5.5 44×44 CSS pixel minimum. Every animation (wave motion, gradient drift, hover effects) is wrapped in @media (prefers-reduced-motion: reduce) { animation: none } so the ~15% of adults with vestibular disorders + the ~35% who self-report motion sensitivity don't get nauseated by the footer. Contrast ratios on link text meet the WCAG 1.4.3 4.5:1 minimum in both light and dark themes. Language switchers (Demo 24) correctly update the <html lang="..."> attribute via JS so screen readers pronounce the right language.

Related collections

15 CSS Aspect Ratio Demos preview

15 CSS Aspect Ratio Demos

15 hand-coded CSS aspect-ratio demos for video embeds, product galleries, IAB ad slots, native dialogs, and CLS-safe placeholders: 16:9 iframe YouTube embed with click-to-load facade + up-next rail, 21:9 full-screen hero video with min-height/max-height:100svh guardrails + Ken Burns drift, 1:1 Instagram-style square grid with 2×2 feature tile, 4:3 magazine card image cover, 9:16 vertical stories rail (TikTok/Reels/Shorts pattern) with scroll-snap + segment bars, 4:5 apparel product image gallery with radio-driven state + 1:1 thumbnails, 1:1 zoom thumbnail carousel with pointer-tracked --zx/--zy magnifier, prevent-layout-shift placeholder with live PerformanceObserver CLS meter (before/after side-by-side lab), dynamic content fallback with three policies (bend/strict/auto) via :has() toggle, IAB ad banner slots (728×90 leaderboard, 300×250 medium rectangle, 300×600 half-page, 320×50 mobile) with skeletons + container-query mobile swap, responsive modal dialog sized min(92vw, 88svh×16/9, 1080px) with @starting-style animation, responsive OpenStreetMap iframe wrapper with 16:9 → 1:1 container-query narrow swap, media query orientation live HUD + resize:both container-ratio playground, object-fit logo cloud with contain/cover/fill switcher via :has(), and side-by-side padding-top hack (height:0 + padding-top:56.25%) → modern aspect-ratio migration comparison with live ratio picker. 11 truly Pure CSS + 4 with a tiny optional vanilla JS snippet (facade swap, pointer magnifier, CLS meter, native dialog). Every demo is scoped under a unique .car-NN prefix so it drops into any project without CSS collisions, ships prefers-reduced-motion guards, and is framework-agnostic (works as-is in React, Vue, Svelte, Astro, Next.js, Remix, or plain HTML).

6 CSS Bento Grid Layouts preview

6 CSS Bento Grid Layouts

6 production CSS bento grid layouts with 12 hand-coded designs — Apple-style product showcase, SaaS feature value-prop matrix, analytics dashboard overview, creative portfolio, e-commerce category hub, and link-in-bio social hub. Each topic ships 2 sub-variants side-by-side so visitors see both a keynote aesthetic and a paper-doc variant at once. Container queries, CSS Grid, zero dependencies, copy-paste ready.

20 CSS Blog Layouts preview

20 CSS Blog Layouts

20 hand-coded CSS blog and editorial layouts for magazine homepages, news sites, personal archives, newsletter back-issues, recipe and podcast blogs, developer tutorials, and long-form journalism. Covers a magazine homepage with hero plus editor-picks rail, a news homepage with breaking-news ticker, blog archives with sticky year separators, Substack-style issue-numbered archives, recipe card grids with prep-time badges, podcast episode lists with waveforms, long-form articles with scroll-driven reading progress, drop caps and floated pull quotes via first-letter, Medium-style 65ch centred reader layouts, dev tutorials with a sticky code panel beside prose, interview transcripts with alternating speakers, case-study pages with stat counters, video blogs with an episode rail, full-bleed photo essays, news articles with sticky related-stories sidebars, documentation pages with prev/next chapter nav, a standalone blog post card, a scroll-snap category filter bar, an inline newsletter callout that breaks out of the prose column, and a horizontal featured-post rail. 12 are pure CSS with zero JavaScript. Every layout is scoped under a .bl-NN prefix for no-collision pasting, guards prefers-reduced-motion, and ports unchanged to React, Vue, Svelte, Astro, Next.js and Tailwind.

Search CodeFronts

Loading…