Bistro — restaurant website template
A five-page restaurant site: menu with anchor sections, table booking form, gallery, hours and contact. Tailwind, Schema.org markup for the venue and the menu.
- HTML5
- Tailwind 4
- Schema.org
- No JS
- 360px+
Free and Pro
Free version
Everything you need to publish. A credit link stays in the footer.
- All five pages, compiled CSS
- yes
- Credit link in footer
- required
- Tailwind source and partials
- yes
- Updates and support
- no
Pro
No attribution, plus the source files and 12 months of updates and email support.
- All five pages, compiled CSS
- yes
- Credit link in footer
- not required
- Tailwind source and partials
- yes
- Updates and support
- 12 months, email
What's in the archive
- index.html · menu.html · reservations.html
- gallery.html · contact.html
- assets/css/style.css
- src/pages/ · src/partials/ · build.mjs
- README.md · LICENCE.txt
Licence
Use it in unlimited personal and commercial projects, including client work.
Do not resell the template itself, alone or in a bundle.
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.
Menu that search engines can read
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+
Version history
- 1.0.0 2026-09-11
First release
- 21 KBhome page + CSS
- 0external requests
- 0JavaScript
- 5pages