FeaturesDownloadDocsChangelogGitHubDownload
Docs / Using ClipTrail

Kinds & classification

Every clip gets a kind the moment you copy it. Kinds decide how a clip is shown, what you can do with it, and how it's pasted. It all happens locally in well under a millisecond, using rules, not AI and not the cloud.

The eight kinds

Link

Web addresses: https://…, http://…, ftp://…, www.…, and bare domains with a path like github.com/user/repo. Shown with their site name.

Code

Snippets, commands, JSON, diffs, markup, SQL and config files, tagged with a language when one is clear.

Text

Everything else: sentences, notes, lists, messages.

Contact

A single email address (or mailto: link) or phone number.

Color

#rgb, #rrggbb (with or without alpha), rgb()/rgba() and hsl()/hsla() values, shown with a swatch.

File

Files copied in your file manager, and copied paths such as C:\Users\me\report.pdf, \\server\share\…, ~/notes.md or file:///….

Image

Screenshots and copied images, saved as PNG with a thumbnail for the timeline.

Sensitive

One-time codes, API keys, tokens, private keys and card numbers. Masked and short-lived; see below.

How a clip is classified

Images and copied files are recognised from the clipboard format itself. For text, checks run in this order and the first match wins:

  1. Sensitive: does it look like a secret?
  2. Link: a single web address with no spaces.
  3. Contact: exactly one email address or phone number.
  4. Color: a single CSS colour value.
  5. File: a single file or folder path.
  6. Code: code-like structure or a known command.
  7. Text: anything else.

Only the first 20,000 characters are examined, so even a huge paste is classified instantly. Text clips larger than 2 MB aren't stored.

Code and languages

A clip counts as code when it's a fenced Markdown block, valid JSON, a diff, an HTML or XML fragment, SQL, YAML or TOML, a shell or PowerShell command (git, cargo, docker, kubectl, prompts like $ and PS C:\>…), or lines whose syntax reads as code rather than prose. A language is then guessed from fingerprints, and only shown when one language is clearly ahead:

Rust · Python · JavaScript · TypeScript · Go · Java · Kotlin · C · C++ · C# · CSS · HTML · XML · SQL · Shell · PowerShell · JSON · YAML · TOML · Diff

The language drives syntax highlighting in the preview and the language tag on As Markdown code block.

Things it deliberately doesn't misread

You copyKindWhy
#123TextMixed-digit 3–4 character hashes read as issue or PR numbers. #333 is still a grey.
192.168.1.1, 10.0.26300TextIP addresses and version numbers aren't phone numbers.
2026-11-01TextDates aren't phone numbers either.
1761998112TextA 10-digit number starting with 1 is usually a Unix timestamp.
$ 5.00TextA price, not a shell prompt.
2024, 4821TextOne-time codes are 6–8 digits; shorter numbers are usually years or counts.

Sensitive clips

These are detected by shape:

  • One-time codes: 6–8 digits, or 123 456 / 123-456.
  • Card numbers: 13–19 digits that pass the Luhn checksum and start like a real card.
  • API keys and tokens: AWS, GitHub, GitLab, Slack, Stripe, OpenAI/Anthropic-style sk-…, Google, npm, Hugging Face and SendGrid key formats, and JSON Web Tokens.
  • Private keys: anything containing a -----BEGIN … PRIVATE KEY----- block.

A sensitive clip is then:

  • masked as •••••• in the timeline, the picker and the tray;
  • kept out of search: it's never added to the search index;
  • never synced to your other devices;
  • deleted automatically after 1 hour by default (5 minutes to 7 days in Settings → Privacy).

You can still copy or paste it while it exists. Copies from password managers are never stored at all; see Password managers.

Copying the same thing twice

Copying something you already have doesn't create a duplicate: the existing clip moves to the top and its copy count goes up (shown as ×4 in the dashboard).

Something wrong or missing? Edit this page on GitHub.