SnipShare installs like any WordPress plugin and has sensible defaults out of the box - but a handful of settings decisions made in the first 10 minutes determine how the tool behaves for you long-term. This post walks through the full setup sequence from a fresh install to a working paste you can share.
What you are installing
SnipShare is a self-hosted Pastebin/Gist alternative. The core workflow: create a paste (one or more files, each with syntax highlighting), get a URL, share it. The paste lives on your WordPress install, not on a third-party server.
What ships in the free plugin:
- Multi-file pastes with per-file language and filename
- 20+ syntax languages via CodeMirror
- Four visibility modes: Public, Unlisted, Private, Burn-after-read
- Password protection per paste
- Expiration controls: Never / 1 hour / 1 day / 1 week / 1 month
- Revision history with side-by-side diff
- Forking, starring, and tagging
- Public archive at
/pastes/with filter by language and tag - Raw URL at
/paste/<hash>/raw/for curl and programmatic access - ZIP download
Step 1 - Install and activate
- From your WordPress admin, go to Plugins - Add New.
- Search for SnipShare or upload the zip from the store.
- Activate. The plugin runs a brief setup check and registers the custom post type and rewrite rules.
- Go to Settings - Permalinks and hit Save Changes (no change needed, just flush). This ensures
/paste/<hash>/resolves correctly.
Step 2 - Run through the settings that matter on day one
From admin - SnipShare - Settings:
URL slug. Default is /pastes/. Change this if you want something shorter like /code/ or /p/. Set it now - changing it later breaks existing paste URLs.
Who can create pastes. By default, any logged-in user can create pastes. If you want guests to create public pastes (common for Pastebin-style public sites), enable guest submissions. If you want pastes restricted to a specific role (Editors and above for a team intranet), set that here.
Default visibility. If your primary use is sharing code publicly, leave this as Public. If your primary use is a private team archive, set the default to Private - authors always override per-paste, but a sensible default saves clicks. See the team intranet use case for private-library configuration.
Default expiration. For a permanent personal library, set this to Never. For a public site where you want pastes to age out, set a sensible default (1 month) while allowing authors to override.
Syntax theme. Pick a theme that matches how you work. One Dark and Dracula are the most-used choices among VS Code users. This is cosmetic but people notice.
Step 3 - Create your first paste
Navigate to /pastes/create/ (or hit New Paste from the admin bar if you added it). The create form:
- Add a file. Click Add file or drag a file in. Give it a filename (e.g.
config.yaml) and pick the language from the dropdown. - Paste your code in the editor. Syntax highlighting applies immediately.
- Add a second file if needed. SnipShare treats a paste as a container for multiple related files - the same model as a GitHub Gist. A bash script with its configuration file, or three component files that belong together, all go in one paste.
- Set visibility. Public (shows in the archive), Unlisted (anyone with the link can view, not listed), Private (only you), or Burn-after-read (self-destructs after the first view).
- Set expiration. For code you intend to reference later, leave this as Never.
- Add a description and tags. Both are optional but improve searchability. Tags let you filter by topic in the archive.
- Hit Create.
You land on the paste view page. The URL is /paste/<hash>/.
Step 4 - Understand the paste URLs
Each paste has three useful URLs:
| URL | What it does |
|---|---|
/paste/<hash>/ | The rendered paste view with syntax highlighting |
/paste/<hash>/raw/ | Plain text, no HTML - useful for curl and scripting |
/paste/<hash>/raw/?file=config.yaml | Raw text for a specific file in a multi-file paste |
The raw URL is worth bookmarking as a workflow pattern. When you reference a paste in a terminal session or want to pipe it into a command, the raw URL is the one you use:
curl https://yourdomain.com/paste/abc123/raw/ | bash
Step 5 - Share the paste
Copy the paste URL from your browser. That is the shareable link. For Unlisted pastes, only people you send the URL to can view it - it will not appear in the archive or search results.
If you need the raw URL for a specific purpose (pasting into a documentation site, linking from a code comment), use /paste/<hash>/raw/.
What revision history looks like in practice
Every time you edit a paste and save, SnipShare creates a new revision. From the paste view, the Revisions tab shows the version history with timestamps.
Click any two revisions and hit Compare to see a side-by-side diff. This is useful when:
- You iterate on a script over several days and want to see what changed
- A collaborator forked your paste and you want to compare the changes
- You want to roll back to an earlier version
The diff view highlights added lines in green and removed lines in red, per file.
Quick-reference: visibility mode decision table
| Mode | Who can view | In archive? | Use case |
|---|---|---|---|
| Public | Anyone | Yes | Sharing broadly, tutorials, open code |
| Unlisted | Anyone with the URL | No | Client-sharing, internal links, not-for-public |
| Private | Owner only | No | Personal scratch, drafts |
| Burn-after-read | First viewer, then gone | No | Secrets, temporary credentials, one-time shares |
What you have after 10 minutes
- A working paste archive at
/pastes/ - A create form at
/pastes/create/ - Your first paste with syntax highlighting at
/paste/<hash>/ - A raw URL at
/paste/<hash>/raw/for scripting use - Revision history on every paste you create from here
This is the baseline. The Pro features (BuddyPress and bbPress integration, REST API, WP-CLI commands, Collections for organizing pastes) are additive - the core workflow above is complete in the free plugin.