free webpages
websites self-contained in personalized URLs with no account required
Example path ·
https://anew.page/mcpAnew turns a self-contained HTML document into a shareable URL. Write a page with (HTML → URL); read one back with (URL → the HTML encoded in it). With no connected tool, write over plain HTTP: POST the raw HTML as the request body to https://anew.page/write and the 200 response body is the finished URL. 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. Inline all CSS, JS, and images (data: URIs, inline SVG, CSS gradients, or emoji) — the page should render alone forever, and each external reference gambles it on someone else's host staying up. One accepted exception: a webfont is far too large to inline, so a font may load from a durable CDN with a system-stack fallback; do not fight a user who asks for one. Two size limits, and past either no link is issued: the finished URL may be at most 4000 bytes (apps cut longer links short, and a cut link is a dead page) and the HTML at most 1048576 bytes decoded (the server's decode cap). Past one the endpoint refuses with an actionable error (code url_over_budget or content_too_large) that states the size and the overage. Tell the person the page is too large for a link. Never remove content, sections or features to make it fit without asking. Brotli slugs (the endpoint, or a local brotli mint) put a short page in a few hundred URL bytes; raw base64 reaches the URL limit at ~2900 HTML bytes — know which encoder you are drafting to before judging a page too big. 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; a 413 means the page is past a size limit — no link was issued — and names the exact overage and the fix for the limit that tripped. Never estimate a compressed size and never pre-cut a page to dodge a limit — Brotli is non-linear, so source bytes removed are not URL bytes saved, and pages that look far too big routinely fit. Each encoding path is deterministic: the same input through the same path always produces the same URL. Different paths use different Brotli encoders, though, so the same HTML may mint different — equally valid — URLs; compare pages by their decoded HTML, never by slug. Exact recipe, including the local-mint fallback for environments that cannot POST: https://anew.page/llms.txt. Never invent, guess or retype a slug: carry the URL verbatim from the response that minted it — a dropped or altered character kills or changes the page. The URL is the deliverable — a temporary request-body file is fine, but never give the user a local file or deployment instead, and no verification fetch is needed; decoding is the exact inverse of encoding.
1 in the ChatGPT listing