Content Types
SyncBins supports ten content types. The type field is stored in the clear on the server (so the sync protocol can route items without decrypting them), but the payload is always encrypted.
The composer auto-detects the type as you type — URLs become link, high-entropy strings become password, and so on. You can also select a type explicitly from the toolbar.
password
Section titled “password”A stored credential.
{ service: string; // e.g. "GitHub" user: string; // username or email secret: string; // the password or token}The secret field is hidden by default in the UI; an eye toggle reveals it. A copy button copies the secret to the clipboard without revealing it on screen.
A URL with optional metadata.
{ url: string; // the full URL title: string; // page title desc: string; // meta description site: string; // domain name, e.g. "github.com"}The UI renders a thumbnail tile with the title, description, and site name. title, desc, and site are populated automatically when the link is saved (the server fetches Open Graph metadata on the client’s behalf — no URL content is stored, only the metadata).
text / note
Section titled “text / note”Plain text or a longer note. Both types share the same payload shape.
{ text: string; // the full text, newlines preserved}Rendered as white-space: pre-wrap to preserve formatting. Use note for longer, structured content and text for quick snippets — the distinction is cosmetic only.
A code snippet with language tagging.
{ lang: string; // language identifier, e.g. "typescript", "bash", "sql" label: string; // optional human-readable label text: string; // the source code}Rendered with a monospaced font on a dark background, a language tag chip, and a copy button. Syntax highlighting is applied client-side based on lang.
An image file.
{ w: number; // pixel width h: number; // pixel height label: string; // alt text / caption tone: number; // dominant hue (0–360) for placeholder tinting blobRef?: string; // set when the image is stored in blob storage}Images larger than 64 KB are stored in blob storage. The client encrypts the image bytes locally, uploads the ciphertext via a pre-signed URL, and stores the blobRef alongside the metadata. The server never sees the raw image.
A video file or link.
{ url: string; // source URL (for linked videos) title: string; // video title desc: string; // description duration: string; // human-readable, e.g. "4:32" tone: number; // dominant hue for placeholder}Rendered as a thumbnail with a play overlay and duration chip. Like images, large video files are blob-backed.
An arbitrary file.
{ name: string; // original filename size: string; // human-readable size, e.g. "2.4 MB" kind: string; // MIME type or type label, e.g. "PDF", "ZIP" blobRef?: string; // set for files > 64 KB}Rendered as an icon tile with the filename, size, and a download button. The file bytes are encrypted before leaving the device.
A voice memo or audio clip.
{ duration: number; // length in seconds label: string; // caption or transcript excerpt wave: number[]; // waveform amplitude samples (0–1), for visualisation blobRef?: string; // set for audio stored in blob storage}Rendered with a play button, an animated waveform bar chart, and the label. The wave array contains ~80 amplitude samples used to draw the waveform without decrypting the audio file.
contact
Section titled “contact”A saved contact card.
{ name: string; // full name role: string; // job title or relationship email: string; phone: string;}Rendered as an initials avatar with the name, role, and contact lines.
location
Section titled “location”A geographic point of interest.
{ name: string; // place name addr: string; // street address or description lat: number; // latitude (WGS84) lng: number; // longitude (WGS84)}Rendered as a static mini-map with a pin, the place name, and the address. The map is rendered client-side using the lat/lng — no external tile service is contacted at render time.
Type summary
Section titled “Type summary”| Type | Server-visible type value | Blob-backed |
|---|---|---|
| Password | password | No |
| Link | link | No |
| Text | text | No |
| Note | note | No |
| Code | code | No |
| Image | image | Yes (> 64 KB) |
| Video | video | Yes |
| File | file | Yes (> 64 KB) |
| Audio | audio | Yes |
| Contact | contact | No |
| Location | location | No |
The type value is always stored unencrypted on the server so the sync protocol can operate without decrypting payloads. All other fields are part of the encrypted payload.