Purely
Stateless.
A decentralized text storage protocol that exists only in your URL. No databases. No logs. No gatekeepers.
Nodes: Active
Core Principles
Data sovereignty is no longer optional. It's built in.
Zero Knowledge
Encrypted client-side. The server never sees the raw data.
Infinite Life
Stateless persistence via URI fragments.
The Logic
We utilize high-density compression to map data directly into addressable web strings.
Developer API.
The 0xPaste SDK allows any application to push and pull data with a single line of code.
Prefer raw HTTP? Use the universal REST gateway for language-agnostic integration.
import 0xpaste as 0xp
url = 0xp.push("Hello, World!")
# 0xpaste.pages.dev?c=Y29udGVudA...
content = 0xp.pull(url)
# Hello, World!
url = 0xp.push("Hello, World!")
# 0xpaste.pages.dev?c=Y29udGVudA...
content = 0xp.pull(url)
# Hello, World!
import * as 0xp from '0xpaste';
const url = await 0xp.push('Web State');
// 0xpaste.pages.dev?c=base64_blob_...
const data = await 0xp.pull(url);
const url = await 0xp.push('Web State');
// 0xpaste.pages.dev?c=base64_blob_...
const data = await 0xp.pull(url);
use 0xpaste as 0xp;
let url = 0xp::push("Ferris says hi").unwrap();
// 0xpaste.pages.dev?c=z_std_bin...
let msg = 0xp::pull(&url).await;
let url = 0xp::push("Ferris says hi").unwrap();
// 0xpaste.pages.dev?c=z_std_bin...
let msg = 0xp::pull(&url).await;
require '0xpaste'
url = 0xp.push("Ruby flow")
# 0xpaste.pages.dev?c=payload...
content = 0xp.pull(url)
url = 0xp.push("Ruby flow")
# 0xpaste.pages.dev?c=payload...
content = 0xp.pull(url)
REST Gateway
POST
api.0xpaste.io/push
{"body": "raw text data"}
GET
api.0xpaste.io/pull?c=[id]