foldout
Free + Pro Restaurant template

Bistro — restaurant website template

A restaurant site in Tailwind: menu with anchor sections, table booking form, gallery, hours and contact, plus a private-dining page and a 404 in Pro. Schema.org markup for the venue and the menu.

  • HTML5
  • Tailwind 4
  • Schema.org
  • Dark mode
  • No JS
  • 360px+

Free and Pro

Pro

$9

Every page, the Pro-only pages, the source files, no attribution, and 12 months of updates and email support.

Home page, compiled CSS
yes
Menu, reservations, gallery, contact
yes
Private dining + 404 pages
yes
Dark mode (follows system)
yes
Tailwind source and partials
yes
Scroll animations (reveal, stagger, header shadow; reduced-motion aware)
yes
Credit link in footer
not required
Updates and support
12 months, email

Free archive

  • index.html
  • assets/css/style.css
  • README.md · LICENCE.txt

Pro archive

  • index.html · menu.html · reservations.html
  • gallery.html · contact.html
  • events.html · 404.html (Pro only)
  • assets/css/style.css
  • src/pages/ · src/partials/ · build.mjs
  • assets/js/motion.js · assets/css/motion.css
  • README.md · LICENCE.txt (Pro)

Licence

Use it in unlimited personal and commercial projects, including client work.
Do not resell the template itself, alone or in a bundle.

Full licence terms →

What this template is for

Bistro covers the three things people actually open a restaurant website to do: read the menu, check the hours, and book a table. Everything else — the gallery, the about section, the directions — supports those three.

What’s inside

Five pages that share one header and one footer. The header and footer live in src/partials/ and are stamped into every page by a twenty-line build script, so changing the phone number or the hours is one edit, not five.

The menu page carries Schema.org Menu markup and the home page a Restaurant block with address, hours, phone and price range. That is the structured data Google uses to build the listing card with opening hours and a “reserve” link — and most restaurant templates ship without it.

Booking without a backend

The reservation form posts to whatever endpoint you give it — Formspree, Basin, Netlify Forms or your own. Field names are the conventional ones, so most services accept the form unchanged. Time slots and party sizes are plain <select> lists you edit in the HTML.

What you will need to replace

Every photograph is a labelled placeholder — swap each for an <img> with width and height set. The map on the contact page is a link to directions; replace it with an embed or a static image. Prices, dishes, hours and the address are all in the HTML, marked with comments.

Compatibility

  • Chrome / Edge 109+
  • Safari 15.4+
  • Firefox 115+
  • iOS 15+
  • Android 10+

Read before you build

Version history

  • 1.2.0 2026-09-11

    Dark mode: warm night palette, follows the system, no JavaScript

  • 1.2.0 2026-09-11

    Private dining page and 404 added to Pro; free archive is now the home page

  • 1.0.0 2026-09-11

    First release

  • 21 KB
    home page + CSS
  • 0
    external requests
  • 0
    JavaScript
  • 7
    pages in Pro

Related templates

Ledger & Loaf — bookshop and café website template preview

A shop site with a counter price list, a week of dated events and opening hours, in a 1970s ledger-book style: warm paper, oxblood ink, dotted-leader rows, squared corners. Plain HTML and one stylesheet, no images, no build step.

Aurora — SaaS landing page template preview

A one-page SaaS landing template with pricing, testimonials and FAQ, plus a full pricing page and a 404 in Pro. Tailwind, dark mode, zero external dependencies.

Harbor — real estate agency website template preview

An estate agency in Tailwind: listings with filters as real links, a property page with gallery, room sizes, floor plan, map and enquiry form, agents with direct numbers, plus a valuation funnel and a 404 in Pro. No JavaScript, RealEstateListing markup.

Tell us what happened

Goes straight to a person. No account, no ticket number.

What is this about?

We keep the message and the page it came from. Nothing else — not your IP, not your browser. Privacy.