Watch PostScript draw itself.
PostScript is the language printers once spoke: a page is a program that draws it. pscat is a PostScript interpreter written in Rust. Run a program and the picture appears stroke by stroke, in a window, in your browser tab, or as a PNG, SVG or PDF.
gallery/evening_stream.ps.What you can make with it
Where to next
findfont can reach, drawn by pscat.
PlaygroundType PostScript, press Run, watch it draw. No install.
GuidesHow to use pscat and each art library, plus the JavaScript API.
For agentsThe skills and the MCP server for Claude Code, Codex and others.
ContributeHow the code is organised, how to extend it, and how work gets merged.
Install it
The playground needs nothing. To run the real thing, with the live window and every output format:
git clone https://github.com/PSCatLabs/pscat
cd pscat
cargo run --release -- --page 500x500 examples/sierpinski.ps # watch it draw
cargo run --release -- --png out.png file.ps # headless render
cargo run --release -- -i # REPL + live window
What is inside
live window PNG · SVG · PDF out runs in the browser (wasm) Type 1 · Type 3 · TrueType text save / restore VM image filters MCP server and agent skills tested against Ghostscript
- The language. A from-scratch Level 2 interpreter: three
stacks and an explicit frame stack (no recursion), catchable errors
with the standard PostScript names, and
save/restorebuilt on copy-on-write journaling. Architecture explains the design. - Graphics. Paths, fills, strokes, clipping, dash patterns, HSB, CMYK, Indexed and Separation color, sampled images with the usual decode filters, halftone screening and multi-page documents.
- Text. The standard base fonts, Type 3 glyph programs, and
real Type 1 fonts down to
eexecand encrypted charstrings. - Output. A live window you can page through, PNG at any dpi, SVG and PDF checked by letting Ghostscript rasterize them back, and a spool mode that watches a directory like the printer in the corner of the lab.
Why
I used to write raw PostScript by hand in college and send it straight to a LaserWriter. This is a from-scratch Rust interpreter built to relive that: watching a hand-written recursive program draw itself, live, without depending on a decades-old C codebase to do it. It is not a Ghostscript replacement, and it is happy to be checked against Ghostscript.