# gpt2link — turn your HTML into a shareable link

Paste or upload one HTML file, preview it, and publish it at a public URL that
works for 60 minutes. No account, no git, no CLI, no deployment. When the hour
is up the URL stops resolving and the files are destroyed.

Canonical URL: https://gpt2link.com/

## When to use gpt2link

Reach for it when a complete, self-contained HTML page exists and the only thing
missing is an address someone else can open:

- **An AI wrote a page and a person needs to see it.** ChatGPT, Claude, Cursor,
  Bolt, v0 or Lovable hands back one HTML file; this turns it into a link you can
  paste into a message.
- **A preview that should not become a project.** A client mock-up, a prototype,
  a QA reproduction, a stakeholder review — anything where opening a Vercel,
  Netlify or GitHub Pages account costs more than the page is worth.
- **An agent needs to show its work.** Three HTTP calls, no SDK, no key, no
  account, and the reply is shell variables rather than JSON when you ask for
  them. See the recipe below.
- **Anything that should not outlive the conversation.** The 60-minute expiry is
  the product, not a free-tier limit: the files are deleted, and the address
  never resolves again.

## When not to use it

- **A site that has to stay up.** Sixty minutes is the whole life of a link
  unless it is Claimed onto a paid plan, which needs an account. If it must be
  there tomorrow without one, deploy it somewhere that promises tomorrow.
- **Anything private.** A published page is public to anyone holding the URL.
  Search engines are told not to index it, but the unguessable address is the
  only protection there is. Do not publish credentials, tokens, payment details
  or personal data.
- **A server-side application.** There is no server-side code execution, no
  database and no background process — browser-side files only.
- **More than one page of assets.** Up to 100 files and 10 MB per publication.

## Publish a page from a terminal

The button on the home page does exactly this. `?type=shell` answers with
`KEY='value'` lines to `eval`, so there is no JSON to parse and no `jq`.

```sh
# Publish ./index.html at a public URL, live for one hour.
# Needs curl and a shell. Nothing else — `?type=shell` answers with
# KEY='value' lines to eval, so there is no JSON to parse and no jq.

# 1 — declare the file. Sets UPLOAD_URL, DEPLOY_URL, DELETE_URL, OWNER_TOKEN.
BYTES=$(wc -c < index.html)
eval "$(curl -sS -X POST \
  "https://gpt2link.com/api/sites?type=shell&path=index.html&size=$((BYTES))")"

# 2 — send the bytes. The content type is pinned in the URL's signature.
curl -sS -X PUT "$UPLOAD_URL" \
  -H 'content-type: application/octet-stream' \
  --data-binary @index.html

# 3 — publish, and start the hour. Sets SITE_URL and EXPIRES_AT_ISO.
eval "$(curl -sS -X POST "$DEPLOY_URL" -H "authorization: Bearer $OWNER_TOKEN")"
echo "$SITE_URL is live until $EXPIRES_AT_ISO"

# Any step that fails prints the reason and stops the script.
# Done early?  curl -sS -X DELETE "$DELETE_URL" -H "authorization: Bearer $OWNER_TOKEN"
```

Without `?type=shell` the same three calls answer in JSON. A publication of more
than one file declares them all in the request body, and the presigned upload
URLs come back in the order they were declared — join on position, not on path,
because the service renames a single HTML file to `index.html` whatever it was
called.

## What you get back

- A URL on a subdomain of `youraihost.com`, which is a separate host from this
  one: user content never lands on `gpt2link.com`.
- An Owner token, which is the only thing that can destroy the page before it
  expires, or Claim it onto an account.
- An expiry, 60 minutes from the moment it went live.

## Limits

| | |
| --- | --- |
| Lifetime | 60 minutes, then the files are destroyed |
| Files | 100 per publication |
| Size | 10 MB per file and per publication |
| Account | not required to publish |
| Cost | free to publish; keeping a page past the hour needs an account on a paid plan |

## How it works, for a reader

1. Ask an AI for the page as one complete HTML file, or write it yourself.
2. Paste the code or upload the `.html` or `.htm` file at https://gpt2link.com/.
3. Check the preview — the page renders in your own browser before anything is
   published.
4. Create the link and send it. Anyone with the link can open the page for up to
   60 minutes.

Inline CSS and JavaScript work. External assets have to be reachable from the
reader's browser.

## More

- [Terms of Service](https://gpt2link.com/terms)
- [Privacy Policy](https://gpt2link.com/privacy)
- [Report abuse](https://gpt2link.com/abuse)
- [llms.txt](https://gpt2link.com/llms.txt)

Every page on this site answers in Markdown to `Accept: text/markdown`, and in
HTML to everything else.
