← Back to Home

Getting Started

backtick renders markdown server-side using marked with syntax highlighting via highlight.js.

# Heading 1
## Heading 2
### Heading 3

**Bold** and *italic* and ~~strikethrough~~

- Bullet list
- Another item

1. Numbered item
2. Another item

> Blockquote
---

Open the Editor to start writing. Changes appear in the live preview panel with a 300ms debounce.

Rich Editor

The editor uses CodeMirror 6 with dark syntax highlighting. Right-click anywhere for the formatting menu:

GroupActions
HeadersH1, H2, H3
StylingBold, Italic, Strikethrough, Underline, Blockquote
CodeInline Code, Code Block (with language dialog)
AlignmentAlign Left, Center, Right
Lists & TableBullet List, Numbered List, Table
InsertLink, Image, Horizontal Rule
EncryptEncrypt Selected (AES-256-GCM)
ColorText Color picker

The footer displays a character counter (50,000 limit), created/updated timestamps, and entry controls. Toggle between dark and light mode using the sun/moon icon in the header.

Code & Tables

Fenced Code Blocks

Use triple backticks with a language identifier:

```javascript
function hello() { console.log("Hello!"); }
```

Use the Code Block option in the context menu to insert with a language chooser. Indented blocks use 4 spaces. Inline code uses single backticks: const x = 42;

Tables

Use standard markdown syntax or insert from the context menu:

| Name  | Age | City      |
|-------|-----|-----------|
| Alice | 30  | New York  |
| Bob   | 25  | London    |

Images

Standard markdown image syntax:

![Description](https://example.com/image.png)

Click any image in the preview or viewer to open the resize dialog. Set width/height in % or px, lock aspect ratio, or drag a slider (in viewer) to scale. Changes persist via the API.

Math & Charts

LaTeX Math

Wrap math in [math: "..."] for inline or [math: true]...[/math] for display blocks. Rendering uses KaTeX, loaded on-demand from CDN.

Quadratic formula: [math: "x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}"]

Chart.js

Embed charts using the chart shortcode. Loaded on-demand when an entry contains charts.

[chart: {
  "type": "bar",
  "data": {
    "labels": ["Jan","Feb","Mar"],
    "datasets": [{ "label":"Sales", "data":[12,19,3] }]
  }
}]

Supported types: bar, line, pie, doughnut, radar, polarArea.

Security

Encrypted Blocks

Encrypt sensitive content via AES-256-GCM with PBKDF2 key derivation (100,000 iterations). Encryption happens entirely in your browser — the server only stores ciphertext.

Select text → right-click → "🔒 Encrypt Selected" → enter password. The text is replaced with an encrypted block. Viewers see a decrypt button or password prompt. Decryption also happens client-side.

Edit Codes

Each entry gets a random edit code (hashed via SHA-256 before storage). This code is the only way to update or delete your entry — save it when creating.

To update: visit the entry URL, click Edit, paste your code, make changes, click Update Entry. A Delete Entry button appears when editing an existing entry.

Publishing

Metadata & Social Sharing

Click Metadata in the editor footer to set Open Graph and Twitter Card tags. Controls how your entry appears when shared on social media.

FieldPurpose
PAGE_DESCRIPTIONSearch result snippet
PAGE_IMAGESocial preview image (og:image)
PAGE_ICONFavicon override
SHARE_DESCRIPTIONSocial share text (og:description)
SHARE_IMAGETwitter card image

Self-Destruct Timer

Set a time-to-live from the editor footer. Entry is permanently deleted when the timer expires.

TTLLifespan
1h1 hour
6h6 hours
1d1 day (default)
7d7 days
30d30 days
90d90 days
180d180 days
365d365 days
neverNo expiration

TTL can be changed when updating an entry via its edit code.

Reporting

Every viewer page has a Report button. Report reasons: spam, inappropriate, broken content, or other (with comment).