Drop. Tune. Keep.
Rasti is a studio for turning pictures into texture. The rendering happens in your browser, the settings travel as a small preset, and anything you want to keep track of can be published with a signature or recorded on Base.
One picture, twelve looks
This panel is not a video. Your browser is re-drawing the same picture with each preset from the library: error diffusion, ordered grids, halftone dots, hard thresholds and big pixels. The studio does the same with your own image, at full size, and shows how many milliseconds each pass took on your machine.
Three ways to break a picture into dots
Every algorithm answers the same question: which palette colour should this pixel become? They differ in how much each pixel knows about its neighbours. 8 are built in; here are the three families side by side.

Each pixel snaps to the nearest palette colour and hands its rounding error to the neighbours still to come. Organic grain, smooth gradients.

A fixed threshold pattern tiles the picture. Every pixel is decided on its own, so the texture is regular and very graphic.

The picture is read on a rotated grid of cells; each cell becomes one round dot whose size follows the tone underneath.
Two more are plain: Threshold snaps every pixel to the nearest colour with no pattern at all, and Pixelate only makes big pixels, keeping the photo's own colours unless you force a palette.
What each setting changes
| Setting | Range | Effect |
|---|---|---|
| Pixel size | 1–32 px | How many source pixels form one output pixel. Bigger means chunkier and faster. |
| Contrast | −100–100 | Pushes tones apart before mapping. Dithering loves a little extra contrast. |
| Brightness | −100–100 | Lifts or lowers every tone before mapping. |
| Threshold | 0–255 | The cut point for two-colour Threshold; for the others it shifts the balance between light and dark (128 is neutral). |
| Dot size · angle | 3–32 px · 0–90° | Halftone only: the cell of each dot and the rotation of the screen. |
| Invert · serpentine | on / off | Swap light and dark; scan diffusion rows back and forth to avoid streaks. |
Palettes decide the mood
A palette is 2 to 16 colours. The algorithm can only ever output those colours, so two inks give a poster, four greens give an old handheld screen, five warm tones give a sunset print. 10 palettes are built in and you can edit any colour.
Settings travel as a link
The full preset is encoded into the address of the studio, so a link like /studio?p=… reopens the exact look. It holds no image and no personal data, only the numbers and colours. There are 12 ready-made presets on the presets page, and the format is documented on the engine page.
Remix means opening someone's settings on your own picture. When you publish or record the result, it can point back to the work it came from.
The gallery is signed, not anonymous
- Publishing asks your wallet for a free signature (no transaction). The gallery shows your wallet address on the work.
- What is stored: a preview up to 720 pixels a side, title, note, settings, the file and settings hashes, and the remix flag.
- One entry per wallet per file; publishing the same file again refreshes it. You can remove your own work at any time.
- A report counts once per wallet and once per network, and only from a wallet that has made at least one transaction on Base. After 3 counted reports a work is hidden, for good. Creators cannot report their own work.
- Links and talk about keys are refused in titles and notes, and there are daily limits per wallet and per network.
Provenance on Base
When you export, the studio computes the SHA-256 of the exact file you saved and of the settings. Recording sends those two hashes, an optional parent and a license flag to the RastiProvenanceBook contract. That is all that goes on chain: no image, no title.
| Field | What it is |
|---|---|
artworkHash | SHA-256 of the exported file. Change one pixel and it changes completely. |
settingsHash | SHA-256 of the preset in canonical JSON (sorted keys). |
parentHash · parentCreator | The work this one remixes and the wallet whose record of it you point to. The contract refuses a parent recorded without remix permission. |
license | 0 = all rights reserved, 1 = remix allowed. |
recordedAt · blockNumber | Set by the chain when the record lands. |
What it proves: this wallet published this hash at this block. What it does not prove: who made the picture, or any rights to it. Several wallets can record the same file; the verify page lists every claim in order. A record costs gas only, roughly 216k gas for an original.
Contracts
One contract, no owner, no admin key, no fee, no pause and no upgrade path. It does not hold or move tokens. It is written and tested but not deployed yet; until then the studio keeps practice records in your browser.
not deployed yet$RASTI and what is planned
$RASTI is planned to launch on o1 Launchpad on Base. The idea is to use it later as credits for premium rendering, selected creative features or publishing fees, and only once those services really exist. Today every feature on this site is free and none of them needs the token.
- Planned: digital editions of recorded works, premium rendering (larger exports, batch jobs), $RASTI credits.
- Live now: the studio, presets, share links, the gallery with signed publishing (when the site's store is configured), and provenance records (practice until the contract is deployed).
Details on the token page and in the risk disclosure.
Questions
What is Rasti?
Rasti is a browser studio for dither art, halftone and pixel art. You drop in a picture, pick an algorithm, a pixel size and a palette, and export the result as PNG or WebP. The exact settings fit in a share link, works can be published to a gallery with a wallet signature, and a file's hash can be recorded on Base.
How does Rasti work?
The image is decoded in your browser, shrunk into blocks of the pixel size you choose, adjusted for brightness and contrast, and then mapped onto your palette by the algorithm: error diffusion, an ordered threshold grid, a halftone screen, a plain threshold or simple pixelation. Nothing is uploaded to do this.
Is my image uploaded anywhere?
No. Rendering and exporting happen in your tab. If you publish to the gallery, a small preview (at most 720 pixels a side), the title, the note, the settings and the file hashes are sent and stored with your wallet address. Recording on chain sends only hashes.
What does a provenance record prove?
That a specific wallet recorded a specific file hash, with these settings and this parent, at a specific Base block. It does not prove who made the picture, and it is not a copyright registration. Anyone who has the same file gets the same hash and can check it on the verify page.
What does remix allowed mean?
It means you are fine with others opening your settings on their own picture. A remix keeps a link to its parent: in the gallery by the parent's id, and on chain the contract refuses a remix of a work that was recorded without remix permission.
Which network is Rasti on?
Base mainnet, chain ID 8453. Wallets such as Coinbase Wallet, MetaMask, Phantom, Rabby and others can connect; if Base is missing from your wallet, the site offers to add it.
How do I buy $RASTI?
$RASTI is not launched yet. It is planned to launch on o1 Launchpad on Base; the contract address will be published on the token page and on X at launch. Until then any token claiming to be $RASTI is not ours.
What is $RASTI used for?
Nothing yet. The plan is to use it as credits for premium rendering, some creative features or publishing fees, and only after those services really exist. None of that is live, and $RASTI carries no promise of value, yield or return.
What are the risks?
Tokens can lose all of their value. Smart contracts can contain mistakes even when they are small and tested. Records on Base are public and permanent. Gallery hosting depends on this site's storage and can be switched off. Keep your own copies of anything you care about.
Open the studio with any picture, or start from one of the presets.