Topic: chatgpt shared links export

ChatGPT Shared Links: What Persists, What Expires, and How to Archive Conversations (2026)

Senior engineers frequently paste a ChatGPT shared link into a GitHub PR description, a Slack thread, or a Confluence page as evidence of the reasoning behind a decision. The link is convenient. It's also fragile: it's a frozen snapshot that doesn't update as the conversation grows, it doesn't appear in the ChatGPT data export, and it can 404 without warning when accounts are deleted, links are revoked, or OpenAI removes it. Using a shared link as the durable record of an important decision is one of the most common informal documentation anti-patterns in engineering teams — and one of the hardest to notice until the link is already gone.

TL;DR

ChatGPT shared links are frozen snapshots, not live views. They capture the conversation up to the moment you created the link and don't update when you add new messages. They are NOT included in the ChatGPT data export (conversations.json). They can disappear when you revoke them, when your account is deleted, or when OpenAI removes them — with no warning. If you've shared a conversation containing important reasoning, archive it now: submit the URL to web.archive.org, print to PDF, or copy the text from conversations.json (the full text IS there even though the share UUID isn't). And stop using shared links as the durable copy — extract the decision into an ADR or use WhyChose.

How ChatGPT shared links work

To share a conversation: open ChatGPT, click the share icon (or the ⋮ menu next to a conversation title), and select "Share conversation." ChatGPT generates a public URL at https://chatgpt.com/share/[UUID]. Anyone with the link can view the conversation — no ChatGPT account required.

The critical behavior: the shared link is a snapshot taken at the moment you click "Create link." It does not update. If you continue the conversation after sharing, the new messages do not appear at the shared link. If you share a link at message 10, and then add messages 11–20, the link still shows only messages 1–10. Viewers who saved or bookmarked the link see the old version. There is no "update link" button that refreshes the snapshot — you'd need to delete the old link and create a new one.

The link URL includes a UUID that is the unique identifier for that specific snapshot. Deleting and recreating the link for the same conversation produces a different UUID at a new URL.

What a shared link shows — and what it doesn't

Element Included in shared link? Notes
Full conversation text (user + assistant turns) Yes — up to the moment the link was created Frozen; new messages added after sharing are not visible
Code blocks and pre-formatted text Yes Rendered as code; syntax highlighting matches the ChatGPT UI
Messages added after the link was created No The link is a snapshot; it does not live-update
Custom GPT system prompt No Remains private to the GPT creator even in shared conversations
DALL-E generated images Partial — expiring CDN URLs are embedded but 404 after approximately 30 days; see the file uploads export guide
Uploaded files (PDFs, images you sent) No Files are referenced by name only; binary content is not included
Memory context the model used No Memory entries that influenced the response are not shown in the shared view
Model version used (e.g. GPT-4o, o1) No The model name is not displayed in the shared view
Conversation title from your sidebar No Shared view shows a generic header; your sidebar title remains private
Web search results cited in the conversation Partial The text citing search results is shown; linked external pages are not archived alongside it

Are shared links in the data export?

No. The standard ChatGPT data download (Settings → Data controls → Export data → confirm → download the ZIP) produces a conversations.json file. This file contains the full message history of every conversation — every user turn, every assistant response, code blocks, tool calls, everything. What it does NOT contain:

In other words: the conversation content is in the export. The fact that you shared it, and the URL you shared, is not. This means if you want to audit which conversations you've shared, you cannot do it programmatically from the export — you have to check each conversation in the ChatGPT UI manually.

To check whether a conversation has an active shared link: open the conversation in ChatGPT, click the share icon. If it says "Manage link" (rather than "Create link"), a link exists. If it says "Create link," no active link exists for that conversation at that moment.

There is no "all my shared links" page in the ChatGPT web interface. This is a known gap — shared links are created per-conversation and there is no aggregate view.

When shared links disappear: four causes

1. User revocation

Click the share icon in the conversation → "Manage link" → "Delete link." The link 404s immediately. There is no grace period; anyone who has it bookmarked or referenced it in a PR description will now get a 404. There's no notification to people who have the link that it's been revoked.

2. Account deletion

When a ChatGPT account is deleted, all shared links associated with it become inaccessible. This is the most common cause of unexpected link disappearance in team contexts: an employee leaves, their account is deleted (or deactivated), and every shared link they created — embedded in PRs, Confluence pages, Slack messages — goes dark. Links in PR descriptions are permanent text; the dead links remain long after the conversation they referenced is gone.

3. OpenAI terms of service enforcement

OpenAI can remove shared links that violate its Terms of Service — for example, links sharing conversations that contain another person's private information, conversations that triggered safety filters, or conversations OpenAI determines shouldn't be publicly accessible. The user does not receive a notification when a link is removed this way. The link simply 404s.

4. Platform changes

OpenAI migrated shared links from chat.openai.com/share/UUID to chatgpt.com/share/UUID during 2024. The old domain redirects to the new one (as of 2026), but platform migrations can change URL formats. There is no guarantee that today's shared link URL will resolve at the same path in three years. This is not a hypothetical concern — it has already happened once.

How to discover your shared links

Three paths, in order of effort:

Path 1: ChatGPT UI (per-conversation check)

Open a conversation → click the share icon → if it says "Manage link," a link exists. This is the only reliable real-time check. It doesn't scale to hundreds of conversations, but for specific conversations you know you shared, it's definitive.

Path 2: Search your own messages for chatgpt.com/share URLs

Search your Slack, email, PR descriptions, Confluence pages, and Notion docs for "chatgpt.com/share" or "chat.openai.com/share." Every time you pasted a shared link somewhere, you left a trace. This finds the links you actually shared with others (as opposed to links you created but never sent). Use the results to prioritize which conversations to archive — these are the links that colleagues have already bookmarked.

Path 3: Check conversations.json for conversations you know you shared

The data export doesn't contain share UUIDs, but it contains the full conversation text. If you remember approximately when a conversation happened and what it was about, you can find it in conversations.json and extract the text from there — the export is the authoritative source of the content even if not the share URL. Use jq to search by title or date:

# Find conversations by approximate title
jq '.[] | select(.title | test("postgres|database"; "i")) | {title, create_time}' conversations.json

# Find conversations in a date range (Unix timestamps)
jq '.[] | select(.create_time > 1700000000 and .create_time < 1720000000) | .title' conversations.json

Five archival strategies

For any shared link containing reasoning you need to preserve, take one of these actions now rather than waiting for the link to disappear:

Strategy 1: Wayback Machine snapshot (most durable)

Submit the URL to web.archive.org/save/. The Wayback Machine crawls the page and stores a permanent snapshot at a web.archive.org/web/TIMESTAMP/chatgpt.com/share/UUID URL. This is the most durable option: even if ChatGPT removes the link, the Wayback Machine snapshot remains independently hosted. The Wayback Machine does not require an account and is free for individual URLs.

Strategy 2: Browser print to PDF

Open the shared link in a browser → Cmd+P (macOS) or Ctrl+P (Windows/Linux) → "Save as PDF." Preserves the rendered page including code block formatting. Suitable for attaching to a Confluence page or PR description directly. Limitation: DALL-E images that have already expired appear as broken image placeholders in the PDF.

Strategy 3: wget download

Download the full page and its assets locally:

wget -p -k -nd -P ./archive/chatgpt-uuid \
  https://chatgpt.com/share/YOUR-UUID-HERE

The -p flag downloads all page assets (CSS, JS); -k converts links to local paths for offline browsing; -nd puts everything in a single directory; -P sets the output directory. This produces a local HTML + assets directory you can open in a browser without network access. Note: the JavaScript bundle required to render the conversation content must be present — this approach works better for archival than for programmatic text extraction.

Strategy 4: Extract text from conversations.json

The most reliable text-extraction path doesn't use the shared link at all — it uses the ChatGPT data export, which contains the full conversation text even though it doesn't contain the share UUID. Find the conversation by title or date in conversations.json, then extract the messages:

# Extract messages from a specific conversation (replace TITLE with your conversation title)
jq '.[] | select(.title == "TITLE") | .mapping | to_entries[].value
  | select(.message != null and .message.author.role != "system")
  | {role: .message.author.role, content: .message.content.parts[0]}' \
  conversations.json

See the ChatGPT conversations.json field reference for the full mapping DAG schema and the Markdown conversion guide for the full DAG-walk script that produces one .md file per conversation.

Strategy 5: Run the decision extractor

If the conversation contained an architectural decision — a trade-off analysis, a technical choice, a "why did we pick X over Y" reasoning session — run the WhyChose extractor on the conversations.json file. The extractor finds decision-shaped conversations and outputs structured records with the original reasoning, the alternatives considered, and a backlink to the source conversation. The structured record is more durable than a shared link and more useful as a decision artifact: it's a first-class record in a decisions directory, not a pointer to an external page that may or may not resolve.

The shared-link-as-decision-record anti-pattern

The most common informal documentation pattern that shared links enable goes like this:

  1. An architect spends 45 minutes in ChatGPT working through a database selection trade-off.
  2. The reasoning is good — it covers the actual constraints, the rejected alternatives, and the reasoning behind the chosen approach.
  3. The architect creates a shared link and pastes it into the PR description: "See the full reasoning here: chatgpt.com/share/UUID."
  4. The PR merges. The conversation link is the only record of the reasoning — there's no ADR, no design doc, nothing in the repository.
  5. Eighteen months later, a new engineer asks why the database was chosen. The PR description has the link. The link is 404 — the architect left the company and their account was deleted.

This is the exact scenario WhyChose is built to prevent. The shared link was a convenient shortcut that became a dead end. The reasoning existed — it was good reasoning — but it was stored in a platform that didn't persist it durably.

The correct pattern at step 3 is one of:

Shared links vs the data export: what to use when

Need Shared link Data export (conversations.json)
Share a conversation with someone right now Yes — easiest path No — requires data export request + processing
Durable archival of conversation content No — can 404 without warning Yes — local copy you control
Reference in a PR description or design doc Use only as supplementary reference; add plain-text summary too Extract text and embed it; more durable than a link
Extract decision reasoning programmatically No — requires parsing rendered HTML Yes — structured JSON, parseable with jq
Find conversations you've shared Only via per-conversation UI check Content is here; share UUIDs are not
GDPR data portability (your data) No — not included in GDPR export Yes — the canonical GDPR export artifact

Team workspace: are shared links policy-controlled?

For ChatGPT Team and Enterprise accounts, workspace admins can control data sharing behavior through the admin console. By default, conversations in Team workspaces are not available for OpenAI model training — but the shared link feature operates independently of the training toggle. Admins cannot disable shared links for all workspace members from the admin console (as of 2026); individual users can still create and share links from their accounts. This means conversations with proprietary architectural reasoning can be shared externally by any team member — a governance gap that some regulated organizations address through policy rather than platform controls.

For context on the full Team workspace data picture (admin export, audit log, member scope), see the ChatGPT Team export guide.

How WhyChose fits in

Shared links are a symptom of a real need: the reasoning in your ChatGPT conversations is worth preserving, and teams reach for shared links because they're the only in-platform sharing mechanism. The problem isn't the sharing — it's that the shared link is the only artifact, and it's fragile.

The WhyChose extractor addresses this upstream: it reads your conversations.json export and surfaces every decision-shaped conversation — the trade-off analyses, the "why X over Y" reasoning sessions, the technical choices made with AI assistance — as structured records with the original reasoning, the alternatives considered, and the date. Each record is a first-class ADR-equivalent that belongs in doc/decisions/, not a link to an external page. When a new engineer asks "why did we pick this architecture?" in eighteen months, the answer is in the repository — not behind a URL that may or may not resolve.

Get early access

Related questions

Are ChatGPT shared links included in the data export?

No. The ChatGPT data export (conversations.json) contains the full message history of every conversation but does NOT include share link UUIDs, a list of which conversations were shared, or share creation/revocation dates. The conversation content is present; the sharing metadata is not. To find which conversations have active shared links, you must check each conversation individually in the ChatGPT UI (the share icon shows "Manage link" if a link exists). There is no "all my shared links" dashboard.

Do ChatGPT shared links expire?

OpenAI doesn't publish a time-based expiry. Links persist until: the user revokes them ("Manage link → Delete link"), the owning account is deleted, OpenAI removes them for ToS violations, or platform changes break the URL structure (which happened once during the chat.openai.com → chatgpt.com migration). There is no expiry warning — disappearance is sudden. For this reason, shared links should be treated as ephemeral references, not durable records. Archive important reasoning from conversations.json or via the Wayback Machine.

What does a ChatGPT shared link show vs the original conversation?

A shared link shows the conversation text up to the moment the link was created — all user and assistant turns, code blocks, and formatting. It does NOT show: messages added after the link was created (it's a frozen snapshot, not a live view), the Custom GPT system prompt if the conversation was in a GPT, DALL-E images after their CDN URLs expire (~30 days), uploaded file contents, the model version used, or the conversation's sidebar title. The view is anonymous — it doesn't show who created the conversation.

How do I permanently archive a ChatGPT shared link?

Five options in order of durability: (1) Wayback Machine — submit to web.archive.org/save/; the snapshot persists even if OpenAI removes the link. (2) Browser print to PDF — Cmd+P or Ctrl+P → Save as PDF. (3) wget download — saves HTML + assets locally for offline browsing. (4) Extract from conversations.json — the full text is there even without the share UUID; use jq to find the conversation by title or date. (5) WhyChose extractor — if the conversation contains architectural decisions, the extractor outputs structured records with the reasoning as the durable artifact rather than a link.

Further reading