← 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:
| Group | Actions |
| Headers | H1, H2, H3 |
| Styling | Bold, Italic, Strikethrough, Underline, Blockquote |
| Code | Inline Code, Code Block (with language dialog) |
| Alignment | Align Left, Center, Right |
| Lists & Table | Bullet List, Numbered List, Table |
| Insert | Link, Image, Horizontal Rule |
| Encrypt | Encrypt Selected (AES-256-GCM) |
| Color | Text 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:

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.
| Field | Purpose |
| PAGE_DESCRIPTION | Search result snippet |
| PAGE_IMAGE | Social preview image (og:image) |
| PAGE_ICON | Favicon override |
| SHARE_DESCRIPTION | Social share text (og:description) |
| SHARE_IMAGE | Twitter card image |
Self-Destruct Timer
Set a time-to-live from the editor footer. Entry is permanently deleted when the timer expires.
| TTL | Lifespan |
| 1h | 1 hour |
| 6h | 6 hours |
| 1d | 1 day (default) |
| 7d | 7 days |
| 30d | 30 days |
| 90d | 90 days |
| 180d | 180 days |
| 365d | 365 days |
| never | No 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).