hurl.page
Hurl HTML at an API. Get an unguessable URL back. That's it.
no signup 128-bit slugs multi-file drops zip uploads proper MIME
Drop an HTML file, a zip, or a bunch of files here
or browse
or browse
Got a folder? Zip it. Your URL appears instantly — no account, nothing.
One file
curl -X POST https://hurl.page/deploy \
-H "Content-Type: text/html" \
--data-binary @report.html
# →
{
"url": "https://e6ofnodp3eapksqzpnnzbylzfm.hurled.page/",
"files": ["index.html"]
}
Multiple files
curl -X POST https://hurl.page/deploy \
-H "Content-Type: application/json" \
-d '{"files":{
"index.html": "<link rel=stylesheet href=css/app.css><h1>hi</h1>",
"css/app.css": "h1{color:hotpink}",
"logo.png": {"encoding":"base64","content":"iVBOR..."}
}}'
Directory-style paths work, index.html defaults like CF Pages, content types resolved from extensions.
Whole site as a zip
curl -X POST https://hurl.page/deploy \
-H "Content-Type: application/zip" \
--data-binary @dist.zip
Your whole build folder in one shot — unpacked and hosted as-is, up to 500 files / 25 MB. A single top-level folder inside the zip is stripped automatically.
GitHub Actions
- name: Publish report
run: |
URL=$(curl -fsS -X POST https://hurl.page/deploy \
-H "Content-Type: text/html" \
--data-binary @build/report.html | jq -r .url)
echo "### 📄 Report: $URL" >> "$GITHUB_STEP_SUMMARY"
No tokens, no secrets, no setup. Test reports, coverage, visual diffs, preview builds — one URL away.
Why unguessable beats auth
Every drop lives on its own subdomain with 128 bits of CSPRNG entropy. No accounts to view, no cookies, no expiring share links — the URL is the capability. Paste it in a PR comment and everyone can open it.