Free HTML hosting: paste or upload HTML, get a link
BrewPage turns an HTML file, or a snippet of HTML, into a public HTTPS page you can send to anyone. Paste the code or drop the file, press Publish and copy the link. There is no account to create and no API key to request, and a script or an AI agent can do the same with a single HTTP request.
How to host an HTML file in three steps
- 1Open the editor on the homepage. Paste your HTML, or drag a
.htmlfile onto it. Inline<style>and<script>blocks stay exactly as you wrote them. - 2Choose who can find it. Public, the default, lets the page appear in the gallery and in search when it is eligible. Private gives it an unlisted address instead. Add a password if readers should enter one, and pick how many days the page stays online.
- 3Press Publish. Copy the link and keep the owner token shown next to it: the token is what lets you replace or delete the page later.
That is the whole flow from HTML to URL. There is no build step, no repository to set up and no DNS to configure: the page is online as soon as the publish request completes, usually within seconds.
People use it for one-off pages that need a link today: a prototype to show a client, an HTML report from a test run, an invitation, a slide deck written in HTML, an interactive chart, or a page an AI assistant just wrote.
Host an HTML file with one curl command
Everything the editor does is also a plain REST call, so a script, a CI job or an AI agent can do the same thing. Send the file as the request body; the JSON response contains the link to share and the ownerToken to keep.
Publish page.html for 15 days
curl -X POST "https://brewpage.app/api/html?ttl=15" \
-H "Content-Type: text/html" \
--data-binary @page.html
# response (trimmed): {"link":"https://brewpage.app/public/aB3xK9mP2q","ownerToken":"...","expiresAt":"..."}
Without an ns parameter, a REST publish goes to the shared public namespace. Add ?ns=my-team (lowercase letters, digits and dashes, up to 32 characters) for an unlisted address, or the X-Password header to require a password. curl sends a User-Agent header by itself; other clients should set one that names them.
Replace the page at the same link
curl -X PUT "https://brewpage.app/api/html/public/aB3xK9mP2q" \
-H "Content-Type: text/html" \
-H "X-Owner-Token: YOUR_OWNER_TOKEN" \
--data-binary @page.html
The full request reference, including JSON bodies, tags and deletion, is on the API page and in llms-full.txt.
What you can host
- A single self-contained page: HTML with inline CSS, inline JavaScript and images embedded as data URIs is served as one document.
- A page with its own CSS, JavaScript and images: publish it as a site instead. Drop the whole folder or a
.zip(up to 100 files and 20 MB) so relative links between the files keep working. See the website flow. - Markdown: a
.mdfile becomes a styled, readable page. See Markdown hosting. - Files: images, PDFs, video, audio and documents get a direct link of their own.
By default a public HTML page gets a brewpage.app/public/… address and runs in a sandbox that keeps it apart from the site around it. If the page needs browser features that sandbox does not provide, such as saving data in the browser, choose Subdomain: the page then gets its own address, where scripts, forms and navigation run natively. When you leave the choice alone and the page clearly needs its own address, BrewPage may pick Subdomain for you and say why.
Limits to know before you publish
- Size
- One HTML page up to 5 MB. A multi-file site up to 20 MB in total, 100 files, 5 MB per file.
- Lifetime
- 1 to 30 days, 15 by default. When the time is up the content is deleted for good, with no recovery. Updating a page keeps its original expiry date; it does not extend it.
- Visibility
- Public publications without a password can appear in the gallery and in search results, but neither is guaranteed. An unlisted address is not private: anyone who has the link can open it. Set a password (at least 4 characters) when readers should have to enter one.
- Ownership
- There are no accounts. The owner token returned with each publish is the only way to update or delete; a lost token cannot be recovered, and the content then simply expires.
- Usage
- Publishing and reading are rate-limited per IP address. A
429response carries aRetry-Afterheader that says when to try again. - Attribution
- Published pages show a small BrewPage badge. Publishing follows the terms, and anyone can report a page.
BrewPage compared with typical HTML hosting options
| Question | BrewPage | Typical static-site host | Typical file-sharing drive |
|---|---|---|---|
| Account needed to publish | No | Usually yes | Usually yes |
| How the page gets online | Paste or drop it, or send one HTTP request | Deploy from a repository or a command-line tool | Upload the file; the link often downloads it instead of showing the page |
| How long it stays online | 1–30 days, then deleted | Until you take it down | Until you delete it |
| Own domain | Not offered: brewpage.app or a BrewPage subdomain | Usually supported | Not applicable |
| Good fit | Sharing a page, report or prototype right now | A website you maintain for months | Passing files around |
If you need a long-lived website on your own domain, a static-site host is the better tool. BrewPage is built for the moment you have a finished page and want a link without setting anything up.
Free HTML hosting — FAQ
Is BrewPage really free?
Yes. Publishing and reading cost nothing, and there is no signup, API key or payment step. The limits on this page apply to every publish.
Do I need an account to host an HTML file?
No. Each publish returns an owner token instead of creating an account. Keep it to update or delete the page; the editor also stores it in your browser.
How long does my page stay online?
15 days by default, and you can choose anything from 1 to 30 days. After that the page is deleted and cannot be recovered. Updating a page does not extend its expiry; publish it again to start a new period.
Can I update the page without changing the link?
Yes. Send the new HTML with PUT /api/html/{ns}/{id} and your owner token. The link stays the same, and so does the expiry date.
Is my page private?
Not by default. Public pages can be listed and found. A custom namespace gives an unlisted address, but anyone with the link can still open it. Set a password to require one before the page opens.
Does JavaScript run on hosted pages?
Yes. Inline scripts run. On the default address the page runs in a sandbox; choose Subdomain if it needs features such as browser storage. Scripts and styles in separate local files need the site upload, so their relative paths resolve.
Can I use my own domain?
No. Pages live on brewpage.app or on a BrewPage subdomain.
Will search engines index my page?
They may. A public page without a password is eligible for indexing, but listing and ranking are never guaranteed. Unlisted and password-protected pages are kept out of search.