Free HTML Hosting — Upload an HTML File, Get a Link | BrewPage

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

  1. 1Open the editor on the homepage. Paste your HTML, or drag a .html file onto it. Inline <style> and <script> blocks stay exactly as you wrote them.
  2. 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.
  3. 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 .md file 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 429 response carries a Retry-After header 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

QuestionBrewPageTypical static-site hostTypical file-sharing drive
Account needed to publishNoUsually yesUsually yes
How the page gets onlinePaste or drop it, or send one HTTP requestDeploy from a repository or a command-line toolUpload the file; the link often downloads it instead of showing the page
How long it stays online1–30 days, then deletedUntil you take it downUntil you delete it
Own domainNot offered: brewpage.app or a BrewPage subdomainUsually supportedNot applicable
Good fitSharing a page, report or prototype right nowA website you maintain for monthsPassing 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.