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.

See the gallery Learn PostScript Try it in your browser

Evening Stream: a purple dusk sky over a cabin, autumn trees and a winding stream, painted in layered strokes
Evening Stream, a wet-on-wet landscape. Every stroke is PostScript: the source is gallery/evening_stream.ps.

What you can make with it

Generative art Turtle graphics, L-systems, noise and flow fields, plus brushes that behave like watercolor, chalk, charcoal and ink. The gallery is all of it, rendered by pscat itself.
Type and lettering Original display faces where every letter is a small program, a handwriting font where no two letters match, and a catalog of open fonts. See Fonts.
Charts for papers Function plots, surfaces, bar, line, area, scatter and pie charts as clean vector figures. Try the interactive demos.
A tool for agents A command-line renderer, a skill for coding agents and an MCP server, so an AI can draw, look at the result and refine it. See For agents.

Where to next

LearnWhere PostScript came from, and a tutorial with examples you can run. GalleryFinished pieces and library specimens, with the source behind each. FontsEvery typeface 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

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.