Real buildClaude's output, unedited
Open the live demo (Claude's unedited files, a made-up example)
I want AI to build me a website
Five plain-English prompts in a Claude chat made a three-page website from a description and a screenshot we liked. Upload the files to GitHub and Cloudflare puts them live: free, no terminal.
- Prompts
- 5
- Claude's time
- 2 min 39 s
- Got wrong
- 3 things
- Tests passed
- 3 of 5
- Model
- claude-sonnet-5-5
- Run on
- 1 October 2026
For: Someone who wants a small personal website (a hobby, a club, a few pages), has never built one, has never opened a terminal, and wants it free to run.
What the five prompts made Home page






01 · Before you start
Before you start.
You need three free accounts and nothing else. A Claude account with “Code execution and file creation” switched on (Settings, then Capabilities; it’s on the Free plan), so Claude can hand you files to download. A GitHub account with an empty repository, which is where your files will live. And a Cloudflare account connected to that repository, which puts whatever is in it on the internet. The set-up page walks through all three, once, in about 15 minutes.
Nothing to install, and no terminal. Everything below happens in a chat and a web browser.
Our example is Tom’s Towpath Walks. Tom is made up. He walks canal towpaths, writes short notes about each walk, and wants a small website that costs nothing to run. He isn’t technical, so the prompts aren’t either. Change the details to yours.
02 · Set up once
Set up once, then just talk to Claude.
Free accounts you make one time and reuse for every build. Each links to the step-by-step on the set-up page, with what each screen looks like.
- 1. Get a free Claude account. It's where you describe what you want and Claude makes it. The Free plan covers every guide on this site; Pro adds the shortcut where Claude saves changes to GitHub itself.
- 2. Let Claude hand you files. A website is a handful of files. With this switched on, Claude can make them and give them to you to download, ready to upload to GitHub.
- 3. Get a free GitHub account and an empty repository. A repository is a folder on GitHub that keeps every version of your files. It's the one place your site lives: you (or Claude) change the files there, and Cloudflare publishes whatever is in it.
- 4. Get a free Cloudflare account and connect it to your repository. Cloudflare is where your site is live on the internet. Once it is connected to your repository, every change to the files on GitHub goes live by itself, in a minute or two. A site made of plain files costs nothing to host: Cloudflare says requests to static files are "free and unlimited".
- 5. Connect Claude to GitHub. So Claude can read the files that are live now before it changes them, even in a brand new chat. On Pro, the same connection is what lets Claude Code on the web save its changes to your repository.
03 · The prompts
Paste these five, in order.
Plain English, typed into an ordinary Claude chat. On the left, exactly what we sent, word for word; change the details to yours. On the right, what came back. One conversation with claude-sonnet-5-5, run on 1 October 2026. Read the full transcript.
Prompt 1 of 5
Describe what your website is about.
You say: I'd like a small website and I've never made one. I'm Tom. In my spare time I walk canal towpaths and write short notes about each walk, and I'd like a website called "Tom's Towpath Walks" to put them on. On it I'd like: - a home page that says what the site is and shows my latest walks - a page with all my walks. There are four so far. For each one: its name, where it starts and finishes, how many miles, roughly how long it takes, who it's good for (like "pushchairs" or "pub at the end") and a short note - a few lines about me - a way to email me (tom@example.com). I don't want a form. I'm not technical, and I want it to be free to run. Before you make anything, ask me anything you need to know, and tell me in plain English what you're going to make.
1,106 output tokens back · read the full reply
Prompt 2 of 5
Answer its questions, and show it a website you like.
Attach: a screenshot of a website you like the look of · the one we attached
You say: Thanks, that sounds right. My answers: 1. Please make up four walks for now so I can see how it looks. I'll swap in my real ones later. 2. Make up a few friendly lines about me too. I'll change them. 3. No photos yet. 4. I've attached a screenshot of a website I like the look of. I like the cream background, the big old-fashioned heading and how calm and tidy it feels. Don't copy its words, just the feel. 5. The free address is fine for now. 6. I'd like to be able to ask you to add walks later. Please make the website now. Keep it as simple as possible: just the files I'll need to upload, nothing I have to install. It must look good on a phone.
7,657 output tokens back · read the full reply
Prompt 3 of 5
Ask it to check its work like a visitor on a phone.
You say: I opened it by double-clicking index.html and it looks lovely. Before I put it online, please check every page carefully, as if you were someone on a small phone and as if you were trying to find mistakes: links that go nowhere, a menu that's awkward on a phone, writing that's too small or too faint, anything that spills off the side of the screen, and anything that would trouble someone who uses a screen reader or only a keyboard. Tell me in plain English what you found, then fix it in the files.
11,807 output tokens back · read the full reply
Prompt 4 of 5
Change something, the way you will once it's live.
You say: I've just done a new walk, so please add it as my latest one: Newbury to Hungerford. Starts at Newbury Wharf and finishes at Hungerford Town Bridge. About 9 miles, roughly 3 and a half hours. Good for: a long day out, train back. My note: "Swans, a dozen locks and a very welcome bench at Kintbury." Then tell me which files you changed, so I know which ones to upload again.
2,105 output tokens back · read the full reply
Prompt 5 of 5
Ask how to put it live from GitHub, by clicking, not typing commands.
You say: I've made free GitHub and Cloudflare accounts. On GitHub I made a new repository called toms-towpath-walks (I switched on "Add README"), and in Cloudflare I went to Workers & Pages, Create application, Pages, Connect to Git, and picked that repository, so it should go live by itself whenever the files on GitHub change. I don't want to use the terminal or install anything. Please tell me, step by step, how to get the website into my repository using the GitHub website, what I should see at each step, how I find the address where it's live, and how I put a change live later (like the walk I just added).
1,638 output tokens back · read the full reply
After prompt 1 of 5
Reply to prompt 1 · 11.1 s · 1,106 output tokens
Describe what your website is about.
A plan and some questions, and nothing made yet. Ours proposed three pages (home, all walks, and an About page with the email link), named free hosts, asked six questions (the walks, the About text, photos, the look, the address, adding walks later) and warned that an email address on a page attracts spam.



Reply to prompt 5 · 16.1 s · 1,638 output tokens
Ask how to put it live from GitHub, by clicking, not typing commands.
Click-by-click steps on GitHub and Cloudflare. Ours: Add file, Upload files, drag in the four files (not the folder, or the site ends up one level too deep), Commit changes; finish Cloudflare's setup screen with framework preset None and a blank build command; find the .pages.dev address on the project page; for a change, upload only the changed files and Cloudflare publishes by itself. It said its button names were from memory.
04 · The result
The real thing, on the stage.
Screenshots of exactly what Claude produced, running on our machine on 1 October 2026. Nothing retouched.
We typed five plain-English prompts into one conversation with claude-sonnet-5-5 on 1 October 2026. One caveat: we ran them through Anthropic’s command-line tool with only its file tools switched on, so Claude could save files into an empty folder, much like file creation on claude.ai. We didn’t use the claude.ai website itself, so your screen will look different. The replies are published as they came back and we edited nothing by hand. Claude spent 158.9 seconds writing them.
The first prompt just described Tom and the pages he wanted, and asked Claude to ask questions before making anything. It did: six of them, about the walks, the About text, photos, the look, the address and adding walks later. It also warned that a plain email address on a page can attract spam. Fair point.
In the second prompt we answered, asked it to make up four walks, and attached a screenshot of one of our own sites, saying we liked the cream background, the big old-fashioned heading and the calm feel, but not to copy the words. Claude saved four files: index.html, walks.html, about.html and style.css. It said it hadn’t opened them in a browser and that the walks and places were invented.
Then we tested them in a browser at laptop and phone size, every page, opened from disk like a double-click. After prompt 2, 78 of 94 checks passed. Two pages had no main heading, there was no skip link for keyboard users, and some text was as small as 11.5px.
So prompt 3 asked Claude to check every page as someone on a small phone, and as someone hunting for mistakes, then fix the files. It made tiny text bigger, darkened faint text, made the menu and the home-page cards easier to tap, added a “Skip to main content” link and a visible keyboard outline, and gave every page a proper main heading. It was honest that it had checked by reading the code, not on a real phone or with a screen reader.
After that, 96 of 100 checks passed: no errors, nothing loaded from other websites, no sideways scrolling, every link working. The four that failed are the same thing on two pages at two sizes: the small capital labels are 13px, and we look for 14px.
Prompt 4 is what keeping a site up to date looks like. We gave it a fifth walk, and Claude put it at the top of both pages, changed the count to five, and used Tom’s note word for word. We hadn’t given a date, so it used the day of the run and said so.
Prompt 5 asked how to get the files onto GitHub and live, by clicking. We told Claude we’d already made the repository and connected Cloudflare to it. It answered in four parts: upload the four files on GitHub, finish Cloudflare’s setup screen, find the .pages.dev address, and later upload only the files that changed. It warned against dragging the folder instead of the files, which would put the site one level too deep, and said its button names were from memory. We’ve checked its clicks against GitHub’s and Cloudflare’s documentation below.






demo.iwantaito.com/build-me-a-website/: Claude's unedited files, a made-up example.
about.html
index.html
style.css
walks.html
05 · What we tested
We tried to break it. 3 of 5 held.
Run on our own machine against the unedited files. Nothing deployed while testing.
| What we tried | What happened | Result |
|---|---|---|
| Prompt 3 files opened by double-click, every page at laptop (1440x900) and phone (390x844) size in headless Chrome | 96 of 100 checks passed: no errors, nothing loaded from other websites, no sideways scrolling, every link and in-page link works, the menu marks the current page, one main heading per page, skip link reachable with Tab | Pass |
| Text contrast | Lowest text contrast 6.79:1 on both sizes (the WCAG AA minimum is 4.5:1) | Pass |
| Smallest text | The small capital labels on the home and walks pages are 13px, below the 14px we look for (the 4 failed checks above) | Fail |
| Prompt 4 files (the fifth walk added) | Same 96 of 100; the new walk is first on both pages and nothing spills sideways on a phone | Pass |
| Prompt 2 first build, same checks | 78 of 94: no main heading on two pages, no skip link, smallest text 11.5 to 12.5px. Prompt 3 fixed the first two | Fail |
06 · Ship it
Put it live from GitHub, no terminal.
Your files go into your GitHub repository and Cloudflare publishes them by itself. The steps start from Claude's own answer and are checked by us against GitHub's and Cloudflare's documentation, which the sources below link to.
These clicks follow GitHub’s and Cloudflare’s documentation, so the button names are theirs. Claude’s unedited files are live at demo.iwantaito.com/build-me-a-website/ (we host them ourselves, with a thin bar on top saying it’s a made-up example); the screenshots are from our own machine.
- Download the four files Claude made into one folder: index.html, walks.html, about.html and style.css.
- On GitHub, open your toms-towpath-walks repository and select Add file, then Upload files. Drag in the four files themselves, not the folder they’re in, or the site ends up one level too deep and won’t show. Select Commit changes. The repository now lists five files; README.md doesn’t appear on the site.
- If you left Cloudflare’s “Set up builds and deployments” screen open, check the production branch is main, the framework preset is None and the build command is blank, then select Save and Deploy. If you’d already finished it, there’s nothing to do: your commit starts a new deployment by itself.
- In Cloudflare, open Workers & Pages, then your project. Its address ends .pages.dev, such as toms-towpath-walks.pages.dev. Open it and click through all three pages.
- To put a change live, such as a new walk, ask Claude in the same chat and download the files it changed (for the walk, index.html and walks.html). On GitHub, select Add file, then Upload files, drag just those in and select Commit changes. Files with the same name are replaced; the rest stay. Cloudflare publishes the change by itself, usually within a minute or two. If it doesn’t appear, look at the newest entry in the project’s Deployments list.
- Your own domain is optional. Open the project, then Custom domains, then “Set up a domain”. A plain domain like tomstowpathwalks.co.uk has to be added to Cloudflare first, and its nameservers changed wherever you bought it. A subdomain such as walks.example.co.uk can point at the site with a CNAME record instead.
On Claude Pro, you can skip the downloading and uploading. Ask Claude Code on the web for the change and it saves it to a branch of your repository; you merge it on GitHub and Cloudflare publishes it. The set-up page shows how, with a real run on Tom’s site.
No GitHub? Cloudflare’s “Drag and drop your files” works too, but you drag the whole folder in again for every change, and that project can’t be switched to GitHub later.
Free plan: Claude makes the files, you upload them
FreeTo change something: ask Claude, download the files it changed, and upload just those the same way. Files with the same name are replaced; the rest stay as they are.
£0: Claude Free, GitHub Free and Cloudflare's free plan.
Pro: you chat, Claude saves the change, Cloudflare publishes it
Claude Pro, $20 a monthClaude edits the files and saves them to GitHub on a separate branch, a draft copy. Cloudflare gives that branch its own preview address, so you can look before anything changes. Happy with it? Select Create PR, then on GitHub select Merge pull request, then Confirm merge. Cloudflare puts it live by itself.
07 · What it costs
What it costs.
£0 a month on Cloudflare's free plan and Claude's Free plan; your own domain is optional and the only cost.
Hosting is £0 a month. Cloudflare says requests to static files are free and unlimited, and GitHub’s Free plan is enough to hold the files. Tom’s site is four of them.
Claude’s Free plan covered everything here. A domain is the only possible cost, and it’s optional. We haven’t checked domain prices, so we won’t guess; the free pages.dev address works without one.
08 · What it got wrong
3 things Claude got wrong, or left to you.
If Claude gets something wrong, we say so here. We never fix its files by hand; a fix is a follow-up prompt you can see above.
The build output directory
Claude said to leave Cloudflare's build output directory empty, 'or type / if it insists on something'. Cloudflare's documentation says to leave the build command blank for a site with no build step, and doesn't say what goes in the output directory. Leaving it empty is what we'd try first.
A taken project name
Claude said Cloudflare adds extra letters to the address if the project name is taken. Cloudflare's Git integration page doesn't say so (its drag-and-drop page says it adds a few random characters). Either way, use the address the project page shows.
No 'page not found' page
There is no 404.html, so Cloudflare Pages treats the site as a single-page app and shows the home page for any mistyped address. Ask Claude for a '404.html page not found page' if that bothers you.
Ours, disclosed
Built it? Where we can help next.
Ours: made by the same studio that runs this site. None of them changes anything above.
Ours
What is GEO
Once the site is live, a free guide to getting it read and cited by AI assistants.
Ours
Adapt Progress Evolve
We build these properly, if you'd rather not do it yourself.
Questions
Questions people ask.
Can Claude build me a website for free?
Yes, in our run. Five prompts in a conversation with Claude made a three-page site, and Claude's Free plan includes file creation. GitHub's Free plan holds the files and Cloudflare hosts plain files like these for free. A domain name is the only thing you might pay for, and it's optional.
Do I need to use a terminal or install anything?
No. You type in a Claude chat, download the files it makes, and upload them to your repository on the GitHub website (Add file, then Upload files). Cloudflare, connected to that repository once, does the rest.
Can Claude put the website online for me?
Not from a chat on the Free plan, as of October 2026: Claude's GitHub connection there only reads your files. But once GitHub is connected to Cloudflare, uploading the files to GitHub is putting the site live, and it takes a minute. On Claude Pro, Claude Code on the web can save the change to a branch of your repository for you; you merge it on GitHub and Cloudflare publishes it.
Can I show Claude a website I like?
Yes. Attach a screenshot to your message and say what you like about it. We attached one of our own sites and asked for the feel, not the words, and Claude matched the cream background and the big serif heading.
How do I change the site later?
Ask Claude in the same chat and have it tell you which files it changed. Download those, then on GitHub select Add file, Upload files, drag them in and select Commit changes. Files with the same name are replaced and the rest stay. Cloudflare puts the change live by itself, usually within a minute or two.
Sources for this page
12- Claude help: create and edit files with Claude (all plans; Settings > Capabilities)
- Claude help: uploading files to Claude (screenshots, 20 files per chat)
- Claude docs: GitHub integration (every plan, reads files only)
- GitHub Docs: quickstart for repositories
- GitHub Docs: adding a file to a repository (Add file > Upload files; 100 files at once, 25 MiB each)
- Cloudflare Pages: Git integration (Connect to Git; leave the build command blank; deploys on every push)
- Cloudflare Pages: preview deployments (other branches get their own address)
- Claude Code on the web: get started (Pro, Max and Team plans)
- Cloudflare Workers pricing ('Requests to static assets are free and unlimited')
- Cloudflare Pages custom domains (apex domains must be a Cloudflare zone)
- Cloudflare Pages: serving pages (no 404.html means single-page app behaviour)
- Cloudflare Pages: Direct Upload, drag and drop (the no-GitHub alternative; can't switch to Git later)
For developers
For developers.
Skip this if you've never used a terminal. You don't need it.
The command-line route
If you’re happy in a terminal, skip the upload page. With the repository connected to Cloudflare Pages, every push to main deploys, and pushes to other branches get their own preview address:
git clone https://github.com/<you>/toms-towpath-walks.gitcp index.html walks.html about.html style.css toms-towpath-walks/cd toms-towpath-walksgit add .git commit -m "Add the site"git push origin mainWithout GitHub, the same folder deploys with Wrangler, Cloudflare’s command-line tool, to a separate Direct Upload project (a Git-connected project is meant to deploy from Git). These commands come from the first, command-line version of this page (claude-sonnet-5-5, 1 October 2026), checked then against Wrangler 4.145.0, which needs Node.js 22 or newer.
npx wrangler pages dev toms-towpath-walksnpx wrangler loginnpx wrangler pages project create toms-towpath-walks --production-branch mainnpx wrangler pages deploy toms-towpath-walks --project-name toms-towpath-walks --branch mainThe first serves the site locally (it printed “Ready on http://localhost:8788” in our run). The last uploads it; run it again after every change.
