Paste to publish
Press Cmd/Ctrl+V on the home page and your clipboard becomes a real blog post - with its own URL - in under a second. A photo, a screenshot, an article URL, a YouTube link, a paragraph of text: paste it, get a page. You can also drag-and-drop a file from your desktop. No uploader, no setup, no account between paste and a live URL.
No sign-up between paste and a live URL
URLs unfurl into rich preview cards automatically
Claim the blog with an account when you're ready
Tout ce que vous pouvez glisser, coller, importer
Pas de conversion préalable, pas d'export-import. Posez un fichier sur la page, ou collez son contenu — chaque type est reconnu et inséré au bon endroit, avec le bon rendu.
Images
PNG, JPEG, WebP, GIF — plus HEIC from iPhones (auto-converted on upload).
Vidéos
MP4, WebM, MOV, MKV, AVI, OGG. Hébergées en lecture inline.
Audio
MP3, WAV, FLAC, AAC, M4A. Lecteur HTML5 natif intégré au post.
Markdown & texte
.md, .markdown, .txt — convertis en blocs riches à l'import.
HTML
Déposez un .html : on l'héberge en embed interactif sandboxé.
Liens
YouTube, Vimeo, articles — collez l'URL, on génère un aperçu.
glisser un fichier ici
Write first, sign up later
Paste anything from the home page and a real blog appears at a real URL — no account, no email. The blog lives, the URL is shareable. When you're ready, sign in once and claim it. The posts you wrote anonymously become yours.
No friction: paste, get a URL, share it
Claim later — your existing posts come with you
Your browser remembers — only the original creator can claim
Migrate from your old blog in one paste
Paste your existing RSS or Atom feed URL and we pull every post in. Images are downloaded and rehosted — no broken hot-links the day your old platform goes offline. Slugs and dates are preserved.
WordPress, Ghost, Substack, Medium — anything that exposes a feed
Images mirrored on our servers so the migrated archive is self-contained
Original publish dates and slugs kept — your old links stay meaningful
Photos: paste, drop, done
Drop a photo from your desktop, paste a screenshot from your clipboard, or drag a file straight onto the page. The image appears inline, full-quality, with a resize handle. Type**bold**, ## headings, or any other Markdown shortcut and it converts as you type. No image-host setup, no upload-then-paste-the-URL dance.
Paste images straight from your clipboard with Cmd/Ctrl+V
Drag-and-drop a file from your desktop, anywhere on the page
Resize handles, sketches, and freehand drawing built in
Same affordance for videos and audio - drop it, embed it
Markdown shortcuts work too if that's how you write
async function paste() { const blog = await clipboard.read() return 'live in 1s' }
Code blocks, real ones
Paste a snippet — the editor detects the language and syntax-highlights it. Drop a .py, .js, .html, .json file from your desktop and the same thing happens. No fenced-markdown gymnastics, no copy-paste-reformat dance.
Auto-detected language, manual override available
Light or dark theme, picked per block
Drop a code file → instant code block with the right lang
Upload an HTML file, get a live page
Drop a .html file and we host it as an interactive embed — sandboxed, served on your subdomain. Design mockups, micro-tools, one-off pages: publish them without standing up a separate site.
Real iframe rendering — not a screenshot, not a paste
Sandboxed: scripts allowed, same-origin denied
Title and OG description auto-pulled from the HTML
Your words go public on your
99th birthday
Digital Testament
Write letters, memories, and life advice today. They stay completely private until a date you choose -- like your 99th birthday. Then they're published automatically for the people who matter.
Learn more about the testamentPublish in One Click
Any document can become a public page on your own subdomain. No hosting to set up, no deploy step. Toggle "public" and your page is live atyourname.textpad.cloud.
Custom subdomain for your blog
Clean, minimal reading experience
Your blog at your subdomain
Pick a username and your public posts live atyourname.textpad.cloud. Every public document also lands on a clean archive page that lists everything you've written - no theme picker, no setup.
A real subdomain, not a path on a shared site
Auto-generated archive index of all your public posts
Or bring your own domain - see below
Bring your own domain
Already own yourdomain.com? Connect it in one click and your blog serves at your own address, fully white-label. No Textpad logo, no header, no footer, no sign-in prompt. Just your archive and your writing.
Apex (yourdomain.com) and subdomains (www, blog…) supported
SSL certificate auto-issued and renewed for you
Visitors never see Textpad, your domain, your brand
Paste a URL, get a card
Paste any URL and Textpad fetches the title, description, image, and site name - turning a bare link into a rich preview card. YouTube and Vimeo videos embed inline. Audio files get a player. Your notes look like a magazine, not a list of links.
Automatic unfurl with title, description, and thumbnail
YouTube and Vimeo embed inline as players
Direct video and audio files get a native player
Likes that count, even silent ones
Readers can tap the heart, but they don't have to. A post that holds a reader for more than ten seconds gets credited automatically. The number of dwell-likes counts as a quieter signal alongside the explicit ones, so the page rewards reading, not just clicking.
One-click likes, anonymous or signed-in
Dwell-time auto-likes after ~10 seconds in view
Reader counter shows how many people lingered
Follow the writers you like
Follow any blog and new posts land in your feed. Followers see your latest entries first; you see theirs. No algorithm picking what's worth reading, just the writers you decided to keep an eye on.
One-click follow on any public blog
Followers chip on each archive shows the audience
Get notified when someone you follow publishes
Readers can find you, if you want
Public blogs land on /discover, a chronological grid of recent posts across the platform. No algorithm, no ranking — just visibility. Stay private if you prefer; opt in when you're ready to be read.
Public blogs surface automatically on /discover
Visitors can follow you straight from a card — your future posts reach them
Hidden / private blogs never appear there. The opt-in is your blog status.
- @yumi liked your post2m
- @robin started following you1h
- @dani published a new post3h
A bell you actually want to open
Likes, follows, new posts from people you follow. Everything routes through one bell in the header. No email blasts, no marketing pushes, no growth-hacky red dot. Just the things that actually happened to your blog.
Likes on your posts and follows on your blog
New posts from the writers you follow
One bell, one click, no email noise
Your feed, no algorithm
/feed shows you the latest posts from the writers you follow, newest first, period. No engagement-bait reordering, no "because you read X" recommendations. Same posts, same order, every time you open it. The boring kind of feed, on purpose.
Chronological, deterministic, no algorithm
Only the writers you chose to follow
Like and follow without leaving the feed
- 12m@yumi
- 1h@robin
- 4h@dani
<rss version="2.0">
<channel>
<title>yourname</title>
<item>
<title>Notes on loneliness</title>
<pubDate>Tue, 14 Apr 2026</pubDate>
</item>
<item>...</item>
</channel>
</rss>Built-in RSS, no setup
Every blog gets its own RSS feed at yourname/feed.xml — and there's a sitewide one at /feed.xml too. Readers can subscribe in any RSS app, no email, no algorithm in between. You write a post; it shows up everywhere they read.
A feed per blog, plus a global one
Discoverable: announced in <head>, openable in any reader
Updated as you publish — nothing to wire up
Followers-only blog
Three audiences in one switch: public for the world, private for nobody but you, or followers-only for the people who chose to follow your blog. Flip the switch when you want to share something with your readers but keep it off the open web.
Public, private, or followers-only, one toggle
Followers-only posts never get indexed by search engines
Switch any post any time, no rewriting URLs
Reading column or full canvas, your call
Some posts are pure reading and want a narrow column. Others are mostly photos and want the full width of the screen. Each post can switch between the two, and you can pick a default for the whole blog. No CSS, no theme picker, just one toggle per post.
Reading-column default for text-heavy posts
Full-width for galleries, screenshots, and visual posts
Set a blog-wide default, override per post
/b/yourname/8f3c-9a21-untitled/b/yourname/notes-on-lonelinessURLs that read like titles
Every post starts with a random slug so you can publish in one click, then rename it to anything you want. Old URLs redirect to the new one automatically, so a link you shared yesterday still lands on the right post tomorrow.
Rename a post and its URL follows
Old URLs auto-redirect, no broken links
Auto-suggested from the title, manual override always available
Markdown that just becomes the page
Paste a chunk of Markdown, drop a .md file, or type Markdown shortcuts as you go. Headings, bold, italics, lists, code blocks, blockquotes, links: everything renders as the real thing, not as raw symbols. The same parser handles paste and drop, so the result is identical whichever path you take.
Headings, lists, quotes, code, links: all rendered
Inline shortcuts convert as you type
Drop a .md file and get the same rich result as paste
- one
- two
Find anything you wrote
Every blog has a search box. Type any word from any post and you get the matching ones — full-text, instant, no ranking magic. Months-old notes are one keystroke away.
Full-text search across every public post
Title and body, not just title
Image alt-text indexed too
Your data, yours to keep
One click in Settings → Data & Privacy and you get a ZIP of every doc as Markdown + JSON metadata. No lock-in, no "we own your content" clause. If you ever want to leave, your archive walks out with you.
A ZIP with every post as a .md file
JSON sidecar per post: title, slug, dates, tags
Single post export too — one button per doc
$ curl textpad.cloud/api/public/\ documents/a3f2… { "title": "A morning in Paris", "content_json": { … }, "author": "@yourname", "published_at": "2026-04-12" }
A read-only JSON API, free
Every public post is reachable as JSON at /api/public/documents/<id>. CORS is wide open. Build a portfolio that pulls from your blog, a custom reader, a static-site generator that mirrors your archive — your content, your pipeline.
Public posts → public JSON, no auth needed
CORS-friendly: fetch from any frontend
Private posts stay private — only is_public is exposed
English and French, fully translated
Every screen, every button, every email exists in both languages. The locale is auto-picked from your browser on first visit; switch any time from the footer.
Two locales kept in sync, not partial machine translations
UI, transactional emails, error messages — all covered
Drive & Tabs
Organize documents in nested folders with drag-and-drop. Open multiple documents in browser-like tabs that persist across sessions. Right-click to rename, move, or delete -- just like your desktop.
And more
Drawings & sketches
Beyond paste-and-drop images, sketch diagrams and freehand illustrations directly inside your document.
Rich Media
YouTube, audio players, link previews. Paste any URL and it becomes a beautiful embedded card.
Private by Default
Documents are invisible until you share the link. High-entropy URLs, no indexing, no forced sign-ups.
IPFS Storage
Opt-in mirror to the decentralized web. Your data still lives on our servers — IPFS just adds a public, content-addressed copy. If we ever shut down, your blog stays reachable via any IPFS gateway. No dependency on us, no migration scramble.