Source
This app’s code and revision history are public. Download a copy or explore the files below.
Public
The app’s code and revision history are public.
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone 7385a6c1c47153b1728160ff
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Book: free Calendly alternative with unlimited booking pages | OpenApps</title>
<meta name="description" content="Book is a free Calendly alternative: make a booking page in a minute, share the link, and people pick a time in their own time zone. Guests move or cancel on their own. Unlimited pages and bookings, no sign-up, no paid plan.">
<link rel="canonical" href="https://book-free.openapps.xyz/">
<meta property="og:type" content="website">
<meta property="og:site_name" content="OpenApps">
<meta property="og:title" content="Book: a free booking page, a free Calendly alternative">
<meta property="og:description" content="Set your weekly hours and your meeting link, share your page, and people pick a time in their own time zone. Free, no sign-up, unlimited pages and bookings.">
<meta property="og:url" content="https://book-free.openapps.xyz/">
<meta property="og:image" content="https://free-apps.openapps.xyz/og/book.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="theme-color" content="#fdfdfc">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="alternate" type="text/plain" title="llms.txt" href="/llms.txt">
<link rel="alternate" type="text/markdown" href="/index.md">
<link rel="service-desc" type="application/vnd.oai.openapi+json" href="/openapi.json">
<link rel="preload" href="/fonts/NewsreaderVariable-var.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/ArchivoVariable-var.woff2" as="font" type="font/woff2" crossorigin>
<link rel="stylesheet" href="/kit.css">
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"SoftwareApplication","name":"Book by OpenApps","applicationCategory":"BusinessApplication","operatingSystem":"Web","url":"https://book-free.openapps.xyz/","description":"A free booking page for one-on-one meetings, and a free Calendly alternative: set your weekly hours, days off and your Google Meet, Zoom or Teams link, share the page, and people book a time in their own time zone. Guests move or cancel on their own, and owners can subscribe to their bookings as a calendar feed. No sign-up, no paid plan, unlimited pages and bookings.","dateModified":"2026-10-19","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"isAccessibleForFree":true,"publisher":{"@type":"Organization","name":"OpenApps","url":"https://openapps.xyz"}}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[
{"@type":"Question","name":"Is there a free alternative to Calendly?","acceptedAnswer":{"@type":"Answer","text":"Yes. Book is a free booking page for one-on-one meetings. Set your weekly hours and your meeting link, share the page, and people pick a time in their own time zone. There is no paid plan and no limit on pages or bookings."}},
{"@type":"Question","name":"Is Book really free?","acceptedAnswer":{"@type":"Answer","text":"Yes. There is no paid plan, no ads and no limit on pages or bookings. Each booking is a few tiny writes, and OpenApps pays for them."}},
{"@type":"Question","name":"Does Book check my calendar?","acceptedAnswer":{"@type":"Answer","text":"No. Book does not read Google Calendar or any other calendar, so it cannot see when you are busy. Set the hours you are free each week and add days off for holidays. To see your bookings in your calendar, subscribe to your page's calendar feed in Settings."}},
{"@type":"Question","name":"Does Book send emails or reminders?","acceptedAnswer":{"@type":"Answer","text":"No. Right after booking, the person gets the meeting link, a calendar invite and a private link to move or cancel. You see each booking on your page as it happens, and in your calendar app if you subscribe to the calendar feed."}},
{"@type":"Question","name":"Can people reschedule?","acceptedAnswer":{"@type":"Answer","text":"Yes. Each booking link has Change time: the person picks another open time, and the old time opens up for others in the same step. You see the booking as moved."}},
{"@type":"Question","name":"Which video calls work?","acceptedAnswer":{"@type":"Answer","text":"Any meeting link that starts with https: your personal Google Meet link, a Zoom personal meeting link or a Microsoft Teams link. Only people who book see it."}},
{"@type":"Question","name":"Can two people book the same time?","acceptedAnswer":{"@type":"Answer","text":"No. Each booking holds its time in the database itself, so two bookings can never share or overlap a time, even when two people click at the same moment."}},
{"@type":"Question","name":"How do time zones work?","acceptedAnswer":{"@type":"Answer","text":"You set your hours in your time zone. Everyone who opens your page sees the open times in theirs, with the zone named."}},
{"@type":"Question","name":"How is Book different from Calendly?","acceptedAnswer":{"@type":"Answer","text":"Calendly's free plan allows one event type and one connected calendar, and its paid plans cost $10 or $16 per seat a month, billed yearly. Book has no paid plan and no limit on pages. Calendly reads your calendar and sends emails; Book does neither."}},
{"@type":"Question","name":"Do I need an account?","acceptedAnswer":{"@type":"Answer","text":"No. Your page belongs to the browser you made it in and to its admin link. Keep the admin link to see your bookings on another device."}},
{"@type":"Question","name":"Can my AI assistant use Book?","acceptedAnswer":{"@type":"Answer","text":"Yes. Book has a public HTTP API with no key. An assistant can set up a booking page for you, book or move a time for you on someone else's page, and read your bookings with your owner key. The API is described in llms.txt and openapi.json."}}
]}
</script>
</head>
<body>
<header class="site-head">
<div class="wrap">
<a class="brand" href="https://free-apps.openapps.xyz/" aria-label="OpenApps free apps">
<img src="/logo.svg" alt="" width="26" height="26">
<span>OpenApps</span>
</a>
<span class="brand-sep" aria-hidden="true">/</span>
<a class="brand brand-app" href="/">Book</a>
<nav class="site-nav" aria-label="Main">
<a class="nav-optional landing-link" href="/#how">How it works</a>
<a class="landing-link" href="/#api">API</a>
<a href="https://free-apps.openapps.xyz/apps">Free apps</a>
</nav>
</div>
</header>
<main>
<div id="app"></div>
<section class="app-hero landing-only">
<div class="wrap app-hero-grid">
<div class="app-hero-copy">
<img class="art hero-art" src="/art/card-book.webp" alt="" width="190" height="153">
<p class="eyebrow">Free alternative to Calendly</p>
<h1 class="display">A free booking page. Share the link, people pick a time.</h1>
<p class="lede">Book is a free Calendly alternative. Set the hours you are free, paste your meeting link and share your page. People pick a time in their own time zone and get the link.</p>
<ul class="hero-points">
<li>Unlimited pages and bookings</li>
<li>No sign-up for you or the people booking</li>
<li>Guests move or cancel on their own</li>
<li>Bookings show up in your calendar app</li>
</ul>
<div id="your-pages"></div>
</div>
<div id="create"><noscript><p class="notice">Book needs JavaScript to make a booking page.</p></noscript></div>
</div>
</section>
<section class="section landing-only" id="how">
<div class="wrap">
<h2 class="h2">How it works</h2>
<ol class="steps">
<li><h3>Set your hours</h3><p>Pick the meeting length and the hours you are free each week, add any days off, and paste your Google Meet, Zoom or Teams link.</p></li>
<li><h3>Share your page</h3><p>People open your link, pick a day and a time in their own time zone, and confirm with their name and email. No account, no app.</p></li>
<li><h3>Meet</h3><p>They get the meeting link, a calendar invite and a link to move or cancel. You see each booking on your page as it happens, and in your calendar app once you subscribe.</p></li>
</ol>
</div>
</section>
<section class="section-tight landing-only">
<div class="wrap">
<h2 class="h2">Free, and honest about what it skips</h2>
<p class="lede" style="margin-top:14px">Book is a booking page for one-on-one calls. It does not read your calendar, so you block time with your weekly hours and days off. It does not send emails or reminders. In return it costs nothing, needs no account, and never caps your pages or bookings.</p>
<div class="table-wrap" style="margin-top:24px">
<table class="table compare">
<thead><tr><th scope="col"></th><th scope="col">Book</th><th scope="col">Calendly free</th><th scope="col">Cal.com free</th></tr></thead>
<tbody>
<tr><td>Price</td><td class="yes">Free, no paid plan</td><td>Free plan; Standard $10 and Teams $16 per seat a month, billed yearly</td><td>Free for one person; Teams $12 per user a month, billed yearly</td></tr>
<tr><td>Booking pages</td><td class="yes">Unlimited</td><td class="no">One event type</td><td class="yes">Unlimited event types</td></tr>
<tr><td>Account needed</td><td class="yes">No</td><td class="no">Yes</td><td class="no">Yes</td></tr>
<tr><td>Reads your calendar for busy times</td><td class="no">No: you set weekly hours and days off</td><td>One calendar</td><td>Yes</td></tr>
<tr><td>Bookings in your calendar</td><td>A calendar feed you subscribe to, and a calendar file per booking</td><td>Added to your connected calendar</td><td>Added to your connected calendar</td></tr>
<tr><td>Guests move or cancel</td><td class="yes">Yes</td><td class="yes">Yes</td><td class="yes">Yes</td></tr>
<tr><td>Emails and reminders</td><td class="no">No</td><td>Booking emails; reminders on paid plans</td><td>Email and SMS notifications</td></tr>
<tr><td>Public source</td><td class="yes">Yes</td><td class="no">No</td><td class="yes">Yes, open source</td></tr>
<tr><td>API for AI assistants</td><td class="yes">Public, no key</td><td>Needs an account and a token</td><td>Needs an account and an API key</td></tr>
</tbody>
</table>
</div>
<p class="hint" style="margin-top:12px">Checked October 2026 on <a href="https://calendly.com/pricing">Calendly's pricing page</a> and <a href="https://cal.com/pricing">Cal.com's pricing page</a>. Plans change, so check there. If you need calendar sync and email reminders for free, Cal.com's free plan is a good choice.</p>
</div>
</section>
<section class="section landing-only" id="api">
<div class="wrap api-grid">
<div>
<p class="eyebrow">For AI assistants</p>
<h2 class="h2">Your assistant can book the call.</h2>
<p class="lede" style="margin-top:14px">Book has a public API with no key and no account. An assistant can read someone's open times in your time zone and book or move a time for you, or set up a booking page for you and keep its owner key to read your bookings.</p>
<p style="margin-top:14px">Full reference: <a href="/llms.txt">/llms.txt</a> and <a href="/openapi.json">/openapi.json</a>. The owner key and each booking's cancel key come back once, so keep them private.</p>
<p style="margin-top:14px">Links an assistant can send: <code>/sam-lee?date=2026-10-21&name=Alex%20Kim&email=alex@example.com</code> opens the page on that day with the form filled.</p>
</div>
<pre class="code"><span class="c"># Make a booking page</span>
curl -X POST https://functions.bounded.sh/apps/7385a6c1c47153b1728160ff/api/pages \
-H 'content-type: application/json' \
-d '{"handle": "sam-lee", "name": "Sam Lee",
"timezone": "America/New_York", "durationMin": 30,
"meetingUrl": "https://meet.google.com/abc-defg-hij",
"hours": {"weekdays": "09:00-17:00"}}'
<span class="c"># Open times, in your time zone</span>
curl 'https://functions.bounded.sh/apps/7385a6c1c47153b1728160ff/api/pages/sam-lee/availability?tz=Europe/London&days=7'
<span class="c"># Book one</span>
curl -X POST https://functions.bounded.sh/apps/7385a6c1c47153b1728160ff/api/pages/sam-lee/bookings \
-H 'content-type: application/json' \
-d '{"start": "2026-10-21T15:00:00+01:00",
"name": "Alex Kim", "email": "alex@example.com"}'
<span class="c"># Move it (cancel key from the booking)</span>
curl -X POST https://functions.bounded.sh/apps/7385a6c1c47153b1728160ff/api/bookings/BOOKING_ID/reschedule \
-H 'content-type: application/json' -H 'x-cancel-key: CANCEL_KEY' \
-d '{"start": "2026-10-22T10:00:00+01:00"}'
<span class="c"># The owner's bookings (owner key from the first call)</span>
curl https://functions.bounded.sh/apps/7385a6c1c47153b1728160ff/api/pages/sam-lee/bookings \
-H 'x-owner-key: OWNER_KEY'</pre>
</div>
</section>
<section class="section-tight landing-only">
<div class="wrap">
<h2 class="h2">Questions</h2>
<div class="faq" style="margin-top:22px">
<details><summary>Is there a free alternative to Calendly?</summary><div>Yes. Book is a free booking page for one-on-one meetings. Set your weekly hours and your meeting link, share the page, and people pick a time in their own time zone. There is no paid plan and no limit on pages or bookings.</div></details>
<details><summary>Is Book really free?</summary><div>Yes. There is no paid plan, no ads and no limit on pages or bookings. Each booking is a few tiny writes, and OpenApps pays for them.</div></details>
<details><summary>Does Book check my calendar?</summary><div>No. Book does not read Google Calendar or any other calendar, so it cannot see when you are busy. Set the hours you are free each week and add days off for holidays. To see your bookings in your calendar, subscribe to your page's calendar feed in Settings.</div></details>
<details><summary>Does Book send emails or reminders?</summary><div>No. Right after booking, the person gets the meeting link, a calendar invite and a private link to move or cancel. You see each booking on your page as it happens, and in your calendar app if you subscribe to the calendar feed.</div></details>
<details><summary>Can people reschedule?</summary><div>Yes. Each booking link has Change time: the person picks another open time, and the old time opens up for others in the same step. You see the booking as moved.</div></details>
<details><summary>Which video calls work?</summary><div>Any meeting link that starts with https: your personal Google Meet link, a Zoom personal meeting link or a Microsoft Teams link. Only people who book see it.</div></details>
<details><summary>Can two people book the same time?</summary><div>No. Each booking holds its time in the database itself, so two bookings can never share or overlap a time, even when two people click at the same moment.</div></details>
<details><summary>How do time zones work?</summary><div>You set your hours in your time zone. Everyone who opens your page sees the open times in theirs, with the zone named.</div></details>
<details><summary>How is Book different from Calendly?</summary><div>Calendly's free plan allows one event type and one connected calendar, and its paid plans cost $10 or $16 per seat a month, billed yearly. Book has no paid plan and no limit on pages. Calendly reads your calendar and sends emails; Book does neither.</div></details>
<details><summary>Do I need an account?</summary><div>No. Your page belongs to the browser you made it in and to its admin link. Keep the admin link to see your bookings on another device.</div></details>
<details><summary>Can my AI assistant use Book?</summary><div>Yes. Book has a public HTTP API with no key. An assistant can set up a booking page for you, book or move a time for you on someone else's page, and read your bookings with your owner key. The API is described in <a href="/llms.txt">llms.txt</a> and <a href="/openapi.json">openapi.json</a>.</div></details>
</div>
</div>
</section>
<section class="section-tight landing-only">
<div class="wrap">
<h2 class="h2">More free apps</h2>
<ul class="more-apps">
<li><a href="https://when-free.openapps.xyz/"><strong>When</strong><span>Find a time for a group, instead of Doodle</span></a></li>
<li><a href="https://forms-free.openapps.xyz/"><strong>Forms</strong><span>Unlimited responses, instead of Typeform</span></a></li>
<li><a href="https://links-free.openapps.xyz/"><strong>Links</strong><span>Short links that never expire, instead of Bitly</span></a></li>
<li><a href="https://free-apps.openapps.xyz/apps"><strong>All apps</strong><span>The app store of free alternatives</span></a></li>
</ul>
</div>
</section>
</main>
<footer class="site-foot">
<div class="wrap">
<!-- network:start -->
<nav class="oa-network" aria-label="Free apps from OpenApps">
<p class="oa-network-title"><a href="https://free-apps.openapps.xyz/">Free apps from OpenApps</a><span>Free alternatives to the apps you pay for, built for people and their AI assistants.</span></p>
<ul>
<li><a href="https://sign-free.openapps.xyz/">Sign</a><span>instead of DocuSign</span></li>
<li><a href="https://forms-free.openapps.xyz/">Forms</a><span>instead of Typeform</span></li>
<li><a href="https://split-free.openapps.xyz/">Split</a><span>instead of Splitwise</span></li>
<li><a href="https://links-free.openapps.xyz/">Links</a><span>instead of Bitly</span></li>
<li><a href="https://when-free.openapps.xyz/">When</a><span>instead of Doodle</span></li>
<li><a href="https://pdf-free.openapps.xyz/">PDF</a><span>instead of Smallpdf</span></li>
<li><a href="https://invoice-free.openapps.xyz/">Invoice</a><span>instead of FreshBooks</span></li>
<li><a href="https://bio-free.openapps.xyz/">Bio</a><span>instead of Linktree</span></li>
<li><a href="https://book-free.openapps.xyz/" aria-current="page">Book</a><span>instead of Calendly</span></li>
<li><a href="https://dictate-free.openapps.xyz/">Dictate</a><span>instead of Wispr Flow</span></li>
<li><a href="https://images-free.openapps.xyz/">Images</a><span>instead of TinyPNG</span></li>
</ul>
<p class="oa-network-more"><a href="https://free-apps.openapps.xyz/apps">All free apps</a> · <a href="https://free-apps.openapps.xyz/alternatives">Free alternatives A to Z</a> · <a href="https://free-apps.openapps.xyz/for-ai">Add every app to your AI assistant</a></p>
</nav>
<!-- network:end -->
<div class="foot-note" style="margin-top:0;border-top:0;padding-top:0">
<span>Book is an <a href="https://openapps.xyz">OpenApp</a>: free, with public <a href="/__bounded/source">source</a> and its own agent.</span>
<span><a href="https://free-apps.openapps.xyz/">OpenApps free apps</a> · <a href="/llms.txt">llms.txt</a> · <a href="/openapi.json">API</a></span>
</div>
</div>
</footer>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Change history
Add favicon.ico and link tag
Quality pass: guest reschedule, days off, calendar feed, API docs
Bounded source sync
Bounded source sync
Bounded source sync
Bounded source sync
Bounded source sync
Bounded source sync
Bounded source sync