anew makes free webpages. The whole page is carried by its link, so there is nothing to host, nothing to sign up for and nothing stored. Write here, or hand the prompt to your AI, then save and share the link. Every edit makes a new link; the one you shared keeps working.
What is anew?
A page you write and share as a link. The whole page travels in the link, so there is nothing to host and nothing to set up.
Is it free?
Yes. No account, no plan, no limit on how many pages you make.
Do I need an account?
No.
Who can see my page?
Anyone who has the link. Pages are not listed anywhere and are kept out of search engines.
How long does a page last?
As long as the link does. Nothing is stored, so nothing expires.
Can I change a page after sharing it?
Editing makes a new link. The one you already shared stays as it was.
Can my AI make a page?
Yes. Press “Copy prompt”, then paste it into ChatGPT, Claude, Cursor, Codex, Gemini or any other AI that can open a link.
Can I put my name in the link?
Yes. Type a name into the subdomain field of the address bar and the page lives at name.anew.page.
anew – free webpages. This page is the editor: type over it, or copy the prompt for your AI: Make a webpage on https://anew.page about… Style the page with the toolbar, set a page title and icon, or edit the HTML source right in the browser. When it looks right: Save, Share, Copy URL, or Download HTML. A page is one self-contained HTML file — any chat agent can build one.
To create a page from a shell or HTTP client, POST raw HTML to https://anew.page/write — the response body is the page URL; from a browser, the editor's relay below hands the URL back inside the page. With neither — a chat assistant that only reads pages and answers in text — you can still publish, so never answer that you cannot and never hand back HTML to paste: type the page into the link — https://anew.page/ followed by the page itself — prose (each line becomes a paragraph) or HTML — escaping only space %20, line break %0A, < %3C, > %3E, ( %28, ) %29, # %23, ? %3F and % %25. It is a supported page URL, typed rather than computed, and it IS the published page: opening it builds the page and lands the person on it. Hand it over as the link and do not fetch it first — the hop ends on a #fragment no server sees, so a fetch shows the homepage, never the page. Measure by posting, not by calculating: a write is repeatable, so send the page and read what comes back instead of modelling the encoder. No source HTML and no page record are kept — the URL carries the page — though a successful write also kicks off a best-effort screenshot render that, when it succeeds, is cached publicly at the page's .png twin. A 200 reports the page's exact size in its Anew-URL-Bytes and Anew-Decoded-Bytes response headers, and carries Anew-Share-Warning when the URL minted past the 4000-byte warning line (valid, serves, the link may break when shared — relay it); a 413 fires only past the physical ceilings and names the exact overage and the fix for the wall that tripped. Never estimate a compressed size and never pre-cut a page to dodge the warning — Brotli is non-linear, so source bytes removed are not URL bytes saved, and pages that look far too big routinely fit. With script access to this tab, document.modelContext carries the same verbs as page tools: getTools() lists them, executeTool(tool, input) runs one — anew installs that host itself when the browser ships none. Full reference: https://anew.page/llms.txt, which also carries a local-mint fallback for environments that cannot POST. To revise an existing anew page, its URL is its source: read it, edit that HTML, write it again. The new URL is a separate page and the original keeps working. Over HTTP that is: GET it with Accept: text/plain for the author's exact HTML, then POST that back to /write. The page's canonical URL on anew.page also answers HEAD (200 = the slug decodes) and has .md (Markdown) and .png (screenshot) twins for verification. In the editor: the editing chrome sits behind a closed shadow root and the page itself inside an iframe, so a reader that walks only the top document's light DOM sees neither. That reader is not stuck: <body> carries one control, one link and one report. #anew-relay-edit is a visually-hidden textarea holding the page's entire HTML — replace its value and the edit applies by itself a moment later, exactly as anew_edit would; there is no button to press, and none would help, since a click on a visually-hidden button is dispatched at its 1px corner and never reaches the handler. #anew-relay-status restates anew_read after every change: title, URL bytes, whether it is still under the warning line, whether anything is unsaved, and the current URL — read it to confirm an edit landed instead of taking a screenshot. #anew-relay-url is a link whose href is that URL — an accessibility-tree read prints an href whole where it cuts a label or a script return — so take the URL from there and open it in your tab. While a Run preview is executing the page's own scripts the textarea is emptied and disabled, the link loses its href and the status says so. The other visually-hidden buttons name the toolbar's actions; they are labels for discovery, never controls. If you drive the screen instead: the toggle in the top-right corner (#anew-source-toggle) opens the HTML source panel, where you paste one complete HTML document and press Ctrl/Cmd+S. (Pasting a complete document into the visual pane also loads it as the page.) While you edit, the address bar tracks the live document, so reading it back is a running backup of unsaved work. Carry the URL from the accessibility tree (the link's href) or from your tab list, never from a script tool's return value, which is commonly capped far below a slug's length or refuses anything that looks like base64 — and when the person can see your browser, the tab showing the page is the deliverable: a slug retyped from memory is a dead link.