---
name: github-import
description: Publish a snapshot of a file from a public GitHub repository.
---

# Import from GitHub

Anchorify can snapshot a file from a **public** GitHub repository
and publish it as a new share — useful when you want to share a
file from someone else's repo (a README, a spec, a sample
config) with a non-technical recipient and link them at a clean
URL instead of GitHub's raw-source page.

This is the v1 of GitHub publishing — see the
[Limits](#limits) section for what it doesn't yet do.

## Open the importer

1. Sign in.
2. Open `/new` (the **New share** button on the dashboard).
3. The Input-mode tabs show **Paste content**, **Upload file**,
   and **Import from GitHub**. Click the GitHub tab.
4. You land on `/dashboard/github`.

## Paste a GitHub URL

Anchorify accepts any of these URL shapes for a public repo file:

- The normal "blob" URL: `https://github.com/<owner>/<repo>/blob/<ref>/<path>`
- The raw URL: `https://raw.githubusercontent.com/<owner>/<repo>/<ref>/<path>`
- A `gist.githubusercontent.com` raw URL (single-file gists).

Pick the file's slug (or leave blank for one auto-generated
from the filename), pick visibility, click **Import**. The
server fetches the file from GitHub's raw endpoint, stores a
**snapshot** of the content under the chosen slug, and redirects
to the new share.

The snapshot is independent of the source — Anchorify does not
re-fetch the file later, so updates to the GitHub file are not
mirrored. To pick up a new revision, re-import (you can
overwrite by reusing the same slug, or import to a different
slug).

## Why a snapshot, not a live pointer?

Three reasons:

1. **Stability.** The Anchorify URL keeps working even if the
   GitHub repo is deleted, renamed, force-pushed, or transferred.
2. **Auth model.** Live pointers would need authenticated reads
   for private repos and rate-limit handling at view time. The
   v1 stays out of that surface area.
3. **Performance.** Snapshots are served from Anchorify's own
   storage; no GitHub round-trip per view, no cold-start delay
   for the recipient.

A live-pointer mode is on the roadmap (see [Limits](#limits)).

## Limits

The v1 importer is intentionally narrow.

- **Public repos only.** Private repos would require OAuth +
  per-user GitHub tokens. Tracked as `[V4-#5-followup]`.
- **No OAuth flow.** Anchorify makes no authenticated request
  to GitHub.
- **No live pointer.** The snapshot is one-shot; subsequent
  edits to the GitHub file are not reflected on the share.
  Re-import to refresh.
- **No multi-file or full-repo import.** One file at a time.
  For directory uploads use [Multi-file uploads](/docs/uploads)
  from a local clone.
- **No repo browser UI.** You paste the URL; Anchorify does not
  list the repo's files for you.
- **Size cap.** The same per-share size limit as paste/upload
  applies. The importer surfaces an error if the file exceeds
  it.

## Alternatives

If GitHub-import doesn't fit:

- **Paste content** — for content already on your clipboard
  (markdown, code, JSON, CSV).
- **Upload file** — for a local file (text or binary).
- **Multi-file uploads** — for a folder of files; see
  [Uploads](/docs/uploads).
- **`anchorify` CLI** — when the file lives in a local repo,
  `anchorify <file>` publishes from your terminal in one
  command. See the [CLI guide](/docs/cli).
